@northflare/runner 0.0.30 → 0.0.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/bin/northflare-runner +1 -1
  2. package/dist/chunk-3QTLJ4CG.js +33622 -0
  3. package/dist/chunk-3QTLJ4CG.js.map +1 -0
  4. package/dist/chunk-7D4SUZUM.js +38 -0
  5. package/dist/chunk-7D4SUZUM.js.map +1 -0
  6. package/dist/dist-W7DZRE4U.js +365 -0
  7. package/dist/dist-W7DZRE4U.js.map +1 -0
  8. package/dist/index.d.ts +764 -5
  9. package/dist/index.js +9872 -202
  10. package/dist/index.js.map +1 -1
  11. package/dist/sdk-query-TRMSGGID-EIENWDKW.js +14 -0
  12. package/dist/sdk-query-TRMSGGID-EIENWDKW.js.map +1 -0
  13. package/package.json +17 -17
  14. package/tsup.config.ts +5 -2
  15. package/dist/components/claude-sdk-manager.d.ts +0 -60
  16. package/dist/components/claude-sdk-manager.d.ts.map +0 -1
  17. package/dist/components/claude-sdk-manager.js +0 -1378
  18. package/dist/components/claude-sdk-manager.js.map +0 -1
  19. package/dist/components/codex-sdk-manager.d.ts +0 -94
  20. package/dist/components/codex-sdk-manager.d.ts.map +0 -1
  21. package/dist/components/codex-sdk-manager.js +0 -1450
  22. package/dist/components/codex-sdk-manager.js.map +0 -1
  23. package/dist/components/enhanced-repository-manager.d.ts +0 -173
  24. package/dist/components/enhanced-repository-manager.d.ts.map +0 -1
  25. package/dist/components/enhanced-repository-manager.js +0 -1097
  26. package/dist/components/enhanced-repository-manager.js.map +0 -1
  27. package/dist/components/message-handler-sse.d.ts +0 -77
  28. package/dist/components/message-handler-sse.d.ts.map +0 -1
  29. package/dist/components/message-handler-sse.js +0 -1224
  30. package/dist/components/message-handler-sse.js.map +0 -1
  31. package/dist/components/northflare-agent-sdk-manager.d.ts +0 -58
  32. package/dist/components/northflare-agent-sdk-manager.d.ts.map +0 -1
  33. package/dist/components/northflare-agent-sdk-manager.js +0 -2032
  34. package/dist/components/northflare-agent-sdk-manager.js.map +0 -1
  35. package/dist/components/repository-manager.d.ts +0 -51
  36. package/dist/components/repository-manager.d.ts.map +0 -1
  37. package/dist/components/repository-manager.js +0 -256
  38. package/dist/components/repository-manager.js.map +0 -1
  39. package/dist/index.d.ts.map +0 -1
  40. package/dist/runner-sse.d.ts +0 -102
  41. package/dist/runner-sse.d.ts.map +0 -1
  42. package/dist/runner-sse.js +0 -877
  43. package/dist/runner-sse.js.map +0 -1
  44. package/dist/services/RunnerAPIClient.d.ts +0 -61
  45. package/dist/services/RunnerAPIClient.d.ts.map +0 -1
  46. package/dist/services/RunnerAPIClient.js +0 -187
  47. package/dist/services/RunnerAPIClient.js.map +0 -1
  48. package/dist/services/SSEClient.d.ts +0 -62
  49. package/dist/services/SSEClient.d.ts.map +0 -1
  50. package/dist/services/SSEClient.js +0 -225
  51. package/dist/services/SSEClient.js.map +0 -1
  52. package/dist/types/claude.d.ts +0 -80
  53. package/dist/types/claude.d.ts.map +0 -1
  54. package/dist/types/claude.js +0 -5
  55. package/dist/types/claude.js.map +0 -1
  56. package/dist/types/index.d.ts +0 -52
  57. package/dist/types/index.d.ts.map +0 -1
  58. package/dist/types/index.js +0 -7
  59. package/dist/types/index.js.map +0 -1
  60. package/dist/types/messages.d.ts +0 -33
  61. package/dist/types/messages.d.ts.map +0 -1
  62. package/dist/types/messages.js +0 -5
  63. package/dist/types/messages.js.map +0 -1
  64. package/dist/types/runner-interface.d.ts +0 -38
  65. package/dist/types/runner-interface.d.ts.map +0 -1
  66. package/dist/types/runner-interface.js +0 -5
  67. package/dist/types/runner-interface.js.map +0 -1
  68. package/dist/utils/StateManager.d.ts +0 -61
  69. package/dist/utils/StateManager.d.ts.map +0 -1
  70. package/dist/utils/StateManager.js +0 -170
  71. package/dist/utils/StateManager.js.map +0 -1
  72. package/dist/utils/config.d.ts +0 -48
  73. package/dist/utils/config.d.ts.map +0 -1
  74. package/dist/utils/config.js +0 -378
  75. package/dist/utils/config.js.map +0 -1
  76. package/dist/utils/console.d.ts +0 -8
  77. package/dist/utils/console.d.ts.map +0 -1
  78. package/dist/utils/console.js +0 -31
  79. package/dist/utils/console.js.map +0 -1
  80. package/dist/utils/debug.d.ts +0 -12
  81. package/dist/utils/debug.d.ts.map +0 -1
  82. package/dist/utils/debug.js +0 -94
  83. package/dist/utils/debug.js.map +0 -1
  84. package/dist/utils/expand-env.d.ts +0 -2
  85. package/dist/utils/expand-env.d.ts.map +0 -1
  86. package/dist/utils/expand-env.js +0 -17
  87. package/dist/utils/expand-env.js.map +0 -1
  88. package/dist/utils/inactivity-timeout.d.ts +0 -19
  89. package/dist/utils/inactivity-timeout.d.ts.map +0 -1
  90. package/dist/utils/inactivity-timeout.js +0 -72
  91. package/dist/utils/inactivity-timeout.js.map +0 -1
  92. package/dist/utils/logger.d.ts +0 -10
  93. package/dist/utils/logger.d.ts.map +0 -1
  94. package/dist/utils/logger.js +0 -129
  95. package/dist/utils/logger.js.map +0 -1
  96. package/dist/utils/message-log.d.ts +0 -23
  97. package/dist/utils/message-log.d.ts.map +0 -1
  98. package/dist/utils/message-log.js +0 -69
  99. package/dist/utils/message-log.js.map +0 -1
  100. package/dist/utils/model.d.ts +0 -8
  101. package/dist/utils/model.d.ts.map +0 -1
  102. package/dist/utils/model.js +0 -37
  103. package/dist/utils/model.js.map +0 -1
  104. package/dist/utils/status-line.d.ts +0 -34
  105. package/dist/utils/status-line.d.ts.map +0 -1
  106. package/dist/utils/status-line.js +0 -131
  107. package/dist/utils/status-line.js.map +0 -1
  108. package/dist/utils/tool-response-sanitizer.d.ts +0 -9
  109. package/dist/utils/tool-response-sanitizer.d.ts.map +0 -1
  110. package/dist/utils/tool-response-sanitizer.js +0 -118
  111. package/dist/utils/tool-response-sanitizer.js.map +0 -1
  112. package/dist/utils/update-coordinator.d.ts +0 -53
  113. package/dist/utils/update-coordinator.d.ts.map +0 -1
  114. package/dist/utils/update-coordinator.js +0 -159
  115. package/dist/utils/update-coordinator.js.map +0 -1
  116. package/dist/utils/version.d.ts +0 -10
  117. package/dist/utils/version.d.ts.map +0 -1
  118. package/dist/utils/version.js +0 -33
  119. package/dist/utils/version.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.17.1/node_modules/ajv-formats/src/formats.ts","../../../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.17.1/node_modules/ajv-formats/src/limit.ts","../../../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.17.1/node_modules/ajv-formats/src/index.ts","../../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js","../../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js","../../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js","../../../node_modules/.pnpm/which@2.0.2/node_modules/which/which.js","../../../node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js","../../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/resolveCommand.js","../../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/escape.js","../../../node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js","../../../node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js","../../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/readShebang.js","../../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/parse.js","../../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/enoent.js","../../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/index.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/Event.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/UIEvent.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/MouseEvent.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/DOMException.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/config.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/utils.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/EventTarget.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/LinkedList.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/NodeUtils.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/Node.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/NodeList.es6.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/NodeList.es5.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/NodeList.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/ContainerNode.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/xmlnames.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/attributes.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/FilteredElementList.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/DOMTokenList.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/select.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/ChildNode.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/NonDocumentTypeChildNode.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/NamedNodeMap.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/Element.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/Leaf.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/CharacterData.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/Text.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/Comment.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/DocumentFragment.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/ProcessingInstruction.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/NodeFilter.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/NodeTraversal.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/TreeWalker.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/NodeIterator.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/URL.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/CustomEvent.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/events.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/style_parser.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/CSSStyleDeclaration.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/URLUtils.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/defineElement.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/htmlelts.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/svg.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/MutationConstants.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/Document.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/DocumentType.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/HTMLParser.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/DOMImplementation.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/Location.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/NavigatorID.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/WindowTimers.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/impl.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/Window.js","../../../node_modules/.pnpm/@mixmark-io+domino@2.2.0/node_modules/@mixmark-io/domino/lib/index.js","../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/stringify.js","../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/rng.js","../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/native.js","../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/v4.js","../../northflare-agent-sdk/src/sdk-query.ts","../../northflare-agent-sdk/src/mcp-client.ts","../../northflare-agent-sdk/src/mcp-manager.ts","../../northflare-agent-sdk/src/local-environment.ts","../../northflare-agent-sdk/src/util/path-validation.ts","../../northflare-agent-sdk/src/constants.ts","../../northflare-agent-sdk/src/util/error-handling.ts","../../northflare-agent-sdk/src/tools/read-file-tool.ts","../../northflare-agent-sdk/src/types.ts","../../northflare-agent-sdk/src/util/get-language-identifier-from-file-path.ts","../../northflare-agent-sdk/src/tools/tool-base.ts","../../northflare-agent-sdk/src/tools/environment-tool-base.ts","../../northflare-agent-sdk/src/tools/write-file-tool.ts","../../northflare-agent-sdk/src/tools/delete-file-tool.ts","../../northflare-agent-sdk/src/tools/edit-file-tool.ts","../../northflare-agent-sdk/src/tools/multi-edit-file-tool.ts","../../northflare-agent-sdk/src/tools/move-file-tool.ts","../../northflare-agent-sdk/src/tools/copy-file-tool.ts","../../northflare-agent-sdk/src/tools/read-many-files-tool.ts","../../northflare-agent-sdk/src/tools/get-project-file-structure-tool.ts","../../northflare-agent-sdk/src/util/escape-command-arg.ts","../../northflare-agent-sdk/src/util/build-tree-from-files.ts","../../northflare-agent-sdk/src/tools/glob-tool.ts","../../northflare-agent-sdk/src/util/glob-to-reg-exp.ts","../../northflare-agent-sdk/src/util/validate-relative-path.ts","../../northflare-agent-sdk/src/tools/grep-tool.ts","../../northflare-agent-sdk/src/tools/list-directory-tool.ts","../../northflare-agent-sdk/src/tools/run-command-tool.ts","../../northflare-agent-sdk/src/tools/todo-read-tool.ts","../../northflare-agent-sdk/src/tools/todo-shared-base.ts","../../northflare-agent-sdk/src/tools/todo-store-base.ts","../../northflare-agent-sdk/src/tools/todo-write-tool.ts","../../northflare-agent-sdk/src/tools/url-fetcher-tool.ts","../../northflare-agent-sdk/src/tools/task-tool.ts","../../northflare-agent-sdk/src/tools/submit-tool.ts","../../northflare-agent-sdk/src/tools/submit-final-result-tool.ts","../../northflare-agent-sdk/src/tool-creators.ts","../../northflare-agent-sdk/src/instructions.ts","../../northflare-agent-sdk/src/tool-wrapper.ts","../../northflare-agent-sdk/src/util/json-repair.ts","../../northflare-agent-sdk/src/util/structured-output-validation.ts","../../northflare-agent-sdk/src/util/image-utils.ts","../../northflare-agent-sdk/src/tools/vision-tool.ts","../../../node_modules/.pnpm/zod@3.25.7/node_modules/zod/dist/esm/v3/helpers/util.js","../../../node_modules/.pnpm/zod@3.25.7/node_modules/zod/dist/esm/v3/ZodError.js","../../../node_modules/.pnpm/zod@3.25.7/node_modules/zod/dist/esm/v3/locales/en.js","../../../node_modules/.pnpm/zod@3.25.7/node_modules/zod/dist/esm/v3/errors.js","../../../node_modules/.pnpm/zod@3.25.7/node_modules/zod/dist/esm/v3/helpers/parseUtil.js","../../../node_modules/.pnpm/zod@3.25.7/node_modules/zod/dist/esm/v3/helpers/errorUtil.js","../../../node_modules/.pnpm/zod@3.25.7/node_modules/zod/dist/esm/v3/types.js","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.23.0_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/src/server/zod-compat.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.23.0_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/src/types.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.23.0_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/src/server/zod-json-schema-compat.ts","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/Options.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/Refs.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/errorMessages.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/selectParser.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/any.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/array.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/date.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/default.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/record.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/string.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/map.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/never.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/null.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/union.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/number.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/object.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/set.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/parseDef.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@4.1.13/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.23.0_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/src/shared/protocol.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.23.0_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/src/validation/ajv-provider.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.23.0_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/src/client/index.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.23.0_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/src/client/stdio.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.23.0_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/src/shared/stdio.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.23.0_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/src/shared/transport.ts","../../../node_modules/.pnpm/pkce-challenge@5.0.1/node_modules/pkce-challenge/dist/index.node.js","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.23.0_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/src/shared/auth.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.23.0_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/src/shared/auth-utils.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.23.0_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/src/server/auth/errors.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.23.0_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/src/client/auth.ts","../../../node_modules/.pnpm/eventsource-parser@3.0.6/node_modules/eventsource-parser/src/errors.ts","../../../node_modules/.pnpm/eventsource-parser@3.0.6/node_modules/eventsource-parser/src/parse.ts","../../../node_modules/.pnpm/eventsource-parser@3.0.6/node_modules/eventsource-parser/src/stream.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.23.0_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/src/client/streamableHttp.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.23.0_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/src/client/sse.ts","../../../node_modules/.pnpm/turndown@7.2.2/node_modules/turndown/lib/turndown.es.js"],"sourcesContent":["import type {Format, FormatDefinition} from \"ajv\"\nimport type {FormatValidator, FormatCompare} from \"ajv/dist/types\"\n\nexport type FormatMode = \"fast\" | \"full\"\n\nexport type FormatName =\n | \"date\"\n | \"time\"\n | \"date-time\"\n | \"iso-time\"\n | \"iso-date-time\"\n | \"duration\"\n | \"uri\"\n | \"uri-reference\"\n | \"uri-template\"\n | \"url\"\n | \"email\"\n | \"hostname\"\n | \"ipv4\"\n | \"ipv6\"\n | \"regex\"\n | \"uuid\"\n | \"json-pointer\"\n | \"json-pointer-uri-fragment\"\n | \"relative-json-pointer\"\n | \"byte\"\n | \"int32\"\n | \"int64\"\n | \"float\"\n | \"double\"\n | \"password\"\n | \"binary\"\n\nexport type DefinedFormats = {\n [key in FormatName]: Format\n}\n\nfunction fmtDef(\n validate: RegExp | FormatValidator<string>,\n compare: FormatCompare<string>\n): FormatDefinition<string> {\n return {validate, compare}\n}\n\nexport const fullFormats: DefinedFormats = {\n // date: http://tools.ietf.org/html/rfc3339#section-5.6\n date: fmtDef(date, compareDate),\n // date-time: http://tools.ietf.org/html/rfc3339#section-5.6\n time: fmtDef(getTime(true), compareTime),\n \"date-time\": fmtDef(getDateTime(true), compareDateTime),\n \"iso-time\": fmtDef(getTime(), compareIsoTime),\n \"iso-date-time\": fmtDef(getDateTime(), compareIsoDateTime),\n // duration: https://tools.ietf.org/html/rfc3339#appendix-A\n duration: /^P(?!$)((\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+S)?)?|(\\d+W)?)$/,\n uri,\n \"uri-reference\":\n /^(?:[a-z][a-z0-9+\\-.]*:)?(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'\"()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\\?(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,\n // uri-template: https://tools.ietf.org/html/rfc6570\n \"uri-template\":\n /^(?:(?:[^\\x00-\\x20\"'<>%\\\\^`{|}]|%[0-9a-f]{2})|\\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?)*\\})*$/i,\n // For the source: https://gist.github.com/dperini/729294\n // For test cases: https://mathiasbynens.be/demo/url-regex\n url: /^(?:https?|ftp):\\/\\/(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u{00a1}-\\u{ffff}]+-)*[a-z0-9\\u{00a1}-\\u{ffff}]+)(?:\\.(?:[a-z0-9\\u{00a1}-\\u{ffff}]+-)*[a-z0-9\\u{00a1}-\\u{ffff}]+)*(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}]{2,})))(?::\\d{2,5})?(?:\\/[^\\s]*)?$/iu,\n email:\n /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,\n hostname:\n /^(?=.{1,253}\\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\\.?$/i,\n // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html\n ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)$/,\n ipv6: /^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))$/i,\n regex,\n // uuid: http://tools.ietf.org/html/rfc4122\n uuid: /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,\n // JSON-pointer: https://tools.ietf.org/html/rfc6901\n // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A\n \"json-pointer\": /^(?:\\/(?:[^~/]|~0|~1)*)*$/,\n \"json-pointer-uri-fragment\": /^#(?:\\/(?:[a-z0-9_\\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,\n // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00\n \"relative-json-pointer\": /^(?:0|[1-9][0-9]*)(?:#|(?:\\/(?:[^~/]|~0|~1)*)*)$/,\n // the following formats are used by the openapi specification: https://spec.openapis.org/oas/v3.0.0#data-types\n // byte: https://github.com/miguelmota/is-base64\n byte,\n // signed 32 bit integer\n int32: {type: \"number\", validate: validateInt32},\n // signed 64 bit integer\n int64: {type: \"number\", validate: validateInt64},\n // C-type float\n float: {type: \"number\", validate: validateNumber},\n // C-type double\n double: {type: \"number\", validate: validateNumber},\n // hint to the UI to hide input strings\n password: true,\n // unchecked string payload\n binary: true,\n}\n\nexport const fastFormats: DefinedFormats = {\n ...fullFormats,\n date: fmtDef(/^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/, compareDate),\n time: fmtDef(\n /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i,\n compareTime\n ),\n \"date-time\": fmtDef(\n /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\dt(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i,\n compareDateTime\n ),\n \"iso-time\": fmtDef(\n /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i,\n compareIsoTime\n ),\n \"iso-date-time\": fmtDef(\n /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d[t\\s](?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i,\n compareIsoDateTime\n ),\n // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js\n uri: /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/)?[^\\s]*$/i,\n \"uri-reference\": /^(?:(?:[a-z][a-z0-9+\\-.]*:)?\\/?\\/)?(?:[^\\\\\\s#][^\\s#]*)?(?:#[^\\\\\\s]*)?$/i,\n // email (sources from jsen validator):\n // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363\n // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'wilful violation')\n email:\n /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,\n}\n\nexport const formatNames = Object.keys(fullFormats) as FormatName[]\n\nfunction isLeapYear(year: number): boolean {\n // https://tools.ietf.org/html/rfc3339#appendix-C\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)\n}\n\nconst DATE = /^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)$/\nconst DAYS = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n\nfunction date(str: string): boolean {\n // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\n const matches: string[] | null = DATE.exec(str)\n if (!matches) return false\n const year: number = +matches[1]\n const month: number = +matches[2]\n const day: number = +matches[3]\n return (\n month >= 1 &&\n month <= 12 &&\n day >= 1 &&\n day <= (month === 2 && isLeapYear(year) ? 29 : DAYS[month])\n )\n}\n\nfunction compareDate(d1: string, d2: string): number | undefined {\n if (!(d1 && d2)) return undefined\n if (d1 > d2) return 1\n if (d1 < d2) return -1\n return 0\n}\n\nconst TIME = /^(\\d\\d):(\\d\\d):(\\d\\d(?:\\.\\d+)?)(z|([+-])(\\d\\d)(?::?(\\d\\d))?)?$/i\n\nfunction getTime(strictTimeZone?: boolean): (str: string) => boolean {\n return function time(str: string): boolean {\n const matches: string[] | null = TIME.exec(str)\n if (!matches) return false\n const hr: number = +matches[1]\n const min: number = +matches[2]\n const sec: number = +matches[3]\n const tz: string | undefined = matches[4]\n const tzSign: number = matches[5] === \"-\" ? -1 : 1\n const tzH: number = +(matches[6] || 0)\n const tzM: number = +(matches[7] || 0)\n if (tzH > 23 || tzM > 59 || (strictTimeZone && !tz)) return false\n if (hr <= 23 && min <= 59 && sec < 60) return true\n // leap second\n const utcMin = min - tzM * tzSign\n const utcHr = hr - tzH * tzSign - (utcMin < 0 ? 1 : 0)\n return (utcHr === 23 || utcHr === -1) && (utcMin === 59 || utcMin === -1) && sec < 61\n }\n}\n\nfunction compareTime(s1: string, s2: string): number | undefined {\n if (!(s1 && s2)) return undefined\n const t1 = new Date(\"2020-01-01T\" + s1).valueOf()\n const t2 = new Date(\"2020-01-01T\" + s2).valueOf()\n if (!(t1 && t2)) return undefined\n return t1 - t2\n}\n\nfunction compareIsoTime(t1: string, t2: string): number | undefined {\n if (!(t1 && t2)) return undefined\n const a1 = TIME.exec(t1)\n const a2 = TIME.exec(t2)\n if (!(a1 && a2)) return undefined\n t1 = a1[1] + a1[2] + a1[3]\n t2 = a2[1] + a2[2] + a2[3]\n if (t1 > t2) return 1\n if (t1 < t2) return -1\n return 0\n}\n\nconst DATE_TIME_SEPARATOR = /t|\\s/i\nfunction getDateTime(strictTimeZone?: boolean): (str: string) => boolean {\n const time = getTime(strictTimeZone)\n\n return function date_time(str: string): boolean {\n // http://tools.ietf.org/html/rfc3339#section-5.6\n const dateTime: string[] = str.split(DATE_TIME_SEPARATOR)\n return dateTime.length === 2 && date(dateTime[0]) && time(dateTime[1])\n }\n}\n\nfunction compareDateTime(dt1: string, dt2: string): number | undefined {\n if (!(dt1 && dt2)) return undefined\n const d1 = new Date(dt1).valueOf()\n const d2 = new Date(dt2).valueOf()\n if (!(d1 && d2)) return undefined\n return d1 - d2\n}\n\nfunction compareIsoDateTime(dt1: string, dt2: string): number | undefined {\n if (!(dt1 && dt2)) return undefined\n const [d1, t1] = dt1.split(DATE_TIME_SEPARATOR)\n const [d2, t2] = dt2.split(DATE_TIME_SEPARATOR)\n const res = compareDate(d1, d2)\n if (res === undefined) return undefined\n return res || compareTime(t1, t2)\n}\n\nconst NOT_URI_FRAGMENT = /\\/|:/\nconst URI =\n /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\\?(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i\n\nfunction uri(str: string): boolean {\n // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required \".\"\n return NOT_URI_FRAGMENT.test(str) && URI.test(str)\n}\n\nconst BYTE = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm\n\nfunction byte(str: string): boolean {\n BYTE.lastIndex = 0\n return BYTE.test(str)\n}\n\nconst MIN_INT32 = -(2 ** 31)\nconst MAX_INT32 = 2 ** 31 - 1\n\nfunction validateInt32(value: number): boolean {\n return Number.isInteger(value) && value <= MAX_INT32 && value >= MIN_INT32\n}\n\nfunction validateInt64(value: number): boolean {\n // JSON and javascript max Int is 2**53, so any int that passes isInteger is valid for Int64\n return Number.isInteger(value)\n}\n\nfunction validateNumber(): boolean {\n return true\n}\n\nconst Z_ANCHOR = /[^\\\\]\\\\Z/\nfunction regex(str: string): boolean {\n if (Z_ANCHOR.test(str)) return false\n try {\n new RegExp(str)\n return true\n } catch (e) {\n return false\n }\n}\n","import type Ajv from \"ajv\"\nimport type {\n Plugin,\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n Code,\n Name,\n ErrorObject,\n} from \"ajv\"\nimport type {AddedFormat} from \"ajv/dist/types\"\nimport type {Rule} from \"ajv/dist/compile/rules\"\nimport {KeywordCxt} from \"ajv\"\nimport {_, str, or, getProperty, operators} from \"ajv/dist/compile/codegen\"\n\ntype Kwd = \"formatMaximum\" | \"formatMinimum\" | \"formatExclusiveMaximum\" | \"formatExclusiveMinimum\"\n\ntype Comparison = \"<=\" | \">=\" | \"<\" | \">\"\n\nconst ops = operators\n\nconst KWDs: {[K in Kwd]: {okStr: Comparison; ok: Code; fail: Code}} = {\n formatMaximum: {okStr: \"<=\", ok: ops.LTE, fail: ops.GT},\n formatMinimum: {okStr: \">=\", ok: ops.GTE, fail: ops.LT},\n formatExclusiveMaximum: {okStr: \"<\", ok: ops.LT, fail: ops.GTE},\n formatExclusiveMinimum: {okStr: \">\", ok: ops.GT, fail: ops.LTE},\n}\n\nexport type LimitFormatError = ErrorObject<Kwd, {limit: string; comparison: Comparison}>\n\nconst error: KeywordErrorDefinition = {\n message: ({keyword, schemaCode}) => str`should be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,\n params: ({keyword, schemaCode}) =>\n _`{comparison: ${KWDs[keyword as Kwd].okStr}, limit: ${schemaCode}}`,\n}\n\nexport const formatLimitDefinition: CodeKeywordDefinition = {\n keyword: Object.keys(KWDs),\n type: \"string\",\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt) {\n const {gen, data, schemaCode, keyword, it} = cxt\n const {opts, self} = it\n if (!opts.validateFormats) return\n\n const fCxt = new KeywordCxt(it, (self.RULES.all.format as Rule).definition, \"format\")\n if (fCxt.$data) validate$DataFormat()\n else validateFormat()\n\n function validate$DataFormat(): void {\n const fmts = gen.scopeValue(\"formats\", {\n ref: self.formats,\n code: opts.code.formats,\n })\n const fmt = gen.const(\"fmt\", _`${fmts}[${fCxt.schemaCode}]`)\n cxt.fail$data(\n or(\n _`typeof ${fmt} != \"object\"`,\n _`${fmt} instanceof RegExp`,\n _`typeof ${fmt}.compare != \"function\"`,\n compareCode(fmt)\n )\n )\n }\n\n function validateFormat(): void {\n const format = fCxt.schema as string\n const fmtDef: AddedFormat | undefined = self.formats[format]\n if (!fmtDef || fmtDef === true) return\n if (\n typeof fmtDef != \"object\" ||\n fmtDef instanceof RegExp ||\n typeof fmtDef.compare != \"function\"\n ) {\n throw new Error(`\"${keyword}\": format \"${format}\" does not define \"compare\" function`)\n }\n const fmt = gen.scopeValue(\"formats\", {\n key: format,\n ref: fmtDef,\n code: opts.code.formats ? _`${opts.code.formats}${getProperty(format)}` : undefined,\n })\n\n cxt.fail$data(compareCode(fmt))\n }\n\n function compareCode(fmt: Name): Code {\n return _`${fmt}.compare(${data}, ${schemaCode}) ${KWDs[keyword as Kwd].fail} 0`\n }\n },\n dependencies: [\"format\"],\n}\n\nconst formatLimitPlugin: Plugin<undefined> = (ajv: Ajv): Ajv => {\n ajv.addKeyword(formatLimitDefinition)\n return ajv\n}\n\nexport default formatLimitPlugin\n","import {\n DefinedFormats,\n FormatMode,\n FormatName,\n formatNames,\n fastFormats,\n fullFormats,\n} from \"./formats\"\nimport formatLimit from \"./limit\"\nimport type Ajv from \"ajv\"\nimport type {Plugin, Format} from \"ajv\"\nimport {_, Name} from \"ajv/dist/compile/codegen\"\n\nexport {FormatMode, FormatName} from \"./formats\"\nexport {LimitFormatError} from \"./limit\"\nexport interface FormatOptions {\n mode?: FormatMode\n formats?: FormatName[]\n keywords?: boolean\n}\n\nexport type FormatsPluginOptions = FormatName[] | FormatOptions\n\nexport interface FormatsPlugin extends Plugin<FormatsPluginOptions> {\n get: (format: FormatName, mode?: FormatMode) => Format\n}\n\nconst fullName = new Name(\"fullFormats\")\nconst fastName = new Name(\"fastFormats\")\n\nconst formatsPlugin: FormatsPlugin = (\n ajv: Ajv,\n opts: FormatsPluginOptions = {keywords: true}\n): Ajv => {\n if (Array.isArray(opts)) {\n addFormats(ajv, opts, fullFormats, fullName)\n return ajv\n }\n const [formats, exportName] =\n opts.mode === \"fast\" ? [fastFormats, fastName] : [fullFormats, fullName]\n const list = opts.formats || formatNames\n addFormats(ajv, list, formats, exportName)\n if (opts.keywords) formatLimit(ajv)\n return ajv\n}\n\nformatsPlugin.get = (name: FormatName, mode: FormatMode = \"full\"): Format => {\n const formats = mode === \"fast\" ? fastFormats : fullFormats\n const f = formats[name]\n if (!f) throw new Error(`Unknown format \"${name}\"`)\n return f\n}\n\nfunction addFormats(ajv: Ajv, list: FormatName[], fs: DefinedFormats, exportName: Name): void {\n ajv.opts.code.formats ??= _`require(\"ajv-formats/dist/formats\").${exportName}`\n for (const f of list) ajv.addFormat(f, fs[f])\n}\n\nmodule.exports = exports = formatsPlugin\nObject.defineProperty(exports, \"__esModule\", {value: true})\n\nexport default formatsPlugin\n","module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n var pathext = options.pathExt !== undefined ?\n options.pathExt : process.env.PATHEXT\n\n if (!pathext) {\n return true\n }\n\n pathext = pathext.split(';')\n if (pathext.indexOf('') !== -1) {\n return true\n }\n for (var i = 0; i < pathext.length; i++) {\n var p = pathext[i].toLowerCase()\n if (p && path.substr(-p.length).toLowerCase() === p) {\n return true\n }\n }\n return false\n}\n\nfunction checkStat (stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) {\n return false\n }\n return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, path, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), path, options)\n}\n","module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n var mod = stat.mode\n var uid = stat.uid\n var gid = stat.gid\n\n var myUid = options.uid !== undefined ?\n options.uid : process.getuid && process.getuid()\n var myGid = options.gid !== undefined ?\n options.gid : process.getgid && process.getgid()\n\n var u = parseInt('100', 8)\n var g = parseInt('010', 8)\n var o = parseInt('001', 8)\n var ug = u | g\n\n var ret = (mod & o) ||\n (mod & g) && gid === myGid ||\n (mod & u) && uid === myUid ||\n (mod & ug) && myUid === 0\n\n return ret\n}\n","var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n core = require('./windows.js')\n} else {\n core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n if (!cb) {\n if (typeof Promise !== 'function') {\n throw new TypeError('callback not provided')\n }\n\n return new Promise(function (resolve, reject) {\n isexe(path, options || {}, function (er, is) {\n if (er) {\n reject(er)\n } else {\n resolve(is)\n }\n })\n })\n }\n\n core(path, options || {}, function (er, is) {\n // ignore EACCES because that just means we aren't allowed to run it\n if (er) {\n if (er.code === 'EACCES' || options && options.ignoreErrors) {\n er = null\n is = false\n }\n }\n cb(er, is)\n })\n}\n\nfunction sync (path, options) {\n // my kingdom for a filtered catch\n try {\n return core.sync(path, options || {})\n } catch (er) {\n if (options && options.ignoreErrors || er.code === 'EACCES') {\n return false\n } else {\n throw er\n }\n }\n}\n","const isWindows = process.platform === 'win32' ||\n process.env.OSTYPE === 'cygwin' ||\n process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n const colon = opt.colon || COLON\n\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n : (\n [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(opt.path || process.env.PATH ||\n /* istanbul ignore next: very unusual */ '').split(colon),\n ]\n )\n const pathExtExe = isWindows\n ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n : ''\n const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n pathExt.unshift('')\n }\n\n return {\n pathEnv,\n pathExt,\n pathExtExe,\n }\n}\n\nconst which = (cmd, opt, cb) => {\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (!opt)\n opt = {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n const step = i => new Promise((resolve, reject) => {\n if (i === pathEnv.length)\n return opt.all && found.length ? resolve(found)\n : reject(getNotFoundError(cmd))\n\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n resolve(subStep(p, i, 0))\n })\n\n const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n if (ii === pathExt.length)\n return resolve(step(i + 1))\n const ext = pathExt[ii]\n isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n if (!er && is) {\n if (opt.all)\n found.push(p + ext)\n else\n return resolve(p + ext)\n }\n return resolve(subStep(p, i, ii + 1))\n })\n })\n\n return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n opt = opt || {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (let i = 0; i < pathEnv.length; i ++) {\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n for (let j = 0; j < pathExt.length; j ++) {\n const cur = p + pathExt[j]\n try {\n const is = isexe.sync(cur, { pathExt: pathExtExe })\n if (is) {\n if (opt.all)\n found.push(cur)\n else\n return cur\n }\n } catch (ex) {}\n }\n }\n\n if (opt.all && found.length)\n return found\n\n if (opt.nothrow)\n return null\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n","'use strict';\n\nconst pathKey = (options = {}) => {\n\tconst environment = options.env || process.env;\n\tconst platform = options.platform || process.platform;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(environment).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n};\n\nmodule.exports = pathKey;\n// TODO: Remove this for the next major release\nmodule.exports.default = pathKey;\n","'use strict';\n\nconst path = require('path');\nconst which = require('which');\nconst getPathKey = require('path-key');\n\nfunction resolveCommandAttempt(parsed, withoutPathExt) {\n const env = parsed.options.env || process.env;\n const cwd = process.cwd();\n const hasCustomCwd = parsed.options.cwd != null;\n // Worker threads do not have process.chdir()\n const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled;\n\n // If a custom `cwd` was specified, we need to change the process cwd\n // because `which` will do stat calls but does not support a custom cwd\n if (shouldSwitchCwd) {\n try {\n process.chdir(parsed.options.cwd);\n } catch (err) {\n /* Empty */\n }\n }\n\n let resolved;\n\n try {\n resolved = which.sync(parsed.command, {\n path: env[getPathKey({ env })],\n pathExt: withoutPathExt ? path.delimiter : undefined,\n });\n } catch (e) {\n /* Empty */\n } finally {\n if (shouldSwitchCwd) {\n process.chdir(cwd);\n }\n }\n\n // If we successfully resolved, ensure that an absolute path is returned\n // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it\n if (resolved) {\n resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved);\n }\n\n return resolved;\n}\n\nfunction resolveCommand(parsed) {\n return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);\n}\n\nmodule.exports = resolveCommand;\n","'use strict';\n\n// See http://www.robvanderwoude.com/escapechars.php\nconst metaCharsRegExp = /([()\\][%!^\"`<>&|;, *?])/g;\n\nfunction escapeCommand(arg) {\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n return arg;\n}\n\nfunction escapeArgument(arg, doubleEscapeMetaChars) {\n // Convert to string\n arg = `${arg}`;\n\n // Algorithm below is based on https://qntm.org/cmd\n // It's slightly altered to disable JS backtracking to avoid hanging on specially crafted input\n // Please see https://github.com/moxystudio/node-cross-spawn/pull/160 for more information\n\n // Sequence of backslashes followed by a double quote:\n // double up all the backslashes and escape the double quote\n arg = arg.replace(/(?=(\\\\+?)?)\\1\"/g, '$1$1\\\\\"');\n\n // Sequence of backslashes followed by the end of the string\n // (which will become a double quote later):\n // double up all the backslashes\n arg = arg.replace(/(?=(\\\\+?)?)\\1$/, '$1$1');\n\n // All other backslashes occur literally\n\n // Quote the whole thing:\n arg = `\"${arg}\"`;\n\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n // Double escape meta chars if necessary\n if (doubleEscapeMetaChars) {\n arg = arg.replace(metaCharsRegExp, '^$1');\n }\n\n return arg;\n}\n\nmodule.exports.command = escapeCommand;\nmodule.exports.argument = escapeArgument;\n","'use strict';\nmodule.exports = /^#!(.*)/;\n","'use strict';\nconst shebangRegex = require('shebang-regex');\n\nmodule.exports = (string = '') => {\n\tconst match = string.match(shebangRegex);\n\n\tif (!match) {\n\t\treturn null;\n\t}\n\n\tconst [path, argument] = match[0].replace(/#! ?/, '').split(' ');\n\tconst binary = path.split('/').pop();\n\n\tif (binary === 'env') {\n\t\treturn argument;\n\t}\n\n\treturn argument ? `${binary} ${argument}` : binary;\n};\n","'use strict';\n\nconst fs = require('fs');\nconst shebangCommand = require('shebang-command');\n\nfunction readShebang(command) {\n // Read the first 150 bytes from the file\n const size = 150;\n const buffer = Buffer.alloc(size);\n\n let fd;\n\n try {\n fd = fs.openSync(command, 'r');\n fs.readSync(fd, buffer, 0, size, 0);\n fs.closeSync(fd);\n } catch (e) { /* Empty */ }\n\n // Attempt to extract shebang (null is returned if not a shebang)\n return shebangCommand(buffer.toString());\n}\n\nmodule.exports = readShebang;\n","'use strict';\n\nconst path = require('path');\nconst resolveCommand = require('./util/resolveCommand');\nconst escape = require('./util/escape');\nconst readShebang = require('./util/readShebang');\n\nconst isWin = process.platform === 'win32';\nconst isExecutableRegExp = /\\.(?:com|exe)$/i;\nconst isCmdShimRegExp = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\n\nfunction detectShebang(parsed) {\n parsed.file = resolveCommand(parsed);\n\n const shebang = parsed.file && readShebang(parsed.file);\n\n if (shebang) {\n parsed.args.unshift(parsed.file);\n parsed.command = shebang;\n\n return resolveCommand(parsed);\n }\n\n return parsed.file;\n}\n\nfunction parseNonShell(parsed) {\n if (!isWin) {\n return parsed;\n }\n\n // Detect & add support for shebangs\n const commandFile = detectShebang(parsed);\n\n // We don't need a shell if the command filename is an executable\n const needsShell = !isExecutableRegExp.test(commandFile);\n\n // If a shell is required, use cmd.exe and take care of escaping everything correctly\n // Note that `forceShell` is an hidden option used only in tests\n if (parsed.options.forceShell || needsShell) {\n // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/`\n // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument\n // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called,\n // we need to double escape them\n const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);\n\n // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\\bar)\n // This is necessary otherwise it will always fail with ENOENT in those cases\n parsed.command = path.normalize(parsed.command);\n\n // Escape command & arguments\n parsed.command = escape.command(parsed.command);\n parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));\n\n const shellCommand = [parsed.command].concat(parsed.args).join(' ');\n\n parsed.args = ['/d', '/s', '/c', `\"${shellCommand}\"`];\n parsed.command = process.env.comspec || 'cmd.exe';\n parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped\n }\n\n return parsed;\n}\n\nfunction parse(command, args, options) {\n // Normalize arguments, similar to nodejs\n if (args && !Array.isArray(args)) {\n options = args;\n args = null;\n }\n\n args = args ? args.slice(0) : []; // Clone array to avoid changing the original\n options = Object.assign({}, options); // Clone object to avoid changing the original\n\n // Build our parsed object\n const parsed = {\n command,\n args,\n options,\n file: undefined,\n original: {\n command,\n args,\n },\n };\n\n // Delegate further parsing to shell or non-shell\n return options.shell ? parsed : parseNonShell(parsed);\n}\n\nmodule.exports = parse;\n","'use strict';\n\nconst isWin = process.platform === 'win32';\n\nfunction notFoundError(original, syscall) {\n return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {\n code: 'ENOENT',\n errno: 'ENOENT',\n syscall: `${syscall} ${original.command}`,\n path: original.command,\n spawnargs: original.args,\n });\n}\n\nfunction hookChildProcess(cp, parsed) {\n if (!isWin) {\n return;\n }\n\n const originalEmit = cp.emit;\n\n cp.emit = function (name, arg1) {\n // If emitting \"exit\" event and exit code is 1, we need to check if\n // the command exists and emit an \"error\" instead\n // See https://github.com/IndigoUnited/node-cross-spawn/issues/16\n if (name === 'exit') {\n const err = verifyENOENT(arg1, parsed);\n\n if (err) {\n return originalEmit.call(cp, 'error', err);\n }\n }\n\n return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params\n };\n}\n\nfunction verifyENOENT(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawn');\n }\n\n return null;\n}\n\nfunction verifyENOENTSync(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawnSync');\n }\n\n return null;\n}\n\nmodule.exports = {\n hookChildProcess,\n verifyENOENT,\n verifyENOENTSync,\n notFoundError,\n};\n","'use strict';\n\nconst cp = require('child_process');\nconst parse = require('./lib/parse');\nconst enoent = require('./lib/enoent');\n\nfunction spawn(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\n\n // Hook into child process \"exit\" event to emit an error if the command\n // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n enoent.hookChildProcess(spawned, parsed);\n\n return spawned;\n}\n\nfunction spawnSync(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);\n\n // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);\n\n return result;\n}\n\nmodule.exports = spawn;\nmodule.exports.spawn = spawn;\nmodule.exports.sync = spawnSync;\n\nmodule.exports._parse = parse;\nmodule.exports._enoent = enoent;\n","\"use strict\";\r\nmodule.exports = Event;\r\n\r\nEvent.CAPTURING_PHASE = 1;\r\nEvent.AT_TARGET = 2;\r\nEvent.BUBBLING_PHASE = 3;\r\n\r\nfunction Event(type, dictionary) {\r\n // Initialize basic event properties\r\n this.type = '';\r\n this.target = null;\r\n this.currentTarget = null;\r\n this.eventPhase = Event.AT_TARGET;\r\n this.bubbles = false;\r\n this.cancelable = false;\r\n this.isTrusted = false;\r\n this.defaultPrevented = false;\r\n this.timeStamp = Date.now();\r\n\r\n // Initialize internal flags\r\n // XXX: Would it be better to inherit these defaults from the prototype?\r\n this._propagationStopped = false;\r\n this._immediatePropagationStopped = false;\r\n this._initialized = true;\r\n this._dispatching = false;\r\n\r\n // Now initialize based on the constructor arguments (if any)\r\n if (type) this.type = type;\r\n if (dictionary) {\r\n for(var p in dictionary) {\r\n this[p] = dictionary[p];\r\n }\r\n }\r\n}\r\n\r\nEvent.prototype = Object.create(Object.prototype, {\r\n constructor: { value: Event },\r\n stopPropagation: { value: function stopPropagation() {\r\n this._propagationStopped = true;\r\n }},\r\n\r\n stopImmediatePropagation: { value: function stopImmediatePropagation() {\r\n this._propagationStopped = true;\r\n this._immediatePropagationStopped = true;\r\n }},\r\n\r\n preventDefault: { value: function preventDefault() {\r\n if (this.cancelable) this.defaultPrevented = true;\r\n }},\r\n\r\n initEvent: { value: function initEvent(type, bubbles, cancelable) {\r\n this._initialized = true;\r\n if (this._dispatching) return;\r\n\r\n this._propagationStopped = false;\r\n this._immediatePropagationStopped = false;\r\n this.defaultPrevented = false;\r\n this.isTrusted = false;\r\n\r\n this.target = null;\r\n this.type = type;\r\n this.bubbles = bubbles;\r\n this.cancelable = cancelable;\r\n }},\r\n\r\n});\r\n","\"use strict\";\r\nvar Event = require('./Event');\r\n\r\nmodule.exports = UIEvent;\r\n\r\nfunction UIEvent() {\r\n // Just use the superclass constructor to initialize\r\n Event.call(this);\r\n this.view = null; // FF uses the current window\r\n this.detail = 0;\r\n}\r\nUIEvent.prototype = Object.create(Event.prototype, {\r\n constructor: { value: UIEvent },\r\n initUIEvent: { value: function(type, bubbles, cancelable, view, detail) {\r\n this.initEvent(type, bubbles, cancelable);\r\n this.view = view;\r\n this.detail = detail;\r\n }}\r\n});\r\n","\"use strict\";\r\nvar UIEvent = require('./UIEvent');\r\n\r\nmodule.exports = MouseEvent;\r\n\r\nfunction MouseEvent() {\r\n // Just use the superclass constructor to initialize\r\n UIEvent.call(this);\r\n\r\n this.screenX = this.screenY = this.clientX = this.clientY = 0;\r\n this.ctrlKey = this.altKey = this.shiftKey = this.metaKey = false;\r\n this.button = 0;\r\n this.buttons = 1;\r\n this.relatedTarget = null;\r\n}\r\nMouseEvent.prototype = Object.create(UIEvent.prototype, {\r\n constructor: { value: MouseEvent },\r\n initMouseEvent: { value: function(type, bubbles, cancelable,\r\n view, detail,\r\n screenX, screenY, clientX, clientY,\r\n ctrlKey, altKey, shiftKey, metaKey,\r\n button, relatedTarget) {\r\n\r\n this.initEvent(type, bubbles, cancelable, view, detail);\r\n this.screenX = screenX;\r\n this.screenY = screenY;\r\n this.clientX = clientX;\r\n this.clientY = clientY;\r\n this.ctrlKey = ctrlKey;\r\n this.altKey = altKey;\r\n this.shiftKey = shiftKey;\r\n this.metaKey = metaKey;\r\n this.button = button;\r\n switch(button) {\r\n case 0: this.buttons = 1; break;\r\n case 1: this.buttons = 4; break;\r\n case 2: this.buttons = 2; break;\r\n default: this.buttons = 0; break;\r\n }\r\n this.relatedTarget = relatedTarget;\r\n }},\r\n\r\n getModifierState: { value: function(key) {\r\n switch(key) {\r\n case \"Alt\": return this.altKey;\r\n case \"Control\": return this.ctrlKey;\r\n case \"Shift\": return this.shiftKey;\r\n case \"Meta\": return this.metaKey;\r\n default: return false;\r\n }\r\n }}\r\n});\r\n","\"use strict\";\r\nmodule.exports = DOMException;\r\n\r\nvar INDEX_SIZE_ERR = 1;\r\nvar HIERARCHY_REQUEST_ERR = 3;\r\nvar WRONG_DOCUMENT_ERR = 4;\r\nvar INVALID_CHARACTER_ERR = 5;\r\nvar NO_MODIFICATION_ALLOWED_ERR = 7;\r\nvar NOT_FOUND_ERR = 8;\r\nvar NOT_SUPPORTED_ERR = 9;\r\nvar INVALID_STATE_ERR = 11;\r\nvar SYNTAX_ERR = 12;\r\nvar INVALID_MODIFICATION_ERR = 13;\r\nvar NAMESPACE_ERR = 14;\r\nvar INVALID_ACCESS_ERR = 15;\r\nvar TYPE_MISMATCH_ERR = 17;\r\nvar SECURITY_ERR = 18;\r\nvar NETWORK_ERR = 19;\r\nvar ABORT_ERR = 20;\r\nvar URL_MISMATCH_ERR = 21;\r\nvar QUOTA_EXCEEDED_ERR = 22;\r\nvar TIMEOUT_ERR = 23;\r\nvar INVALID_NODE_TYPE_ERR = 24;\r\nvar DATA_CLONE_ERR = 25;\r\n\r\n// Code to name\r\nvar names = [\r\n null, // No error with code 0\r\n 'INDEX_SIZE_ERR',\r\n null, // historical\r\n 'HIERARCHY_REQUEST_ERR',\r\n 'WRONG_DOCUMENT_ERR',\r\n 'INVALID_CHARACTER_ERR',\r\n null, // historical\r\n 'NO_MODIFICATION_ALLOWED_ERR',\r\n 'NOT_FOUND_ERR',\r\n 'NOT_SUPPORTED_ERR',\r\n 'INUSE_ATTRIBUTE_ERR', // historical\r\n 'INVALID_STATE_ERR',\r\n 'SYNTAX_ERR',\r\n 'INVALID_MODIFICATION_ERR',\r\n 'NAMESPACE_ERR',\r\n 'INVALID_ACCESS_ERR',\r\n null, // historical\r\n 'TYPE_MISMATCH_ERR',\r\n 'SECURITY_ERR',\r\n 'NETWORK_ERR',\r\n 'ABORT_ERR',\r\n 'URL_MISMATCH_ERR',\r\n 'QUOTA_EXCEEDED_ERR',\r\n 'TIMEOUT_ERR',\r\n 'INVALID_NODE_TYPE_ERR',\r\n 'DATA_CLONE_ERR',\r\n];\r\n\r\n// Code to message\r\n// These strings are from the 13 May 2011 Editor's Draft of DOM Core.\r\n// http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html\r\n// Copyright © 2011 W3C® (MIT, ERCIM, Keio), All Rights Reserved.\r\n// Used under the terms of the W3C Document License:\r\n// http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231\r\nvar messages = [\r\n null, // No error with code 0\r\n 'INDEX_SIZE_ERR (1): the index is not in the allowed range',\r\n null,\r\n 'HIERARCHY_REQUEST_ERR (3): the operation would yield an incorrect nodes model',\r\n 'WRONG_DOCUMENT_ERR (4): the object is in the wrong Document, a call to importNode is required',\r\n 'INVALID_CHARACTER_ERR (5): the string contains invalid characters',\r\n null,\r\n 'NO_MODIFICATION_ALLOWED_ERR (7): the object can not be modified',\r\n 'NOT_FOUND_ERR (8): the object can not be found here',\r\n 'NOT_SUPPORTED_ERR (9): this operation is not supported',\r\n 'INUSE_ATTRIBUTE_ERR (10): setAttributeNode called on owned Attribute',\r\n 'INVALID_STATE_ERR (11): the object is in an invalid state',\r\n 'SYNTAX_ERR (12): the string did not match the expected pattern',\r\n 'INVALID_MODIFICATION_ERR (13): the object can not be modified in this way',\r\n 'NAMESPACE_ERR (14): the operation is not allowed by Namespaces in XML',\r\n 'INVALID_ACCESS_ERR (15): the object does not support the operation or argument',\r\n null,\r\n 'TYPE_MISMATCH_ERR (17): the type of the object does not match the expected type',\r\n 'SECURITY_ERR (18): the operation is insecure',\r\n 'NETWORK_ERR (19): a network error occurred',\r\n 'ABORT_ERR (20): the user aborted an operation',\r\n 'URL_MISMATCH_ERR (21): the given URL does not match another URL',\r\n 'QUOTA_EXCEEDED_ERR (22): the quota has been exceeded',\r\n 'TIMEOUT_ERR (23): a timeout occurred',\r\n 'INVALID_NODE_TYPE_ERR (24): the supplied node is invalid or has an invalid ancestor for this operation',\r\n 'DATA_CLONE_ERR (25): the object can not be cloned.'\r\n];\r\n\r\n// Name to code\r\nvar constants = {\r\n INDEX_SIZE_ERR: INDEX_SIZE_ERR,\r\n DOMSTRING_SIZE_ERR: 2, // historical\r\n HIERARCHY_REQUEST_ERR: HIERARCHY_REQUEST_ERR,\r\n WRONG_DOCUMENT_ERR: WRONG_DOCUMENT_ERR,\r\n INVALID_CHARACTER_ERR: INVALID_CHARACTER_ERR,\r\n NO_DATA_ALLOWED_ERR: 6, // historical\r\n NO_MODIFICATION_ALLOWED_ERR: NO_MODIFICATION_ALLOWED_ERR,\r\n NOT_FOUND_ERR: NOT_FOUND_ERR,\r\n NOT_SUPPORTED_ERR: NOT_SUPPORTED_ERR,\r\n INUSE_ATTRIBUTE_ERR: 10, // historical\r\n INVALID_STATE_ERR: INVALID_STATE_ERR,\r\n SYNTAX_ERR: SYNTAX_ERR,\r\n INVALID_MODIFICATION_ERR: INVALID_MODIFICATION_ERR,\r\n NAMESPACE_ERR: NAMESPACE_ERR,\r\n INVALID_ACCESS_ERR: INVALID_ACCESS_ERR,\r\n VALIDATION_ERR: 16, // historical\r\n TYPE_MISMATCH_ERR: TYPE_MISMATCH_ERR,\r\n SECURITY_ERR: SECURITY_ERR,\r\n NETWORK_ERR: NETWORK_ERR,\r\n ABORT_ERR: ABORT_ERR,\r\n URL_MISMATCH_ERR: URL_MISMATCH_ERR,\r\n QUOTA_EXCEEDED_ERR: QUOTA_EXCEEDED_ERR,\r\n TIMEOUT_ERR: TIMEOUT_ERR,\r\n INVALID_NODE_TYPE_ERR: INVALID_NODE_TYPE_ERR,\r\n DATA_CLONE_ERR: DATA_CLONE_ERR\r\n};\r\n\r\nfunction DOMException(code) {\r\n Error.call(this);\r\n Error.captureStackTrace(this, this.constructor);\r\n this.code = code;\r\n this.message = messages[code];\r\n this.name = names[code];\r\n}\r\nDOMException.prototype.__proto__ = Error.prototype;\r\n\r\n// Initialize the constants on DOMException and DOMException.prototype\r\nfor(var c in constants) {\r\n var v = { value: constants[c] };\r\n Object.defineProperty(DOMException, c, v);\r\n Object.defineProperty(DOMException.prototype, c, v);\r\n}\r\n","/*\r\n * This file defines Domino behaviour that can be externally configured.\r\n * To change these settings, set the relevant global property *before*\r\n * you call `require(\"domino\")`.\r\n */\r\n\r\nexports.isApiWritable = !globalThis.__domino_frozen__;\r\n","\"use strict\";\r\nvar DOMException = require('./DOMException');\r\nvar ERR = DOMException;\r\nvar isApiWritable = require(\"./config\").isApiWritable;\r\n\r\nexports.NAMESPACE = {\r\n HTML: 'http://www.w3.org/1999/xhtml',\r\n XML: 'http://www.w3.org/XML/1998/namespace',\r\n XMLNS: 'http://www.w3.org/2000/xmlns/',\r\n MATHML: 'http://www.w3.org/1998/Math/MathML',\r\n SVG: 'http://www.w3.org/2000/svg',\r\n XLINK: 'http://www.w3.org/1999/xlink'\r\n};\r\n\r\n//\r\n// Shortcut functions for throwing errors of various types.\r\n//\r\nexports.IndexSizeError = function() { throw new DOMException(ERR.INDEX_SIZE_ERR); };\r\nexports.HierarchyRequestError = function() { throw new DOMException(ERR.HIERARCHY_REQUEST_ERR); };\r\nexports.WrongDocumentError = function() { throw new DOMException(ERR.WRONG_DOCUMENT_ERR); };\r\nexports.InvalidCharacterError = function() { throw new DOMException(ERR.INVALID_CHARACTER_ERR); };\r\nexports.NoModificationAllowedError = function() { throw new DOMException(ERR.NO_MODIFICATION_ALLOWED_ERR); };\r\nexports.NotFoundError = function() { throw new DOMException(ERR.NOT_FOUND_ERR); };\r\nexports.NotSupportedError = function() { throw new DOMException(ERR.NOT_SUPPORTED_ERR); };\r\nexports.InvalidStateError = function() { throw new DOMException(ERR.INVALID_STATE_ERR); };\r\nexports.SyntaxError = function() { throw new DOMException(ERR.SYNTAX_ERR); };\r\nexports.InvalidModificationError = function() { throw new DOMException(ERR.INVALID_MODIFICATION_ERR); };\r\nexports.NamespaceError = function() { throw new DOMException(ERR.NAMESPACE_ERR); };\r\nexports.InvalidAccessError = function() { throw new DOMException(ERR.INVALID_ACCESS_ERR); };\r\nexports.TypeMismatchError = function() { throw new DOMException(ERR.TYPE_MISMATCH_ERR); };\r\nexports.SecurityError = function() { throw new DOMException(ERR.SECURITY_ERR); };\r\nexports.NetworkError = function() { throw new DOMException(ERR.NETWORK_ERR); };\r\nexports.AbortError = function() { throw new DOMException(ERR.ABORT_ERR); };\r\nexports.UrlMismatchError = function() { throw new DOMException(ERR.URL_MISMATCH_ERR); };\r\nexports.QuotaExceededError = function() { throw new DOMException(ERR.QUOTA_EXCEEDED_ERR); };\r\nexports.TimeoutError = function() { throw new DOMException(ERR.TIMEOUT_ERR); };\r\nexports.InvalidNodeTypeError = function() { throw new DOMException(ERR.INVALID_NODE_TYPE_ERR); };\r\nexports.DataCloneError = function() { throw new DOMException(ERR.DATA_CLONE_ERR); };\r\n\r\nexports.nyi = function() {\r\n throw new Error(\"NotYetImplemented\");\r\n};\r\n\r\nexports.shouldOverride = function() {\r\n throw new Error(\"Abstract function; should be overriding in subclass.\");\r\n};\r\n\r\nexports.assert = function(expr, msg) {\r\n if (!expr) {\r\n throw new Error(\"Assertion failed: \" + (msg || \"\") + \"\\n\" + new Error().stack);\r\n }\r\n};\r\n\r\nexports.expose = function(src, c) {\r\n for (var n in src) {\r\n Object.defineProperty(c.prototype, n, { value: src[n], writable: isApiWritable });\r\n }\r\n};\r\n\r\nexports.merge = function(a, b) {\r\n for (var n in b) {\r\n a[n] = b[n];\r\n }\r\n};\r\n\r\n// Compare two nodes based on their document order. This function is intended\r\n// to be passed to sort(). Assumes that the array being sorted does not\r\n// contain duplicates. And that all nodes are connected and comparable.\r\n// Clever code by ppk via jeresig.\r\nexports.documentOrder = function(n,m) {\r\n /* jshint bitwise: false */\r\n return 3 - (n.compareDocumentPosition(m) & 6);\r\n};\r\n\r\nexports.toASCIILowerCase = function(s) {\r\n return s.replace(/[A-Z]+/g, function(c) {\r\n return c.toLowerCase();\r\n });\r\n};\r\n\r\nexports.toASCIIUpperCase = function(s) {\r\n return s.replace(/[a-z]+/g, function(c) {\r\n return c.toUpperCase();\r\n });\r\n};\r\n","\"use strict\";\r\nvar Event = require('./Event');\r\nvar MouseEvent = require('./MouseEvent');\r\nvar utils = require('./utils');\r\n\r\nmodule.exports = EventTarget;\r\n\r\nfunction EventTarget() {}\r\n\r\nEventTarget.prototype = {\r\n // XXX\r\n // See WebIDL §4.8 for details on object event handlers\r\n // and how they should behave. We actually have to accept\r\n // any object to addEventListener... Can't type check it.\r\n // on registration.\r\n\r\n // XXX:\r\n // Capturing event listeners are sort of rare. I think I can optimize\r\n // them so that dispatchEvent can skip the capturing phase (or much of\r\n // it). Each time a capturing listener is added, increment a flag on\r\n // the target node and each of its ancestors. Decrement when removed.\r\n // And update the counter when nodes are added and removed from the\r\n // tree as well. Then, in dispatch event, the capturing phase can\r\n // abort if it sees any node with a zero count.\r\n addEventListener: function addEventListener(type, listener, capture) {\r\n if (!listener) return;\r\n if (capture === undefined) capture = false;\r\n if (!this._listeners) this._listeners = Object.create(null);\r\n if (!this._listeners[type]) this._listeners[type] = [];\r\n var list = this._listeners[type];\r\n\r\n // If this listener has already been registered, just return\r\n for(var i = 0, n = list.length; i < n; i++) {\r\n var l = list[i];\r\n if (l.listener === listener && l.capture === capture)\r\n return;\r\n }\r\n\r\n // Add an object to the list of listeners\r\n var obj = { listener: listener, capture: capture };\r\n if (typeof listener === 'function') obj.f = listener;\r\n list.push(obj);\r\n },\r\n\r\n removeEventListener: function removeEventListener(type,\r\n listener,\r\n capture) {\r\n if (capture === undefined) capture = false;\r\n if (this._listeners) {\r\n var list = this._listeners[type];\r\n if (list) {\r\n // Find the listener in the list and remove it\r\n for(var i = 0, n = list.length; i < n; i++) {\r\n var l = list[i];\r\n if (l.listener === listener && l.capture === capture) {\r\n if (list.length === 1) {\r\n this._listeners[type] = undefined;\r\n }\r\n else {\r\n list.splice(i, 1);\r\n }\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n },\r\n\r\n // This is the public API for dispatching untrusted public events.\r\n // See _dispatchEvent for the implementation\r\n dispatchEvent: function dispatchEvent(event) {\r\n // Dispatch an untrusted event\r\n return this._dispatchEvent(event, false);\r\n },\r\n\r\n //\r\n // See DOMCore §4.4\r\n // XXX: I'll probably need another version of this method for\r\n // internal use, one that does not set isTrusted to false.\r\n // XXX: see Document._dispatchEvent: perhaps that and this could\r\n // call a common internal function with different settings of\r\n // a trusted boolean argument\r\n //\r\n // XXX:\r\n // The spec has changed in how to deal with handlers registered\r\n // on idl or content attributes rather than with addEventListener.\r\n // Used to say that they always ran first. That's how webkit does it\r\n // Spec now says that they run in a position determined by\r\n // when they were first set. FF does it that way. See:\r\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#event-handlers\r\n //\r\n _dispatchEvent: function _dispatchEvent(event, trusted) {\r\n if (typeof trusted !== 'boolean') trusted = false;\r\n function invoke(target, event) {\r\n var type = event.type, phase = event.eventPhase;\r\n event.currentTarget = target;\r\n\r\n // If there was an individual handler defined, invoke it first\r\n // XXX: see comment above: this shouldn't always be first.\r\n if (phase !== Event.CAPTURING_PHASE &&\r\n target._handlers && target._handlers[type])\r\n {\r\n var handler = target._handlers[type];\r\n var rv;\r\n if (typeof handler === 'function') {\r\n rv=handler.call(event.currentTarget, event);\r\n }\r\n else {\r\n var f = handler.handleEvent;\r\n if (typeof f !== 'function')\r\n throw new TypeError('handleEvent property of ' +\r\n 'event handler object is' +\r\n 'not a function.');\r\n rv=f.call(handler, event);\r\n }\r\n\r\n switch(event.type) {\r\n case 'mouseover':\r\n if (rv === true) // Historical baggage\r\n event.preventDefault();\r\n break;\r\n case 'beforeunload':\r\n // XXX: eventually we need a special case here\r\n /* falls through */\r\n default:\r\n if (rv === false)\r\n event.preventDefault();\r\n break;\r\n }\r\n }\r\n\r\n // Now invoke list list of listeners for this target and type\r\n var list = target._listeners && target._listeners[type];\r\n if (!list) return;\r\n list = list.slice();\r\n for(var i = 0, n = list.length; i < n; i++) {\r\n if (event._immediatePropagationStopped) return;\r\n var l = list[i];\r\n if ((phase === Event.CAPTURING_PHASE && !l.capture) ||\r\n (phase === Event.BUBBLING_PHASE && l.capture))\r\n continue;\r\n if (l.f) {\r\n l.f.call(event.currentTarget, event);\r\n }\r\n else {\r\n var fn = l.listener.handleEvent;\r\n if (typeof fn !== 'function')\r\n throw new TypeError('handleEvent property of event listener object is not a function.');\r\n fn.call(l.listener, event);\r\n }\r\n }\r\n }\r\n\r\n if (!event._initialized || event._dispatching) utils.InvalidStateError();\r\n event.isTrusted = trusted;\r\n\r\n // Begin dispatching the event now\r\n event._dispatching = true;\r\n event.target = this;\r\n\r\n // Build the list of targets for the capturing and bubbling phases\r\n // XXX: we'll eventually have to add Window to this list.\r\n var ancestors = [];\r\n for(var n = this.parentNode; n; n = n.parentNode)\r\n ancestors.push(n);\r\n\r\n // Capturing phase\r\n event.eventPhase = Event.CAPTURING_PHASE;\r\n for(var i = ancestors.length-1; i >= 0; i--) {\r\n invoke(ancestors[i], event);\r\n if (event._propagationStopped) break;\r\n }\r\n\r\n // At target phase\r\n if (!event._propagationStopped) {\r\n event.eventPhase = Event.AT_TARGET;\r\n invoke(this, event);\r\n }\r\n\r\n // Bubbling phase\r\n if (event.bubbles && !event._propagationStopped) {\r\n event.eventPhase = Event.BUBBLING_PHASE;\r\n for(var ii = 0, nn = ancestors.length; ii < nn; ii++) {\r\n invoke(ancestors[ii], event);\r\n if (event._propagationStopped) break;\r\n }\r\n }\r\n\r\n event._dispatching = false;\r\n event.eventPhase = Event.AT_TARGET;\r\n event.currentTarget = null;\r\n\r\n // Deal with mouse events and figure out when\r\n // a click has happened\r\n if (trusted && !event.defaultPrevented && event instanceof MouseEvent) {\r\n switch(event.type) {\r\n case 'mousedown':\r\n this._armed = {\r\n x: event.clientX,\r\n y: event.clientY,\r\n t: event.timeStamp\r\n };\r\n break;\r\n case 'mouseout':\r\n case 'mouseover':\r\n this._armed = null;\r\n break;\r\n case 'mouseup':\r\n if (this._isClick(event)) this._doClick(event);\r\n this._armed = null;\r\n break;\r\n }\r\n }\r\n\r\n\r\n\r\n return !event.defaultPrevented;\r\n },\r\n\r\n // Determine whether a click occurred\r\n // XXX We don't support double clicks for now\r\n _isClick: function(event) {\r\n return (this._armed !== null &&\r\n event.type === 'mouseup' &&\r\n event.isTrusted &&\r\n event.button === 0 &&\r\n event.timeStamp - this._armed.t < 1000 &&\r\n Math.abs(event.clientX - this._armed.x) < 10 &&\r\n Math.abs(event.clientY - this._armed.Y) < 10);\r\n },\r\n\r\n // Clicks are handled like this:\r\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#interactive-content-0\r\n //\r\n // Note that this method is similar to the HTMLElement.click() method\r\n // The event argument must be the trusted mouseup event\r\n _doClick: function(event) {\r\n if (this._click_in_progress) return;\r\n this._click_in_progress = true;\r\n\r\n // Find the nearest enclosing element that is activatable\r\n // An element is activatable if it has a\r\n // _post_click_activation_steps hook\r\n var activated = this;\r\n while(activated && !activated._post_click_activation_steps)\r\n activated = activated.parentNode;\r\n\r\n if (activated && activated._pre_click_activation_steps) {\r\n activated._pre_click_activation_steps();\r\n }\r\n\r\n var click = this.ownerDocument.createEvent('MouseEvent');\r\n click.initMouseEvent('click', true, true,\r\n this.ownerDocument.defaultView, 1,\r\n event.screenX, event.screenY,\r\n event.clientX, event.clientY,\r\n event.ctrlKey, event.altKey,\r\n event.shiftKey, event.metaKey,\r\n event.button, null);\r\n\r\n var result = this._dispatchEvent(click, true);\r\n\r\n if (activated) {\r\n if (result) {\r\n // This is where hyperlinks get followed, for example.\r\n if (activated._post_click_activation_steps)\r\n activated._post_click_activation_steps(click);\r\n }\r\n else {\r\n if (activated._cancelled_activation_steps)\r\n activated._cancelled_activation_steps();\r\n }\r\n }\r\n },\r\n\r\n //\r\n // An event handler is like an event listener, but it registered\r\n // by setting an IDL or content attribute like onload or onclick.\r\n // There can only be one of these at a time for any event type.\r\n // This is an internal method for the attribute accessors and\r\n // content attribute handlers that need to register events handlers.\r\n // The type argument is the same as in addEventListener().\r\n // The handler argument is the same as listeners in addEventListener:\r\n // it can be a function or an object. Pass null to remove any existing\r\n // handler. Handlers are always invoked before any listeners of\r\n // the same type. They are not invoked during the capturing phase\r\n // of event dispatch.\r\n //\r\n _setEventHandler: function _setEventHandler(type, handler) {\r\n if (!this._handlers) this._handlers = Object.create(null);\r\n this._handlers[type] = handler;\r\n },\r\n\r\n _getEventHandler: function _getEventHandler(type) {\r\n return (this._handlers && this._handlers[type]) || null;\r\n }\r\n\r\n};\r\n","\"use strict\";\r\nvar utils = require('./utils');\r\n\r\nvar LinkedList = module.exports = {\r\n // basic validity tests on a circular linked list a\r\n valid: function(a) {\r\n utils.assert(a, \"list falsy\");\r\n utils.assert(a._previousSibling, \"previous falsy\");\r\n utils.assert(a._nextSibling, \"next falsy\");\r\n // xxx check that list is actually circular\r\n return true;\r\n },\r\n // insert a before b\r\n insertBefore: function(a, b) {\r\n utils.assert(LinkedList.valid(a) && LinkedList.valid(b));\r\n var a_first = a, a_last = a._previousSibling;\r\n var b_first = b, b_last = b._previousSibling;\r\n a_first._previousSibling = b_last;\r\n a_last._nextSibling = b_first;\r\n b_last._nextSibling = a_first;\r\n b_first._previousSibling = a_last;\r\n utils.assert(LinkedList.valid(a) && LinkedList.valid(b));\r\n },\r\n // replace a single node a with a list b (which could be null)\r\n replace: function(a, b) {\r\n utils.assert(LinkedList.valid(a) && (b===null || LinkedList.valid(b)));\r\n if (b!==null) {\r\n LinkedList.insertBefore(b, a);\r\n }\r\n LinkedList.remove(a);\r\n utils.assert(LinkedList.valid(a) && (b===null || LinkedList.valid(b)));\r\n },\r\n // remove single node a from its list\r\n remove: function(a) {\r\n utils.assert(LinkedList.valid(a));\r\n var prev = a._previousSibling;\r\n if (prev === a) { return; }\r\n var next = a._nextSibling;\r\n prev._nextSibling = next;\r\n next._previousSibling = prev;\r\n a._previousSibling = a._nextSibling = a;\r\n utils.assert(LinkedList.valid(a));\r\n }\r\n};\r\n","\"use strict\";\r\nmodule.exports = {\r\n // NOTE: The `serializeOne()` function used to live on the `Node.prototype`\r\n // as a private method `Node#_serializeOne(child)`, however that requires\r\n // a megamorphic property access `this._serializeOne` just to get to the\r\n // method, and this is being done on lots of different `Node` subclasses,\r\n // which puts a lot of pressure on V8's megamorphic stub cache. So by\r\n // moving the helper off of the `Node.prototype` and into a separate\r\n // function in this helper module, we get a monomorphic property access\r\n // `NodeUtils.serializeOne` to get to the function and reduce pressure\r\n // on the megamorphic stub cache.\r\n // See https://github.com/fgnass/domino/pull/142 for more information.\r\n serializeOne: serializeOne,\r\n\r\n // Export util functions so that we can run extra test for them.\r\n // Note: we prefix function names with `ɵ`, similar to what we do\r\n // with internal functions in Angular packages.\r\n ɵescapeMatchingClosingTag: escapeMatchingClosingTag,\r\n ɵescapeClosingCommentTag: escapeClosingCommentTag,\r\n ɵescapeProcessingInstructionContent: escapeProcessingInstructionContent\r\n};\r\n\r\nvar utils = require('./utils');\r\nvar NAMESPACE = utils.NAMESPACE;\r\n\r\nvar hasRawContent = {\r\n STYLE: true,\r\n SCRIPT: true,\r\n XMP: true,\r\n IFRAME: true,\r\n NOEMBED: true,\r\n NOFRAMES: true,\r\n PLAINTEXT: true\r\n};\r\n\r\nvar emptyElements = {\r\n area: true,\r\n base: true,\r\n basefont: true,\r\n bgsound: true,\r\n br: true,\r\n col: true,\r\n embed: true,\r\n frame: true,\r\n hr: true,\r\n img: true,\r\n input: true,\r\n keygen: true,\r\n link: true,\r\n meta: true,\r\n param: true,\r\n source: true,\r\n track: true,\r\n wbr: true\r\n};\r\n\r\nvar extraNewLine = {\r\n /* Removed in https://github.com/whatwg/html/issues/944\r\n pre: true,\r\n textarea: true,\r\n listing: true\r\n */\r\n};\r\n\r\nconst ESCAPE_REGEXP = /[&<>\\u00A0]/g;\r\nconst ESCAPE_ATTR_REGEXP = /[&\"<>\\u00A0]/g;\r\n\r\nfunction escape(s) {\r\n if (!ESCAPE_REGEXP.test(s)) {\r\n // nothing to do, fast path\r\n return s;\r\n }\r\n\r\n return s.replace(ESCAPE_REGEXP, (c) => {\r\n switch (c) {\r\n case \"&\":\r\n return \"&amp;\";\r\n case \"<\":\r\n return \"&lt;\";\r\n case \">\":\r\n return \"&gt;\";\r\n case \"\\u00A0\":\r\n return \"&nbsp;\";\r\n }\r\n });\r\n}\r\n\r\nfunction escapeAttr(s) {\r\n if (!ESCAPE_ATTR_REGEXP.test(s)) {\r\n // nothing to do, fast path\r\n return s;\r\n }\r\n\r\n return s.replace(ESCAPE_ATTR_REGEXP, (c) => {\r\n switch (c) {\r\n case \"<\":\r\n return \"&lt;\";\r\n case \">\":\r\n return \"&gt;\";\r\n case \"&\":\r\n return \"&amp;\";\r\n case '\"':\r\n return \"&quot;\";\r\n case \"\\u00A0\":\r\n return \"&nbsp;\";\r\n }\r\n });\r\n}\r\n\r\nfunction attrname(a) {\r\n var ns = a.namespaceURI;\r\n if (!ns)\r\n return a.localName;\r\n if (ns === NAMESPACE.XML)\r\n return 'xml:' + a.localName;\r\n if (ns === NAMESPACE.XLINK)\r\n return 'xlink:' + a.localName;\r\n\r\n if (ns === NAMESPACE.XMLNS) {\r\n if (a.localName === 'xmlns') return 'xmlns';\r\n else return 'xmlns:' + a.localName;\r\n }\r\n return a.name;\r\n}\r\n\r\n/**\r\n * Escapes matching closing tag in a raw text.\r\n *\r\n * For example, given `<style>#text(</style><script></script>)</style>`,\r\n * the parent tag would by \"style\" and the raw text is\r\n * \"</style><script></script>\". If we come across a matching closing tag\r\n * (in out case `</style>`) - replace `<` with `&lt;` to avoid unexpected\r\n * and unsafe behavior after de-serialization.\r\n */\r\nfunction escapeMatchingClosingTag(rawText, parentTag) {\r\n const parentClosingTag = '</' + parentTag;\r\n if (!rawText.toLowerCase().includes(parentClosingTag)) {\r\n return rawText; // fast path\r\n }\r\n const result = [...rawText];\r\n const matches = rawText.matchAll(new RegExp(parentClosingTag, 'ig'));\r\n for (const match of matches) {\r\n result[match.index] = '&lt;';\r\n }\r\n return result.join('');\r\n}\r\n\r\nconst CLOSING_COMMENT_REGEXP = /--!?>/;\r\n\r\n/**\r\n * Escapes closing comment tag in a comment content.\r\n *\r\n * For example, given `#comment('-->')`, the content of a comment would be\r\n * updated to `--&gt;` to avoid unexpected and unsafe behavior after\r\n * de-serialization.\r\n */\r\nfunction escapeClosingCommentTag(rawContent) {\r\n if (!CLOSING_COMMENT_REGEXP.test(rawContent)) {\r\n return rawContent; // fast path\r\n }\r\n return rawContent.replace(/(--\\!?)>/g, '$1&gt;');\r\n}\r\n\r\n/**\r\n * Escapes processing instruction content by replacing `>` with `&gt`.\r\n */\r\nfunction escapeProcessingInstructionContent(rawContent) {\r\n return rawContent.includes('>')\r\n ? rawContent.replaceAll('>', '&gt;')\r\n : rawContent;\r\n}\r\n\r\nfunction serializeOne(kid, parent) {\r\n var s = '';\r\n switch(kid.nodeType) {\r\n case 1: //ELEMENT_NODE\r\n var ns = kid.namespaceURI;\r\n var html = ns === NAMESPACE.HTML;\r\n var tagname = (html || ns === NAMESPACE.SVG || ns === NAMESPACE.MATHML) ? kid.localName : kid.tagName;\r\n\r\n s += '<' + tagname;\r\n\r\n for(var j = 0, k = kid._numattrs; j < k; j++) {\r\n var a = kid._attr(j);\r\n s += ' ' + attrname(a);\r\n if (a.value !== undefined) s += '=\"' + escapeAttr(a.value) + '\"';\r\n }\r\n s += '>';\r\n\r\n if (!(html && emptyElements[tagname])) {\r\n var ss = kid.serialize();\r\n // If an element can have raw content, this content may\r\n // potentially require escaping to avoid XSS.\r\n if (hasRawContent[tagname.toUpperCase()]) {\r\n ss = escapeMatchingClosingTag(ss, tagname);\r\n }\r\n if (html && extraNewLine[tagname] && ss.charAt(0)==='\\n') s += '\\n';\r\n // Serialize children and add end tag for all others\r\n s += ss;\r\n s += '</' + tagname + '>';\r\n }\r\n break;\r\n case 3: //TEXT_NODE\r\n case 4: //CDATA_SECTION_NODE\r\n var parenttag;\r\n if (parent.nodeType === 1 /*ELEMENT_NODE*/ &&\r\n parent.namespaceURI === NAMESPACE.HTML)\r\n parenttag = parent.tagName;\r\n else\r\n parenttag = '';\r\n\r\n if (hasRawContent[parenttag] ||\r\n (parenttag==='NOSCRIPT' && parent.ownerDocument._scripting_enabled)) {\r\n s += kid.data;\r\n } else {\r\n s += escape(kid.data);\r\n }\r\n break;\r\n case 8: //COMMENT_NODE\r\n s += '<!--' + escapeClosingCommentTag(kid.data) + '-->';\r\n break;\r\n case 7: //PROCESSING_INSTRUCTION_NODE\r\n const content = escapeProcessingInstructionContent(kid.data);\r\n s += '<?' + kid.target + ' ' + content + '?>';\r\n break;\r\n case 10: //DOCUMENT_TYPE_NODE\r\n s += '<!DOCTYPE ' + kid.name;\r\n\r\n if (false) {\r\n // Latest HTML serialization spec omits the public/system ID\r\n if (kid.publicID) {\r\n s += ' PUBLIC \"' + kid.publicId + '\"';\r\n }\r\n\r\n if (kid.systemId) {\r\n s += ' \"' + kid.systemId + '\"';\r\n }\r\n }\r\n\r\n s += '>';\r\n break;\r\n default:\r\n utils.InvalidStateError();\r\n }\r\n return s;\r\n}\r\n","\"use strict\";\r\nmodule.exports = Node;\r\n\r\nvar EventTarget = require('./EventTarget');\r\nvar LinkedList = require('./LinkedList');\r\nvar NodeUtils = require('./NodeUtils');\r\nvar utils = require('./utils');\r\n\r\n// All nodes have a nodeType and an ownerDocument.\r\n// Once inserted, they also have a parentNode.\r\n// This is an abstract class; all nodes in a document are instances\r\n// of a subtype, so all the properties are defined by more specific\r\n// constructors.\r\nfunction Node() {\r\n EventTarget.call(this);\r\n this.parentNode = null;\r\n this._nextSibling = this._previousSibling = this;\r\n this._index = undefined;\r\n}\r\n\r\nvar ELEMENT_NODE = Node.ELEMENT_NODE = 1;\r\nvar ATTRIBUTE_NODE = Node.ATTRIBUTE_NODE = 2;\r\nvar TEXT_NODE = Node.TEXT_NODE = 3;\r\nvar CDATA_SECTION_NODE = Node.CDATA_SECTION_NODE = 4;\r\nvar ENTITY_REFERENCE_NODE = Node.ENTITY_REFERENCE_NODE = 5;\r\nvar ENTITY_NODE = Node.ENTITY_NODE = 6;\r\nvar PROCESSING_INSTRUCTION_NODE = Node.PROCESSING_INSTRUCTION_NODE = 7;\r\nvar COMMENT_NODE = Node.COMMENT_NODE = 8;\r\nvar DOCUMENT_NODE = Node.DOCUMENT_NODE = 9;\r\nvar DOCUMENT_TYPE_NODE = Node.DOCUMENT_TYPE_NODE = 10;\r\nvar DOCUMENT_FRAGMENT_NODE = Node.DOCUMENT_FRAGMENT_NODE = 11;\r\nvar NOTATION_NODE = Node.NOTATION_NODE = 12;\r\n\r\nvar DOCUMENT_POSITION_DISCONNECTED = Node.DOCUMENT_POSITION_DISCONNECTED = 0x01;\r\nvar DOCUMENT_POSITION_PRECEDING = Node.DOCUMENT_POSITION_PRECEDING = 0x02;\r\nvar DOCUMENT_POSITION_FOLLOWING = Node.DOCUMENT_POSITION_FOLLOWING = 0x04;\r\nvar DOCUMENT_POSITION_CONTAINS = Node.DOCUMENT_POSITION_CONTAINS = 0x08;\r\nvar DOCUMENT_POSITION_CONTAINED_BY = Node.DOCUMENT_POSITION_CONTAINED_BY = 0x10;\r\nvar DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20;\r\n\r\nNode.prototype = Object.create(EventTarget.prototype, {\r\n\r\n // Node that are not inserted into the tree inherit a null parent\r\n\r\n // XXX: the baseURI attribute is defined by dom core, but\r\n // a correct implementation of it requires HTML features, so\r\n // we'll come back to this later.\r\n baseURI: { get: utils.nyi },\r\n\r\n parentElement: { get: function() {\r\n return (this.parentNode && this.parentNode.nodeType===ELEMENT_NODE) ? this.parentNode : null;\r\n }},\r\n\r\n hasChildNodes: { value: utils.shouldOverride },\r\n\r\n firstChild: { get: utils.shouldOverride },\r\n\r\n lastChild: { get: utils.shouldOverride },\r\n\r\n isConnected: {\r\n get: function () {\r\n let node = this;\r\n while (node != null) {\r\n if (node.nodeType === Node.DOCUMENT_NODE) {\r\n return true;\r\n }\r\n\r\n node = node.parentNode;\r\n if (node != null && node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\r\n node = node.host;\r\n }\r\n }\r\n return false;\r\n },\r\n },\r\n\r\n previousSibling: { get: function() {\r\n var parent = this.parentNode;\r\n if (!parent) return null;\r\n if (this === parent.firstChild) return null;\r\n return this._previousSibling;\r\n }},\r\n\r\n nextSibling: { get: function() {\r\n var parent = this.parentNode, next = this._nextSibling;\r\n if (!parent) return null;\r\n if (next === parent.firstChild) return null;\r\n return next;\r\n }},\r\n\r\n textContent: {\r\n // Should override for DocumentFragment/Element/Attr/Text/PI/Comment\r\n get: function() { return null; },\r\n set: function(v) { /* do nothing */ },\r\n },\r\n\r\n innerText: {\r\n // Should override for DocumentFragment/Element/Attr/Text/PI/Comment\r\n get: function() { return null; },\r\n set: function(v) { /* do nothing */ },\r\n },\r\n\r\n _countChildrenOfType: { value: function(type) {\r\n var sum = 0;\r\n for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\r\n if (kid.nodeType === type) sum++;\r\n }\r\n return sum;\r\n }},\r\n\r\n _ensureInsertValid: { value: function _ensureInsertValid(node, child, isPreinsert) {\r\n var parent = this, i, kid;\r\n if (!node.nodeType) throw new TypeError('not a node');\r\n // 1. If parent is not a Document, DocumentFragment, or Element\r\n // node, throw a HierarchyRequestError.\r\n switch (parent.nodeType) {\r\n case DOCUMENT_NODE:\r\n case DOCUMENT_FRAGMENT_NODE:\r\n case ELEMENT_NODE:\r\n break;\r\n default: utils.HierarchyRequestError();\r\n }\r\n // 2. If node is a host-including inclusive ancestor of parent,\r\n // throw a HierarchyRequestError.\r\n if (node.isAncestor(parent)) utils.HierarchyRequestError();\r\n // 3. If child is not null and its parent is not parent, then\r\n // throw a NotFoundError. (replaceChild omits the 'child is not null'\r\n // and throws a TypeError here if child is null.)\r\n if (child !== null || !isPreinsert) {\r\n if (child.parentNode !== parent) utils.NotFoundError();\r\n }\r\n // 4. If node is not a DocumentFragment, DocumentType, Element,\r\n // Text, ProcessingInstruction, or Comment node, throw a\r\n // HierarchyRequestError.\r\n switch (node.nodeType) {\r\n case DOCUMENT_FRAGMENT_NODE:\r\n case DOCUMENT_TYPE_NODE:\r\n case ELEMENT_NODE:\r\n case TEXT_NODE:\r\n case PROCESSING_INSTRUCTION_NODE:\r\n case COMMENT_NODE:\r\n break;\r\n default: utils.HierarchyRequestError();\r\n }\r\n // 5. If either node is a Text node and parent is a document, or\r\n // node is a doctype and parent is not a document, throw a\r\n // HierarchyRequestError.\r\n // 6. If parent is a document, and any of the statements below, switched\r\n // on node, are true, throw a HierarchyRequestError.\r\n if (parent.nodeType === DOCUMENT_NODE) {\r\n switch (node.nodeType) {\r\n case TEXT_NODE:\r\n utils.HierarchyRequestError();\r\n break;\r\n case DOCUMENT_FRAGMENT_NODE:\r\n // 6a1. If node has more than one element child or has a Text\r\n // node child.\r\n if (node._countChildrenOfType(TEXT_NODE) > 0)\r\n utils.HierarchyRequestError();\r\n switch (node._countChildrenOfType(ELEMENT_NODE)) {\r\n case 0:\r\n break;\r\n case 1:\r\n // 6a2. Otherwise, if node has one element child and either\r\n // parent has an element child, child is a doctype, or child\r\n // is not null and a doctype is following child. [preinsert]\r\n // 6a2. Otherwise, if node has one element child and either\r\n // parent has an element child that is not child or a\r\n // doctype is following child. [replaceWith]\r\n if (child !== null /* always true here for replaceWith */) {\r\n if (isPreinsert && child.nodeType === DOCUMENT_TYPE_NODE)\r\n utils.HierarchyRequestError();\r\n for (kid = child.nextSibling; kid !== null; kid = kid.nextSibling) {\r\n if (kid.nodeType === DOCUMENT_TYPE_NODE)\r\n utils.HierarchyRequestError();\r\n }\r\n }\r\n i = parent._countChildrenOfType(ELEMENT_NODE);\r\n if (isPreinsert) {\r\n // \"parent has an element child\"\r\n if (i > 0)\r\n utils.HierarchyRequestError();\r\n } else {\r\n // \"parent has an element child that is not child\"\r\n if (i > 1 || (i === 1 && child.nodeType !== ELEMENT_NODE))\r\n utils.HierarchyRequestError();\r\n }\r\n break;\r\n default: // 6a1, continued. (more than one Element child)\r\n utils.HierarchyRequestError();\r\n }\r\n break;\r\n case ELEMENT_NODE:\r\n // 6b. parent has an element child, child is a doctype, or\r\n // child is not null and a doctype is following child. [preinsert]\r\n // 6b. parent has an element child that is not child or a\r\n // doctype is following child. [replaceWith]\r\n if (child !== null /* always true here for replaceWith */) {\r\n if (isPreinsert && child.nodeType === DOCUMENT_TYPE_NODE)\r\n utils.HierarchyRequestError();\r\n for (kid = child.nextSibling; kid !== null; kid = kid.nextSibling) {\r\n if (kid.nodeType === DOCUMENT_TYPE_NODE)\r\n utils.HierarchyRequestError();\r\n }\r\n }\r\n i = parent._countChildrenOfType(ELEMENT_NODE);\r\n if (isPreinsert) {\r\n // \"parent has an element child\"\r\n if (i > 0)\r\n utils.HierarchyRequestError();\r\n } else {\r\n // \"parent has an element child that is not child\"\r\n if (i > 1 || (i === 1 && child.nodeType !== ELEMENT_NODE))\r\n utils.HierarchyRequestError();\r\n }\r\n break;\r\n case DOCUMENT_TYPE_NODE:\r\n // 6c. parent has a doctype child, child is non-null and an\r\n // element is preceding child, or child is null and parent has\r\n // an element child. [preinsert]\r\n // 6c. parent has a doctype child that is not child, or an\r\n // element is preceding child. [replaceWith]\r\n if (child === null) {\r\n if (parent._countChildrenOfType(ELEMENT_NODE))\r\n utils.HierarchyRequestError();\r\n } else {\r\n // child is always non-null for [replaceWith] case\r\n for (kid = parent.firstChild; kid !== null; kid = kid.nextSibling) {\r\n if (kid === child) break;\r\n if (kid.nodeType === ELEMENT_NODE)\r\n utils.HierarchyRequestError();\r\n }\r\n }\r\n i = parent._countChildrenOfType(DOCUMENT_TYPE_NODE);\r\n if (isPreinsert) {\r\n // \"parent has an doctype child\"\r\n if (i > 0)\r\n utils.HierarchyRequestError();\r\n } else {\r\n // \"parent has an doctype child that is not child\"\r\n if (i > 1 || (i === 1 && child.nodeType !== DOCUMENT_TYPE_NODE))\r\n utils.HierarchyRequestError();\r\n }\r\n break;\r\n }\r\n } else {\r\n // 5, continued: (parent is not a document)\r\n if (node.nodeType === DOCUMENT_TYPE_NODE) utils.HierarchyRequestError();\r\n }\r\n }},\r\n\r\n insertBefore: { value: function insertBefore(node, child) {\r\n var parent = this;\r\n // 1. Ensure pre-insertion validity\r\n parent._ensureInsertValid(node, child, true);\r\n // 2. Let reference child be child.\r\n var refChild = child;\r\n // 3. If reference child is node, set it to node's next sibling\r\n if (refChild === node) { refChild = node.nextSibling; }\r\n // 4. Adopt node into parent's node document.\r\n parent.doc.adoptNode(node);\r\n // 5. Insert node into parent before reference child.\r\n node._insertOrReplace(parent, refChild, false);\r\n // 6. Return node\r\n return node;\r\n }},\r\n\r\n\r\n appendChild: { value: function(child) {\r\n // This invokes _appendChild after doing validity checks.\r\n return this.insertBefore(child, null);\r\n }},\r\n\r\n _appendChild: { value: function(child) {\r\n child._insertOrReplace(this, null, false);\r\n }},\r\n\r\n removeChild: { value: function removeChild(child) {\r\n var parent = this;\r\n if (!child.nodeType) throw new TypeError('not a node');\r\n if (child.parentNode !== parent) utils.NotFoundError();\r\n child.remove();\r\n return child;\r\n }},\r\n\r\n // To replace a `child` with `node` within a `parent` (this)\r\n replaceChild: { value: function replaceChild(node, child) {\r\n var parent = this;\r\n // Ensure validity (slight differences from pre-insertion check)\r\n parent._ensureInsertValid(node, child, false);\r\n // Adopt node into parent's node document.\r\n if (node.doc !== parent.doc) {\r\n // XXX adoptNode has side-effect of removing node from its parent\r\n // and generating a mutation event, thus causing the _insertOrReplace\r\n // to generate two deletes and an insert instead of a 'move'\r\n // event. It looks like the new MutationObserver stuff avoids\r\n // this problem, but for now let's only adopt (ie, remove `node`\r\n // from its parent) here if we need to.\r\n parent.doc.adoptNode(node);\r\n }\r\n // Do the replace.\r\n node._insertOrReplace(parent, child, true);\r\n return child;\r\n }},\r\n\r\n // See: http://ejohn.org/blog/comparing-document-position/\r\n contains: { value: function contains(node) {\r\n if (node === null) { return false; }\r\n if (this === node) { return true; /* inclusive descendant */ }\r\n /* jshint bitwise: false */\r\n return (this.compareDocumentPosition(node) &\r\n DOCUMENT_POSITION_CONTAINED_BY) !== 0;\r\n }},\r\n\r\n compareDocumentPosition: { value: function compareDocumentPosition(that){\r\n // Basic algorithm for finding the relative position of two nodes.\r\n // Make a list the ancestors of each node, starting with the\r\n // document element and proceeding down to the nodes themselves.\r\n // Then, loop through the lists, looking for the first element\r\n // that differs. The order of those two elements give the\r\n // order of their descendant nodes. Or, if one list is a prefix\r\n // of the other one, then that node contains the other.\r\n\r\n if (this === that) return 0;\r\n\r\n // If they're not owned by the same document or if one is rooted\r\n // and one is not, then they're disconnected.\r\n if (this.doc !== that.doc ||\r\n this.rooted !== that.rooted)\r\n return (DOCUMENT_POSITION_DISCONNECTED +\r\n DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC);\r\n\r\n // Get arrays of ancestors for this and that\r\n var these = [], those = [];\r\n for(var n = this; n !== null; n = n.parentNode) these.push(n);\r\n for(n = that; n !== null; n = n.parentNode) those.push(n);\r\n these.reverse(); // So we start with the outermost\r\n those.reverse();\r\n\r\n if (these[0] !== those[0]) // No common ancestor\r\n return (DOCUMENT_POSITION_DISCONNECTED +\r\n DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC);\r\n\r\n n = Math.min(these.length, those.length);\r\n for(var i = 1; i < n; i++) {\r\n if (these[i] !== those[i]) {\r\n // We found two different ancestors, so compare\r\n // their positions\r\n if (these[i].index < those[i].index)\r\n return DOCUMENT_POSITION_FOLLOWING;\r\n else\r\n return DOCUMENT_POSITION_PRECEDING;\r\n }\r\n }\r\n\r\n // If we get to here, then one of the nodes (the one with the\r\n // shorter list of ancestors) contains the other one.\r\n if (these.length < those.length)\r\n return (DOCUMENT_POSITION_FOLLOWING +\r\n DOCUMENT_POSITION_CONTAINED_BY);\r\n else\r\n return (DOCUMENT_POSITION_PRECEDING +\r\n DOCUMENT_POSITION_CONTAINS);\r\n }},\r\n\r\n isSameNode: {value : function isSameNode(node) {\r\n return this === node;\r\n }},\r\n\r\n\r\n // This method implements the generic parts of node equality testing\r\n // and defers to the (non-recursive) type-specific isEqual() method\r\n // defined by subclasses\r\n isEqualNode: { value: function isEqualNode(node) {\r\n if (!node) return false;\r\n if (node.nodeType !== this.nodeType) return false;\r\n\r\n // Check type-specific properties for equality\r\n if (!this.isEqual(node)) return false;\r\n\r\n // Now check children for number and equality\r\n for (var c1 = this.firstChild, c2 = node.firstChild;\r\n c1 && c2;\r\n c1 = c1.nextSibling, c2 = c2.nextSibling) {\r\n if (!c1.isEqualNode(c2)) return false;\r\n }\r\n return c1 === null && c2 === null;\r\n }},\r\n\r\n // This method delegates shallow cloning to a clone() method\r\n // that each concrete subclass must implement\r\n cloneNode: { value: function(deep) {\r\n // Clone this node\r\n var clone = this.clone();\r\n\r\n // Handle the recursive case if necessary\r\n if (deep) {\r\n for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\r\n clone._appendChild(kid.cloneNode(true));\r\n }\r\n }\r\n\r\n return clone;\r\n }},\r\n\r\n lookupPrefix: { value: function lookupPrefix(ns) {\r\n var e;\r\n if (ns === '' || ns === null || ns === undefined) return null;\r\n switch(this.nodeType) {\r\n case ELEMENT_NODE:\r\n return this._lookupNamespacePrefix(ns, this);\r\n case DOCUMENT_NODE:\r\n e = this.documentElement;\r\n return e ? e.lookupPrefix(ns) : null;\r\n case ENTITY_NODE:\r\n case NOTATION_NODE:\r\n case DOCUMENT_FRAGMENT_NODE:\r\n case DOCUMENT_TYPE_NODE:\r\n return null;\r\n case ATTRIBUTE_NODE:\r\n e = this.ownerElement;\r\n return e ? e.lookupPrefix(ns) : null;\r\n default:\r\n e = this.parentElement;\r\n return e ? e.lookupPrefix(ns) : null;\r\n }\r\n }},\r\n\r\n\r\n lookupNamespaceURI: {value: function lookupNamespaceURI(prefix) {\r\n if (prefix === '' || prefix === undefined) { prefix = null; }\r\n var e;\r\n switch(this.nodeType) {\r\n case ELEMENT_NODE:\r\n return utils.shouldOverride();\r\n case DOCUMENT_NODE:\r\n e = this.documentElement;\r\n return e ? e.lookupNamespaceURI(prefix) : null;\r\n case ENTITY_NODE:\r\n case NOTATION_NODE:\r\n case DOCUMENT_TYPE_NODE:\r\n case DOCUMENT_FRAGMENT_NODE:\r\n return null;\r\n case ATTRIBUTE_NODE:\r\n e = this.ownerElement;\r\n return e ? e.lookupNamespaceURI(prefix) : null;\r\n default:\r\n e = this.parentElement;\r\n return e ? e.lookupNamespaceURI(prefix) : null;\r\n }\r\n }},\r\n\r\n isDefaultNamespace: { value: function isDefaultNamespace(ns) {\r\n if (ns === '' || ns === undefined) { ns = null; }\r\n var defaultNamespace = this.lookupNamespaceURI(null);\r\n return (defaultNamespace === ns);\r\n }},\r\n\r\n // Utility methods for nodes. Not part of the DOM\r\n\r\n // Return the index of this node in its parent.\r\n // Throw if no parent, or if this node is not a child of its parent\r\n index: { get: function() {\r\n var parent = this.parentNode;\r\n if (this === parent.firstChild) return 0; // fast case\r\n var kids = parent.childNodes;\r\n if (this._index === undefined || kids[this._index] !== this) {\r\n // Ensure that we don't have an O(N^2) blowup if none of the\r\n // kids have defined indices yet and we're traversing via\r\n // nextSibling or previousSibling\r\n for (var i=0; i<kids.length; i++) {\r\n kids[i]._index = i;\r\n }\r\n utils.assert(kids[this._index] === this);\r\n }\r\n return this._index;\r\n }},\r\n\r\n // Return true if this node is equal to or is an ancestor of that node\r\n // Note that nodes are considered to be ancestors of themselves\r\n isAncestor: { value: function(that) {\r\n // If they belong to different documents, then they're unrelated.\r\n if (this.doc !== that.doc) return false;\r\n // If one is rooted and one isn't then they're not related\r\n if (this.rooted !== that.rooted) return false;\r\n\r\n // Otherwise check by traversing the parentNode chain\r\n for(var e = that; e; e = e.parentNode) {\r\n if (e === this) return true;\r\n }\r\n return false;\r\n }},\r\n\r\n // DOMINO Changed the behavior to conform with the specs. See:\r\n // https://groups.google.com/d/topic/mozilla.dev.platform/77sIYcpdDmc/discussion\r\n ensureSameDoc: { value: function(that) {\r\n if (that.ownerDocument === null) {\r\n that.ownerDocument = this.doc;\r\n }\r\n else if(that.ownerDocument !== this.doc) {\r\n utils.WrongDocumentError();\r\n }\r\n }},\r\n\r\n removeChildren: { value: utils.shouldOverride },\r\n\r\n // Insert this node as a child of parent before the specified child,\r\n // or insert as the last child of parent if specified child is null,\r\n // or replace the specified child with this node, firing mutation events as\r\n // necessary\r\n _insertOrReplace: { value: function _insertOrReplace(parent, before, isReplace) {\r\n var child = this, before_index, i;\r\n\r\n if (child.nodeType === DOCUMENT_FRAGMENT_NODE && child.rooted) {\r\n utils.HierarchyRequestError();\r\n }\r\n\r\n /* Ensure index of `before` is cached before we (possibly) remove it. */\r\n if (parent._childNodes) {\r\n before_index = (before === null) ? parent._childNodes.length :\r\n before.index; /* ensure _index is cached */\r\n\r\n // If we are already a child of the specified parent, then\r\n // the index may have to be adjusted.\r\n if (child.parentNode === parent) {\r\n var child_index = child.index;\r\n // If the child is before the spot it is to be inserted at,\r\n // then when it is removed, the index of that spot will be\r\n // reduced.\r\n if (child_index < before_index) {\r\n before_index--;\r\n }\r\n }\r\n }\r\n\r\n // Delete the old child\r\n if (isReplace) {\r\n if (before.rooted) before.doc.mutateRemove(before);\r\n before.parentNode = null;\r\n }\r\n\r\n var n = before;\r\n if (n === null) { n = parent.firstChild; }\r\n\r\n // If both the child and the parent are rooted, then we want to\r\n // transplant the child without uprooting and rerooting it.\r\n var bothRooted = child.rooted && parent.rooted;\r\n if (child.nodeType === DOCUMENT_FRAGMENT_NODE) {\r\n var spliceArgs = [0, isReplace ? 1 : 0], next;\r\n for (var kid = child.firstChild; kid !== null; kid = next) {\r\n next = kid.nextSibling;\r\n spliceArgs.push(kid);\r\n kid.parentNode = parent;\r\n }\r\n var len = spliceArgs.length;\r\n // Add all nodes to the new parent, overwriting the old child\r\n if (isReplace) {\r\n LinkedList.replace(n, len > 2 ? spliceArgs[2] : null);\r\n } else if (len > 2 && n !== null) {\r\n LinkedList.insertBefore(spliceArgs[2], n);\r\n }\r\n if (parent._childNodes) {\r\n spliceArgs[0] = (before === null) ?\r\n parent._childNodes.length : before._index;\r\n parent._childNodes.splice.apply(parent._childNodes, spliceArgs);\r\n for (i=2; i<len; i++) {\r\n spliceArgs[i]._index = spliceArgs[0] + (i - 2);\r\n }\r\n } else if (parent._firstChild === before) {\r\n if (len > 2) {\r\n parent._firstChild = spliceArgs[2];\r\n } else if (isReplace) {\r\n parent._firstChild = null;\r\n }\r\n }\r\n // Remove all nodes from the document fragment\r\n if (child._childNodes) {\r\n child._childNodes.length = 0;\r\n } else {\r\n child._firstChild = null;\r\n }\r\n // Call the mutation handlers\r\n // Use spliceArgs since the original array has been destroyed. The\r\n // liveness guarantee requires us to clone the array so that\r\n // references to the childNodes of the DocumentFragment will be empty\r\n // when the insertion handlers are called.\r\n if (parent.rooted) {\r\n parent.modify();\r\n for (i = 2; i < len; i++) {\r\n parent.doc.mutateInsert(spliceArgs[i]);\r\n }\r\n }\r\n } else {\r\n if (before === child) { return; }\r\n if (bothRooted) {\r\n // Remove the child from its current position in the tree\r\n // without calling remove(), since we don't want to uproot it.\r\n child._remove();\r\n } else if (child.parentNode) {\r\n child.remove();\r\n }\r\n\r\n // Insert it as a child of its new parent\r\n child.parentNode = parent;\r\n if (isReplace) {\r\n LinkedList.replace(n, child);\r\n if (parent._childNodes) {\r\n child._index = before_index;\r\n parent._childNodes[before_index] = child;\r\n } else if (parent._firstChild === before) {\r\n parent._firstChild = child;\r\n }\r\n } else {\r\n if (n !== null) {\r\n LinkedList.insertBefore(child, n);\r\n }\r\n if (parent._childNodes) {\r\n child._index = before_index;\r\n parent._childNodes.splice(before_index, 0, child);\r\n } else if (parent._firstChild === before) {\r\n parent._firstChild = child;\r\n }\r\n }\r\n if (bothRooted) {\r\n parent.modify();\r\n // Generate a move mutation event\r\n parent.doc.mutateMove(child);\r\n } else if (parent.rooted) {\r\n parent.modify();\r\n parent.doc.mutateInsert(child);\r\n }\r\n }\r\n }},\r\n\r\n\r\n // Return the lastModTime value for this node. (For use as a\r\n // cache invalidation mechanism. If the node does not already\r\n // have one, initialize it from the owner document's modclock\r\n // property. (Note that modclock does not return the actual\r\n // time; it is simply a counter incremented on each document\r\n // modification)\r\n lastModTime: { get: function() {\r\n if (!this._lastModTime) {\r\n this._lastModTime = this.doc.modclock;\r\n }\r\n return this._lastModTime;\r\n }},\r\n\r\n // Increment the owner document's modclock and use the new\r\n // value to update the lastModTime value for this node and\r\n // all of its ancestors. Nodes that have never had their\r\n // lastModTime value queried do not need to have a\r\n // lastModTime property set on them since there is no\r\n // previously queried value to ever compare the new value\r\n // against, so only update nodes that already have a\r\n // _lastModTime property.\r\n modify: { value: function() {\r\n if (this.doc.modclock) { // Skip while doc.modclock == 0\r\n var time = ++this.doc.modclock;\r\n for(var n = this; n; n = n.parentElement) {\r\n if (n._lastModTime) {\r\n n._lastModTime = time;\r\n }\r\n }\r\n }\r\n }},\r\n\r\n // This attribute is not part of the DOM but is quite helpful.\r\n // It returns the document with which a node is associated. Usually\r\n // this is the ownerDocument. But ownerDocument is null for the\r\n // document object itself, so this is a handy way to get the document\r\n // regardless of the node type\r\n doc: { get: function() {\r\n return this.ownerDocument || this;\r\n }},\r\n\r\n\r\n // If the node has a nid (node id), then it is rooted in a document\r\n rooted: { get: function() {\r\n return !!this._nid;\r\n }},\r\n\r\n normalize: { value: function() {\r\n var next;\r\n for (var child=this.firstChild; child !== null; child=next) {\r\n next = child.nextSibling;\r\n\r\n if (child.normalize) {\r\n child.normalize();\r\n }\r\n\r\n if (child.nodeType !== Node.TEXT_NODE) {\r\n continue;\r\n }\r\n\r\n if (child.nodeValue === \"\") {\r\n this.removeChild(child);\r\n continue;\r\n }\r\n\r\n var prevChild = child.previousSibling;\r\n if (prevChild === null) {\r\n continue;\r\n } else if (prevChild.nodeType === Node.TEXT_NODE) {\r\n // merge this with previous and remove the child\r\n prevChild.appendData(child.nodeValue);\r\n this.removeChild(child);\r\n }\r\n }\r\n }},\r\n\r\n // Convert the children of a node to an HTML string.\r\n // This is used by the innerHTML getter\r\n // The serialization spec is at:\r\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end.html#serializing-html-fragments\r\n //\r\n // The serialization logic is intentionally implemented in a separate\r\n // `NodeUtils` helper instead of the more obvious choice of a private\r\n // `_serializeOne()` method on the `Node.prototype` in order to avoid\r\n // the megamorphic `this._serializeOne` property access, which reduces\r\n // performance unnecessarily. If you need specialized behavior for a\r\n // certain subclass, you'll need to implement that in `NodeUtils`.\r\n // See https://github.com/fgnass/domino/pull/142 for more information.\r\n serialize: { value: function() {\r\n if (this._innerHTML) {\r\n return this._innerHTML;\r\n }\r\n var s = '';\r\n for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\r\n s += NodeUtils.serializeOne(kid, this);\r\n }\r\n return s;\r\n }},\r\n\r\n // Non-standard, but often useful for debugging.\r\n outerHTML: {\r\n get: function() {\r\n return NodeUtils.serializeOne(this, { nodeType: 0 });\r\n },\r\n set: utils.nyi,\r\n },\r\n\r\n // mirror node type properties in the prototype, so they are present\r\n // in instances of Node (and subclasses)\r\n ELEMENT_NODE: { value: ELEMENT_NODE },\r\n ATTRIBUTE_NODE: { value: ATTRIBUTE_NODE },\r\n TEXT_NODE: { value: TEXT_NODE },\r\n CDATA_SECTION_NODE: { value: CDATA_SECTION_NODE },\r\n ENTITY_REFERENCE_NODE: { value: ENTITY_REFERENCE_NODE },\r\n ENTITY_NODE: { value: ENTITY_NODE },\r\n PROCESSING_INSTRUCTION_NODE: { value: PROCESSING_INSTRUCTION_NODE },\r\n COMMENT_NODE: { value: COMMENT_NODE },\r\n DOCUMENT_NODE: { value: DOCUMENT_NODE },\r\n DOCUMENT_TYPE_NODE: { value: DOCUMENT_TYPE_NODE },\r\n DOCUMENT_FRAGMENT_NODE: { value: DOCUMENT_FRAGMENT_NODE },\r\n NOTATION_NODE: { value: NOTATION_NODE },\r\n\r\n DOCUMENT_POSITION_DISCONNECTED: { value: DOCUMENT_POSITION_DISCONNECTED },\r\n DOCUMENT_POSITION_PRECEDING: { value: DOCUMENT_POSITION_PRECEDING },\r\n DOCUMENT_POSITION_FOLLOWING: { value: DOCUMENT_POSITION_FOLLOWING },\r\n DOCUMENT_POSITION_CONTAINS: { value: DOCUMENT_POSITION_CONTAINS },\r\n DOCUMENT_POSITION_CONTAINED_BY: { value: DOCUMENT_POSITION_CONTAINED_BY },\r\n DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: { value: DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC },\r\n});\r\n","/* jshint esversion: 6 */\r\n\"use strict\";\r\n\r\nmodule.exports = class NodeList extends Array {\r\n constructor(a) {\r\n super((a && a.length) || 0);\r\n if (a) {\r\n for (var idx in a) { this[idx] = a[idx]; }\r\n }\r\n }\r\n item(i) { return this[i] || null; }\r\n};\r\n","\"use strict\";\r\n\r\n// No support for subclassing array, return an actual Array object.\r\nfunction item(i) {\r\n /* jshint validthis: true */\r\n return this[i] || null;\r\n}\r\n\r\nfunction NodeList(a) {\r\n if (!a) a = [];\r\n a.item = item;\r\n return a;\r\n}\r\n\r\nmodule.exports = NodeList;\r\n","\"use strict\";\r\n\r\nvar NodeList;\r\n\r\ntry {\r\n // Attempt to use ES6-style Array subclass if possible.\r\n NodeList = require('./NodeList.es6.js');\r\n} catch (e) {\r\n // No support for subclassing array, return an actual Array object.\r\n NodeList = require('./NodeList.es5.js');\r\n}\r\n\r\nmodule.exports = NodeList;\r\n","\"use strict\";\r\nmodule.exports = ContainerNode;\r\n\r\nvar Node = require('./Node');\r\nvar NodeList = require('./NodeList');\r\n\r\n// This class defines common functionality for node subtypes that\r\n// can have children\r\n\r\nfunction ContainerNode() {\r\n Node.call(this);\r\n this._firstChild = this._childNodes = null;\r\n}\r\n\r\n// Primary representation is a circular linked list of siblings\r\nContainerNode.prototype = Object.create(Node.prototype, {\r\n\r\n hasChildNodes: { value: function() {\r\n if (this._childNodes) {\r\n return this._childNodes.length > 0;\r\n }\r\n return this._firstChild !== null;\r\n }},\r\n\r\n childNodes: { get: function() {\r\n this._ensureChildNodes();\r\n return this._childNodes;\r\n }},\r\n\r\n firstChild: { get: function() {\r\n if (this._childNodes) {\r\n return this._childNodes.length === 0 ? null : this._childNodes[0];\r\n }\r\n return this._firstChild;\r\n }},\r\n\r\n lastChild: { get: function() {\r\n var kids = this._childNodes, first;\r\n if (kids) {\r\n return kids.length === 0 ? null: kids[kids.length-1];\r\n }\r\n first = this._firstChild;\r\n if (first === null) { return null; }\r\n return first._previousSibling; // circular linked list\r\n }},\r\n\r\n _ensureChildNodes: { value: function() {\r\n if (this._childNodes) { return; }\r\n var first = this._firstChild,\r\n kid = first,\r\n childNodes = this._childNodes = new NodeList();\r\n if (first) do {\r\n childNodes.push(kid);\r\n kid = kid._nextSibling;\r\n } while (kid !== first); // circular linked list\r\n this._firstChild = null; // free memory\r\n }},\r\n\r\n // Remove all of this node's children. This is a minor\r\n // optimization that only calls modify() once.\r\n removeChildren: { value: function removeChildren() {\r\n var root = this.rooted ? this.ownerDocument : null,\r\n next = this.firstChild,\r\n kid;\r\n while (next !== null) {\r\n kid = next;\r\n next = kid.nextSibling;\r\n\r\n if (root) root.mutateRemove(kid);\r\n kid.parentNode = null;\r\n }\r\n if (this._childNodes) {\r\n this._childNodes.length = 0;\r\n } else {\r\n this._firstChild = null;\r\n }\r\n this.modify(); // Update last modified type once only\r\n }},\r\n\r\n});\r\n","\"use strict\";\r\n// This grammar is from the XML and XML Namespace specs. It specifies whether\r\n// a string (such as an element or attribute name) is a valid Name or QName.\r\n//\r\n// Name ::= NameStartChar (NameChar)*\r\n// NameStartChar ::= \":\" | [A-Z] | \"_\" | [a-z] |\r\n// [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] |\r\n// [#x370-#x37D] | [#x37F-#x1FFF] |\r\n// [#x200C-#x200D] | [#x2070-#x218F] |\r\n// [#x2C00-#x2FEF] | [#x3001-#xD7FF] |\r\n// [#xF900-#xFDCF] | [#xFDF0-#xFFFD] |\r\n// [#x10000-#xEFFFF]\r\n//\r\n// NameChar ::= NameStartChar | \"-\" | \".\" | [0-9] |\r\n// #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\r\n//\r\n// QName ::= PrefixedName| UnprefixedName\r\n// PrefixedName ::= Prefix ':' LocalPart\r\n// UnprefixedName ::= LocalPart\r\n// Prefix ::= NCName\r\n// LocalPart ::= NCName\r\n// NCName ::= Name - (Char* ':' Char*)\r\n// # An XML Name, minus the \":\"\r\n//\r\n\r\nexports.isValidName = isValidName;\r\nexports.isValidQName = isValidQName;\r\n\r\n// Most names will be ASCII only. Try matching against simple regexps first\r\nvar simplename = /^[_:A-Za-z][-.:\\w]+$/;\r\nvar simpleqname = /^([_A-Za-z][-.\\w]+|[_A-Za-z][-.\\w]+:[_A-Za-z][-.\\w]+)$/;\r\n\r\n// If the regular expressions above fail, try more complex ones that work\r\n// for any identifiers using codepoints from the Unicode BMP\r\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\";\r\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\";\r\n\r\nvar ncname = \"[\" + ncnamestartchars + \"][\" + ncnamechars + \"]*\";\r\nvar namestartchars = ncnamestartchars + \":\";\r\nvar namechars = ncnamechars + \":\";\r\nvar name = new RegExp(\"^[\" + namestartchars + \"]\" + \"[\" + namechars + \"]*$\");\r\nvar qname = new RegExp(\"^(\" + ncname + \"|\" + ncname + \":\" + ncname + \")$\");\r\n\r\n// XML says that these characters are also legal:\r\n// [#x10000-#xEFFFF]. So if the patterns above fail, and the\r\n// target string includes surrogates, then try the following\r\n// patterns that allow surrogates and then run an extra validation\r\n// step to make sure that the surrogates are in valid pairs and in\r\n// the right range. Note that since the characters \\uf0000 to \\u1f0000\r\n// are not allowed, it means that the high surrogate can only go up to\r\n// \\uDB7f instead of \\uDBFF.\r\nvar hassurrogates = /[\\uD800-\\uDB7F\\uDC00-\\uDFFF]/;\r\nvar surrogatechars = /[\\uD800-\\uDB7F\\uDC00-\\uDFFF]/g;\r\nvar surrogatepairs = /[\\uD800-\\uDB7F][\\uDC00-\\uDFFF]/g;\r\n\r\n// Modify the variables above to allow surrogates\r\nncnamestartchars += \"\\uD800-\\uDB7F\\uDC00-\\uDFFF\";\r\nncnamechars += \"\\uD800-\\uDB7F\\uDC00-\\uDFFF\";\r\nncname = \"[\" + ncnamestartchars + \"][\" + ncnamechars + \"]*\";\r\nnamestartchars = ncnamestartchars + \":\";\r\nnamechars = ncnamechars + \":\";\r\n\r\n// Build another set of regexps that include surrogates\r\nvar surrogatename = new RegExp(\"^[\" + namestartchars + \"]\" + \"[\" + namechars + \"]*$\");\r\nvar surrogateqname = new RegExp(\"^(\" + ncname + \"|\" + ncname + \":\" + ncname + \")$\");\r\n\r\nfunction isValidName(s) {\r\n if (simplename.test(s)) return true; // Plain ASCII\r\n if (name.test(s)) return true; // Unicode BMP\r\n\r\n // Maybe the tests above failed because s includes surrogate pairs\r\n // Most likely, though, they failed for some more basic syntax problem\r\n if (!hassurrogates.test(s)) return false;\r\n\r\n // Is the string a valid name if we allow surrogates?\r\n if (!surrogatename.test(s)) return false;\r\n\r\n // Finally, are the surrogates all correctly paired up?\r\n var chars = s.match(surrogatechars), pairs = s.match(surrogatepairs);\r\n return pairs !== null && 2*pairs.length === chars.length;\r\n}\r\n\r\nfunction isValidQName(s) {\r\n if (simpleqname.test(s)) return true; // Plain ASCII\r\n if (qname.test(s)) return true; // Unicode BMP\r\n\r\n if (!hassurrogates.test(s)) return false;\r\n if (!surrogateqname.test(s)) return false;\r\n var chars = s.match(surrogatechars), pairs = s.match(surrogatepairs);\r\n return pairs !== null && 2*pairs.length === chars.length;\r\n}\r\n","\"use strict\";\r\nvar utils = require('./utils');\r\n\r\nexports.property = function(attr) {\r\n if (Array.isArray(attr.type)) {\r\n var valid = Object.create(null);\r\n attr.type.forEach(function(val) {\r\n valid[val.value || val] = val.alias || val;\r\n });\r\n var missingValueDefault = attr.missing;\r\n if (missingValueDefault===undefined) { missingValueDefault = null; }\r\n var invalidValueDefault = attr.invalid;\r\n if (invalidValueDefault===undefined) { invalidValueDefault = missingValueDefault; }\r\n return {\r\n get: function() {\r\n var v = this._getattr(attr.name);\r\n if (v === null) return missingValueDefault;\r\n\r\n v = valid[v.toLowerCase()];\r\n if (v !== undefined) return v;\r\n if (invalidValueDefault !== null) return invalidValueDefault;\r\n return v;\r\n },\r\n set: function(v) {\r\n this._setattr(attr.name, v);\r\n }\r\n };\r\n }\r\n else if (attr.type === Boolean) {\r\n return {\r\n get: function() {\r\n return this.hasAttribute(attr.name);\r\n },\r\n set: function(v) {\r\n if (v) {\r\n this._setattr(attr.name, '');\r\n }\r\n else {\r\n this.removeAttribute(attr.name);\r\n }\r\n }\r\n };\r\n }\r\n else if (attr.type === Number ||\r\n attr.type === \"long\" ||\r\n attr.type === \"unsigned long\" ||\r\n attr.type === \"limited unsigned long with fallback\") {\r\n return numberPropDesc(attr);\r\n }\r\n else if (!attr.type || attr.type === String) {\r\n return {\r\n get: function() { return this._getattr(attr.name) || ''; },\r\n set: function(v) {\r\n if (attr.treatNullAsEmptyString && v === null) { v = ''; }\r\n this._setattr(attr.name, v);\r\n }\r\n };\r\n }\r\n else if (typeof attr.type === 'function') {\r\n return attr.type(attr.name, attr);\r\n }\r\n throw new Error('Invalid attribute definition');\r\n};\r\n\r\n// See http://www.whatwg.org/specs/web-apps/current-work/#reflect\r\n//\r\n// defval is the default value. If it is a function, then that function\r\n// will be invoked as a method of the element to obtain the default.\r\n// If no default is specified for a given attribute, then the default\r\n// depends on the type of the attribute, but since this function handles\r\n// 4 integer cases, you must specify the default value in each call\r\n//\r\n// min and max define a valid range for getting the attribute.\r\n//\r\n// setmin defines a minimum value when setting. If the value is less\r\n// than that, then throw INDEX_SIZE_ERR.\r\n//\r\n// Conveniently, JavaScript's parseInt function appears to be\r\n// compatible with HTML's 'rules for parsing integers'\r\nfunction numberPropDesc(a) {\r\n var def;\r\n if(typeof a.default === 'function') {\r\n def = a.default;\r\n }\r\n else if(typeof a.default === 'number') {\r\n def = function() { return a.default; };\r\n }\r\n else {\r\n def = function() { utils.assert(false, typeof a.default); };\r\n }\r\n var unsigned_long = (a.type === 'unsigned long');\r\n var signed_long = (a.type === 'long');\r\n var unsigned_fallback = (a.type === 'limited unsigned long with fallback');\r\n var min = a.min, max = a.max, setmin = a.setmin;\r\n if (min === undefined) {\r\n if (unsigned_long) min = 0;\r\n if (signed_long) min = -0x80000000;\r\n if (unsigned_fallback) min = 1;\r\n }\r\n if (max === undefined) {\r\n if (unsigned_long || signed_long || unsigned_fallback) max = 0x7FFFFFFF;\r\n }\r\n\r\n return {\r\n get: function() {\r\n var v = this._getattr(a.name);\r\n var n = a.float ? parseFloat(v) : parseInt(v, 10);\r\n if (v === null || !isFinite(n) || (min !== undefined && n < min) || (max !== undefined && n > max)) {\r\n return def.call(this);\r\n }\r\n if (unsigned_long || signed_long || unsigned_fallback) {\r\n if (!/^[ \\t\\n\\f\\r]*[-+]?[0-9]/.test(v)) { return def.call(this); }\r\n n = n|0; // jshint ignore:line\r\n }\r\n return n;\r\n },\r\n set: function(v) {\r\n if (!a.float) { v = Math.floor(v); }\r\n if (setmin !== undefined && v < setmin) {\r\n utils.IndexSizeError(a.name + ' set to ' + v);\r\n }\r\n if (unsigned_long) {\r\n v = (v < 0 || v > 0x7FFFFFFF) ? def.call(this) :\r\n (v|0); // jshint ignore:line\r\n } else if (unsigned_fallback) {\r\n v = (v < 1 || v > 0x7FFFFFFF) ? def.call(this) :\r\n (v|0); // jshint ignore:line\r\n } else if (signed_long) {\r\n v = (v < -0x80000000 || v > 0x7FFFFFFF) ? def.call(this) :\r\n (v|0); // jshint ignore:line\r\n }\r\n this._setattr(a.name, String(v));\r\n }\r\n };\r\n}\r\n\r\n// This is a utility function for setting up change handler functions\r\n// for attributes like 'id' that require special handling when they change.\r\nexports.registerChangeHandler = function(c, name, handler) {\r\n var p = c.prototype;\r\n\r\n // If p does not already have its own _attributeChangeHandlers\r\n // then create one for it, inheriting from the inherited\r\n // _attributeChangeHandlers. At the top (for the Element class) the\r\n // _attributeChangeHandlers object will be created with a null prototype.\r\n if (!Object.prototype.hasOwnProperty.call(p, '_attributeChangeHandlers')) {\r\n p._attributeChangeHandlers =\r\n Object.create(p._attributeChangeHandlers || null);\r\n }\r\n\r\n p._attributeChangeHandlers[name] = handler;\r\n};\r\n","\"use strict\";\r\nmodule.exports = FilteredElementList;\r\n\r\nvar Node = require('./Node');\r\n\r\n//\r\n// This file defines node list implementation that lazily traverses\r\n// the document tree (or a subtree rooted at any element) and includes\r\n// only those elements for which a specified filter function returns true.\r\n// It is used to implement the\r\n// {Document,Element}.getElementsBy{TagName,ClassName}{,NS} methods.\r\n//\r\n// XXX this should inherit from NodeList\r\n\r\nfunction FilteredElementList(root, filter) {\r\n this.root = root;\r\n this.filter = filter;\r\n this.lastModTime = root.lastModTime;\r\n this.done = false;\r\n this.cache = [];\r\n this.traverse();\r\n}\r\n\r\nFilteredElementList.prototype = Object.create(Object.prototype, {\r\n length: { get: function() {\r\n this.checkcache();\r\n if (!this.done) this.traverse();\r\n return this.cache.length;\r\n } },\r\n\r\n item: { value: function(n) {\r\n this.checkcache();\r\n if (!this.done && n >= this.cache.length) {\r\n // This can lead to O(N^2) behavior if we stop when we get to n\r\n // and the caller is iterating through the items in order; so\r\n // be sure to do the full traverse here.\r\n this.traverse(/*n*/);\r\n }\r\n return this.cache[n];\r\n } },\r\n\r\n checkcache: { value: function() {\r\n if (this.lastModTime !== this.root.lastModTime) {\r\n // subtree has changed, so invalidate cache\r\n for (var i = this.cache.length-1; i>=0; i--) {\r\n this[i] = undefined;\r\n }\r\n this.cache.length = 0;\r\n this.done = false;\r\n this.lastModTime = this.root.lastModTime;\r\n }\r\n } },\r\n\r\n // If n is specified, then traverse the tree until we've found the nth\r\n // item (or until we've found all items). If n is not specified,\r\n // traverse until we've found all items.\r\n traverse: { value: function(n) {\r\n // increment n so we can compare to length, and so it is never falsy\r\n if (n !== undefined) n++;\r\n\r\n var elt;\r\n while ((elt = this.next()) !== null) {\r\n this[this.cache.length] = elt; //XXX Use proxy instead\r\n this.cache.push(elt);\r\n if (n && this.cache.length === n) return;\r\n }\r\n\r\n // no next element, so we've found everything\r\n this.done = true;\r\n } },\r\n\r\n // Return the next element under root that matches filter\r\n next: { value: function() {\r\n var start = (this.cache.length === 0) ? this.root // Start at the root or at\r\n : this.cache[this.cache.length-1]; // the last element we found\r\n\r\n var elt;\r\n if (start.nodeType === Node.DOCUMENT_NODE)\r\n elt = start.documentElement;\r\n else\r\n elt = start.nextElement(this.root);\r\n\r\n while(elt) {\r\n if (this.filter(elt)) {\r\n return elt;\r\n }\r\n\r\n elt = elt.nextElement(this.root);\r\n }\r\n return null;\r\n } },\r\n});\r\n","\"use strict\";\r\n// DOMTokenList implementation based on https://github.com/Raynos/DOM-shim\r\nvar utils = require('./utils');\r\n\r\nmodule.exports = DOMTokenList;\r\n\r\nfunction DOMTokenList(getter, setter) {\r\n this._getString = getter;\r\n this._setString = setter;\r\n this._length = 0;\r\n this._lastStringValue = '';\r\n this._update();\r\n}\r\n\r\nObject.defineProperties(DOMTokenList.prototype, {\r\n length: { get: function() { return this._length; } },\r\n item: { value: function(index) {\r\n var list = getList(this);\r\n if (index < 0 || index >= list.length) {\r\n return null;\r\n }\r\n return list[index];\r\n }},\r\n\r\n contains: { value: function(token) {\r\n token = String(token); // no error checking for contains()\r\n var list = getList(this);\r\n return list.indexOf(token) > -1;\r\n }},\r\n\r\n add: { value: function() {\r\n var list = getList(this);\r\n for (var i = 0, len = arguments.length; i < len; i++) {\r\n var token = handleErrors(arguments[i]);\r\n if (list.indexOf(token) < 0) {\r\n list.push(token);\r\n }\r\n }\r\n // Note: as per spec, if handleErrors() throws any errors, we never\r\n // make it here and none of the changes take effect.\r\n // Also per spec: we run the \"update steps\" even if no change was\r\n // made (ie, if the token already existed)\r\n this._update(list);\r\n }},\r\n\r\n remove: { value: function() {\r\n var list = getList(this);\r\n for (var i = 0, len = arguments.length; i < len; i++) {\r\n var token = handleErrors(arguments[i]);\r\n var index = list.indexOf(token);\r\n if (index > -1) {\r\n list.splice(index, 1);\r\n }\r\n }\r\n // Note: as per spec, if handleErrors() throws any errors, we never\r\n // make it here and none of the changes take effect.\r\n // Also per spec: we run the \"update steps\" even if no change was\r\n // made (ie, if the token wasn't previously present)\r\n this._update(list);\r\n }},\r\n\r\n toggle: { value: function toggle(token, force) {\r\n token = handleErrors(token);\r\n if (this.contains(token)) {\r\n if (force === undefined || force === false) {\r\n this.remove(token);\r\n return false;\r\n }\r\n return true;\r\n } else {\r\n if (force === undefined || force === true) {\r\n this.add(token);\r\n return true;\r\n }\r\n return false;\r\n }\r\n }},\r\n\r\n replace: { value: function replace(token, newToken) {\r\n // weird corner case of spec: if `token` contains whitespace, but\r\n // `newToken` is the empty string, we must throw SyntaxError not\r\n // InvalidCharacterError (sigh)\r\n if (String(newToken)==='') { utils.SyntaxError(); }\r\n token = handleErrors(token);\r\n newToken = handleErrors(newToken);\r\n var list = getList(this);\r\n var idx = list.indexOf(token);\r\n if (idx < 0) {\r\n // Note that, per spec, we do not run the update steps on this path.\r\n return false;\r\n }\r\n var idx2 = list.indexOf(newToken);\r\n if (idx2 < 0) {\r\n list[idx] = newToken;\r\n } else {\r\n // \"replace the first instance of either `token` or `newToken` with\r\n // `newToken` and remove all other instances\"\r\n if (idx < idx2) {\r\n list[idx] = newToken;\r\n list.splice(idx2, 1);\r\n } else {\r\n // idx2 is already `newToken`\r\n list.splice(idx, 1);\r\n }\r\n }\r\n this._update(list);\r\n return true;\r\n }},\r\n\r\n toString: { value: function() {\r\n return this._getString();\r\n }},\r\n\r\n value: {\r\n get: function() {\r\n return this._getString();\r\n },\r\n set: function(v) {\r\n this._setString(v);\r\n this._update();\r\n }\r\n },\r\n\r\n // Called when the setter is called from outside this interface.\r\n _update: { value: function(list) {\r\n if (list) {\r\n fixIndex(this, list);\r\n this._setString(list.join(\" \").trim());\r\n } else {\r\n fixIndex(this, getList(this));\r\n }\r\n this._lastStringValue = this._getString();\r\n } },\r\n});\r\n\r\nfunction fixIndex(clist, list) {\r\n var oldLength = clist._length;\r\n var i;\r\n clist._length = list.length;\r\n for (i = 0; i < list.length; i++) {\r\n clist[i] = list[i];\r\n }\r\n // Clear/free old entries.\r\n for (; i < oldLength; i++) {\r\n clist[i] = undefined;\r\n }\r\n}\r\n\r\nfunction handleErrors(token) {\r\n token = String(token);\r\n if (token === \"\") {\r\n utils.SyntaxError();\r\n }\r\n if (/[ \\t\\r\\n\\f]/.test(token)) {\r\n utils.InvalidCharacterError();\r\n }\r\n return token;\r\n}\r\n\r\nfunction toArray(clist) {\r\n var length = clist._length;\r\n var arr = Array(length);\r\n for (var i = 0; i < length; i++) {\r\n arr[i] = clist[i];\r\n }\r\n return arr;\r\n}\r\n\r\nfunction getList(clist) {\r\n var strProp = clist._getString();\r\n if (strProp === clist._lastStringValue) {\r\n return toArray(clist);\r\n }\r\n var str = strProp.replace(/(^[ \\t\\r\\n\\f]+)|([ \\t\\r\\n\\f]+$)/g, '');\r\n if (str === \"\") {\r\n return [];\r\n } else {\r\n var seen = Object.create(null);\r\n return str.split(/[ \\t\\r\\n\\f]+/g).filter(function(n) {\r\n var key = '$' + n;\r\n if (seen[key]) { return false; }\r\n seen[key] = true;\r\n return true;\r\n });\r\n }\r\n}\r\n","\"use strict\";\r\n/* jshint eqnull: true */\r\n/**\r\n * Zest (https://github.com/chjj/zest)\r\n * A css selector engine.\r\n * Copyright (c) 2011-2012, Christopher Jeffrey. (MIT Licensed)\r\n * Domino version based on Zest v0.1.3 with bugfixes applied.\r\n */\r\n\r\n/**\r\n * Helpers\r\n */\r\n\r\nvar window = Object.create(null, {\r\n location: { get: function() {\r\n throw new Error('window.location is not supported.');\r\n } }\r\n});\r\n\r\nvar compareDocumentPosition = function(a, b) {\r\n return a.compareDocumentPosition(b);\r\n};\r\n\r\nvar order = function(a, b) {\r\n /* jshint bitwise: false */\r\n return compareDocumentPosition(a, b) & 2 ? 1 : -1;\r\n};\r\n\r\nvar next = function(el) {\r\n while ((el = el.nextSibling)\r\n && el.nodeType !== 1);\r\n return el;\r\n};\r\n\r\nvar prev = function(el) {\r\n while ((el = el.previousSibling)\r\n && el.nodeType !== 1);\r\n return el;\r\n};\r\n\r\nvar child = function(el) {\r\n /*jshint -W084 */\r\n if (el = el.firstChild) {\r\n while (el.nodeType !== 1\r\n && (el = el.nextSibling));\r\n }\r\n return el;\r\n};\r\n\r\nvar lastChild = function(el) {\r\n /*jshint -W084 */\r\n if (el = el.lastChild) {\r\n while (el.nodeType !== 1\r\n && (el = el.previousSibling));\r\n }\r\n return el;\r\n};\r\n\r\nvar parentIsElement = function(n) {\r\n if (!n.parentNode) { return false; }\r\n var nodeType = n.parentNode.nodeType;\r\n // The root `html` element can be a first- or last-child, too.\r\n return nodeType === 1 || nodeType === 9;\r\n};\r\n\r\nvar unquote = function(str) {\r\n if (!str) return str;\r\n var ch = str[0];\r\n if (ch === '\"' || ch === '\\'') {\r\n if (str[str.length-1] === ch) {\r\n str = str.slice(1, -1);\r\n } else {\r\n // bad string.\r\n str = str.slice(1);\r\n }\r\n return str.replace(rules.str_escape, function(s) {\r\n var m = /^\\\\(?:([0-9A-Fa-f]+)|([\\r\\n\\f]+))/.exec(s);\r\n if (!m) { return s.slice(1); }\r\n if (m[2]) { return ''; /* escaped newlines are ignored in strings. */ }\r\n var cp = parseInt(m[1], 16);\r\n return String.fromCodePoint ? String.fromCodePoint(cp) :\r\n // Not all JavaScript implementations have String.fromCodePoint yet.\r\n String.fromCharCode(cp);\r\n });\r\n } else if (rules.ident.test(str)) {\r\n return decodeid(str);\r\n } else {\r\n // NUMBER, PERCENTAGE, DIMENSION, etc\r\n return str;\r\n }\r\n};\r\n\r\nvar decodeid = function(str) {\r\n return str.replace(rules.escape, function(s) {\r\n var m = /^\\\\([0-9A-Fa-f]+)/.exec(s);\r\n if (!m) { return s[1]; }\r\n var cp = parseInt(m[1], 16);\r\n return String.fromCodePoint ? String.fromCodePoint(cp) :\r\n // Not all JavaScript implementations have String.fromCodePoint yet.\r\n String.fromCharCode(cp);\r\n });\r\n};\r\n\r\nvar indexOf = (function() {\r\n if (Array.prototype.indexOf) {\r\n return Array.prototype.indexOf;\r\n }\r\n return function(obj, item) {\r\n var i = this.length;\r\n while (i--) {\r\n if (this[i] === item) return i;\r\n }\r\n return -1;\r\n };\r\n})();\r\n\r\nvar makeInside = function(start, end) {\r\n var regex = rules.inside.source\r\n .replace(/</g, start)\r\n .replace(/>/g, end);\r\n\r\n return new RegExp(regex);\r\n};\r\n\r\nvar replace = function(regex, name, val) {\r\n regex = regex.source;\r\n regex = regex.replace(name, val.source || val);\r\n return new RegExp(regex);\r\n};\r\n\r\nvar truncateUrl = function(url, num) {\r\n return url\r\n .replace(/^(?:\\w+:\\/\\/|\\/+)/, '')\r\n .replace(/(?:\\/+|\\/*#.*?)$/, '')\r\n .split('/', num)\r\n .join('/');\r\n};\r\n\r\n/**\r\n * Handle `nth` Selectors\r\n */\r\n\r\nvar parseNth = function(param_, test) {\r\n var param = param_.replace(/\\s+/g, '')\r\n , cap;\r\n\r\n if (param === 'even') {\r\n param = '2n+0';\r\n } else if (param === 'odd') {\r\n param = '2n+1';\r\n } else if (param.indexOf('n') === -1) {\r\n param = '0n' + param;\r\n }\r\n\r\n cap = /^([+-])?(\\d+)?n([+-])?(\\d+)?$/.exec(param);\r\n\r\n return {\r\n group: cap[1] === '-'\r\n ? -(cap[2] || 1)\r\n : +(cap[2] || 1),\r\n offset: cap[4]\r\n ? (cap[3] === '-' ? -cap[4] : +cap[4])\r\n : 0\r\n };\r\n};\r\n\r\nvar nth = function(param_, test, last) {\r\n var param = parseNth(param_)\r\n , group = param.group\r\n , offset = param.offset\r\n , find = !last ? child : lastChild\r\n , advance = !last ? next : prev;\r\n\r\n return function(el) {\r\n if (!parentIsElement(el)) return;\r\n\r\n var rel = find(el.parentNode)\r\n , pos = 0;\r\n\r\n while (rel) {\r\n if (test(rel, el)) pos++;\r\n if (rel === el) {\r\n pos -= offset;\r\n return group && pos\r\n ? (pos % group) === 0 && (pos < 0 === group < 0)\r\n : !pos;\r\n }\r\n rel = advance(rel);\r\n }\r\n };\r\n};\r\n\r\n/**\r\n * Simple Selectors\r\n */\r\n\r\nvar selectors = {\r\n '*': (function() {\r\n if (false/*function() {\r\n var el = document.createElement('div');\r\n el.appendChild(document.createComment(''));\r\n return !!el.getElementsByTagName('*')[0];\r\n }()*/) {\r\n return function(el) {\r\n if (el.nodeType === 1) return true;\r\n };\r\n }\r\n return function() {\r\n return true;\r\n };\r\n })(),\r\n 'type': function(type) {\r\n type = type.toLowerCase();\r\n return function(el) {\r\n return el.nodeName.toLowerCase() === type;\r\n };\r\n },\r\n 'attr': function(key, op, val, i) {\r\n op = operators[op];\r\n return function(el) {\r\n var attr;\r\n switch (key) {\r\n case 'for':\r\n attr = el.htmlFor;\r\n break;\r\n case 'class':\r\n // className is '' when non-existent\r\n // getAttribute('class') is null\r\n attr = el.className;\r\n if (attr === '' && el.getAttribute('class') == null) {\r\n attr = null;\r\n }\r\n break;\r\n case 'href':\r\n case 'src':\r\n attr = el.getAttribute(key, 2);\r\n break;\r\n case 'title':\r\n // getAttribute('title') can be '' when non-existent sometimes?\r\n attr = el.getAttribute('title') || null;\r\n break;\r\n // careful with attributes with special getter functions\r\n case 'id':\r\n case 'lang':\r\n case 'dir':\r\n case 'accessKey':\r\n case 'hidden':\r\n case 'tabIndex':\r\n case 'style':\r\n if (el.getAttribute) {\r\n attr = el.getAttribute(key);\r\n break;\r\n }\r\n /* falls through */\r\n default:\r\n if (el.hasAttribute && !el.hasAttribute(key)) {\r\n break;\r\n }\r\n attr = el[key] != null\r\n ? el[key]\r\n : el.getAttribute && el.getAttribute(key);\r\n break;\r\n }\r\n if (attr == null) return;\r\n attr = attr + '';\r\n if (i) {\r\n attr = attr.toLowerCase();\r\n val = val.toLowerCase();\r\n }\r\n return op(attr, val);\r\n };\r\n },\r\n ':first-child': function(el) {\r\n return !prev(el) && parentIsElement(el);\r\n },\r\n ':last-child': function(el) {\r\n return !next(el) && parentIsElement(el);\r\n },\r\n ':only-child': function(el) {\r\n return !prev(el) && !next(el) && parentIsElement(el);\r\n },\r\n ':nth-child': function(param, last) {\r\n return nth(param, function() {\r\n return true;\r\n }, last);\r\n },\r\n ':nth-last-child': function(param) {\r\n return selectors[':nth-child'](param, true);\r\n },\r\n ':root': function(el) {\r\n return el.ownerDocument.documentElement === el;\r\n },\r\n ':empty': function(el) {\r\n return !el.firstChild;\r\n },\r\n ':not': function(sel) {\r\n var test = compileGroup(sel);\r\n return function(el) {\r\n return !test(el);\r\n };\r\n },\r\n ':first-of-type': function(el) {\r\n if (!parentIsElement(el)) return;\r\n var type = el.nodeName;\r\n /*jshint -W084 */\r\n while (el = prev(el)) {\r\n if (el.nodeName === type) return;\r\n }\r\n return true;\r\n },\r\n ':last-of-type': function(el) {\r\n if (!parentIsElement(el)) return;\r\n var type = el.nodeName;\r\n /*jshint -W084 */\r\n while (el = next(el)) {\r\n if (el.nodeName === type) return;\r\n }\r\n return true;\r\n },\r\n ':only-of-type': function(el) {\r\n return selectors[':first-of-type'](el)\r\n && selectors[':last-of-type'](el);\r\n },\r\n ':nth-of-type': function(param, last) {\r\n return nth(param, function(rel, el) {\r\n return rel.nodeName === el.nodeName;\r\n }, last);\r\n },\r\n ':nth-last-of-type': function(param) {\r\n return selectors[':nth-of-type'](param, true);\r\n },\r\n ':checked': function(el) {\r\n return !!(el.checked || el.selected);\r\n },\r\n ':indeterminate': function(el) {\r\n return !selectors[':checked'](el);\r\n },\r\n ':enabled': function(el) {\r\n return !el.disabled && el.type !== 'hidden';\r\n },\r\n ':disabled': function(el) {\r\n return !!el.disabled;\r\n },\r\n ':target': function(el) {\r\n return el.id === window.location.hash.substring(1);\r\n },\r\n ':focus': function(el) {\r\n return el === el.ownerDocument.activeElement;\r\n },\r\n ':is': function(sel) {\r\n return compileGroup(sel);\r\n },\r\n // :matches is an older name for :is; see\r\n // https://github.com/w3c/csswg-drafts/issues/3258\r\n ':matches': function(sel) {\r\n return selectors[':is'](sel);\r\n },\r\n ':nth-match': function(param, last) {\r\n var args = param.split(/\\s*,\\s*/)\r\n , arg = args.shift()\r\n , test = compileGroup(args.join(','));\r\n\r\n return nth(arg, test, last);\r\n },\r\n ':nth-last-match': function(param) {\r\n return selectors[':nth-match'](param, true);\r\n },\r\n ':links-here': function(el) {\r\n return el + '' === window.location + '';\r\n },\r\n ':lang': function(param) {\r\n return function(el) {\r\n while (el) {\r\n if (el.lang) return el.lang.indexOf(param) === 0;\r\n el = el.parentNode;\r\n }\r\n };\r\n },\r\n ':dir': function(param) {\r\n return function(el) {\r\n while (el) {\r\n if (el.dir) return el.dir === param;\r\n el = el.parentNode;\r\n }\r\n };\r\n },\r\n ':scope': function(el, con) {\r\n var context = con || el.ownerDocument;\r\n if (context.nodeType === 9) {\r\n return el === context.documentElement;\r\n }\r\n return el === context;\r\n },\r\n ':any-link': function(el) {\r\n return typeof el.href === 'string';\r\n },\r\n ':local-link': function(el) {\r\n if (el.nodeName) {\r\n return el.href && el.host === window.location.host;\r\n }\r\n var param = +el + 1;\r\n return function(el) {\r\n if (!el.href) return;\r\n\r\n var url = window.location + ''\r\n , href = el + '';\r\n\r\n return truncateUrl(url, param) === truncateUrl(href, param);\r\n };\r\n },\r\n ':default': function(el) {\r\n return !!el.defaultSelected;\r\n },\r\n ':valid': function(el) {\r\n return el.willValidate || (el.validity && el.validity.valid);\r\n },\r\n ':invalid': function(el) {\r\n return !selectors[':valid'](el);\r\n },\r\n ':in-range': function(el) {\r\n return el.value > el.min && el.value <= el.max;\r\n },\r\n ':out-of-range': function(el) {\r\n return !selectors[':in-range'](el);\r\n },\r\n ':required': function(el) {\r\n return !!el.required;\r\n },\r\n ':optional': function(el) {\r\n return !el.required;\r\n },\r\n ':read-only': function(el) {\r\n if (el.readOnly) return true;\r\n\r\n var attr = el.getAttribute('contenteditable')\r\n , prop = el.contentEditable\r\n , name = el.nodeName.toLowerCase();\r\n\r\n name = name !== 'input' && name !== 'textarea';\r\n\r\n return (name || el.disabled) && attr == null && prop !== 'true';\r\n },\r\n ':read-write': function(el) {\r\n return !selectors[':read-only'](el);\r\n },\r\n ':hover': function() {\r\n throw new Error(':hover is not supported.');\r\n },\r\n ':active': function() {\r\n throw new Error(':active is not supported.');\r\n },\r\n ':link': function() {\r\n throw new Error(':link is not supported.');\r\n },\r\n ':visited': function() {\r\n throw new Error(':visited is not supported.');\r\n },\r\n ':column': function() {\r\n throw new Error(':column is not supported.');\r\n },\r\n ':nth-column': function() {\r\n throw new Error(':nth-column is not supported.');\r\n },\r\n ':nth-last-column': function() {\r\n throw new Error(':nth-last-column is not supported.');\r\n },\r\n ':current': function() {\r\n throw new Error(':current is not supported.');\r\n },\r\n ':past': function() {\r\n throw new Error(':past is not supported.');\r\n },\r\n ':future': function() {\r\n throw new Error(':future is not supported.');\r\n },\r\n // Non-standard, for compatibility purposes.\r\n ':contains': function(param) {\r\n return function(el) {\r\n var text = el.innerText || el.textContent || el.value || '';\r\n return text.indexOf(param) !== -1;\r\n };\r\n },\r\n ':has': function(param) {\r\n return function(el) {\r\n return find(param, el).length > 0;\r\n };\r\n }\r\n // Potentially add more pseudo selectors for\r\n // compatibility with sizzle and most other\r\n // selector engines (?).\r\n};\r\n\r\n/**\r\n * Attribute Operators\r\n */\r\n\r\nvar operators = {\r\n '-': function() {\r\n return true;\r\n },\r\n '=': function(attr, val) {\r\n return attr === val;\r\n },\r\n '*=': function(attr, val) {\r\n return attr.indexOf(val) !== -1;\r\n },\r\n '~=': function(attr, val) {\r\n var i\r\n , s\r\n , f\r\n , l;\r\n\r\n for (s = 0; true; s = i + 1) {\r\n i = attr.indexOf(val, s);\r\n if (i === -1) return false;\r\n f = attr[i - 1];\r\n l = attr[i + val.length];\r\n if ((!f || f === ' ') && (!l || l === ' ')) return true;\r\n }\r\n },\r\n '|=': function(attr, val) {\r\n var i = attr.indexOf(val)\r\n , l;\r\n\r\n if (i !== 0) return;\r\n l = attr[i + val.length];\r\n\r\n return l === '-' || !l;\r\n },\r\n '^=': function(attr, val) {\r\n return attr.indexOf(val) === 0;\r\n },\r\n '$=': function(attr, val) {\r\n var i = attr.lastIndexOf(val);\r\n return i !== -1 && i + val.length === attr.length;\r\n },\r\n // non-standard\r\n '!=': function(attr, val) {\r\n return attr !== val;\r\n }\r\n};\r\n\r\n/**\r\n * Combinator Logic\r\n */\r\n\r\nvar combinators = {\r\n ' ': function(test) {\r\n return function(el) {\r\n /*jshint -W084 */\r\n while (el = el.parentNode) {\r\n if (test(el)) return el;\r\n }\r\n };\r\n },\r\n '>': function(test) {\r\n return function(el) {\r\n /*jshint -W084 */\r\n if (el = el.parentNode) {\r\n return test(el) && el;\r\n }\r\n };\r\n },\r\n '+': function(test) {\r\n return function(el) {\r\n /*jshint -W084 */\r\n if (el = prev(el)) {\r\n return test(el) && el;\r\n }\r\n };\r\n },\r\n '~': function(test) {\r\n return function(el) {\r\n /*jshint -W084 */\r\n while (el = prev(el)) {\r\n if (test(el)) return el;\r\n }\r\n };\r\n },\r\n 'noop': function(test) {\r\n return function(el) {\r\n return test(el) && el;\r\n };\r\n },\r\n 'ref': function(test, name) {\r\n var node;\r\n\r\n function ref(el) {\r\n var doc = el.ownerDocument\r\n , nodes = doc.getElementsByTagName('*')\r\n , i = nodes.length;\r\n\r\n while (i--) {\r\n node = nodes[i];\r\n if (ref.test(el)) {\r\n node = null;\r\n return true;\r\n }\r\n }\r\n\r\n node = null;\r\n }\r\n\r\n ref.combinator = function(el) {\r\n if (!node || !node.getAttribute) return;\r\n\r\n var attr = node.getAttribute(name) || '';\r\n if (attr[0] === '#') attr = attr.substring(1);\r\n\r\n if (attr === el.id && test(node)) {\r\n return node;\r\n }\r\n };\r\n\r\n return ref;\r\n }\r\n};\r\n\r\n/**\r\n * Grammar\r\n */\r\n\r\nvar rules = {\r\n escape: /\\\\(?:[^0-9A-Fa-f\\r\\n]|[0-9A-Fa-f]{1,6}[\\r\\n\\t ]?)/g,\r\n str_escape: /(escape)|\\\\(\\n|\\r\\n?|\\f)/g,\r\n nonascii: /[\\u00A0-\\uFFFF]/,\r\n cssid: /(?:(?!-?[0-9])(?:escape|nonascii|[-_a-zA-Z0-9])+)/,\r\n qname: /^ *(cssid|\\*)/,\r\n simple: /^(?:([.#]cssid)|pseudo|attr)/,\r\n ref: /^ *\\/(cssid)\\/ */,\r\n combinator: /^(?: +([^ \\w*.#\\\\]) +|( )+|([^ \\w*.#\\\\]))(?! *$)/,\r\n attr: /^\\[(cssid)(?:([^\\w]?=)(inside))?\\]/,\r\n pseudo: /^(:cssid)(?:\\((inside)\\))?/,\r\n inside: /(?:\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|<[^\"'>]*>|\\\\[\"'>]|[^\"'>])*/,\r\n ident: /^(cssid)$/\r\n};\r\n\r\nrules.cssid = replace(rules.cssid, 'nonascii', rules.nonascii);\r\nrules.cssid = replace(rules.cssid, 'escape', rules.escape);\r\nrules.qname = replace(rules.qname, 'cssid', rules.cssid);\r\nrules.simple = replace(rules.simple, 'cssid', rules.cssid);\r\nrules.ref = replace(rules.ref, 'cssid', rules.cssid);\r\nrules.attr = replace(rules.attr, 'cssid', rules.cssid);\r\nrules.pseudo = replace(rules.pseudo, 'cssid', rules.cssid);\r\nrules.inside = replace(rules.inside, '[^\"\\'>]*', rules.inside);\r\nrules.attr = replace(rules.attr, 'inside', makeInside('\\\\[', '\\\\]'));\r\nrules.pseudo = replace(rules.pseudo, 'inside', makeInside('\\\\(', '\\\\)'));\r\nrules.simple = replace(rules.simple, 'pseudo', rules.pseudo);\r\nrules.simple = replace(rules.simple, 'attr', rules.attr);\r\nrules.ident = replace(rules.ident, 'cssid', rules.cssid);\r\nrules.str_escape = replace(rules.str_escape, 'escape', rules.escape);\r\n\r\n/**\r\n * Compiling\r\n */\r\n\r\nvar compile = function(sel_) {\r\n var sel = sel_.replace(/^\\s+|\\s+$/g, '')\r\n , test\r\n , filter = []\r\n , buff = []\r\n , subject\r\n , qname\r\n , cap\r\n , op\r\n , ref;\r\n\r\n /*jshint -W084 */\r\n while (sel) {\r\n if (cap = rules.qname.exec(sel)) {\r\n sel = sel.substring(cap[0].length);\r\n qname = decodeid(cap[1]);\r\n buff.push(tok(qname, true));\r\n } else if (cap = rules.simple.exec(sel)) {\r\n sel = sel.substring(cap[0].length);\r\n qname = '*';\r\n buff.push(tok(qname, true));\r\n buff.push(tok(cap));\r\n } else {\r\n throw new SyntaxError('Invalid selector.');\r\n }\r\n\r\n while (cap = rules.simple.exec(sel)) {\r\n sel = sel.substring(cap[0].length);\r\n buff.push(tok(cap));\r\n }\r\n\r\n if (sel[0] === '!') {\r\n sel = sel.substring(1);\r\n subject = makeSubject();\r\n subject.qname = qname;\r\n buff.push(subject.simple);\r\n }\r\n\r\n if (cap = rules.ref.exec(sel)) {\r\n sel = sel.substring(cap[0].length);\r\n ref = combinators.ref(makeSimple(buff), decodeid(cap[1]));\r\n filter.push(ref.combinator);\r\n buff = [];\r\n continue;\r\n }\r\n\r\n if (cap = rules.combinator.exec(sel)) {\r\n sel = sel.substring(cap[0].length);\r\n op = cap[1] || cap[2] || cap[3];\r\n if (op === ',') {\r\n filter.push(combinators.noop(makeSimple(buff)));\r\n break;\r\n }\r\n } else {\r\n op = 'noop';\r\n }\r\n\r\n if (!combinators[op]) { throw new SyntaxError('Bad combinator.'); }\r\n filter.push(combinators[op](makeSimple(buff)));\r\n buff = [];\r\n }\r\n\r\n test = makeTest(filter);\r\n test.qname = qname;\r\n test.sel = sel;\r\n\r\n if (subject) {\r\n subject.lname = test.qname;\r\n\r\n subject.test = test;\r\n subject.qname = subject.qname;\r\n subject.sel = test.sel;\r\n test = subject;\r\n }\r\n\r\n if (ref) {\r\n ref.test = test;\r\n ref.qname = test.qname;\r\n ref.sel = test.sel;\r\n test = ref;\r\n }\r\n\r\n return test;\r\n};\r\n\r\nvar tok = function(cap, qname) {\r\n // qname\r\n if (qname) {\r\n return cap === '*'\r\n ? selectors['*']\r\n : selectors.type(cap);\r\n }\r\n\r\n // class/id\r\n if (cap[1]) {\r\n return cap[1][0] === '.'\r\n\t // XXX unescape here? or in attr?\r\n ? selectors.attr('class', '~=', decodeid(cap[1].substring(1)), false)\r\n : selectors.attr('id', '=', decodeid(cap[1].substring(1)), false);\r\n }\r\n\r\n // pseudo-name\r\n // inside-pseudo\r\n if (cap[2]) {\r\n return cap[3]\r\n ? selectors[decodeid(cap[2])](unquote(cap[3]))\r\n : selectors[decodeid(cap[2])];\r\n }\r\n\r\n // attr name\r\n // attr op\r\n // attr value\r\n if (cap[4]) {\r\n var value = cap[6];\r\n var i = /[\"'\\s]\\s*I$/i.test(value);\r\n if (i) {\r\n value = value.replace(/\\s*I$/i, '');\r\n }\r\n return selectors.attr(decodeid(cap[4]), cap[5] || '-', unquote(value), i);\r\n }\r\n\r\n throw new SyntaxError('Unknown Selector.');\r\n};\r\n\r\nvar makeSimple = function(func) {\r\n var l = func.length\r\n , i;\r\n\r\n // Potentially make sure\r\n // `el` is truthy.\r\n if (l < 2) return func[0];\r\n\r\n return function(el) {\r\n if (!el) return;\r\n for (i = 0; i < l; i++) {\r\n if (!func[i](el)) return;\r\n }\r\n return true;\r\n };\r\n};\r\n\r\nvar makeTest = function(func) {\r\n if (func.length < 2) {\r\n return function(el) {\r\n return !!func[0](el);\r\n };\r\n }\r\n return function(el) {\r\n var i = func.length;\r\n while (i--) {\r\n if (!(el = func[i](el))) return;\r\n }\r\n return true;\r\n };\r\n};\r\n\r\nvar makeSubject = function() {\r\n var target;\r\n\r\n function subject(el) {\r\n var node = el.ownerDocument\r\n , scope = node.getElementsByTagName(subject.lname)\r\n , i = scope.length;\r\n\r\n while (i--) {\r\n if (subject.test(scope[i]) && target === el) {\r\n target = null;\r\n return true;\r\n }\r\n }\r\n\r\n target = null;\r\n }\r\n\r\n subject.simple = function(el) {\r\n target = el;\r\n return true;\r\n };\r\n\r\n return subject;\r\n};\r\n\r\nvar compileGroup = function(sel) {\r\n var test = compile(sel)\r\n , tests = [ test ];\r\n\r\n while (test.sel) {\r\n test = compile(test.sel);\r\n tests.push(test);\r\n }\r\n\r\n if (tests.length < 2) return test;\r\n\r\n return function(el) {\r\n var l = tests.length\r\n , i = 0;\r\n\r\n for (; i < l; i++) {\r\n if (tests[i](el)) return true;\r\n }\r\n };\r\n};\r\n\r\n/**\r\n * Selection\r\n */\r\n\r\nvar find = function(sel, node) {\r\n var results = []\r\n , test = compile(sel)\r\n , scope = node.getElementsByTagName(test.qname)\r\n , i = 0\r\n , el;\r\n\r\n /*jshint -W084 */\r\n while (el = scope[i++]) {\r\n if (test(el)) results.push(el);\r\n }\r\n\r\n if (test.sel) {\r\n while (test.sel) {\r\n test = compile(test.sel);\r\n scope = node.getElementsByTagName(test.qname);\r\n i = 0;\r\n /*jshint -W084 */\r\n while (el = scope[i++]) {\r\n if (test(el) && indexOf.call(results, el) === -1) {\r\n results.push(el);\r\n }\r\n }\r\n }\r\n results.sort(order);\r\n }\r\n\r\n return results;\r\n};\r\n\r\n/**\r\n * Expose\r\n */\r\n\r\nmodule.exports = exports = function(sel, context) {\r\n /* when context isn't a DocumentFragment and the selector is simple: */\r\n var id, r;\r\n if (context.nodeType !== 11 && sel.indexOf(' ') === -1) {\r\n if (sel[0] === '#' && context.rooted && /^#[A-Z_][-A-Z0-9_]*$/i.test(sel)) {\r\n if (context.doc._hasMultipleElementsWithId) {\r\n id = sel.substring(1);\r\n if (!context.doc._hasMultipleElementsWithId(id)) {\r\n r = context.doc.getElementById(id);\r\n return r ? [r] : [];\r\n }\r\n }\r\n }\r\n if (sel[0] === '.' && /^\\.\\w+$/.test(sel)) {\r\n return context.getElementsByClassName(sel.substring(1));\r\n }\r\n if (/^\\w+$/.test(sel)) {\r\n return context.getElementsByTagName(sel);\r\n }\r\n }\r\n /* do things the hard/slow way */\r\n return find(sel, context);\r\n};\r\n\r\nexports.selectors = selectors;\r\nexports.operators = operators;\r\nexports.combinators = combinators;\r\n\r\nexports.matches = function(el, sel) {\r\n var test = { sel: sel };\r\n do {\r\n test = compile(test.sel);\r\n if (test(el)) { return true; }\r\n } while (test.sel);\r\n return false;\r\n};\r\n","\"use strict\";\r\n\r\nvar Node = require('./Node');\r\nvar LinkedList = require('./LinkedList');\r\n\r\nvar createDocumentFragmentFromArguments = function(document, args) {\r\n var docFrag = document.createDocumentFragment();\r\n\r\n for (var i=0; i<args.length; i++) {\r\n var argItem = args[i];\r\n var isNode = argItem instanceof Node;\r\n docFrag.appendChild(isNode ? argItem :\r\n document.createTextNode(String(argItem)));\r\n }\r\n\r\n return docFrag;\r\n};\r\n\r\n// The ChildNode interface contains methods that are particular to `Node`\r\n// objects that can have a parent. It is implemented by `Element`,\r\n// `DocumentType`, and `CharacterData` objects.\r\nvar ChildNode = {\r\n\r\n // Inserts a set of Node or String objects in the children list of this\r\n // ChildNode's parent, just after this ChildNode. String objects are\r\n // inserted as the equivalent Text nodes.\r\n after: { value: function after() {\r\n var argArr = Array.prototype.slice.call(arguments);\r\n var parentNode = this.parentNode, nextSibling = this.nextSibling;\r\n if (parentNode === null) { return; }\r\n // Find \"viable next sibling\"; that is, next one not in argArr\r\n while (nextSibling && argArr.some(function(v) { return v===nextSibling; }))\r\n nextSibling = nextSibling.nextSibling;\r\n // ok, parent and sibling are saved away since this node could itself\r\n // appear in argArr and we're about to move argArr to a document fragment.\r\n var docFrag = createDocumentFragmentFromArguments(this.doc, argArr);\r\n\r\n parentNode.insertBefore(docFrag, nextSibling);\r\n }},\r\n\r\n // Inserts a set of Node or String objects in the children list of this\r\n // ChildNode's parent, just before this ChildNode. String objects are\r\n // inserted as the equivalent Text nodes.\r\n before: { value: function before() {\r\n var argArr = Array.prototype.slice.call(arguments);\r\n var parentNode = this.parentNode, prevSibling = this.previousSibling;\r\n if (parentNode === null) { return; }\r\n // Find \"viable prev sibling\"; that is, prev one not in argArr\r\n while (prevSibling && argArr.some(function(v) { return v===prevSibling; }))\r\n prevSibling = prevSibling.previousSibling;\r\n // ok, parent and sibling are saved away since this node could itself\r\n // appear in argArr and we're about to move argArr to a document fragment.\r\n var docFrag = createDocumentFragmentFromArguments(this.doc, argArr);\r\n\r\n var nextSibling =\r\n prevSibling ? prevSibling.nextSibling : parentNode.firstChild;\r\n parentNode.insertBefore(docFrag, nextSibling);\r\n }},\r\n\r\n // Remove this node from its parent\r\n remove: { value: function remove() {\r\n if (this.parentNode === null) return;\r\n\r\n // Send mutation events if necessary\r\n if (this.doc) {\r\n this.doc._preremoveNodeIterators(this);\r\n if (this.rooted) {\r\n this.doc.mutateRemove(this);\r\n }\r\n }\r\n\r\n // Remove this node from its parents array of children\r\n // and update the structure id for all ancestors\r\n this._remove();\r\n\r\n // Forget this node's parent\r\n this.parentNode = null;\r\n }},\r\n\r\n // Remove this node w/o uprooting or sending mutation events\r\n // (But do update the structure id for all ancestors)\r\n _remove: { value: function _remove() {\r\n var parent = this.parentNode;\r\n if (parent === null) return;\r\n if (parent._childNodes) {\r\n parent._childNodes.splice(this.index, 1);\r\n } else if (parent._firstChild === this) {\r\n if (this._nextSibling === this) {\r\n parent._firstChild = null;\r\n } else {\r\n parent._firstChild = this._nextSibling;\r\n }\r\n }\r\n LinkedList.remove(this);\r\n parent.modify();\r\n }},\r\n\r\n // Replace this node with the nodes or strings provided as arguments.\r\n replaceWith: { value: function replaceWith() {\r\n var argArr = Array.prototype.slice.call(arguments);\r\n var parentNode = this.parentNode, nextSibling = this.nextSibling;\r\n if (parentNode === null) { return; }\r\n // Find \"viable next sibling\"; that is, next one not in argArr\r\n while (nextSibling && argArr.some(function(v) { return v===nextSibling; }))\r\n nextSibling = nextSibling.nextSibling;\r\n // ok, parent and sibling are saved away since this node could itself\r\n // appear in argArr and we're about to move argArr to a document fragment.\r\n var docFrag = createDocumentFragmentFromArguments(this.doc, argArr);\r\n if (this.parentNode === parentNode) {\r\n parentNode.replaceChild(docFrag, this);\r\n } else {\r\n // `this` was inserted into docFrag\r\n parentNode.insertBefore(docFrag, nextSibling);\r\n }\r\n }},\r\n\r\n};\r\n\r\nmodule.exports = ChildNode;\r\n","\"use strict\";\r\nvar Node = require('./Node');\r\n\r\nvar NonDocumentTypeChildNode = {\r\n\r\n nextElementSibling: { get: function() {\r\n if (this.parentNode) {\r\n for (var kid = this.nextSibling; kid !== null; kid = kid.nextSibling) {\r\n if (kid.nodeType === Node.ELEMENT_NODE) return kid;\r\n }\r\n }\r\n return null;\r\n }},\r\n\r\n previousElementSibling: { get: function() {\r\n if (this.parentNode) {\r\n for (var kid = this.previousSibling; kid !== null; kid = kid.previousSibling) {\r\n if (kid.nodeType === Node.ELEMENT_NODE) return kid;\r\n }\r\n }\r\n return null;\r\n }}\r\n\r\n};\r\n\r\nmodule.exports = NonDocumentTypeChildNode;\r\n","\"use strict\";\r\nmodule.exports = NamedNodeMap;\r\n\r\nvar utils = require('./utils');\r\n\r\n/* This is a hacky implementation of NamedNodeMap, intended primarily to\r\n * satisfy clients (like dompurify and the web-platform-tests) which check\r\n * to ensure that Node#attributes instanceof NamedNodeMap. */\r\n\r\nfunction NamedNodeMap(element) {\r\n this.element = element;\r\n}\r\nObject.defineProperties(NamedNodeMap.prototype, {\r\n length: { get: utils.shouldOverride },\r\n item: { value: utils.shouldOverride },\r\n\r\n getNamedItem: { value: function getNamedItem(qualifiedName) {\r\n return this.element.getAttributeNode(qualifiedName);\r\n } },\r\n getNamedItemNS: { value: function getNamedItemNS(namespace, localName) {\r\n return this.element.getAttributeNodeNS(namespace, localName);\r\n } },\r\n setNamedItem: { value: utils.nyi },\r\n setNamedItemNS: { value: utils.nyi },\r\n removeNamedItem: { value: function removeNamedItem(qualifiedName) {\r\n var attr = this.element.getAttributeNode(qualifiedName);\r\n if (attr) {\r\n this.element.removeAttribute(qualifiedName);\r\n return attr;\r\n }\r\n utils.NotFoundError();\r\n } },\r\n removeNamedItemNS: { value: function removeNamedItemNS(ns, lname) {\r\n var attr = this.element.getAttributeNodeNS(ns, lname);\r\n if (attr) {\r\n this.element.removeAttributeNS(ns, lname);\r\n return attr;\r\n }\r\n utils.NotFoundError();\r\n } },\r\n});\r\n","\"use strict\";\r\nmodule.exports = Element;\r\n\r\nvar xml = require('./xmlnames');\r\nvar utils = require('./utils');\r\nvar NAMESPACE = utils.NAMESPACE;\r\nvar attributes = require('./attributes');\r\nvar Node = require('./Node');\r\nvar NodeList = require('./NodeList');\r\nvar NodeUtils = require('./NodeUtils');\r\nvar FilteredElementList = require('./FilteredElementList');\r\nvar DOMException = require('./DOMException');\r\nvar DOMTokenList = require('./DOMTokenList');\r\nvar select = require('./select');\r\nvar ContainerNode = require('./ContainerNode');\r\nvar ChildNode = require('./ChildNode');\r\nvar NonDocumentTypeChildNode = require('./NonDocumentTypeChildNode');\r\nvar NamedNodeMap = require('./NamedNodeMap');\r\n\r\nvar uppercaseCache = Object.create(null);\r\n\r\nfunction Element(doc, localName, namespaceURI, prefix) {\r\n ContainerNode.call(this);\r\n this.nodeType = Node.ELEMENT_NODE;\r\n this.ownerDocument = doc;\r\n this.localName = localName;\r\n this.namespaceURI = namespaceURI;\r\n this.prefix = prefix;\r\n this._tagName = undefined;\r\n\r\n // These properties maintain the set of attributes\r\n this._attrsByQName = Object.create(null); // The qname->Attr map\r\n this._attrsByLName = Object.create(null); // The ns|lname->Attr map\r\n this._attrKeys = []; // attr index -> ns|lname\r\n}\r\n\r\nfunction recursiveGetText(node, a) {\r\n if (node.nodeType === Node.TEXT_NODE) {\r\n a.push(node._data);\r\n }\r\n else {\r\n for(var i = 0, n = node.childNodes.length; i < n; i++)\r\n recursiveGetText(node.childNodes[i], a);\r\n }\r\n}\r\n\r\nElement.prototype = Object.create(ContainerNode.prototype, {\r\n isHTML: { get: function isHTML() {\r\n return this.namespaceURI === NAMESPACE.HTML && this.ownerDocument.isHTML;\r\n }},\r\n tagName: { get: function tagName() {\r\n if (this._tagName === undefined) {\r\n var tn;\r\n if (this.prefix === null) {\r\n tn = this.localName;\r\n } else {\r\n tn = this.prefix + ':' + this.localName;\r\n }\r\n if (this.isHTML) {\r\n var up = uppercaseCache[tn];\r\n if (!up) {\r\n // Converting to uppercase can be slow, so cache the conversion.\r\n uppercaseCache[tn] = up = utils.toASCIIUpperCase(tn);\r\n }\r\n tn = up;\r\n }\r\n this._tagName = tn;\r\n }\r\n return this._tagName;\r\n }},\r\n nodeName: { get: function() { return this.tagName; }},\r\n nodeValue: {\r\n get: function() {\r\n return null;\r\n },\r\n set: function() {}\r\n },\r\n textContent: {\r\n get: function() {\r\n var strings = [];\r\n recursiveGetText(this, strings);\r\n return strings.join('');\r\n },\r\n set: function(newtext) {\r\n this.removeChildren();\r\n if (newtext !== null && newtext !== undefined && newtext !== '') {\r\n this._appendChild(this.ownerDocument.createTextNode(newtext));\r\n }\r\n }\r\n },\r\n innerText: {\r\n get: function() {\r\n var strings = [];\r\n recursiveGetText(this, strings);\r\n // Strip and collapse whitespace\r\n // This doesn't 100% match the browser behavior,\r\n // but should cover most of the cases. This is also similar to\r\n // how Angular's renderer used to work: the `textContent` and `innerText`\r\n // were almost equivalent from the renderer perspective.\r\n // See: https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent#differences_from_innertext\r\n return strings.join('').replace(/[ \\t\\n\\f\\r]+/g, ' ').trim();\r\n },\r\n set: function(newtext) {\r\n this.removeChildren();\r\n if (newtext !== null && newtext !== undefined && newtext !== '') {\r\n this._appendChild(this.ownerDocument.createTextNode(newtext));\r\n }\r\n }\r\n },\r\n innerHTML: {\r\n get: function() {\r\n return this.serialize();\r\n },\r\n set: utils.nyi\r\n },\r\n outerHTML: {\r\n get: function() {\r\n // \"the attribute must return the result of running the HTML fragment\r\n // serialization algorithm on a fictional node whose only child is\r\n // the context object\"\r\n //\r\n // The serialization logic is intentionally implemented in a separate\r\n // `NodeUtils` helper instead of the more obvious choice of a private\r\n // `_serializeOne()` method on the `Node.prototype` in order to avoid\r\n // the megamorphic `this._serializeOne` property access, which reduces\r\n // performance unnecessarily. If you need specialized behavior for a\r\n // certain subclass, you'll need to implement that in `NodeUtils`.\r\n // See https://github.com/fgnass/domino/pull/142 for more information.\r\n return NodeUtils.serializeOne(this, { nodeType: 0 });\r\n },\r\n set: function(v) {\r\n var document = this.ownerDocument;\r\n var parent = this.parentNode;\r\n if (parent === null) { return; }\r\n if (parent.nodeType === Node.DOCUMENT_NODE) {\r\n utils.NoModificationAllowedError();\r\n }\r\n if (parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\r\n parent = parent.ownerDocument.createElement(\"body\");\r\n }\r\n var parser = document.implementation.mozHTMLParser(\r\n document._address,\r\n parent\r\n );\r\n parser.parse(v===null?'':String(v), true);\r\n this.replaceWith(parser._asDocumentFragment());\r\n },\r\n },\r\n\r\n _insertAdjacent: { value: function _insertAdjacent(position, node) {\r\n var first = false;\r\n switch(position) {\r\n case 'beforebegin':\r\n first = true;\r\n /* falls through */\r\n case 'afterend':\r\n var parent = this.parentNode;\r\n if (parent === null) { return null; }\r\n return parent.insertBefore(node, first ? this : this.nextSibling);\r\n case 'afterbegin':\r\n first = true;\r\n /* falls through */\r\n case 'beforeend':\r\n return this.insertBefore(node, first ? this.firstChild : null);\r\n default:\r\n return utils.SyntaxError();\r\n }\r\n }},\r\n\r\n insertAdjacentElement: { value: function insertAdjacentElement(position, element) {\r\n if (element.nodeType !== Node.ELEMENT_NODE) {\r\n throw new TypeError('not an element');\r\n }\r\n position = utils.toASCIILowerCase(String(position));\r\n return this._insertAdjacent(position, element);\r\n }},\r\n\r\n insertAdjacentText: { value: function insertAdjacentText(position, data) {\r\n var textNode = this.ownerDocument.createTextNode(data);\r\n position = utils.toASCIILowerCase(String(position));\r\n this._insertAdjacent(position, textNode);\r\n // \"This method returns nothing because it existed before we had a chance\r\n // to design it.\"\r\n }},\r\n\r\n insertAdjacentHTML: { value: function insertAdjacentHTML(position, text) {\r\n position = utils.toASCIILowerCase(String(position));\r\n text = String(text);\r\n var context;\r\n switch(position) {\r\n case 'beforebegin':\r\n case 'afterend':\r\n context = this.parentNode;\r\n if (context === null || context.nodeType === Node.DOCUMENT_NODE) {\r\n utils.NoModificationAllowedError();\r\n }\r\n break;\r\n case 'afterbegin':\r\n case 'beforeend':\r\n context = this;\r\n break;\r\n default:\r\n utils.SyntaxError();\r\n }\r\n if ( (!(context instanceof Element)) || (\r\n context.ownerDocument.isHTML &&\r\n context.localName === 'html' &&\r\n context.namespaceURI === NAMESPACE.HTML\r\n ) ) {\r\n context = context.ownerDocument.createElementNS(NAMESPACE.HTML, 'body');\r\n }\r\n var parser = this.ownerDocument.implementation.mozHTMLParser(\r\n this.ownerDocument._address, context\r\n );\r\n parser.parse(text, true);\r\n this._insertAdjacent(position, parser._asDocumentFragment());\r\n }},\r\n\r\n children: { get: function() {\r\n if (!this._children) {\r\n this._children = new ChildrenCollection(this);\r\n }\r\n return this._children;\r\n }},\r\n\r\n attributes: { get: function() {\r\n if (!this._attributes) {\r\n this._attributes = new AttributesArray(this);\r\n }\r\n return this._attributes;\r\n }},\r\n\r\n\r\n firstElementChild: { get: function() {\r\n for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\r\n if (kid.nodeType === Node.ELEMENT_NODE) return kid;\r\n }\r\n return null;\r\n }},\r\n\r\n lastElementChild: { get: function() {\r\n for (var kid = this.lastChild; kid !== null; kid = kid.previousSibling) {\r\n if (kid.nodeType === Node.ELEMENT_NODE) return kid;\r\n }\r\n return null;\r\n }},\r\n\r\n childElementCount: { get: function() {\r\n return this.children.length;\r\n }},\r\n\r\n\r\n // Return the next element, in source order, after this one or\r\n // null if there are no more. If root element is specified,\r\n // then don't traverse beyond its subtree.\r\n //\r\n // This is not a DOM method, but is convenient for\r\n // lazy traversals of the tree.\r\n nextElement: { value: function(root) {\r\n if (!root) root = this.ownerDocument.documentElement;\r\n var next = this.firstElementChild;\r\n if (!next) {\r\n // don't use sibling if we're at root\r\n if (this===root) return null;\r\n next = this.nextElementSibling;\r\n }\r\n if (next) return next;\r\n\r\n // If we can't go down or across, then we have to go up\r\n // and across to the parent sibling or another ancestor's\r\n // sibling. Be careful, though: if we reach the root\r\n // element, or if we reach the documentElement, then\r\n // the traversal ends.\r\n for(var parent = this.parentElement;\r\n parent && parent !== root;\r\n parent = parent.parentElement) {\r\n\r\n next = parent.nextElementSibling;\r\n if (next) return next;\r\n }\r\n\r\n return null;\r\n }},\r\n\r\n // XXX:\r\n // Tests are currently failing for this function.\r\n // Awaiting resolution of:\r\n // http://lists.w3.org/Archives/Public/www-dom/2011JulSep/0016.html\r\n getElementsByTagName: { value: function getElementsByTagName(lname) {\r\n var filter;\r\n if (!lname) return new NodeList();\r\n if (lname === '*')\r\n filter = function() { return true; };\r\n else if (this.isHTML)\r\n filter = htmlLocalNameElementFilter(lname);\r\n else\r\n filter = localNameElementFilter(lname);\r\n\r\n return new FilteredElementList(this, filter);\r\n }},\r\n\r\n getElementsByTagNameNS: { value: function getElementsByTagNameNS(ns, lname){\r\n var filter;\r\n if (ns === '*' && lname === '*')\r\n filter = function() { return true; };\r\n else if (ns === '*')\r\n filter = localNameElementFilter(lname);\r\n else if (lname === '*')\r\n filter = namespaceElementFilter(ns);\r\n else\r\n filter = namespaceLocalNameElementFilter(ns, lname);\r\n\r\n return new FilteredElementList(this, filter);\r\n }},\r\n\r\n getElementsByClassName: { value: function getElementsByClassName(names){\r\n names = String(names).trim();\r\n if (names === '') {\r\n var result = new NodeList(); // Empty node list\r\n return result;\r\n }\r\n names = names.split(/[ \\t\\r\\n\\f]+/); // Split on ASCII whitespace\r\n return new FilteredElementList(this, classNamesElementFilter(names));\r\n }},\r\n\r\n getElementsByName: { value: function getElementsByName(name) {\r\n return new FilteredElementList(this, elementNameFilter(String(name)));\r\n }},\r\n\r\n // Utility methods used by the public API methods above\r\n clone: { value: function clone() {\r\n var e;\r\n\r\n // XXX:\r\n // Modify this to use the constructor directly or\r\n // avoid error checking in some other way. In case we try\r\n // to clone an invalid node that the parser inserted.\r\n //\r\n if (this.namespaceURI !== NAMESPACE.HTML || this.prefix || !this.ownerDocument.isHTML) {\r\n e = this.ownerDocument.createElementNS(\r\n this.namespaceURI, (this.prefix !== null) ?\r\n (this.prefix + ':' + this.localName) : this.localName\r\n );\r\n } else {\r\n e = this.ownerDocument.createElement(this.localName);\r\n }\r\n\r\n for(var i = 0, n = this._attrKeys.length; i < n; i++) {\r\n var lname = this._attrKeys[i];\r\n var a = this._attrsByLName[lname];\r\n var b = a.cloneNode();\r\n b._setOwnerElement(e);\r\n e._attrsByLName[lname] = b;\r\n e._addQName(b);\r\n }\r\n e._attrKeys = this._attrKeys.concat();\r\n\r\n return e;\r\n }},\r\n\r\n isEqual: { value: function isEqual(that) {\r\n if (this.localName !== that.localName ||\r\n this.namespaceURI !== that.namespaceURI ||\r\n this.prefix !== that.prefix ||\r\n this._numattrs !== that._numattrs)\r\n return false;\r\n\r\n // Compare the sets of attributes, ignoring order\r\n // and ignoring attribute prefixes.\r\n for(var i = 0, n = this._numattrs; i < n; i++) {\r\n var a = this._attr(i);\r\n if (!that.hasAttributeNS(a.namespaceURI, a.localName))\r\n return false;\r\n if (that.getAttributeNS(a.namespaceURI,a.localName) !== a.value)\r\n return false;\r\n }\r\n\r\n return true;\r\n }},\r\n\r\n // This is the 'locate a namespace prefix' algorithm from the\r\n // DOM specification. It is used by Node.lookupPrefix()\r\n // (Be sure to compare DOM3 and DOM4 versions of spec.)\r\n _lookupNamespacePrefix: { value: function _lookupNamespacePrefix(ns, originalElement) {\r\n if (\r\n this.namespaceURI &&\r\n this.namespaceURI === ns &&\r\n this.prefix !== null &&\r\n originalElement.lookupNamespaceURI(this.prefix) === ns\r\n ) {\r\n return this.prefix;\r\n }\r\n\r\n for(var i = 0, n = this._numattrs; i < n; i++) {\r\n var a = this._attr(i);\r\n if (\r\n a.prefix === 'xmlns' &&\r\n a.value === ns &&\r\n originalElement.lookupNamespaceURI(a.localName) === ns\r\n ) {\r\n return a.localName;\r\n }\r\n }\r\n\r\n var parent = this.parentElement;\r\n return parent ? parent._lookupNamespacePrefix(ns, originalElement) : null;\r\n }},\r\n\r\n // This is the 'locate a namespace' algorithm for Element nodes\r\n // from the DOM Core spec. It is used by Node#lookupNamespaceURI()\r\n lookupNamespaceURI: { value: function lookupNamespaceURI(prefix) {\r\n if (prefix === '' || prefix === undefined) { prefix = null; }\r\n if (this.namespaceURI !== null && this.prefix === prefix)\r\n return this.namespaceURI;\r\n\r\n for(var i = 0, n = this._numattrs; i < n; i++) {\r\n var a = this._attr(i);\r\n if (a.namespaceURI === NAMESPACE.XMLNS) {\r\n if (\r\n (a.prefix === 'xmlns' && a.localName === prefix) ||\r\n (prefix === null && a.prefix === null && a.localName === 'xmlns')\r\n ) {\r\n return a.value || null;\r\n }\r\n }\r\n }\r\n\r\n var parent = this.parentElement;\r\n return parent ? parent.lookupNamespaceURI(prefix) : null;\r\n }},\r\n\r\n //\r\n // Attribute handling methods and utilities\r\n //\r\n\r\n /*\r\n * Attributes in the DOM are tricky:\r\n *\r\n * - there are the 8 basic get/set/has/removeAttribute{NS} methods\r\n *\r\n * - but many HTML attributes are also 'reflected' through IDL\r\n * attributes which means that they can be queried and set through\r\n * regular properties of the element. There is just one attribute\r\n * value, but two ways to get and set it.\r\n *\r\n * - Different HTML element types have different sets of reflected\r\n attributes.\r\n *\r\n * - attributes can also be queried and set through the .attributes\r\n * property of an element. This property behaves like an array of\r\n * Attr objects. The value property of each Attr is writeable, so\r\n * this is a third way to read and write attributes.\r\n *\r\n * - for efficiency, we really want to store attributes in some kind\r\n * of name->attr map. But the attributes[] array is an array, not a\r\n * map, which is kind of unnatural.\r\n *\r\n * - When using namespaces and prefixes, and mixing the NS methods\r\n * with the non-NS methods, it is apparently actually possible for\r\n * an attributes[] array to have more than one attribute with the\r\n * same qualified name. And certain methods must operate on only\r\n * the first attribute with such a name. So for these methods, an\r\n * inefficient array-like data structure would be easier to\r\n * implement.\r\n *\r\n * - The attributes[] array is live, not a snapshot, so changes to the\r\n * attributes must be immediately visible through existing arrays.\r\n *\r\n * - When attributes are queried and set through IDL properties\r\n * (instead of the get/setAttributes() method or the attributes[]\r\n * array) they may be subject to type conversions, URL\r\n * normalization, etc., so some extra processing is required in that\r\n * case.\r\n *\r\n * - But access through IDL properties is probably the most common\r\n * case, so we'd like that to be as fast as possible.\r\n *\r\n * - We can't just store attribute values in their parsed idl form,\r\n * because setAttribute() has to return whatever string is passed to\r\n * getAttribute even if it is not a legal, parseable value. So\r\n * attribute values must be stored in unparsed string form.\r\n *\r\n * - We need to be able to send change notifications or mutation\r\n * events of some sort to the renderer whenever an attribute value\r\n * changes, regardless of the way in which it changes.\r\n *\r\n * - Some attributes, such as id and class affect other parts of the\r\n * DOM API, like getElementById and getElementsByClassName and so\r\n * for efficiency, we need to specially track changes to these\r\n * special attributes.\r\n *\r\n * - Some attributes like class have different names (className) when\r\n * reflected.\r\n *\r\n * - Attributes whose names begin with the string 'data-' are treated\r\n specially.\r\n *\r\n * - Reflected attributes that have a boolean type in IDL have special\r\n * behavior: setting them to false (in IDL) is the same as removing\r\n * them with removeAttribute()\r\n *\r\n * - numeric attributes (like HTMLElement.tabIndex) can have default\r\n * values that must be returned by the idl getter even if the\r\n * content attribute does not exist. (The default tabIndex value\r\n * actually varies based on the type of the element, so that is a\r\n * tricky one).\r\n *\r\n * See\r\n * http://www.whatwg.org/specs/web-apps/current-work/multipage/urls.html#reflect\r\n * for rules on how attributes are reflected.\r\n *\r\n */\r\n\r\n getAttribute: { value: function getAttribute(qname) {\r\n var attr = this.getAttributeNode(qname);\r\n return attr ? attr.value : null;\r\n }},\r\n\r\n getAttributeNS: { value: function getAttributeNS(ns, lname) {\r\n var attr = this.getAttributeNodeNS(ns, lname);\r\n return attr ? attr.value : null;\r\n }},\r\n\r\n getAttributeNode: { value: function getAttributeNode(qname) {\r\n qname = String(qname);\r\n if (/[A-Z]/.test(qname) && this.isHTML)\r\n qname = utils.toASCIILowerCase(qname);\r\n var attr = this._attrsByQName[qname];\r\n if (!attr) return null;\r\n\r\n if (Array.isArray(attr)) // If there is more than one\r\n attr = attr[0]; // use the first\r\n\r\n return attr;\r\n }},\r\n\r\n getAttributeNodeNS: { value: function getAttributeNodeNS(ns, lname) {\r\n ns = (ns === undefined || ns === null) ? '' : String(ns);\r\n lname = String(lname);\r\n var attr = this._attrsByLName[ns + '|' + lname];\r\n return attr ? attr : null;\r\n }},\r\n\r\n hasAttribute: { value: function hasAttribute(qname) {\r\n qname = String(qname);\r\n if (/[A-Z]/.test(qname) && this.isHTML)\r\n qname = utils.toASCIILowerCase(qname);\r\n return this._attrsByQName[qname] !== undefined;\r\n }},\r\n\r\n hasAttributeNS: { value: function hasAttributeNS(ns, lname) {\r\n ns = (ns === undefined || ns === null) ? '' : String(ns);\r\n lname = String(lname);\r\n var key = ns + '|' + lname;\r\n return this._attrsByLName[key] !== undefined;\r\n }},\r\n\r\n hasAttributes: { value: function hasAttributes() {\r\n return this._numattrs > 0;\r\n }},\r\n\r\n toggleAttribute: { value: function toggleAttribute(qname, force) {\r\n qname = String(qname);\r\n if (!xml.isValidName(qname)) utils.InvalidCharacterError();\r\n if (/[A-Z]/.test(qname) && this.isHTML)\r\n qname = utils.toASCIILowerCase(qname);\r\n var a = this._attrsByQName[qname];\r\n if (a === undefined) {\r\n if (force === undefined || force === true) {\r\n this._setAttribute(qname, '');\r\n return true;\r\n }\r\n return false;\r\n } else {\r\n if (force === undefined || force === false) {\r\n this.removeAttribute(qname);\r\n return false;\r\n }\r\n return true;\r\n }\r\n }},\r\n\r\n // Set the attribute without error checking. The parser uses this.\r\n _setAttribute: { value: function _setAttribute(qname, value) {\r\n // XXX: the spec says that this next search should be done\r\n // on the local name, but I think that is an error.\r\n // email pending on www-dom about it.\r\n var attr = this._attrsByQName[qname];\r\n var isnew;\r\n if (!attr) {\r\n attr = this._newattr(qname);\r\n isnew = true;\r\n }\r\n else {\r\n if (Array.isArray(attr)) attr = attr[0];\r\n }\r\n\r\n // Now set the attribute value on the new or existing Attr object.\r\n // The Attr.value setter method handles mutation events, etc.\r\n attr.value = value;\r\n if (this._attributes) this._attributes[qname] = attr;\r\n if (isnew && this._newattrhook) this._newattrhook(qname, value);\r\n }},\r\n\r\n // Check for errors, and then set the attribute\r\n setAttribute: { value: function setAttribute(qname, value) {\r\n qname = String(qname);\r\n if (!xml.isValidName(qname)) utils.InvalidCharacterError();\r\n if (/[A-Z]/.test(qname) && this.isHTML)\r\n qname = utils.toASCIILowerCase(qname);\r\n this._setAttribute(qname, String(value));\r\n }},\r\n\r\n\r\n // The version with no error checking used by the parser\r\n _setAttributeNS: { value: function _setAttributeNS(ns, qname, value) {\r\n var pos = qname.indexOf(':'), prefix, lname;\r\n if (pos < 0) {\r\n prefix = null;\r\n lname = qname;\r\n }\r\n else {\r\n prefix = qname.substring(0, pos);\r\n lname = qname.substring(pos+1);\r\n }\r\n\r\n if (ns === '' || ns === undefined) ns = null;\r\n var key = (ns === null ? '' : ns) + '|' + lname;\r\n\r\n var attr = this._attrsByLName[key];\r\n var isnew;\r\n if (!attr) {\r\n attr = new Attr(this, lname, prefix, ns);\r\n isnew = true;\r\n this._attrsByLName[key] = attr;\r\n if (this._attributes) {\r\n this._attributes[this._attrKeys.length] = attr;\r\n }\r\n this._attrKeys.push(key);\r\n\r\n // We also have to make the attr searchable by qname.\r\n // But we have to be careful because there may already\r\n // be an attr with this qname.\r\n this._addQName(attr);\r\n }\r\n else if (false /* changed in DOM 4 */) {\r\n // Calling setAttributeNS() can change the prefix of an\r\n // existing attribute in DOM 2/3.\r\n if (attr.prefix !== prefix) {\r\n // Unbind the old qname\r\n this._removeQName(attr);\r\n // Update the prefix\r\n attr.prefix = prefix;\r\n // Bind the new qname\r\n this._addQName(attr);\r\n }\r\n\r\n }\r\n attr.value = value; // Automatically sends mutation event\r\n if (isnew && this._newattrhook) this._newattrhook(qname, value);\r\n }},\r\n\r\n // Do error checking then call _setAttributeNS\r\n setAttributeNS: { value: function setAttributeNS(ns, qname, value) {\r\n // Convert parameter types according to WebIDL\r\n ns = (ns === null || ns === undefined || ns === '') ? null : String(ns);\r\n qname = String(qname);\r\n if (!xml.isValidQName(qname)) utils.InvalidCharacterError();\r\n\r\n var pos = qname.indexOf(':');\r\n var prefix = (pos < 0) ? null : qname.substring(0, pos);\r\n\r\n if ((prefix !== null && ns === null) ||\r\n (prefix === 'xml' && ns !== NAMESPACE.XML) ||\r\n ((qname === 'xmlns' || prefix === 'xmlns') &&\r\n (ns !== NAMESPACE.XMLNS)) ||\r\n (ns === NAMESPACE.XMLNS &&\r\n !(qname === 'xmlns' || prefix === 'xmlns')))\r\n utils.NamespaceError();\r\n\r\n this._setAttributeNS(ns, qname, String(value));\r\n }},\r\n\r\n setAttributeNode: { value: function setAttributeNode(attr) {\r\n if (attr.ownerElement !== null && attr.ownerElement !== this) {\r\n throw new DOMException(DOMException.INUSE_ATTRIBUTE_ERR);\r\n }\r\n var result = null;\r\n var oldAttrs = this._attrsByQName[attr.name];\r\n if (oldAttrs) {\r\n if (!Array.isArray(oldAttrs)) { oldAttrs = [ oldAttrs ]; }\r\n if (oldAttrs.some(function(a) { return a===attr; })) {\r\n return attr;\r\n } else if (attr.ownerElement !== null) {\r\n throw new DOMException(DOMException.INUSE_ATTRIBUTE_ERR);\r\n }\r\n oldAttrs.forEach(function(a) { this.removeAttributeNode(a); }, this);\r\n result = oldAttrs[0];\r\n }\r\n this.setAttributeNodeNS(attr);\r\n return result;\r\n }},\r\n\r\n setAttributeNodeNS: { value: function setAttributeNodeNS(attr) {\r\n if (attr.ownerElement !== null) {\r\n throw new DOMException(DOMException.INUSE_ATTRIBUTE_ERR);\r\n }\r\n var ns = attr.namespaceURI;\r\n var key = (ns === null ? '' : ns) + '|' + attr.localName;\r\n var oldAttr = this._attrsByLName[key];\r\n if (oldAttr) { this.removeAttributeNode(oldAttr); }\r\n attr._setOwnerElement(this);\r\n this._attrsByLName[key] = attr;\r\n if (this._attributes) {\r\n this._attributes[this._attrKeys.length] = attr;\r\n }\r\n this._attrKeys.push(key);\r\n this._addQName(attr);\r\n if (this._newattrhook) this._newattrhook(attr.name, attr.value);\r\n return oldAttr || null;\r\n }},\r\n\r\n removeAttribute: { value: function removeAttribute(qname) {\r\n qname = String(qname);\r\n if (/[A-Z]/.test(qname) && this.isHTML)\r\n qname = utils.toASCIILowerCase(qname);\r\n\r\n var attr = this._attrsByQName[qname];\r\n if (!attr) return;\r\n\r\n // If there is more than one match for this qname\r\n // so don't delete the qname mapping, just remove the first\r\n // element from it.\r\n if (Array.isArray(attr)) {\r\n if (attr.length > 2) {\r\n attr = attr.shift(); // remove it from the array\r\n }\r\n else {\r\n this._attrsByQName[qname] = attr[1];\r\n attr = attr[0];\r\n }\r\n }\r\n else {\r\n // only a single match, so remove the qname mapping\r\n this._attrsByQName[qname] = undefined;\r\n }\r\n\r\n var ns = attr.namespaceURI;\r\n // Now attr is the removed attribute. Figure out its\r\n // ns+lname key and remove it from the other mapping as well.\r\n var key = (ns === null ? '' : ns) + '|' + attr.localName;\r\n this._attrsByLName[key] = undefined;\r\n\r\n var i = this._attrKeys.indexOf(key);\r\n if (this._attributes) {\r\n Array.prototype.splice.call(this._attributes, i, 1);\r\n this._attributes[qname] = undefined;\r\n }\r\n this._attrKeys.splice(i, 1);\r\n\r\n // Onchange handler for the attribute\r\n var onchange = attr.onchange;\r\n attr._setOwnerElement(null);\r\n if (onchange) {\r\n onchange.call(attr, this, attr.localName, attr.value, null);\r\n }\r\n // Mutation event\r\n if (this.rooted) this.ownerDocument.mutateRemoveAttr(attr);\r\n }},\r\n\r\n removeAttributeNS: { value: function removeAttributeNS(ns, lname) {\r\n ns = (ns === undefined || ns === null) ? '' : String(ns);\r\n lname = String(lname);\r\n var key = ns + '|' + lname;\r\n var attr = this._attrsByLName[key];\r\n if (!attr) return;\r\n\r\n this._attrsByLName[key] = undefined;\r\n\r\n var i = this._attrKeys.indexOf(key);\r\n if (this._attributes) {\r\n Array.prototype.splice.call(this._attributes, i, 1);\r\n }\r\n this._attrKeys.splice(i, 1);\r\n\r\n // Now find the same Attr object in the qname mapping and remove it\r\n // But be careful because there may be more than one match.\r\n this._removeQName(attr);\r\n\r\n // Onchange handler for the attribute\r\n var onchange = attr.onchange;\r\n attr._setOwnerElement(null);\r\n if (onchange) {\r\n onchange.call(attr, this, attr.localName, attr.value, null);\r\n }\r\n // Mutation event\r\n if (this.rooted) this.ownerDocument.mutateRemoveAttr(attr);\r\n }},\r\n\r\n removeAttributeNode: { value: function removeAttributeNode(attr) {\r\n var ns = attr.namespaceURI;\r\n var key = (ns === null ? '' : ns) + '|' + attr.localName;\r\n if (this._attrsByLName[key] !== attr) {\r\n utils.NotFoundError();\r\n }\r\n this.removeAttributeNS(ns, attr.localName);\r\n return attr;\r\n }},\r\n\r\n getAttributeNames: { value: function getAttributeNames() {\r\n var elt = this;\r\n return this._attrKeys.map(function(key) {\r\n return elt._attrsByLName[key].name;\r\n });\r\n }},\r\n\r\n // This 'raw' version of getAttribute is used by the getter functions\r\n // of reflected attributes. It skips some error checking and\r\n // namespace steps\r\n _getattr: { value: function _getattr(qname) {\r\n // Assume that qname is already lowercased, so don't do it here.\r\n // Also don't check whether attr is an array: a qname with no\r\n // prefix will never have two matching Attr objects (because\r\n // setAttributeNS doesn't allow a non-null namespace with a\r\n // null prefix.\r\n var attr = this._attrsByQName[qname];\r\n return attr ? attr.value : null;\r\n }},\r\n\r\n // The raw version of setAttribute for reflected idl attributes.\r\n _setattr: { value: function _setattr(qname, value) {\r\n var attr = this._attrsByQName[qname];\r\n var isnew;\r\n if (!attr) {\r\n attr = this._newattr(qname);\r\n isnew = true;\r\n }\r\n attr.value = String(value);\r\n if (this._attributes) this._attributes[qname] = attr;\r\n if (isnew && this._newattrhook) this._newattrhook(qname, value);\r\n }},\r\n\r\n // Create a new Attr object, insert it, and return it.\r\n // Used by setAttribute() and by set()\r\n _newattr: { value: function _newattr(qname) {\r\n var attr = new Attr(this, qname, null, null);\r\n var key = '|' + qname;\r\n this._attrsByQName[qname] = attr;\r\n this._attrsByLName[key] = attr;\r\n if (this._attributes) {\r\n this._attributes[this._attrKeys.length] = attr;\r\n }\r\n this._attrKeys.push(key);\r\n return attr;\r\n }},\r\n\r\n // Add a qname->Attr mapping to the _attrsByQName object, taking into\r\n // account that there may be more than one attr object with the\r\n // same qname\r\n _addQName: { value: function(attr) {\r\n var qname = attr.name;\r\n var existing = this._attrsByQName[qname];\r\n if (!existing) {\r\n this._attrsByQName[qname] = attr;\r\n }\r\n else if (Array.isArray(existing)) {\r\n existing.push(attr);\r\n }\r\n else {\r\n this._attrsByQName[qname] = [existing, attr];\r\n }\r\n if (this._attributes) this._attributes[qname] = attr;\r\n }},\r\n\r\n // Remove a qname->Attr mapping to the _attrsByQName object, taking into\r\n // account that there may be more than one attr object with the\r\n // same qname\r\n _removeQName: { value: function(attr) {\r\n var qname = attr.name;\r\n var target = this._attrsByQName[qname];\r\n\r\n if (Array.isArray(target)) {\r\n var idx = target.indexOf(attr);\r\n utils.assert(idx !== -1); // It must be here somewhere\r\n if (target.length === 2) {\r\n this._attrsByQName[qname] = target[1-idx];\r\n if (this._attributes) {\r\n this._attributes[qname] = this._attrsByQName[qname];\r\n }\r\n } else {\r\n target.splice(idx, 1);\r\n if (this._attributes && this._attributes[qname] === attr) {\r\n this._attributes[qname] = target[0];\r\n }\r\n }\r\n }\r\n else {\r\n utils.assert(target === attr); // If only one, it must match\r\n this._attrsByQName[qname] = undefined;\r\n if (this._attributes) {\r\n this._attributes[qname] = undefined;\r\n }\r\n }\r\n }},\r\n\r\n // Return the number of attributes\r\n _numattrs: { get: function() { return this._attrKeys.length; }},\r\n // Return the nth Attr object\r\n _attr: { value: function(n) {\r\n return this._attrsByLName[this._attrKeys[n]];\r\n }},\r\n\r\n // Define getters and setters for an 'id' property that reflects\r\n // the content attribute 'id'.\r\n id: attributes.property({name: 'id'}),\r\n\r\n // Define getters and setters for a 'className' property that reflects\r\n // the content attribute 'class'.\r\n className: attributes.property({name: 'class'}),\r\n\r\n classList: { get: function() {\r\n var self = this;\r\n if (this._classList) {\r\n return this._classList;\r\n }\r\n var dtlist = new DOMTokenList(\r\n function() {\r\n return self.className || \"\";\r\n },\r\n function(v) {\r\n self.className = v;\r\n }\r\n );\r\n this._classList = dtlist;\r\n return dtlist;\r\n }, set: function(v) { this.className = v; }},\r\n\r\n matches: { value: function(selector) {\r\n return select.matches(this, selector);\r\n }},\r\n\r\n closest: { value: function(selector) {\r\n var el = this;\r\n\tdo {\r\n\t if (el.matches && el.matches(selector)) { return el; }\r\n\t el = el.parentElement || el.parentNode;\r\n\t} while (el !== null && el.nodeType === Node.ELEMENT_NODE);\r\n\treturn null;\r\n }},\r\n\r\n querySelector: { value: function(selector) {\r\n return select(selector, this)[0];\r\n }},\r\n\r\n querySelectorAll: { value: function(selector) {\r\n var nodes = select(selector, this);\r\n return nodes.item ? nodes : new NodeList(nodes);\r\n }}\r\n\r\n});\r\n\r\nObject.defineProperties(Element.prototype, ChildNode);\r\nObject.defineProperties(Element.prototype, NonDocumentTypeChildNode);\r\n\r\n// Register special handling for the id attribute\r\nattributes.registerChangeHandler(Element, 'id',\r\n function(element, lname, oldval, newval) {\r\n if (element.rooted) {\r\n if (oldval) {\r\n element.ownerDocument.delId(oldval, element);\r\n }\r\n if (newval) {\r\n element.ownerDocument.addId(newval, element);\r\n }\r\n }\r\n }\r\n);\r\nattributes.registerChangeHandler(Element, 'class',\r\n function(element, lname, oldval, newval) {\r\n if (element._classList) { element._classList._update(); }\r\n }\r\n);\r\n\r\n// The Attr class represents a single attribute. The values in\r\n// _attrsByQName and _attrsByLName are instances of this class.\r\nfunction Attr(elt, lname, prefix, namespace, value) {\r\n // localName and namespace are constant for any attr object.\r\n // But value may change. And so can prefix, and so, therefore can name.\r\n this.localName = lname;\r\n this.prefix = (prefix===null || prefix==='') ? null : ('' + prefix);\r\n this.namespaceURI = (namespace===null || namespace==='') ? null : ('' + namespace);\r\n this.data = value;\r\n // Set ownerElement last to ensure it is hooked up to onchange handler\r\n this._setOwnerElement(elt);\r\n}\r\n\r\n// In DOM 3 Attr was supposed to extend Node; in DOM 4 that was abandoned.\r\nAttr.prototype = Object.create(Object.prototype, {\r\n ownerElement: {\r\n get: function() { return this._ownerElement; },\r\n },\r\n _setOwnerElement: { value: function _setOwnerElement(elt) {\r\n this._ownerElement = elt;\r\n if (this.prefix === null && this.namespaceURI === null && elt) {\r\n this.onchange = elt._attributeChangeHandlers[this.localName];\r\n } else {\r\n this.onchange = null;\r\n }\r\n }},\r\n\r\n name: { get: function() {\r\n return this.prefix ? this.prefix + ':' + this.localName : this.localName;\r\n }},\r\n\r\n specified: { get: function() {\r\n // Deprecated\r\n return true;\r\n }},\r\n\r\n value: {\r\n get: function() {\r\n return this.data;\r\n },\r\n set: function(value) {\r\n var oldval = this.data;\r\n value = (value === undefined) ? '' : value + '';\r\n if (value === oldval) return;\r\n\r\n this.data = value;\r\n\r\n // Run the onchange hook for the attribute\r\n // if there is one.\r\n if (this.ownerElement) {\r\n if (this.onchange)\r\n this.onchange(this.ownerElement,this.localName, oldval, value);\r\n\r\n // Generate a mutation event if the element is rooted\r\n if (this.ownerElement.rooted)\r\n this.ownerElement.ownerDocument.mutateAttr(this, oldval);\r\n }\r\n },\r\n },\r\n\r\n cloneNode: { value: function cloneNode(deep) {\r\n // Both this method and Document#createAttribute*() create unowned Attrs\r\n return new Attr(\r\n null, this.localName, this.prefix, this.namespaceURI, this.data\r\n );\r\n }},\r\n\r\n // Legacy aliases (see gh#70 and https://dom.spec.whatwg.org/#interface-attr)\r\n nodeType: { get: function() { return Node.ATTRIBUTE_NODE; } },\r\n nodeName: { get: function() { return this.name; } },\r\n nodeValue: {\r\n get: function() { return this.value; },\r\n set: function(v) { this.value = v; },\r\n },\r\n textContent: {\r\n get: function() { return this.value; },\r\n set: function(v) {\r\n if (v === null || v === undefined) { v = ''; }\r\n this.value = v;\r\n },\r\n },\r\n innerText: {\r\n get: function() { return this.value; },\r\n set: function(v) {\r\n if (v === null || v === undefined) { v = ''; }\r\n this.value = v;\r\n },\r\n },\r\n});\r\n// Sneakily export this class for use by Document.createAttribute()\r\nElement._Attr = Attr;\r\n\r\n// The attributes property of an Element will be an instance of this class.\r\n// This class is really just a dummy, though. It only defines a length\r\n// property and an item() method. The AttrArrayProxy that\r\n// defines the public API just uses the Element object itself.\r\nfunction AttributesArray(elt) {\r\n NamedNodeMap.call(this, elt);\r\n for (var name in elt._attrsByQName) {\r\n this[name] = elt._attrsByQName[name];\r\n }\r\n for (var i = 0; i < elt._attrKeys.length; i++) {\r\n this[i] = elt._attrsByLName[elt._attrKeys[i]];\r\n }\r\n}\r\nAttributesArray.prototype = Object.create(NamedNodeMap.prototype, {\r\n length: { get: function() {\r\n return this.element._attrKeys.length;\r\n }, set: function() { /* ignore */ } },\r\n item: { value: function(n) {\r\n /* jshint bitwise: false */\r\n n = n >>> 0;\r\n if (n >= this.length) { return null; }\r\n return this.element._attrsByLName[this.element._attrKeys[n]];\r\n /* jshint bitwise: true */\r\n } },\r\n});\r\n\r\n// We can't make direct array access work (without Proxies, node >=6)\r\n// but we can make `Array.from(node.attributes)` and for-of loops work.\r\nif (globalThis.Symbol?.iterator) {\r\n AttributesArray.prototype[globalThis.Symbol.iterator] = function() {\r\n var i=0, n=this.length, self=this;\r\n return {\r\n next: function() {\r\n if (i<n) return { value: self.item(i++) };\r\n return { done: true };\r\n }\r\n };\r\n };\r\n}\r\n\r\n\r\n// The children property of an Element will be an instance of this class.\r\n// It defines length, item() and namedItem() and will be wrapped by an\r\n// HTMLCollection when exposed through the DOM.\r\nfunction ChildrenCollection(e) {\r\n this.element = e;\r\n this.updateCache();\r\n}\r\n\r\nChildrenCollection.prototype = Object.create(Object.prototype, {\r\n length: { get: function() {\r\n this.updateCache();\r\n return this.childrenByNumber.length;\r\n } },\r\n item: { value: function item(n) {\r\n this.updateCache();\r\n return this.childrenByNumber[n] || null;\r\n } },\r\n\r\n namedItem: { value: function namedItem(name) {\r\n this.updateCache();\r\n return this.childrenByName[name] || null;\r\n } },\r\n\r\n // This attribute returns the entire name->element map.\r\n // It is not part of the HTMLCollection API, but we need it in\r\n // src/HTMLCollectionProxy\r\n namedItems: { get: function() {\r\n this.updateCache();\r\n return this.childrenByName;\r\n } },\r\n\r\n updateCache: { value: function updateCache() {\r\n var namedElts = /^(a|applet|area|embed|form|frame|frameset|iframe|img|object)$/;\r\n if (this.lastModTime !== this.element.lastModTime) {\r\n this.lastModTime = this.element.lastModTime;\r\n\r\n var n = this.childrenByNumber && this.childrenByNumber.length || 0;\r\n for(var i = 0; i < n; i++) {\r\n this[i] = undefined;\r\n }\r\n\r\n this.childrenByNumber = [];\r\n this.childrenByName = Object.create(null);\r\n\r\n for (var c = this.element.firstChild; c !== null; c = c.nextSibling) {\r\n if (c.nodeType === Node.ELEMENT_NODE) {\r\n\r\n this[this.childrenByNumber.length] = c;\r\n this.childrenByNumber.push(c);\r\n\r\n // XXX Are there any requirements about the namespace\r\n // of the id property?\r\n var id = c.getAttribute('id');\r\n\r\n // If there is an id that is not already in use...\r\n if (id && !this.childrenByName[id])\r\n this.childrenByName[id] = c;\r\n\r\n // For certain HTML elements we check the name attribute\r\n var name = c.getAttribute('name');\r\n if (name &&\r\n this.element.namespaceURI === NAMESPACE.HTML &&\r\n namedElts.test(this.element.localName) &&\r\n !this.childrenByName[name])\r\n this.childrenByName[id] = c;\r\n }\r\n }\r\n }\r\n } },\r\n});\r\n\r\n// These functions return predicates for filtering elements.\r\n// They're used by the Document and Element classes for methods like\r\n// getElementsByTagName and getElementsByClassName\r\n\r\nfunction localNameElementFilter(lname) {\r\n return function(e) { return e.localName === lname; };\r\n}\r\n\r\nfunction htmlLocalNameElementFilter(lname) {\r\n var lclname = utils.toASCIILowerCase(lname);\r\n if (lclname === lname)\r\n return localNameElementFilter(lname);\r\n\r\n return function(e) {\r\n return e.isHTML ? e.localName === lclname : e.localName === lname;\r\n };\r\n}\r\n\r\nfunction namespaceElementFilter(ns) {\r\n return function(e) { return e.namespaceURI === ns; };\r\n}\r\n\r\nfunction namespaceLocalNameElementFilter(ns, lname) {\r\n return function(e) {\r\n return e.namespaceURI === ns && e.localName === lname;\r\n };\r\n}\r\n\r\nfunction classNamesElementFilter(names) {\r\n return function(e) {\r\n return names.every(function(n) { return e.classList.contains(n); });\r\n };\r\n}\r\n\r\nfunction elementNameFilter(name) {\r\n return function(e) {\r\n // All the *HTML elements* in the document with the given name attribute\r\n if (e.namespaceURI !== NAMESPACE.HTML) { return false; }\r\n return e.getAttribute('name') === name;\r\n };\r\n}\r\n","\"use strict\";\r\nmodule.exports = Leaf;\r\n\r\nvar Node = require('./Node');\r\nvar NodeList = require('./NodeList');\r\nvar utils = require('./utils');\r\nvar HierarchyRequestError = utils.HierarchyRequestError;\r\nvar NotFoundError = utils.NotFoundError;\r\n\r\n// This class defines common functionality for node subtypes that\r\n// can never have children\r\nfunction Leaf() {\r\n Node.call(this);\r\n}\r\n\r\nLeaf.prototype = Object.create(Node.prototype, {\r\n hasChildNodes: { value: function() { return false; }},\r\n firstChild: { value: null },\r\n lastChild: { value: null },\r\n insertBefore: { value: function(node, child) {\r\n if (!node.nodeType) throw new TypeError('not a node');\r\n HierarchyRequestError();\r\n }},\r\n replaceChild: { value: function(node, child) {\r\n if (!node.nodeType) throw new TypeError('not a node');\r\n HierarchyRequestError();\r\n }},\r\n removeChild: { value: function(node) {\r\n if (!node.nodeType) throw new TypeError('not a node');\r\n NotFoundError();\r\n }},\r\n removeChildren: { value: function() { /* no op */ }},\r\n childNodes: { get: function() {\r\n if (!this._childNodes) this._childNodes = new NodeList();\r\n return this._childNodes;\r\n }}\r\n});\r\n","/* jshint bitwise: false */\r\n\"use strict\";\r\nmodule.exports = CharacterData;\r\n\r\nvar Leaf = require('./Leaf');\r\nvar utils = require('./utils');\r\nvar ChildNode = require('./ChildNode');\r\nvar NonDocumentTypeChildNode = require('./NonDocumentTypeChildNode');\r\n\r\nfunction CharacterData() {\r\n Leaf.call(this);\r\n}\r\n\r\nCharacterData.prototype = Object.create(Leaf.prototype, {\r\n // DOMString substringData(unsigned long offset,\r\n // unsigned long count);\r\n // The substringData(offset, count) method must run these steps:\r\n //\r\n // If offset is greater than the context object's\r\n // length, throw an INDEX_SIZE_ERR exception and\r\n // terminate these steps.\r\n //\r\n // If offset+count is greater than the context\r\n // object's length, return a DOMString whose value is\r\n // the UTF-16 code units from the offsetth UTF-16 code\r\n // unit to the end of data.\r\n //\r\n // Return a DOMString whose value is the UTF-16 code\r\n // units from the offsetth UTF-16 code unit to the\r\n // offset+countth UTF-16 code unit in data.\r\n substringData: { value: function substringData(offset, count) {\r\n if (arguments.length < 2) { throw new TypeError(\"Not enough arguments\"); }\r\n // Convert arguments to WebIDL \"unsigned long\"\r\n offset = offset >>> 0;\r\n count = count >>> 0;\r\n if (offset > this.data.length || offset < 0 || count < 0) {\r\n utils.IndexSizeError();\r\n }\r\n return this.data.substring(offset, offset+count);\r\n }},\r\n\r\n // void appendData(DOMString data);\r\n // The appendData(data) method must append data to the context\r\n // object's data.\r\n appendData: { value: function appendData(data) {\r\n if (arguments.length < 1) { throw new TypeError(\"Not enough arguments\"); }\r\n this.data += String(data);\r\n }},\r\n\r\n // void insertData(unsigned long offset, DOMString data);\r\n // The insertData(offset, data) method must run these steps:\r\n //\r\n // If offset is greater than the context object's\r\n // length, throw an INDEX_SIZE_ERR exception and\r\n // terminate these steps.\r\n //\r\n // Insert data into the context object's data after\r\n // offset UTF-16 code units.\r\n //\r\n insertData: { value: function insertData(offset, data) {\r\n return this.replaceData(offset, 0, data);\r\n }},\r\n\r\n\r\n // void deleteData(unsigned long offset, unsigned long count);\r\n // The deleteData(offset, count) method must run these steps:\r\n //\r\n // If offset is greater than the context object's\r\n // length, throw an INDEX_SIZE_ERR exception and\r\n // terminate these steps.\r\n //\r\n // If offset+count is greater than the context\r\n // object's length var count be length-offset.\r\n //\r\n // Starting from offset UTF-16 code units remove count\r\n // UTF-16 code units from the context object's data.\r\n deleteData: { value: function deleteData(offset, count) {\r\n return this.replaceData(offset, count, '');\r\n }},\r\n\r\n\r\n // void replaceData(unsigned long offset, unsigned long count,\r\n // DOMString data);\r\n //\r\n // The replaceData(offset, count, data) method must act as\r\n // if the deleteData() method is invoked with offset and\r\n // count as arguments followed by the insertData() method\r\n // with offset and data as arguments and re-throw any\r\n // exceptions these methods might have thrown.\r\n replaceData: { value: function replaceData(offset, count, data) {\r\n var curtext = this.data, len = curtext.length;\r\n // Convert arguments to correct WebIDL type\r\n offset = offset >>> 0;\r\n count = count >>> 0;\r\n data = String(data);\r\n\r\n if (offset > len || offset < 0) utils.IndexSizeError();\r\n\r\n if (offset+count > len)\r\n count = len - offset;\r\n\r\n var prefix = curtext.substring(0, offset),\r\n suffix = curtext.substring(offset+count);\r\n\r\n this.data = prefix + data + suffix;\r\n }},\r\n\r\n // Utility method that Node.isEqualNode() calls to test Text and\r\n // Comment nodes for equality. It is okay to put it here, since\r\n // Node will have already verified that nodeType is equal\r\n isEqual: { value: function isEqual(n) {\r\n return this._data === n._data;\r\n }},\r\n\r\n length: { get: function() { return this.data.length; }}\r\n\r\n});\r\n\r\nObject.defineProperties(CharacterData.prototype, ChildNode);\r\nObject.defineProperties(CharacterData.prototype, NonDocumentTypeChildNode);\r\n","\"use strict\";\r\nmodule.exports = Text;\r\n\r\nvar utils = require('./utils');\r\nvar Node = require('./Node');\r\nvar CharacterData = require('./CharacterData');\r\n\r\nfunction Text(doc, data) {\r\n CharacterData.call(this);\r\n this.nodeType = Node.TEXT_NODE;\r\n this.ownerDocument = doc;\r\n this._data = data;\r\n this._index = undefined;\r\n}\r\n\r\nvar nodeValue = {\r\n get: function() { return this._data; },\r\n set: function(v) {\r\n if (v === null || v === undefined) { v = ''; } else { v = String(v); }\r\n if (v === this._data) return;\r\n this._data = v;\r\n if (this.rooted)\r\n this.ownerDocument.mutateValue(this);\r\n if (this.parentNode &&\r\n this.parentNode._textchangehook)\r\n this.parentNode._textchangehook(this);\r\n }\r\n};\r\n\r\nText.prototype = Object.create(CharacterData.prototype, {\r\n nodeName: { value: \"#text\" },\r\n // These three attributes are all the same.\r\n // The data attribute has a [TreatNullAs=EmptyString] but we'll\r\n // implement that at the interface level\r\n nodeValue: nodeValue,\r\n textContent: nodeValue,\r\n innerText: nodeValue,\r\n data: {\r\n get: nodeValue.get,\r\n set: function(v) {\r\n nodeValue.set.call(this, v===null ? '' : String(v));\r\n },\r\n },\r\n\r\n splitText: { value: function splitText(offset) {\r\n if (offset > this._data.length || offset < 0) utils.IndexSizeError();\r\n\r\n var newdata = this._data.substring(offset),\r\n newnode = this.ownerDocument.createTextNode(newdata);\r\n this.data = this.data.substring(0, offset);\r\n\r\n var parent = this.parentNode;\r\n if (parent !== null)\r\n parent.insertBefore(newnode, this.nextSibling);\r\n\r\n return newnode;\r\n }},\r\n\r\n wholeText: { get: function wholeText() {\r\n var result = this.textContent;\r\n for (var next = this.nextSibling; next; next = next.nextSibling) {\r\n if (next.nodeType !== Node.TEXT_NODE) { break; }\r\n result += next.textContent;\r\n }\r\n return result;\r\n }},\r\n // Obsolete, removed from spec.\r\n replaceWholeText: { value: utils.nyi },\r\n\r\n // Utility methods\r\n clone: { value: function clone() {\r\n return new Text(this.ownerDocument, this._data);\r\n }},\r\n\r\n});\r\n","\"use strict\";\r\nmodule.exports = Comment;\r\n\r\nvar Node = require('./Node');\r\nvar CharacterData = require('./CharacterData');\r\n\r\nfunction Comment(doc, data) {\r\n CharacterData.call(this);\r\n this.nodeType = Node.COMMENT_NODE;\r\n this.ownerDocument = doc;\r\n this._data = data;\r\n}\r\n\r\nvar nodeValue = {\r\n get: function() { return this._data; },\r\n set: function(v) {\r\n if (v === null || v === undefined) { v = ''; } else { v = String(v); }\r\n this._data = v;\r\n if (this.rooted)\r\n this.ownerDocument.mutateValue(this);\r\n }\r\n};\r\n\r\nComment.prototype = Object.create(CharacterData.prototype, {\r\n nodeName: { value: '#comment' },\r\n nodeValue: nodeValue,\r\n textContent: nodeValue,\r\n innerText: nodeValue,\r\n data: {\r\n get: nodeValue.get,\r\n set: function(v) {\r\n nodeValue.set.call(this, v===null ? '' : String(v));\r\n },\r\n },\r\n\r\n // Utility methods\r\n clone: { value: function clone() {\r\n return new Comment(this.ownerDocument, this._data);\r\n }},\r\n});\r\n","\"use strict\";\r\nmodule.exports = DocumentFragment;\r\n\r\nvar Node = require('./Node');\r\nvar NodeList = require('./NodeList');\r\nvar ContainerNode = require('./ContainerNode');\r\nvar Element = require('./Element');\r\nvar select = require('./select');\r\nvar utils = require('./utils');\r\n\r\nfunction DocumentFragment(doc) {\r\n ContainerNode.call(this);\r\n this.nodeType = Node.DOCUMENT_FRAGMENT_NODE;\r\n this.ownerDocument = doc;\r\n}\r\n\r\nDocumentFragment.prototype = Object.create(ContainerNode.prototype, {\r\n nodeName: { value: '#document-fragment' },\r\n nodeValue: {\r\n get: function() {\r\n return null;\r\n },\r\n set: function() {}\r\n },\r\n // Copy the text content getter/setter from Element\r\n textContent: Object.getOwnPropertyDescriptor(Element.prototype, 'textContent'),\r\n\r\n // Copy the text content getter/setter from Element\r\n innerText: Object.getOwnPropertyDescriptor(Element.prototype, 'innerText'),\r\n\r\n querySelector: { value: function(selector) {\r\n // implement in terms of querySelectorAll\r\n var nodes = this.querySelectorAll(selector);\r\n return nodes.length ? nodes[0] : null;\r\n }},\r\n querySelectorAll: { value: function(selector) {\r\n // create a context\r\n var context = Object.create(this);\r\n // add some methods to the context for zest implementation, without\r\n // adding them to the public DocumentFragment API\r\n context.isHTML = true; // in HTML namespace (case-insensitive match)\r\n context.getElementsByTagName = Element.prototype.getElementsByTagName;\r\n context.nextElement =\r\n Object.getOwnPropertyDescriptor(Element.prototype, 'firstElementChild').\r\n get;\r\n // invoke zest\r\n var nodes = select(selector, context);\r\n return nodes.item ? nodes : new NodeList(nodes);\r\n }},\r\n\r\n // Utility methods\r\n clone: { value: function clone() {\r\n return new DocumentFragment(this.ownerDocument);\r\n }},\r\n isEqual: { value: function isEqual(n) {\r\n // Any two document fragments are shallowly equal.\r\n // Node.isEqualNode() will test their children for equality\r\n return true;\r\n }},\r\n\r\n // Non-standard, but useful (github issue #73)\r\n innerHTML: {\r\n get: function() { return this.serialize(); },\r\n set: utils.nyi\r\n },\r\n outerHTML: {\r\n get: function() { return this.serialize(); },\r\n set: utils.nyi\r\n },\r\n\r\n});\r\n","\"use strict\";\r\nmodule.exports = ProcessingInstruction;\r\n\r\nvar Node = require('./Node');\r\nvar CharacterData = require('./CharacterData');\r\n\r\nfunction ProcessingInstruction(doc, target, data) {\r\n CharacterData.call(this);\r\n this.nodeType = Node.PROCESSING_INSTRUCTION_NODE;\r\n this.ownerDocument = doc;\r\n this.target = target;\r\n this._data = data;\r\n}\r\n\r\nvar nodeValue = {\r\n get: function() { return this._data; },\r\n set: function(v) {\r\n if (v === null || v === undefined) { v = ''; } else { v = String(v); }\r\n this._data = v;\r\n if (this.rooted) this.ownerDocument.mutateValue(this);\r\n }\r\n};\r\n\r\nProcessingInstruction.prototype = Object.create(CharacterData.prototype, {\r\n nodeName: { get: function() { return this.target; }},\r\n nodeValue: nodeValue,\r\n textContent: nodeValue,\r\n innerText: nodeValue,\r\n data: {\r\n get: nodeValue.get,\r\n set: function(v) {\r\n nodeValue.set.call(this, v===null ? '' : String(v));\r\n },\r\n },\r\n\r\n // Utility methods\r\n clone: { value: function clone() {\r\n return new ProcessingInstruction(this.ownerDocument, this.target, this._data);\r\n }},\r\n isEqual: { value: function isEqual(n) {\r\n return this.target === n.target && this._data === n._data;\r\n }}\r\n\r\n});\r\n","\"use strict\";\r\nvar NodeFilter = {\r\n // Constants for acceptNode()\r\n FILTER_ACCEPT: 1,\r\n FILTER_REJECT: 2,\r\n FILTER_SKIP: 3,\r\n\r\n // Constants for whatToShow\r\n SHOW_ALL: 0xFFFFFFFF,\r\n SHOW_ELEMENT: 0x1,\r\n SHOW_ATTRIBUTE: 0x2, // historical\r\n SHOW_TEXT: 0x4,\r\n SHOW_CDATA_SECTION: 0x8, // historical\r\n SHOW_ENTITY_REFERENCE: 0x10, // historical\r\n SHOW_ENTITY: 0x20, // historical\r\n SHOW_PROCESSING_INSTRUCTION: 0x40,\r\n SHOW_COMMENT: 0x80,\r\n SHOW_DOCUMENT: 0x100,\r\n SHOW_DOCUMENT_TYPE: 0x200,\r\n SHOW_DOCUMENT_FRAGMENT: 0x400,\r\n SHOW_NOTATION: 0x800 // historical\r\n};\r\n\r\nmodule.exports = (NodeFilter.constructor = NodeFilter.prototype = NodeFilter);\r\n","\"use strict\";\r\n/* exported NodeTraversal */\r\nvar NodeTraversal = module.exports = {\r\n nextSkippingChildren: nextSkippingChildren,\r\n nextAncestorSibling: nextAncestorSibling,\r\n next: next,\r\n previous: previous,\r\n deepLastChild: deepLastChild\r\n};\r\n\r\n/**\r\n * @based on WebKit's NodeTraversal::nextSkippingChildren\r\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.h?rev=179143#L109\r\n */\r\nfunction nextSkippingChildren(node, stayWithin) {\r\n if (node === stayWithin) {\r\n return null;\r\n }\r\n if (node.nextSibling !== null) {\r\n return node.nextSibling;\r\n }\r\n return nextAncestorSibling(node, stayWithin);\r\n}\r\n\r\n/**\r\n * @based on WebKit's NodeTraversal::nextAncestorSibling\r\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.cpp?rev=179143#L93\r\n */\r\nfunction nextAncestorSibling(node, stayWithin) {\r\n for (node = node.parentNode; node !== null; node = node.parentNode) {\r\n if (node === stayWithin) {\r\n return null;\r\n }\r\n if (node.nextSibling !== null) {\r\n return node.nextSibling;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * @based on WebKit's NodeTraversal::next\r\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.h?rev=179143#L99\r\n */\r\nfunction next(node, stayWithin) {\r\n var n;\r\n n = node.firstChild;\r\n if (n !== null) {\r\n return n;\r\n }\r\n if (node === stayWithin) {\r\n return null;\r\n }\r\n n = node.nextSibling;\r\n if (n !== null) {\r\n return n;\r\n }\r\n return nextAncestorSibling(node, stayWithin);\r\n}\r\n\r\n/**\r\n * @based on WebKit's NodeTraversal::deepLastChild\r\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.cpp?rev=179143#L116\r\n */\r\nfunction deepLastChild(node) {\r\n while (node.lastChild) {\r\n node = node.lastChild;\r\n }\r\n return node;\r\n}\r\n\r\n/**\r\n * @based on WebKit's NodeTraversal::previous\r\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.h?rev=179143#L121\r\n */\r\nfunction previous(node, stayWithin) {\r\n var p;\r\n p = node.previousSibling;\r\n if (p !== null) {\r\n return deepLastChild(p);\r\n }\r\n p = node.parentNode;\r\n if (p === stayWithin) {\r\n return null;\r\n }\r\n return p;\r\n}\r\n","\"use strict\";\r\nmodule.exports = TreeWalker;\r\n\r\nvar Node = require('./Node');\r\nvar NodeFilter = require('./NodeFilter');\r\nvar NodeTraversal = require('./NodeTraversal');\r\nvar utils = require('./utils');\r\n\r\nvar mapChild = {\r\n first: 'firstChild',\r\n last: 'lastChild',\r\n next: 'firstChild',\r\n previous: 'lastChild'\r\n};\r\n\r\nvar mapSibling = {\r\n first: 'nextSibling',\r\n last: 'previousSibling',\r\n next: 'nextSibling',\r\n previous: 'previousSibling'\r\n};\r\n\r\n/* Private methods and helpers */\r\n\r\n/**\r\n * @spec https://dom.spec.whatwg.org/#concept-traverse-children\r\n * @method\r\n * @access private\r\n * @param {TreeWalker} tw\r\n * @param {string} type One of 'first' or 'last'.\r\n * @return {Node|null}\r\n */\r\nfunction traverseChildren(tw, type) {\r\n var child, node, parent, result, sibling;\r\n node = tw._currentNode[mapChild[type]];\r\n while (node !== null) {\r\n result = tw._internalFilter(node);\r\n if (result === NodeFilter.FILTER_ACCEPT) {\r\n tw._currentNode = node;\r\n return node;\r\n }\r\n if (result === NodeFilter.FILTER_SKIP) {\r\n child = node[mapChild[type]];\r\n if (child !== null) {\r\n node = child;\r\n continue;\r\n }\r\n }\r\n while (node !== null) {\r\n sibling = node[mapSibling[type]];\r\n if (sibling !== null) {\r\n node = sibling;\r\n break;\r\n }\r\n parent = node.parentNode;\r\n if (parent === null || parent === tw.root || parent === tw._currentNode) {\r\n return null;\r\n } else {\r\n node = parent;\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * @spec https://dom.spec.whatwg.org/#concept-traverse-siblings\r\n * @method\r\n * @access private\r\n * @param {TreeWalker} tw\r\n * @param {TreeWalker} type One of 'next' or 'previous'.\r\n * @return {Node|nul}\r\n */\r\nfunction traverseSiblings(tw, type) {\r\n var node, result, sibling;\r\n node = tw._currentNode;\r\n if (node === tw.root) {\r\n return null;\r\n }\r\n while (true) {\r\n sibling = node[mapSibling[type]];\r\n while (sibling !== null) {\r\n node = sibling;\r\n result = tw._internalFilter(node);\r\n if (result === NodeFilter.FILTER_ACCEPT) {\r\n tw._currentNode = node;\r\n return node;\r\n }\r\n sibling = node[mapChild[type]];\r\n if (result === NodeFilter.FILTER_REJECT || sibling === null) {\r\n sibling = node[mapSibling[type]];\r\n }\r\n }\r\n node = node.parentNode;\r\n if (node === null || node === tw.root) {\r\n return null;\r\n }\r\n if (tw._internalFilter(node) === NodeFilter.FILTER_ACCEPT) {\r\n return null;\r\n }\r\n }\r\n}\r\n\r\n\r\n/* Public API */\r\n\r\n/**\r\n * Latest version: https://dom.spec.whatwg.org/#treewalker\r\n *\r\n * @constructor\r\n * @param {Node} root\r\n * @param {number} whatToShow [optional]\r\n * @param {Function|NodeFilter} filter [optional]\r\n * @throws Error\r\n */\r\nfunction TreeWalker(root, whatToShow, filter) {\r\n if (!root || !root.nodeType) {\r\n utils.NotSupportedError();\r\n }\r\n\r\n // Read-only properties\r\n this._root = root;\r\n this._whatToShow = Number(whatToShow) || 0;\r\n this._filter = filter || null;\r\n this._active = false;\r\n // Read-write property\r\n this._currentNode = root;\r\n}\r\n\r\nObject.defineProperties(TreeWalker.prototype, {\r\n root: { get: function() { return this._root; } },\r\n whatToShow: { get: function() { return this._whatToShow; } },\r\n filter: { get: function() { return this._filter; } },\r\n\r\n currentNode: {\r\n get: function currentNode() {\r\n return this._currentNode;\r\n },\r\n set: function setCurrentNode(v) {\r\n if (!(v instanceof Node)) {\r\n throw new TypeError(\"Not a Node\"); // `null` is also not a node\r\n }\r\n this._currentNode = v;\r\n },\r\n },\r\n\r\n /**\r\n * @method\r\n * @param {Node} node\r\n * @return {Number} Constant NodeFilter.FILTER_ACCEPT,\r\n * NodeFilter.FILTER_REJECT or NodeFilter.FILTER_SKIP.\r\n */\r\n _internalFilter: { value: function _internalFilter(node) {\r\n /* jshint bitwise: false */\r\n var result, filter;\r\n if (this._active) {\r\n utils.InvalidStateError();\r\n }\r\n\r\n // Maps nodeType to whatToShow\r\n if (!(((1 << (node.nodeType - 1)) & this._whatToShow))) {\r\n return NodeFilter.FILTER_SKIP;\r\n }\r\n\r\n filter = this._filter;\r\n if (filter === null) {\r\n result = NodeFilter.FILTER_ACCEPT;\r\n } else {\r\n this._active = true;\r\n try {\r\n if (typeof filter === 'function') {\r\n result = filter(node);\r\n } else {\r\n result = filter.acceptNode(node);\r\n }\r\n } finally {\r\n this._active = false;\r\n }\r\n }\r\n\r\n // Note that coercing to a number means that\r\n // `true` becomes `1` (which is NodeFilter.FILTER_ACCEPT)\r\n // `false` becomes `0` (neither accept, reject, or skip)\r\n return (+result);\r\n }},\r\n\r\n /**\r\n * @spec https://dom.spec.whatwg.org/#dom-treewalker-parentnode\r\n * @based on WebKit's TreeWalker::parentNode\r\n * https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/dom/TreeWalker.cpp?rev=220453#L50\r\n * @method\r\n * @return {Node|null}\r\n */\r\n parentNode: { value: function parentNode() {\r\n var node = this._currentNode;\r\n while (node !== this.root) {\r\n node = node.parentNode;\r\n if (node === null) {\r\n return null;\r\n }\r\n if (this._internalFilter(node) === NodeFilter.FILTER_ACCEPT) {\r\n this._currentNode = node;\r\n return node;\r\n }\r\n }\r\n return null;\r\n }},\r\n\r\n /**\r\n * @spec https://dom.spec.whatwg.org/#dom-treewalker-firstchild\r\n * @method\r\n * @return {Node|null}\r\n */\r\n firstChild: { value: function firstChild() {\r\n return traverseChildren(this, 'first');\r\n }},\r\n\r\n /**\r\n * @spec https://dom.spec.whatwg.org/#dom-treewalker-lastchild\r\n * @method\r\n * @return {Node|null}\r\n */\r\n lastChild: { value: function lastChild() {\r\n return traverseChildren(this, 'last');\r\n }},\r\n\r\n /**\r\n * @spec http://www.w3.org/TR/dom/#dom-treewalker-previoussibling\r\n * @method\r\n * @return {Node|null}\r\n */\r\n previousSibling: { value: function previousSibling() {\r\n return traverseSiblings(this, 'previous');\r\n }},\r\n\r\n /**\r\n * @spec http://www.w3.org/TR/dom/#dom-treewalker-nextsibling\r\n * @method\r\n * @return {Node|null}\r\n */\r\n nextSibling: { value: function nextSibling() {\r\n return traverseSiblings(this, 'next');\r\n }},\r\n\r\n /**\r\n * @spec https://dom.spec.whatwg.org/#dom-treewalker-previousnode\r\n * @based on WebKit's TreeWalker::previousNode\r\n * https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/dom/TreeWalker.cpp?rev=220453#L181\r\n * @method\r\n * @return {Node|null}\r\n */\r\n previousNode: { value: function previousNode() {\r\n var node, result, previousSibling, lastChild;\r\n node = this._currentNode;\r\n while (node !== this._root) {\r\n for (previousSibling = node.previousSibling;\r\n previousSibling;\r\n previousSibling = node.previousSibling) {\r\n node = previousSibling;\r\n result = this._internalFilter(node);\r\n if (result === NodeFilter.FILTER_REJECT) {\r\n continue;\r\n }\r\n for (lastChild = node.lastChild;\r\n lastChild;\r\n lastChild = node.lastChild) {\r\n node = lastChild;\r\n result = this._internalFilter(node);\r\n if (result === NodeFilter.FILTER_REJECT) {\r\n break;\r\n }\r\n }\r\n if (result === NodeFilter.FILTER_ACCEPT) {\r\n this._currentNode = node;\r\n return node;\r\n }\r\n }\r\n if (node === this.root || node.parentNode === null) {\r\n return null;\r\n }\r\n node = node.parentNode;\r\n if (this._internalFilter(node) === NodeFilter.FILTER_ACCEPT) {\r\n this._currentNode = node;\r\n return node;\r\n }\r\n }\r\n return null;\r\n }},\r\n\r\n /**\r\n * @spec https://dom.spec.whatwg.org/#dom-treewalker-nextnode\r\n * @based on WebKit's TreeWalker::nextNode\r\n * https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/dom/TreeWalker.cpp?rev=220453#L228\r\n * @method\r\n * @return {Node|null}\r\n */\r\n nextNode: { value: function nextNode() {\r\n var node, result, firstChild, nextSibling;\r\n node = this._currentNode;\r\n result = NodeFilter.FILTER_ACCEPT;\r\n\r\n CHILDREN:\r\n while (true) {\r\n for (firstChild = node.firstChild;\r\n firstChild;\r\n firstChild = node.firstChild) {\r\n node = firstChild;\r\n result = this._internalFilter(node);\r\n if (result === NodeFilter.FILTER_ACCEPT) {\r\n this._currentNode = node;\r\n return node;\r\n } else if (result === NodeFilter.FILTER_REJECT) {\r\n break;\r\n }\r\n }\r\n for (nextSibling = NodeTraversal.nextSkippingChildren(node, this.root);\r\n nextSibling;\r\n nextSibling = NodeTraversal.nextSkippingChildren(node, this.root)) {\r\n node = nextSibling;\r\n result = this._internalFilter(node);\r\n if (result === NodeFilter.FILTER_ACCEPT) {\r\n this._currentNode = node;\r\n return node;\r\n } else if (result === NodeFilter.FILTER_SKIP) {\r\n continue CHILDREN;\r\n }\r\n }\r\n return null;\r\n }\r\n }},\r\n\r\n /** For compatibility with web-platform-tests. */\r\n toString: { value: function toString() {\r\n return \"[object TreeWalker]\";\r\n }},\r\n});\r\n","\"use strict\";\r\nmodule.exports = NodeIterator;\r\n\r\nvar NodeFilter = require('./NodeFilter');\r\nvar NodeTraversal = require('./NodeTraversal');\r\nvar utils = require('./utils');\r\n\r\n/* Private methods and helpers */\r\n\r\n/**\r\n * @based on WebKit's NodeIterator::moveToNext and NodeIterator::moveToPrevious\r\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeIterator.cpp?rev=186279#L51\r\n */\r\nfunction move(node, stayWithin, directionIsNext) {\r\n if (directionIsNext) {\r\n return NodeTraversal.next(node, stayWithin);\r\n } else {\r\n if (node === stayWithin) {\r\n return null;\r\n }\r\n return NodeTraversal.previous(node, null);\r\n }\r\n}\r\n\r\nfunction isInclusiveAncestor(node, possibleChild) {\r\n for ( ; possibleChild; possibleChild = possibleChild.parentNode) {\r\n if (node === possibleChild) { return true; }\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * @spec http://www.w3.org/TR/dom/#concept-nodeiterator-traverse\r\n * @method\r\n * @access private\r\n * @param {NodeIterator} ni\r\n * @param {string} direction One of 'next' or 'previous'.\r\n * @return {Node|null}\r\n */\r\nfunction traverse(ni, directionIsNext) {\r\n var node, beforeNode;\r\n node = ni._referenceNode;\r\n beforeNode = ni._pointerBeforeReferenceNode;\r\n while (true) {\r\n if (beforeNode === directionIsNext) {\r\n beforeNode = !beforeNode;\r\n } else {\r\n node = move(node, ni._root, directionIsNext);\r\n if (node === null) {\r\n return null;\r\n }\r\n }\r\n var result = ni._internalFilter(node);\r\n if (result === NodeFilter.FILTER_ACCEPT) {\r\n break;\r\n }\r\n }\r\n ni._referenceNode = node;\r\n ni._pointerBeforeReferenceNode = beforeNode;\r\n return node;\r\n}\r\n\r\n/* Public API */\r\n\r\n/**\r\n * Implemented version: http://www.w3.org/TR/2015/WD-dom-20150618/#nodeiterator\r\n * Latest version: http://www.w3.org/TR/dom/#nodeiterator\r\n *\r\n * @constructor\r\n * @param {Node} root\r\n * @param {number} whatToShow [optional]\r\n * @param {Function|NodeFilter} filter [optional]\r\n * @throws Error\r\n */\r\nfunction NodeIterator(root, whatToShow, filter) {\r\n if (!root || !root.nodeType) {\r\n utils.NotSupportedError();\r\n }\r\n\r\n // Read-only properties\r\n this._root = root;\r\n this._referenceNode = root;\r\n this._pointerBeforeReferenceNode = true;\r\n this._whatToShow = Number(whatToShow) || 0;\r\n this._filter = filter || null;\r\n this._active = false;\r\n // Record active node iterators in the document, in order to perform\r\n // \"node iterator pre-removal steps\".\r\n root.doc._attachNodeIterator(this);\r\n}\r\n\r\nObject.defineProperties(NodeIterator.prototype, {\r\n root: { get: function root() {\r\n return this._root;\r\n } },\r\n referenceNode: { get: function referenceNode() {\r\n return this._referenceNode;\r\n } },\r\n pointerBeforeReferenceNode: { get: function pointerBeforeReferenceNode() {\r\n return this._pointerBeforeReferenceNode;\r\n } },\r\n whatToShow: { get: function whatToShow() {\r\n return this._whatToShow;\r\n } },\r\n filter: { get: function filter() {\r\n return this._filter;\r\n } },\r\n\r\n /**\r\n * @method\r\n * @param {Node} node\r\n * @return {Number} Constant NodeFilter.FILTER_ACCEPT,\r\n * NodeFilter.FILTER_REJECT or NodeFilter.FILTER_SKIP.\r\n */\r\n _internalFilter: { value: function _internalFilter(node) {\r\n /* jshint bitwise: false */\r\n var result, filter;\r\n if (this._active) {\r\n utils.InvalidStateError();\r\n }\r\n\r\n // Maps nodeType to whatToShow\r\n if (!(((1 << (node.nodeType - 1)) & this._whatToShow))) {\r\n return NodeFilter.FILTER_SKIP;\r\n }\r\n\r\n filter = this._filter;\r\n if (filter === null) {\r\n result = NodeFilter.FILTER_ACCEPT;\r\n } else {\r\n this._active = true;\r\n try {\r\n if (typeof filter === 'function') {\r\n result = filter(node);\r\n } else {\r\n result = filter.acceptNode(node);\r\n }\r\n } finally {\r\n this._active = false;\r\n }\r\n }\r\n\r\n // Note that coercing to a number means that\r\n // `true` becomes `1` (which is NodeFilter.FILTER_ACCEPT)\r\n // `false` becomes `0` (neither accept, reject, or skip)\r\n return (+result);\r\n } },\r\n\r\n /**\r\n * @spec https://dom.spec.whatwg.org/#nodeiterator-pre-removing-steps\r\n * @method\r\n * @return void\r\n */\r\n _preremove: { value: function _preremove(toBeRemovedNode) {\r\n if (isInclusiveAncestor(toBeRemovedNode, this._root)) { return; }\r\n if (!isInclusiveAncestor(toBeRemovedNode, this._referenceNode)) { return; }\r\n if (this._pointerBeforeReferenceNode) {\r\n var next = toBeRemovedNode;\r\n while (next.lastChild) {\r\n next = next.lastChild;\r\n }\r\n next = NodeTraversal.next(next, this.root);\r\n if (next) {\r\n this._referenceNode = next;\r\n return;\r\n }\r\n this._pointerBeforeReferenceNode = false;\r\n // fall through\r\n }\r\n if (toBeRemovedNode.previousSibling === null) {\r\n this._referenceNode = toBeRemovedNode.parentNode;\r\n } else {\r\n this._referenceNode = toBeRemovedNode.previousSibling;\r\n var lastChild;\r\n for (lastChild = this._referenceNode.lastChild;\r\n lastChild;\r\n lastChild = this._referenceNode.lastChild) {\r\n this._referenceNode = lastChild;\r\n }\r\n }\r\n } },\r\n\r\n /**\r\n * @spec http://www.w3.org/TR/dom/#dom-nodeiterator-nextnode\r\n * @method\r\n * @return {Node|null}\r\n */\r\n nextNode: { value: function nextNode() {\r\n return traverse(this, true);\r\n } },\r\n\r\n /**\r\n * @spec http://www.w3.org/TR/dom/#dom-nodeiterator-previousnode\r\n * @method\r\n * @return {Node|null}\r\n */\r\n previousNode: { value: function previousNode() {\r\n return traverse(this, false);\r\n } },\r\n\r\n /**\r\n * @spec http://www.w3.org/TR/dom/#dom-nodeiterator-detach\r\n * @method\r\n * @return void\r\n */\r\n detach: { value: function detach() {\r\n /* \"The detach() method must do nothing.\r\n * Its functionality (disabling a NodeIterator object) was removed,\r\n * but the method itself is preserved for compatibility.\r\n */\r\n } },\r\n\r\n /** For compatibility with web-platform-tests. */\r\n toString: { value: function toString() {\r\n return \"[object NodeIterator]\";\r\n } },\r\n});\r\n","\"use strict\";\r\nmodule.exports = URL;\r\n\r\nfunction URL(url) {\r\n if (!url) return Object.create(URL.prototype);\r\n // Can't use String.trim() since it defines whitespace differently than HTML\r\n this.url = url.replace(/^[ \\t\\n\\r\\f]+|[ \\t\\n\\r\\f]+$/g, \"\");\r\n\r\n // See http://tools.ietf.org/html/rfc3986#appendix-B\r\n // and https://url.spec.whatwg.org/#parsing\r\n var match = URL.pattern.exec(this.url);\r\n if (match) {\r\n if (match[2]) this.scheme = match[2];\r\n if (match[4]) {\r\n // parse username/password\r\n var userinfo = match[4].match(URL.userinfoPattern);\r\n if (userinfo) {\r\n this.username = userinfo[1];\r\n this.password = userinfo[3];\r\n match[4] = match[4].substring(userinfo[0].length);\r\n }\r\n if (match[4].match(URL.portPattern)) {\r\n var pos = match[4].lastIndexOf(':');\r\n this.host = match[4].substring(0, pos);\r\n this.port = match[4].substring(pos+1);\r\n }\r\n else {\r\n this.host = match[4];\r\n }\r\n }\r\n if (match[5]) this.path = match[5];\r\n if (match[6]) this.query = match[7];\r\n if (match[8]) this.fragment = match[9];\r\n }\r\n}\r\n\r\nURL.pattern = /^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/;\r\nURL.userinfoPattern = /^([^@:]*)(:([^@]*))?@/;\r\nURL.portPattern = /:\\d+$/;\r\nURL.authorityPattern = /^[^:\\/?#]+:\\/\\//;\r\nURL.hierarchyPattern = /^[^:\\/?#]+:\\//;\r\n\r\n// Return a percentEncoded version of s.\r\n// S should be a single-character string\r\n// XXX: needs to do utf-8 encoding?\r\nURL.percentEncode = function percentEncode(s) {\r\n var c = s.charCodeAt(0);\r\n if (c < 256) return \"%\" + c.toString(16);\r\n else throw Error(\"can't percent-encode codepoints > 255 yet\");\r\n};\r\n\r\nURL.prototype = {\r\n constructor: URL,\r\n\r\n // XXX: not sure if this is the precise definition of absolute\r\n isAbsolute: function() { return !!this.scheme; },\r\n isAuthorityBased: function() {\r\n return URL.authorityPattern.test(this.url);\r\n },\r\n isHierarchical: function() {\r\n return URL.hierarchyPattern.test(this.url);\r\n },\r\n\r\n toString: function() {\r\n var s = \"\";\r\n if (this.scheme !== undefined) s += this.scheme + \":\";\r\n if (this.isAbsolute()) {\r\n s += '//';\r\n if (this.username || this.password) {\r\n s += this.username || '';\r\n if (this.password) {\r\n s += ':' + this.password;\r\n }\r\n s += '@';\r\n }\r\n if (this.host) {\r\n s += this.host;\r\n }\r\n }\r\n if (this.port !== undefined) s += \":\" + this.port;\r\n if (this.path !== undefined) s += this.path;\r\n if (this.query !== undefined) s += \"?\" + this.query;\r\n if (this.fragment !== undefined) s += \"#\" + this.fragment;\r\n return s;\r\n },\r\n\r\n // See: http://tools.ietf.org/html/rfc3986#section-5.2\r\n // and https://url.spec.whatwg.org/#constructors\r\n resolve: function(relative) {\r\n var base = this; // The base url we're resolving against\r\n var r = new URL(relative); // The relative reference url to resolve\r\n var t = new URL(); // The absolute target url we will return\r\n\r\n if (r.scheme !== undefined) {\r\n t.scheme = r.scheme;\r\n t.username = r.username;\r\n t.password = r.password;\r\n t.host = r.host;\r\n t.port = r.port;\r\n t.path = remove_dot_segments(r.path);\r\n t.query = r.query;\r\n }\r\n else {\r\n t.scheme = base.scheme;\r\n if (r.host !== undefined) {\r\n t.username = r.username;\r\n t.password = r.password;\r\n t.host = r.host;\r\n t.port = r.port;\r\n t.path = remove_dot_segments(r.path);\r\n t.query = r.query;\r\n }\r\n else {\r\n t.username = base.username;\r\n t.password = base.password;\r\n t.host = base.host;\r\n t.port = base.port;\r\n if (!r.path) { // undefined or empty\r\n t.path = base.path;\r\n if (r.query !== undefined)\r\n t.query = r.query;\r\n else\r\n t.query = base.query;\r\n }\r\n else {\r\n if (r.path.charAt(0) === \"/\") {\r\n t.path = remove_dot_segments(r.path);\r\n }\r\n else {\r\n t.path = merge(base.path, r.path);\r\n t.path = remove_dot_segments(t.path);\r\n }\r\n t.query = r.query;\r\n }\r\n }\r\n }\r\n t.fragment = r.fragment;\r\n\r\n return t.toString();\r\n\r\n\r\n function merge(basepath, refpath) {\r\n if (base.host !== undefined && !base.path)\r\n return \"/\" + refpath;\r\n\r\n var lastslash = basepath.lastIndexOf(\"/\");\r\n if (lastslash === -1)\r\n return refpath;\r\n else\r\n return basepath.substring(0, lastslash+1) + refpath;\r\n }\r\n\r\n function remove_dot_segments(path) {\r\n if (!path) return path; // For \"\" or undefined\r\n\r\n var output = \"\";\r\n while(path.length > 0) {\r\n if (path === \".\" || path === \"..\") {\r\n path = \"\";\r\n break;\r\n }\r\n\r\n var twochars = path.substring(0,2);\r\n var threechars = path.substring(0,3);\r\n var fourchars = path.substring(0,4);\r\n if (threechars === \"../\") {\r\n path = path.substring(3);\r\n }\r\n else if (twochars === \"./\") {\r\n path = path.substring(2);\r\n }\r\n else if (threechars === \"/./\") {\r\n path = \"/\" + path.substring(3);\r\n }\r\n else if (twochars === \"/.\" && path.length === 2) {\r\n path = \"/\";\r\n }\r\n else if (fourchars === \"/../\" ||\r\n (threechars === \"/..\" && path.length === 3)) {\r\n path = \"/\" + path.substring(4);\r\n\r\n output = output.replace(/\\/?[^\\/]*$/, \"\");\r\n }\r\n else {\r\n var segment = path.match(/(\\/?([^\\/]*))/)[0];\r\n output += segment;\r\n path = path.substring(segment.length);\r\n }\r\n }\r\n\r\n return output;\r\n }\r\n },\r\n};\r\n","\"use strict\";\r\nmodule.exports = CustomEvent;\r\n\r\nvar Event = require('./Event');\r\n\r\nfunction CustomEvent(type, dictionary) {\r\n // Just use the superclass constructor to initialize\r\n Event.call(this, type, dictionary);\r\n}\r\nCustomEvent.prototype = Object.create(Event.prototype, {\r\n constructor: { value: CustomEvent }\r\n});\r\n","\"use strict\";\r\nmodule.exports = {\r\n Event: require('./Event'),\r\n UIEvent: require('./UIEvent'),\r\n MouseEvent: require('./MouseEvent'),\r\n CustomEvent: require('./CustomEvent')\r\n};\r\n","\"use strict\";\r\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\n\r\n// The below is a compiled copy of https://github.com/angular/angular/blob/92e41e9cb417223d9888a4c23b4c0e73188f87d0/packages/compiler/src/render3/view/style_parser.ts\r\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.hyphenate = exports.parse = void 0;\r\n/**\r\n * Parses string representation of a style and converts it into object literal.\r\n *\r\n * @param value string representation of style as used in the `style` attribute in HTML.\r\n * Example: `color: red; height: auto`.\r\n * @returns An array of style property name and value pairs, e.g. `['color', 'red', 'height',\r\n * 'auto']`\r\n */\r\nfunction parse(value) {\r\n // we use a string array here instead of a string map\r\n // because a string-map is not guaranteed to retain the\r\n // order of the entries whereas a string array can be\r\n // constructed in a [key, value, key, value] format.\r\n const styles = [];\r\n let i = 0;\r\n let parenDepth = 0;\r\n let quote = 0; /* Char.QuoteNone */\r\n let valueStart = 0;\r\n let propStart = 0;\r\n let currentProp = null;\r\n while (i < value.length) {\r\n const token = value.charCodeAt(i++);\r\n switch (token) {\r\n case 40 /* Char.OpenParen */:\r\n parenDepth++;\r\n break;\r\n case 41 /* Char.CloseParen */:\r\n parenDepth--;\r\n break;\r\n case 39 /* Char.QuoteSingle */:\r\n // valueStart needs to be there since prop values don't\r\n // have quotes in CSS\r\n if (quote === 0 /* Char.QuoteNone */) {\r\n quote = 39 /* Char.QuoteSingle */;\r\n } else if (\r\n quote === 39 /* Char.QuoteSingle */ &&\r\n value.charCodeAt(i - 1) !== 92 /* Char.BackSlash */\r\n ) {\r\n quote = 0 /* Char.QuoteNone */;\r\n }\r\n break;\r\n case 34 /* Char.QuoteDouble */:\r\n // same logic as above\r\n if (quote === 0 /* Char.QuoteNone */) {\r\n quote = 34 /* Char.QuoteDouble */;\r\n } else if (\r\n quote === 34 /* Char.QuoteDouble */ &&\r\n value.charCodeAt(i - 1) !== 92 /* Char.BackSlash */\r\n ) {\r\n quote = 0 /* Char.QuoteNone */;\r\n }\r\n break;\r\n case 58 /* Char.Colon */:\r\n if (\r\n !currentProp &&\r\n parenDepth === 0 &&\r\n quote === 0 /* Char.QuoteNone */\r\n ) {\r\n currentProp = hyphenate(value.substring(propStart, i - 1).trim());\r\n valueStart = i;\r\n }\r\n break;\r\n case 59 /* Char.Semicolon */:\r\n if (\r\n currentProp &&\r\n valueStart > 0 &&\r\n parenDepth === 0 &&\r\n quote === 0 /* Char.QuoteNone */\r\n ) {\r\n const styleVal = value.substring(valueStart, i - 1).trim();\r\n styles.push(currentProp, styleVal);\r\n propStart = i;\r\n valueStart = 0;\r\n currentProp = null;\r\n }\r\n break;\r\n }\r\n }\r\n if (currentProp && valueStart) {\r\n const styleVal = value.slice(valueStart).trim();\r\n styles.push(currentProp, styleVal);\r\n }\r\n return styles;\r\n}\r\nexports.parse = parse;\r\nfunction hyphenate(value) {\r\n return value\r\n .replace(/[a-z][A-Z]/g, (v) => {\r\n return v.charAt(0) + \"-\" + v.charAt(1);\r\n })\r\n .toLowerCase();\r\n}\r\nexports.hyphenate = hyphenate;\r\n","\"use strict\";\r\n\r\nconst { parse } = require('./style_parser');\r\n\r\nmodule.exports = function (elt) {\r\n const style = new CSSStyleDeclaration(elt)\r\n const handler = {\r\n get: function(target, property) {\r\n return property in target ? target[property] : target.getPropertyValue(dasherizeProperty(property));\r\n },\r\n has: function(target, key) {\r\n return true;\r\n },\r\n set: function(target, property, value) {\r\n if (property in target) {\r\n target[property] = value;\r\n } else {\r\n target.setProperty(dasherizeProperty(property), value ?? undefined);\r\n }\r\n\r\n return true;\r\n }\r\n };\r\n\r\n return new Proxy(style, handler);\r\n};\r\n\r\nfunction dasherizeProperty(property) {\r\n return property.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\r\n}\r\n\r\n\r\nfunction CSSStyleDeclaration(elt) {\r\n this._element = elt;\r\n}\r\n\r\nconst IMPORTANT_BANG = '!important';\r\n\r\n// Utility function for parsing style declarations\r\n// Pass in a string like \"margin-left: 5px; border-style: solid\"\r\n// and this function returns an object like\r\n// {\"margin-left\":\"5px\", \"border-style\":\"solid\"}\r\nfunction parseStyles(value) {\r\n const result = {\r\n property: {},\r\n priority: {},\r\n }\r\n\r\n if (!value) {\r\n return result;\r\n }\r\n\r\n const styleValues = parse(value);\r\n if (styleValues.length < 2) {\r\n return result;\r\n }\r\n\r\n for (let i = 0; i < styleValues.length; i += 2) {\r\n const name = styleValues[i];\r\n let value = styleValues[i+1];\r\n\r\n if (value.endsWith(IMPORTANT_BANG)) {\r\n result.priority[name] = 'important';\r\n value = value.slice(0, -IMPORTANT_BANG.length).trim();\r\n }\r\n\r\n result.property[name] = value;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nvar NO_CHANGE = {}; // Private marker object\r\n\r\nCSSStyleDeclaration.prototype = Object.create(Object.prototype, {\r\n\r\n // Return the parsed form of the element's style attribute.\r\n // If the element's style attribute has never been parsed\r\n // or if it has changed since the last parse, then reparse it\r\n // Note that the styles don't get parsed until they're actually needed\r\n _parsed: { get: function() {\r\n if (!this._parsedStyles || this.cssText !== this._lastParsedText) {\r\n var text = this.cssText;\r\n this._parsedStyles = parseStyles(text);\r\n this._lastParsedText = text;\r\n delete this._names;\r\n }\r\n return this._parsedStyles;\r\n }},\r\n\r\n // Call this method any time the parsed representation of the\r\n // style changes. It converts the style properties to a string and\r\n // sets cssText and the element's style attribute\r\n _serialize: { value: function() {\r\n var styles = this._parsed;\r\n var s = \"\";\r\n\r\n for(var name in styles.property) {\r\n if (s) s += \" \";\r\n s += name + \": \" + styles.property[name];\r\n if (styles.priority[name]) {\r\n s += \" !\" + styles.priority[name];\r\n }\r\n s += \";\";\r\n }\r\n\r\n this.cssText = s; // also sets the style attribute\r\n this._lastParsedText = s; // so we don't reparse\r\n delete this._names;\r\n }},\r\n\r\n cssText: {\r\n get: function() {\r\n // XXX: this is a CSSStyleDeclaration for an element.\r\n // A different impl might be necessary for a set of styles\r\n // associated returned by getComputedStyle(), e.g.\r\n return this._element.getAttribute(\"style\");\r\n },\r\n set: function(value) {\r\n // XXX: I should parse and serialize the value to\r\n // normalize it and remove errors. FF and chrome do that.\r\n this._element.setAttribute(\"style\", value);\r\n }\r\n },\r\n\r\n length: { get: function() {\r\n if (!this._names)\r\n this._names = Object.getOwnPropertyNames(this._parsed.property);\r\n return this._names.length;\r\n }},\r\n\r\n item: { value: function(n) {\r\n if (!this._names)\r\n this._names = Object.getOwnPropertyNames(this._parsed.property);\r\n return this._names[n];\r\n }},\r\n\r\n getPropertyValue: { value: function(property) {\r\n property = property.toLowerCase();\r\n return this._parsed.property[property] || \"\";\r\n }},\r\n\r\n getPropertyPriority: { value: function(property) {\r\n property = property.toLowerCase();\r\n return this._parsed.priority[property] || \"\";\r\n }},\r\n\r\n setProperty: { value: function(property, value, priority) {\r\n property = property.toLowerCase();\r\n if (value === null || value === undefined) {\r\n value = \"\";\r\n }\r\n if (priority === null || priority === undefined) {\r\n priority = \"\";\r\n }\r\n\r\n // String coercion\r\n if (value !== NO_CHANGE) {\r\n value = \"\" + value;\r\n }\r\n\r\n value = value.trim();\r\n if (value === \"\") {\r\n this.removeProperty(property);\r\n return;\r\n }\r\n\r\n if (priority !== \"\" && priority !== NO_CHANGE &&\r\n !/^important$/i.test(priority)) {\r\n return;\r\n }\r\n\r\n var styles = this._parsed;\r\n if (value === NO_CHANGE) {\r\n if (!styles.property[property]) {\r\n return; // Not a valid property name.\r\n }\r\n if (priority !== \"\") {\r\n styles.priority[property] = \"important\";\r\n } else {\r\n delete styles.priority[property];\r\n }\r\n } else {\r\n // We don't just accept the property value. Instead\r\n // we parse it to ensure that it is something valid.\r\n // If it contains a semicolon it is invalid\r\n if (value.indexOf(\";\") !== -1) return;\r\n\r\n var newprops = parseStyles(property + \":\" + value);\r\n if (Object.getOwnPropertyNames(newprops.property).length === 0) {\r\n return; // no valid property found\r\n }\r\n if (Object.getOwnPropertyNames(newprops.priority).length !== 0) {\r\n return; // if the value included '!important' it wasn't valid.\r\n }\r\n\r\n // XXX handle shorthand properties\r\n\r\n for (var p in newprops.property) {\r\n styles.property[p] = newprops.property[p];\r\n if (priority === NO_CHANGE) {\r\n continue;\r\n } else if (priority !== \"\") {\r\n styles.priority[p] = \"important\";\r\n } else if (styles.priority[p]) {\r\n delete styles.priority[p];\r\n }\r\n }\r\n }\r\n\r\n // Serialize and update cssText and element.style!\r\n this._serialize();\r\n }},\r\n\r\n setPropertyValue: { value: function(property, value) {\r\n return this.setProperty(property, value, NO_CHANGE);\r\n }},\r\n\r\n setPropertyPriority: { value: function(property, priority) {\r\n return this.setProperty(property, NO_CHANGE, priority);\r\n }},\r\n\r\n removeProperty: { value: function(property) {\r\n property = property.toLowerCase();\r\n var styles = this._parsed;\r\n if (property in styles.property) {\r\n delete styles.property[property];\r\n delete styles.priority[property];\r\n\r\n // Serialize and update cssText and element.style!\r\n this._serialize();\r\n }\r\n }},\r\n});\r\n","\"use strict\";\r\nvar URL = require('./URL');\r\n\r\nmodule.exports = URLUtils;\r\n\r\n// Allow the `x == null` pattern. This is eslint's \"null: 'ignore'\" option,\r\n// but jshint doesn't support this.\r\n/* jshint eqeqeq: false */\r\n\r\n// This is an abstract superclass for Location, HTMLAnchorElement and\r\n// other types that have the standard complement of \"URL decomposition\r\n// IDL attributes\". This is now standardized as URLUtils, see:\r\n// https://url.spec.whatwg.org/#urlutils\r\n// Subclasses must define a getter/setter on href.\r\n// The getter and setter methods parse and rebuild the URL on each\r\n// invocation; there is no attempt to cache the value and be more efficient\r\nfunction URLUtils() {}\r\nURLUtils.prototype = Object.create(Object.prototype, {\r\n\r\n _url: { get: function() {\r\n // XXX: this should do the \"Reinitialize url\" steps, and \"null\" should\r\n // be a valid return value.\r\n return new URL(this.href);\r\n } },\r\n\r\n protocol: {\r\n get: function() {\r\n var url = this._url;\r\n if (url && url.scheme) return url.scheme + \":\";\r\n else return \":\";\r\n },\r\n set: function(v) {\r\n var output = this.href;\r\n var url = new URL(output);\r\n if (url.isAbsolute()) {\r\n v = v.replace(/:+$/, \"\");\r\n v = v.replace(/[^-+\\.a-zA-Z0-9]/g, URL.percentEncode);\r\n if (v.length > 0) {\r\n url.scheme = v;\r\n output = url.toString();\r\n }\r\n }\r\n this.href = output;\r\n },\r\n },\r\n\r\n host: {\r\n get: function() {\r\n var url = this._url;\r\n if (url.isAbsolute() && url.isAuthorityBased())\r\n return url.host + (url.port ? (\":\" + url.port) : \"\");\r\n else\r\n return \"\";\r\n },\r\n set: function(v) {\r\n var output = this.href;\r\n var url = new URL(output);\r\n if (url.isAbsolute() && url.isAuthorityBased()) {\r\n v = v.replace(/[^-+\\._~!$&'()*,;:=a-zA-Z0-9]/g, URL.percentEncode);\r\n if (v.length > 0) {\r\n url.host = v;\r\n delete url.port;\r\n output = url.toString();\r\n }\r\n }\r\n this.href = output;\r\n },\r\n },\r\n\r\n hostname: {\r\n get: function() {\r\n var url = this._url;\r\n if (url.isAbsolute() && url.isAuthorityBased())\r\n return url.host;\r\n else\r\n return \"\";\r\n },\r\n set: function(v) {\r\n var output = this.href;\r\n var url = new URL(output);\r\n if (url.isAbsolute() && url.isAuthorityBased()) {\r\n v = v.replace(/^\\/+/, \"\");\r\n v = v.replace(/[^-+\\._~!$&'()*,;:=a-zA-Z0-9]/g, URL.percentEncode);\r\n if (v.length > 0) {\r\n url.host = v;\r\n output = url.toString();\r\n }\r\n }\r\n this.href = output;\r\n },\r\n },\r\n\r\n port: {\r\n get: function() {\r\n var url = this._url;\r\n if (url.isAbsolute() && url.isAuthorityBased() && url.port!==undefined)\r\n return url.port;\r\n else\r\n return \"\";\r\n },\r\n set: function(v) {\r\n var output = this.href;\r\n var url = new URL(output);\r\n if (url.isAbsolute() && url.isAuthorityBased()) {\r\n v = '' + v;\r\n v = v.replace(/[^0-9].*$/, \"\");\r\n v = v.replace(/^0+/, \"\");\r\n if (v.length === 0) v = \"0\";\r\n if (parseInt(v, 10) <= 65535) {\r\n url.port = v;\r\n output = url.toString();\r\n }\r\n }\r\n this.href = output;\r\n },\r\n },\r\n\r\n pathname: {\r\n get: function() {\r\n var url = this._url;\r\n if (url.isAbsolute() && url.isHierarchical())\r\n return url.path;\r\n else\r\n return \"\";\r\n },\r\n set: function(v) {\r\n var output = this.href;\r\n var url = new URL(output);\r\n if (url.isAbsolute() && url.isHierarchical()) {\r\n if (v.charAt(0) !== \"/\")\r\n v = \"/\" + v;\r\n v = v.replace(/[^-+\\._~!$&'()*,;:=@\\/a-zA-Z0-9]/g, URL.percentEncode);\r\n url.path = v;\r\n output = url.toString();\r\n }\r\n this.href = output;\r\n },\r\n },\r\n\r\n search: {\r\n get: function() {\r\n var url = this._url;\r\n if (url.isAbsolute() && url.isHierarchical() && url.query!==undefined)\r\n return \"?\" + url.query;\r\n else\r\n return \"\";\r\n },\r\n set: function(v) {\r\n var output = this.href;\r\n var url = new URL(output);\r\n if (url.isAbsolute() && url.isHierarchical()) {\r\n if (v.charAt(0) === \"?\") v = v.substring(1);\r\n v = v.replace(/[^-+\\._~!$&'()*,;:=@\\/?a-zA-Z0-9]/g, URL.percentEncode);\r\n url.query = v;\r\n output = url.toString();\r\n }\r\n this.href = output;\r\n },\r\n },\r\n\r\n hash: {\r\n get: function() {\r\n var url = this._url;\r\n if (url == null || url.fragment == null || url.fragment === '') {\r\n return \"\";\r\n } else {\r\n return \"#\" + url.fragment;\r\n }\r\n },\r\n set: function(v) {\r\n var output = this.href;\r\n var url = new URL(output);\r\n\r\n if (v.charAt(0) === \"#\") v = v.substring(1);\r\n v = v.replace(/[^-+\\._~!$&'()*,;:=@\\/?a-zA-Z0-9]/g, URL.percentEncode);\r\n url.fragment = v;\r\n output = url.toString();\r\n\r\n this.href = output;\r\n },\r\n },\r\n\r\n username: {\r\n get: function() {\r\n var url = this._url;\r\n return url.username || '';\r\n },\r\n set: function(v) {\r\n var output = this.href;\r\n var url = new URL(output);\r\n if (url.isAbsolute()) {\r\n v = v.replace(/[\\x00-\\x1F\\x7F-\\uFFFF \"#<>?`\\/@\\\\:]/g, URL.percentEncode);\r\n url.username = v;\r\n output = url.toString();\r\n }\r\n this.href = output;\r\n },\r\n },\r\n\r\n password: {\r\n get: function() {\r\n var url = this._url;\r\n return url.password || '';\r\n },\r\n set: function(v) {\r\n var output = this.href;\r\n var url = new URL(output);\r\n if (url.isAbsolute()) {\r\n if (v==='') {\r\n url.password = null;\r\n } else {\r\n v = v.replace(/[\\x00-\\x1F\\x7F-\\uFFFF \"#<>?`\\/@\\\\]/g, URL.percentEncode);\r\n url.password = v;\r\n }\r\n output = url.toString();\r\n }\r\n this.href = output;\r\n },\r\n },\r\n\r\n origin: { get: function() {\r\n var url = this._url;\r\n if (url == null) { return ''; }\r\n var originForPort = function(defaultPort) {\r\n var origin = [url.scheme, url.host, +url.port || defaultPort];\r\n // XXX should be \"unicode serialization\"\r\n return origin[0] + '://' + origin[1] +\r\n (origin[2] === defaultPort ? '' : (':' + origin[2]));\r\n };\r\n switch (url.scheme) {\r\n case 'ftp':\r\n return originForPort(21);\r\n case 'gopher':\r\n return originForPort(70);\r\n case 'http':\r\n case 'ws':\r\n return originForPort(80);\r\n case 'https':\r\n case 'wss':\r\n return originForPort(443);\r\n default:\r\n // this is what chrome does\r\n return url.scheme + '://';\r\n }\r\n } },\r\n\r\n /*\r\n searchParams: {\r\n get: function() {\r\n var url = this._url;\r\n // XXX\r\n },\r\n set: function(v) {\r\n var output = this.href;\r\n var url = new URL(output);\r\n // XXX\r\n this.href = output;\r\n },\r\n },\r\n */\r\n});\r\n\r\nURLUtils._inherit = function(proto) {\r\n // copy getters/setters from URLUtils to o.\r\n Object.getOwnPropertyNames(URLUtils.prototype).forEach(function(p) {\r\n if (p==='constructor' || p==='href') { return; }\r\n var desc = Object.getOwnPropertyDescriptor(URLUtils.prototype, p);\r\n Object.defineProperty(proto, p, desc);\r\n });\r\n};\r\n","\"use strict\";\r\n\r\nvar attributes = require('./attributes');\r\nvar isApiWritable = require(\"./config\").isApiWritable;\r\n\r\nmodule.exports = function(spec, defaultConstructor, tagList, tagNameToImpl) {\r\n var c = spec.ctor;\r\n if (c) {\r\n var props = spec.props || {};\r\n\r\n if (spec.attributes) {\r\n for (var n in spec.attributes) {\r\n var attr = spec.attributes[n];\r\n if (typeof attr !== 'object' || Array.isArray(attr)) attr = {type: attr};\r\n if (!attr.name) attr.name = n.toLowerCase();\r\n props[n] = attributes.property(attr);\r\n }\r\n }\r\n\r\n props.constructor = { value : c, writable: isApiWritable };\r\n c.prototype = Object.create((spec.superclass || defaultConstructor).prototype, props);\r\n if (spec.events) {\r\n addEventHandlers(c, spec.events);\r\n }\r\n tagList[spec.name] = c;\r\n }\r\n else {\r\n c = defaultConstructor;\r\n }\r\n\r\n (spec.tags || spec.tag && [spec.tag] || []).forEach(function(tag) {\r\n tagNameToImpl[tag] = c;\r\n });\r\n\r\n return c;\r\n};\r\n\r\nfunction EventHandlerBuilder(body, document, form, element) {\r\n this.body = body;\r\n this.document = document;\r\n this.form = form;\r\n this.element = element;\r\n}\r\n\r\nEventHandlerBuilder.prototype.build = function () {\r\n return () => {};\r\n};\r\n\r\nfunction EventHandlerChangeHandler(elt, name, oldval, newval) {\r\n var doc = elt.ownerDocument || Object.create(null);\r\n var form = elt.form || Object.create(null);\r\n elt[name] = new EventHandlerBuilder(newval, doc, form, elt).build();\r\n}\r\n\r\nfunction addEventHandlers(c, eventHandlerTypes) {\r\n var p = c.prototype;\r\n eventHandlerTypes.forEach(function(type) {\r\n // Define the event handler registration IDL attribute for this type\r\n Object.defineProperty(p, \"on\" + type, {\r\n get: function() {\r\n return this._getEventHandler(type);\r\n },\r\n set: function(v) {\r\n this._setEventHandler(type, v);\r\n },\r\n });\r\n\r\n // Define special behavior for the content attribute as well\r\n attributes.registerChangeHandler(c, \"on\" + type, EventHandlerChangeHandler);\r\n });\r\n}\r\n","\"use strict\";\r\nvar Node = require('./Node');\r\nvar Element = require('./Element');\r\nvar CSSStyleDeclaration = require('./CSSStyleDeclaration');\r\nvar utils = require('./utils');\r\nvar URLUtils = require('./URLUtils');\r\nvar defineElement = require('./defineElement');\r\n\r\nvar htmlElements = exports.elements = {};\r\nvar htmlNameToImpl = Object.create(null);\r\n\r\nexports.createElement = function(doc, localName, prefix) {\r\n var impl = htmlNameToImpl[localName] || HTMLUnknownElement;\r\n return new impl(doc, localName, prefix);\r\n};\r\n\r\nfunction define(spec) {\r\n return defineElement(spec, HTMLElement, htmlElements, htmlNameToImpl);\r\n}\r\n\r\nfunction URL(attr) {\r\n return {\r\n get: function() {\r\n var v = this._getattr(attr);\r\n if (v === null) { return ''; }\r\n var url = this.doc._resolve(v);\r\n return (url === null) ? v : url;\r\n },\r\n set: function(value) {\r\n this._setattr(attr, value);\r\n }\r\n };\r\n}\r\n\r\nfunction CORS(attr) {\r\n return {\r\n get: function() {\r\n var v = this._getattr(attr);\r\n if (v === null) { return null; }\r\n if (v.toLowerCase() === 'use-credentials') { return 'use-credentials'; }\r\n return 'anonymous';\r\n },\r\n set: function(value) {\r\n if (value===null || value===undefined) {\r\n this.removeAttribute(attr);\r\n } else {\r\n this._setattr(attr, value);\r\n }\r\n }\r\n };\r\n}\r\n\r\nconst REFERRER = {\r\n type: [\"\", \"no-referrer\", \"no-referrer-when-downgrade\", \"same-origin\", \"origin\", \"strict-origin\", \"origin-when-cross-origin\", \"strict-origin-when-cross-origin\", \"unsafe-url\"],\r\n missing: '',\r\n};\r\n\r\n\r\n// XXX: the default value for tabIndex should be 0 if the element is\r\n// focusable and -1 if it is not. But the full definition of focusable\r\n// is actually hard to compute, so for now, I'll follow Firefox and\r\n// just base the default value on the type of the element.\r\nvar focusableElements = {\r\n \"A\":true, \"LINK\":true, \"BUTTON\":true, \"INPUT\":true,\r\n \"SELECT\":true, \"TEXTAREA\":true, \"COMMAND\":true\r\n};\r\n\r\nvar HTMLFormElement = function(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n this._form = null; // Prevent later deoptimization\r\n};\r\n\r\nvar HTMLElement = exports.HTMLElement = define({\r\n superclass: Element,\r\n name: 'HTMLElement',\r\n ctor: function HTMLElement(doc, localName, prefix) {\r\n Element.call(this, doc, localName, utils.NAMESPACE.HTML, prefix);\r\n },\r\n props: {\r\n dangerouslySetInnerHTML: {\r\n set: function (v) {\r\n this._innerHTML = v;\r\n },\r\n },\r\n innerHTML: {\r\n get: function() {\r\n return this.serialize();\r\n },\r\n set: function(v) {\r\n var parser = this.ownerDocument.implementation.mozHTMLParser(\r\n this.ownerDocument._address,\r\n this);\r\n parser.parse(v===null ? '' : String(v), true);\r\n\r\n // Remove any existing children of this node\r\n var target = (this instanceof htmlNameToImpl.template) ?\r\n this.content : this;\r\n while(target.hasChildNodes())\r\n target.removeChild(target.firstChild);\r\n\r\n // Now copy newly parsed children to this node\r\n target.appendChild(parser._asDocumentFragment());\r\n }\r\n },\r\n style: { get: function() {\r\n if (!this._style)\r\n this._style = new CSSStyleDeclaration(this);\r\n return this._style;\r\n }, set: function(v) {\r\n if (v===null||v===undefined) { v = ''; }\r\n this._setattr('style', String(v));\r\n }},\r\n\r\n // These can't really be implemented server-side in a reasonable way.\r\n blur: { value: function() {}},\r\n focus: { value: function() {}},\r\n forceSpellCheck: { value: function() {}},\r\n\r\n click: { value: function() {\r\n if (this._click_in_progress) return;\r\n this._click_in_progress = true;\r\n try {\r\n if (this._pre_click_activation_steps)\r\n this._pre_click_activation_steps();\r\n\r\n var event = this.ownerDocument.createEvent(\"MouseEvent\");\r\n event.initMouseEvent(\"click\", true, true,\r\n this.ownerDocument.defaultView, 1,\r\n 0, 0, 0, 0,\r\n // These 4 should be initialized with\r\n // the actually current keyboard state\r\n // somehow...\r\n false, false, false, false,\r\n 0, null\r\n );\r\n\r\n // Dispatch this as an untrusted event since it is synthetic\r\n var success = this.dispatchEvent(event);\r\n\r\n if (success) {\r\n if (this._post_click_activation_steps)\r\n this._post_click_activation_steps(event);\r\n }\r\n else {\r\n if (this._cancelled_activation_steps)\r\n this._cancelled_activation_steps();\r\n }\r\n }\r\n finally {\r\n this._click_in_progress = false;\r\n }\r\n }},\r\n submit: { value: utils.nyi },\r\n },\r\n attributes: {\r\n title: String,\r\n lang: String,\r\n dir: {type: [\"ltr\", \"rtl\", \"auto\"], missing: ''},\r\n draggable: {type: [\"true\", \"false\"], treatNullAsEmptyString: true },\r\n spellcheck: {type: [\"true\", \"false\"], missing: ''},\r\n enterKeyHint: {type: [\"enter\", \"done\", \"go\", \"next\", \"previous\", \"search\", \"send\"], missing: ''},\r\n autoCapitalize: {type: [\"off\", \"on\", \"none\", \"sentences\", \"words\", \"characters\"], missing: '' },\r\n autoFocus: Boolean,\r\n accessKey: String,\r\n nonce: String,\r\n hidden: Boolean,\r\n translate: {type: [\"no\", \"yes\"], missing: '' },\r\n tabIndex: {type: \"long\", default: function() {\r\n if (this.tagName in focusableElements ||\r\n this.contentEditable)\r\n return 0;\r\n else\r\n return -1;\r\n }}\r\n },\r\n events: [\r\n \"abort\", \"canplay\", \"canplaythrough\", \"change\", \"click\", \"contextmenu\",\r\n \"cuechange\", \"dblclick\", \"drag\", \"dragend\", \"dragenter\", \"dragleave\",\r\n \"dragover\", \"dragstart\", \"drop\", \"durationchange\", \"emptied\", \"ended\",\r\n \"input\", \"invalid\", \"keydown\", \"keypress\", \"keyup\", \"loadeddata\",\r\n \"loadedmetadata\", \"loadstart\", \"mousedown\", \"mousemove\", \"mouseout\",\r\n \"mouseover\", \"mouseup\", \"mousewheel\", \"pause\", \"play\", \"playing\",\r\n \"progress\", \"ratechange\", \"readystatechange\", \"reset\", \"seeked\",\r\n \"seeking\", \"select\", \"show\", \"stalled\", \"submit\", \"suspend\",\r\n \"timeupdate\", \"volumechange\", \"waiting\",\r\n\r\n // These last 5 event types will be overriden by HTMLBodyElement\r\n \"blur\", \"error\", \"focus\", \"load\", \"scroll\"\r\n ]\r\n});\r\n\r\n\r\n// XXX: reflect contextmenu as contextMenu, with element type\r\n\r\n\r\n// style: the spec doesn't call this a reflected attribute.\r\n// may want to handle it manually.\r\n\r\n// contentEditable: enumerated, not clear if it is actually\r\n// reflected or requires custom getter/setter. Not listed as\r\n// \"limited to known values\". Raises syntax_err on bad setting,\r\n// so I think this is custom.\r\n\r\n// contextmenu: content is element id, idl type is an element\r\n// draggable: boolean, but not a reflected attribute\r\n// dropzone: reflected SettableTokenList, experimental, so don't\r\n// implement it right away.\r\n\r\n// data-* attributes: need special handling in setAttribute?\r\n// Or maybe that isn't necessary. Can I just scan the attribute list\r\n// when building the dataset? Liveness and caching issues?\r\n\r\n// microdata attributes: many are simple reflected attributes, but\r\n// I'm not going to implement this now.\r\n\r\n\r\nvar HTMLUnknownElement = define({\r\n name: 'HTMLUnknownElement',\r\n ctor: function HTMLUnknownElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n }\r\n});\r\n\r\n\r\nvar formAssociatedProps = {\r\n // See http://www.w3.org/TR/html5/association-of-controls-and-forms.html#form-owner\r\n form: { get: function() {\r\n return this._form;\r\n }}\r\n};\r\n\r\ndefine({\r\n tag: 'a',\r\n name: 'HTMLAnchorElement',\r\n ctor: function HTMLAnchorElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n props: {\r\n _post_click_activation_steps: { value: function(e) {\r\n if (this.href) {\r\n // Follow the link\r\n // XXX: this is just a quick hack\r\n // XXX: the HTML spec probably requires more than this\r\n this.ownerDocument.defaultView.location = this.href;\r\n }\r\n }},\r\n },\r\n attributes: {\r\n href: URL,\r\n ping: String,\r\n download: String,\r\n target: String,\r\n rel: String,\r\n media: String,\r\n hreflang: String,\r\n type: String,\r\n referrerPolicy: REFERRER,\r\n // Obsolete\r\n coords: String,\r\n charset: String,\r\n name: String,\r\n rev: String,\r\n shape: String,\r\n }\r\n});\r\n// Latest WhatWG spec says these methods come via HTMLHyperlinkElementUtils\r\nURLUtils._inherit(htmlNameToImpl.a.prototype);\r\n\r\ndefine({\r\n tag: 'area',\r\n name: 'HTMLAreaElement',\r\n ctor: function HTMLAreaElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n alt: String,\r\n target: String,\r\n download: String,\r\n rel: String,\r\n media: String,\r\n href: URL,\r\n hreflang: String,\r\n type: String,\r\n shape: String,\r\n coords: String,\r\n ping: String,\r\n // XXX: also reflect relList\r\n referrerPolicy: REFERRER,\r\n // Obsolete\r\n noHref: Boolean,\r\n }\r\n});\r\n// Latest WhatWG spec says these methods come via HTMLHyperlinkElementUtils\r\nURLUtils._inherit(htmlNameToImpl.area.prototype);\r\n\r\ndefine({\r\n tag: 'br',\r\n name: 'HTMLBRElement',\r\n ctor: function HTMLBRElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n // Obsolete\r\n clear: String\r\n },\r\n});\r\n\r\ndefine({\r\n tag: 'base',\r\n name: 'HTMLBaseElement',\r\n ctor: function HTMLBaseElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n \"target\": String\r\n }\r\n});\r\n\r\n\r\ndefine({\r\n tag: 'body',\r\n name: 'HTMLBodyElement',\r\n ctor: function HTMLBodyElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n // Certain event handler attributes on a <body> tag actually set\r\n // handlers for the window rather than just that element. Define\r\n // getters and setters for those here. Note that some of these override\r\n // properties on HTMLElement.prototype.\r\n // XXX: If I add support for <frameset>, these have to go there, too\r\n // XXX\r\n // When the Window object is implemented, these attribute will have\r\n // to work with the same-named attributes on the Window.\r\n events: [\r\n \"afterprint\", \"beforeprint\", \"beforeunload\", \"blur\", \"error\",\r\n \"focus\",\"hashchange\", \"load\", \"message\", \"offline\", \"online\",\r\n \"pagehide\", \"pageshow\",\"popstate\",\"resize\",\"scroll\",\"storage\",\"unload\",\r\n ],\r\n attributes: {\r\n // Obsolete\r\n text: { type: String, treatNullAsEmptyString: true },\r\n link: { type: String, treatNullAsEmptyString: true },\r\n vLink: { type: String, treatNullAsEmptyString: true },\r\n aLink: { type: String, treatNullAsEmptyString: true },\r\n bgColor: { type: String, treatNullAsEmptyString: true },\r\n background: String,\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'button',\r\n name: 'HTMLButtonElement',\r\n ctor: function HTMLButtonElement(doc, localName, prefix) {\r\n HTMLFormElement.call(this, doc, localName, prefix);\r\n },\r\n props: formAssociatedProps,\r\n attributes: {\r\n name: String,\r\n value: String,\r\n disabled: Boolean,\r\n autofocus: Boolean,\r\n type: { type:[\"submit\", \"reset\", \"button\", \"menu\"], missing: 'submit' },\r\n formTarget: String,\r\n formAction: URL,\r\n formNoValidate: Boolean,\r\n formMethod: { type: [\"get\", \"post\", \"dialog\"], invalid: 'get', missing: '' },\r\n formEnctype: { type: [\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"], invalid: \"application/x-www-form-urlencoded\", missing: '' },\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'dl',\r\n name: 'HTMLDListElement',\r\n ctor: function HTMLDListElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n // Obsolete\r\n compact: Boolean,\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'data',\r\n name: 'HTMLDataElement',\r\n ctor: function HTMLDataElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n value: String,\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'datalist',\r\n name: 'HTMLDataListElement',\r\n ctor: function HTMLDataListElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'details',\r\n name: 'HTMLDetailsElement',\r\n ctor: function HTMLDetailsElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n \"open\": Boolean\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'div',\r\n name: 'HTMLDivElement',\r\n ctor: function HTMLDivElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n // Obsolete\r\n align: String\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'embed',\r\n name: 'HTMLEmbedElement',\r\n ctor: function HTMLEmbedElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n src: URL,\r\n type: String,\r\n width: String,\r\n height: String,\r\n // Obsolete\r\n align: String,\r\n name: String,\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'fieldset',\r\n name: 'HTMLFieldSetElement',\r\n ctor: function HTMLFieldSetElement(doc, localName, prefix) {\r\n HTMLFormElement.call(this, doc, localName, prefix);\r\n },\r\n props: formAssociatedProps,\r\n attributes: {\r\n disabled: Boolean,\r\n name: String\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'form',\r\n name: 'HTMLFormElement',\r\n ctor: function HTMLFormElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n action: String,\r\n autocomplete: {type:['on', 'off'], missing: 'on'},\r\n name: String,\r\n acceptCharset: {name: \"accept-charset\"},\r\n target: String,\r\n noValidate: Boolean,\r\n method: { type: [\"get\", \"post\", \"dialog\"], invalid: 'get', missing: 'get' },\r\n // Both enctype and encoding reflect the enctype content attribute\r\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\" },\r\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\" },\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'hr',\r\n name: 'HTMLHRElement',\r\n ctor: function HTMLHRElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n // Obsolete\r\n align: String,\r\n color: String,\r\n noShade: Boolean,\r\n size: String,\r\n width: String,\r\n },\r\n});\r\n\r\ndefine({\r\n tag: 'head',\r\n name: 'HTMLHeadElement',\r\n ctor: function HTMLHeadElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n }\r\n});\r\n\r\ndefine({\r\n tags: ['h1','h2','h3','h4','h5','h6'],\r\n name: 'HTMLHeadingElement',\r\n ctor: function HTMLHeadingElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n // Obsolete\r\n align: String,\r\n },\r\n});\r\n\r\ndefine({\r\n tag: 'html',\r\n name: 'HTMLHtmlElement',\r\n ctor: function HTMLHtmlElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n xmlns: URL,\r\n // Obsolete\r\n version: String\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'iframe',\r\n name: 'HTMLIFrameElement',\r\n ctor: function HTMLIFrameElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n src: URL,\r\n srcdoc: String,\r\n name: String,\r\n width: String,\r\n height: String,\r\n // XXX: sandbox is a reflected settable token list\r\n seamless: Boolean,\r\n allow: Boolean,\r\n allowFullscreen: Boolean,\r\n allowUserMedia: Boolean,\r\n allowPaymentRequest: Boolean,\r\n referrerPolicy: REFERRER,\r\n loading: { type:['eager','lazy'], treatNullAsEmptyString: true },\r\n // Obsolete\r\n align: String,\r\n scrolling: String,\r\n frameBorder: String,\r\n longDesc: URL,\r\n marginHeight: { type: String, treatNullAsEmptyString: true },\r\n marginWidth: { type: String, treatNullAsEmptyString: true },\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'img',\r\n name: 'HTMLImageElement',\r\n ctor: function HTMLImageElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n alt: String,\r\n src: URL,\r\n srcset: String,\r\n crossOrigin: CORS,\r\n useMap: String,\r\n isMap: Boolean,\r\n sizes: String,\r\n height: { type: \"unsigned long\", default: 0 },\r\n width: { type: \"unsigned long\", default: 0 },\r\n referrerPolicy: REFERRER,\r\n loading: { type:['eager','lazy'], missing: '' },\r\n // Obsolete:\r\n name: String,\r\n lowsrc: URL,\r\n align: String,\r\n hspace: { type: \"unsigned long\", default: 0 },\r\n vspace: { type: \"unsigned long\", default: 0 },\r\n longDesc: URL,\r\n border: { type: String, treatNullAsEmptyString: true },\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'input',\r\n name: 'HTMLInputElement',\r\n ctor: function HTMLInputElement(doc, localName, prefix) {\r\n HTMLFormElement.call(this, doc, localName, prefix);\r\n },\r\n props: {\r\n form: formAssociatedProps.form,\r\n _post_click_activation_steps: { value: function(e) {\r\n if (this.type === 'checkbox') {\r\n this.checked = !this.checked;\r\n }\r\n else if (this.type === 'radio') {\r\n var group = this.form.getElementsByName(this.name);\r\n for (var i=group.length-1; i >= 0; i--) {\r\n var el = group[i];\r\n el.checked = (el === this);\r\n }\r\n }\r\n }},\r\n },\r\n attributes: {\r\n name: String,\r\n disabled: Boolean,\r\n autofocus: Boolean,\r\n accept: String,\r\n alt: String,\r\n max: String,\r\n min: String,\r\n pattern: String,\r\n placeholder: String,\r\n step: String,\r\n dirName: String,\r\n defaultValue: {name: 'value'},\r\n multiple: Boolean,\r\n required: Boolean,\r\n readOnly: Boolean,\r\n checked: Boolean,\r\n value: String,\r\n src: URL,\r\n defaultChecked: {name: 'checked', type: Boolean},\r\n size: {type: 'unsigned long', default: 20, min: 1, setmin: 1},\r\n width: {type: 'unsigned long', min: 0, setmin: 0, default: 0},\r\n height: {type: 'unsigned long', min: 0, setmin: 0, default: 0},\r\n minLength: {type: 'unsigned long', min: 0, setmin: 0, default: -1},\r\n maxLength: {type: 'unsigned long', min: 0, setmin: 0, default: -1},\r\n autocomplete: String, // It's complicated\r\n type: { type:\r\n [\"text\", \"hidden\", \"search\", \"tel\", \"url\", \"email\", \"password\",\r\n \"datetime\", \"date\", \"month\", \"week\", \"time\", \"datetime-local\",\r\n \"number\", \"range\", \"color\", \"checkbox\", \"radio\", \"file\", \"submit\",\r\n \"image\", \"reset\", \"button\"],\r\n missing: 'text' },\r\n formTarget: String,\r\n formNoValidate: Boolean,\r\n formMethod: { type: [\"get\", \"post\"], invalid: 'get', missing: '' },\r\n formEnctype: { type: [\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"], invalid: \"application/x-www-form-urlencoded\", missing: '' },\r\n inputMode: { type: [ \"verbatim\", \"latin\", \"latin-name\", \"latin-prose\", \"full-width-latin\", \"kana\", \"kana-name\", \"katakana\", \"numeric\", \"tel\", \"email\", \"url\" ], missing: '' },\r\n // Obsolete\r\n align: String,\r\n useMap: String,\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'keygen',\r\n name: 'HTMLKeygenElement',\r\n ctor: function HTMLKeygenElement(doc, localName, prefix) {\r\n HTMLFormElement.call(this, doc, localName, prefix);\r\n },\r\n props: formAssociatedProps,\r\n attributes: {\r\n name: String,\r\n disabled: Boolean,\r\n autofocus: Boolean,\r\n challenge: String,\r\n keytype: { type:[\"rsa\"], missing: '' },\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'li',\r\n name: 'HTMLLIElement',\r\n ctor: function HTMLLIElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n value: {type: \"long\", default: 0},\r\n // Obsolete\r\n type: String,\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'label',\r\n name: 'HTMLLabelElement',\r\n ctor: function HTMLLabelElement(doc, localName, prefix) {\r\n HTMLFormElement.call(this, doc, localName, prefix);\r\n },\r\n props: formAssociatedProps,\r\n attributes: {\r\n htmlFor: {name: 'for', type: String}\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'legend',\r\n name: 'HTMLLegendElement',\r\n ctor: function HTMLLegendElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n // Obsolete\r\n align: String\r\n },\r\n});\r\n\r\ndefine({\r\n tag: 'link',\r\n name: 'HTMLLinkElement',\r\n ctor: function HTMLLinkElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n // XXX Reflect DOMSettableTokenList sizes also DOMTokenList relList\r\n href: URL,\r\n rel: String,\r\n media: String,\r\n hreflang: String,\r\n type: String,\r\n crossOrigin: CORS,\r\n nonce: String,\r\n integrity: String,\r\n referrerPolicy: REFERRER,\r\n imageSizes: String,\r\n imageSrcset: String,\r\n // Obsolete\r\n charset: String,\r\n rev: String,\r\n target: String,\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'map',\r\n name: 'HTMLMapElement',\r\n ctor: function HTMLMapElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n name: String\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'menu',\r\n name: 'HTMLMenuElement',\r\n ctor: function HTMLMenuElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n // XXX: not quite right, default should be popup if parent element is\r\n // popup.\r\n type: { type: [ 'context', 'popup', 'toolbar' ], missing: 'toolbar' },\r\n label: String,\r\n // Obsolete\r\n compact: Boolean,\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'meta',\r\n name: 'HTMLMetaElement',\r\n ctor: function HTMLMetaElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n name: String,\r\n content: String,\r\n httpEquiv: {name: 'http-equiv', type: String},\r\n // Obsolete\r\n scheme: String,\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'meter',\r\n name: 'HTMLMeterElement',\r\n ctor: function HTMLMeterElement(doc, localName, prefix) {\r\n HTMLFormElement.call(this, doc, localName, prefix);\r\n },\r\n props: formAssociatedProps\r\n});\r\n\r\ndefine({\r\n tags: ['ins', 'del'],\r\n name: 'HTMLModElement',\r\n ctor: function HTMLModElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n cite: URL,\r\n dateTime: String\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'ol',\r\n name: 'HTMLOListElement',\r\n ctor: function HTMLOListElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n props: {\r\n // Utility function (see the start attribute default value). Returns\r\n // the number of <li> children of this element\r\n _numitems: { get: function() {\r\n var items = 0;\r\n this.childNodes.forEach(function(n) {\r\n if (n.nodeType === Node.ELEMENT_NODE && n.tagName === \"LI\")\r\n items++;\r\n });\r\n return items;\r\n }}\r\n },\r\n attributes: {\r\n type: String,\r\n reversed: Boolean,\r\n start: {\r\n type: \"long\",\r\n default: function() {\r\n // The default value of the start attribute is 1 unless the list is\r\n // reversed. Then it is the # of li children\r\n if (this.reversed)\r\n return this._numitems;\r\n else\r\n return 1;\r\n }\r\n },\r\n // Obsolete\r\n compact: Boolean,\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'object',\r\n name: 'HTMLObjectElement',\r\n ctor: function HTMLObjectElement(doc, localName, prefix) {\r\n HTMLFormElement.call(this, doc, localName, prefix);\r\n },\r\n props: formAssociatedProps,\r\n attributes: {\r\n data: URL,\r\n type: String,\r\n name: String,\r\n useMap: String,\r\n typeMustMatch: Boolean,\r\n width: String,\r\n height: String,\r\n // Obsolete\r\n align: String,\r\n archive: String,\r\n code: String,\r\n declare: Boolean,\r\n hspace: { type: \"unsigned long\", default: 0 },\r\n standby: String,\r\n vspace: { type: \"unsigned long\", default: 0 },\r\n codeBase: URL,\r\n codeType: String,\r\n border: { type: String, treatNullAsEmptyString: true },\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'optgroup',\r\n name: 'HTMLOptGroupElement',\r\n ctor: function HTMLOptGroupElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n disabled: Boolean,\r\n label: String\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'option',\r\n name: 'HTMLOptionElement',\r\n ctor: function HTMLOptionElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n props: {\r\n form: { get: function() {\r\n var p = this.parentNode;\r\n while (p && p.nodeType === Node.ELEMENT_NODE) {\r\n if (p.localName === 'select') return p.form;\r\n p = p.parentNode;\r\n }\r\n }},\r\n value: {\r\n get: function() { return this._getattr('value') || this.text; },\r\n set: function(v) { this._setattr('value', v); },\r\n },\r\n text: {\r\n get: function() {\r\n // Strip and collapse whitespace\r\n return this.textContent.replace(/[ \\t\\n\\f\\r]+/g, ' ').trim();\r\n },\r\n set: function(v) { this.textContent = v; },\r\n },\r\n // missing: index\r\n },\r\n attributes: {\r\n disabled: Boolean,\r\n defaultSelected: {name: 'selected', type: Boolean},\r\n label: String,\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'output',\r\n name: 'HTMLOutputElement',\r\n ctor: function HTMLOutputElement(doc, localName, prefix) {\r\n HTMLFormElement.call(this, doc, localName, prefix);\r\n },\r\n props: formAssociatedProps,\r\n attributes: {\r\n // XXX Reflect for/htmlFor as a settable token list\r\n name: String\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'p',\r\n name: 'HTMLParagraphElement',\r\n ctor: function HTMLParagraphElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n // Obsolete\r\n align: String\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'param',\r\n name: 'HTMLParamElement',\r\n ctor: function HTMLParamElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n name: String,\r\n value: String,\r\n // Obsolete\r\n type: String,\r\n valueType: String,\r\n }\r\n});\r\n\r\ndefine({\r\n tags: ['pre',/*legacy elements:*/'listing','xmp'],\r\n name: 'HTMLPreElement',\r\n ctor: function HTMLPreElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n // Obsolete\r\n width: { type: \"long\", default: 0 },\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'progress',\r\n name: 'HTMLProgressElement',\r\n ctor: function HTMLProgressElement(doc, localName, prefix) {\r\n HTMLFormElement.call(this, doc, localName, prefix);\r\n },\r\n props: formAssociatedProps,\r\n attributes: {\r\n max: {type: Number, float: true, default: 1.0, min: 0}\r\n }\r\n});\r\n\r\ndefine({\r\n tags: ['q', 'blockquote'],\r\n name: 'HTMLQuoteElement',\r\n ctor: function HTMLQuoteElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n cite: URL\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'script',\r\n name: 'HTMLScriptElement',\r\n ctor: function HTMLScriptElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n props: {\r\n text: {\r\n get: function() {\r\n var s = \"\";\r\n for(var i = 0, n = this.childNodes.length; i < n; i++) {\r\n var child = this.childNodes[i];\r\n if (child.nodeType === Node.TEXT_NODE)\r\n s += child._data;\r\n }\r\n return s;\r\n },\r\n set: function(value) {\r\n this.removeChildren();\r\n if (value !== null && value !== \"\") {\r\n this.appendChild(this.ownerDocument.createTextNode(value));\r\n }\r\n }\r\n }\r\n },\r\n attributes: {\r\n src: URL,\r\n type: String,\r\n charset: String,\r\n referrerPolicy: REFERRER,\r\n defer: Boolean,\r\n async: Boolean,\r\n nomodule: Boolean,\r\n crossOrigin: CORS,\r\n nonce: String,\r\n integrity: String,\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'select',\r\n name: 'HTMLSelectElement',\r\n ctor: function HTMLSelectElement(doc, localName, prefix) {\r\n HTMLFormElement.call(this, doc, localName, prefix);\r\n },\r\n props: {\r\n form: formAssociatedProps.form,\r\n options: { get: function() {\r\n return this.getElementsByTagName('option');\r\n }}\r\n },\r\n attributes: {\r\n autocomplete: String, // It's complicated\r\n name: String,\r\n disabled: Boolean,\r\n autofocus: Boolean,\r\n multiple: Boolean,\r\n required: Boolean,\r\n size: {type: \"unsigned long\", default: 0}\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'span',\r\n name: 'HTMLSpanElement',\r\n ctor: function HTMLSpanElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'style',\r\n name: 'HTMLStyleElement',\r\n ctor: function HTMLStyleElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n media: String,\r\n type: String,\r\n scoped: Boolean\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'caption',\r\n name: 'HTMLTableCaptionElement',\r\n ctor: function HTMLTableCaptionElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n // Obsolete\r\n align: String,\r\n }\r\n});\r\n\r\n\r\ndefine({\r\n name: 'HTMLTableCellElement',\r\n ctor: function HTMLTableCellElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n colSpan: {type: \"unsigned long\", default: 1},\r\n rowSpan: {type: \"unsigned long\", default: 1},\r\n //XXX Also reflect settable token list headers\r\n scope: { type: ['row','col','rowgroup','colgroup'], missing: '' },\r\n abbr: String,\r\n // Obsolete\r\n align: String,\r\n axis: String,\r\n height: String,\r\n width: String,\r\n ch: { name: 'char', type: String },\r\n chOff: { name: 'charoff', type: String },\r\n noWrap: Boolean,\r\n vAlign: String,\r\n bgColor: { type: String, treatNullAsEmptyString: true },\r\n }\r\n});\r\n\r\ndefine({\r\n tags: ['col', 'colgroup'],\r\n name: 'HTMLTableColElement',\r\n ctor: function HTMLTableColElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n span: {type: 'limited unsigned long with fallback', default: 1, min: 1},\r\n // Obsolete\r\n align: String,\r\n ch: { name: 'char', type: String },\r\n chOff: { name: 'charoff', type: String },\r\n vAlign: String,\r\n width: String,\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'table',\r\n name: 'HTMLTableElement',\r\n ctor: function HTMLTableElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n props: {\r\n rows: { get: function() {\r\n return this.getElementsByTagName('tr');\r\n }}\r\n },\r\n attributes: {\r\n // Obsolete\r\n align: String,\r\n border: String,\r\n frame: String,\r\n rules: String,\r\n summary: String,\r\n width: String,\r\n bgColor: { type: String, treatNullAsEmptyString: true },\r\n cellPadding: { type: String, treatNullAsEmptyString: true },\r\n cellSpacing: { type: String, treatNullAsEmptyString: true },\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'template',\r\n name: 'HTMLTemplateElement',\r\n ctor: function HTMLTemplateElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n this._contentFragment = doc._templateDoc.createDocumentFragment();\r\n },\r\n props: {\r\n content: { get: function() { return this._contentFragment; } },\r\n serialize: { value: function() { return this.content.serialize(); } }\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'tr',\r\n name: 'HTMLTableRowElement',\r\n ctor: function HTMLTableRowElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n props: {\r\n cells: { get: function() {\r\n return this.querySelectorAll('td,th');\r\n }}\r\n },\r\n attributes: {\r\n // Obsolete\r\n align: String,\r\n ch: { name: 'char', type: String },\r\n chOff: { name: 'charoff', type: String },\r\n vAlign: String,\r\n bgColor: { type: String, treatNullAsEmptyString: true },\r\n },\r\n});\r\n\r\ndefine({\r\n tags: ['thead', 'tfoot', 'tbody'],\r\n name: 'HTMLTableSectionElement',\r\n ctor: function HTMLTableSectionElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n props: {\r\n rows: { get: function() {\r\n return this.getElementsByTagName('tr');\r\n }}\r\n },\r\n attributes: {\r\n // Obsolete\r\n align: String,\r\n ch: { name: 'char', type: String },\r\n chOff: { name: 'charoff', type: String },\r\n vAlign: String,\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'textarea',\r\n name: 'HTMLTextAreaElement',\r\n ctor: function HTMLTextAreaElement(doc, localName, prefix) {\r\n HTMLFormElement.call(this, doc, localName, prefix);\r\n },\r\n props: {\r\n form: formAssociatedProps.form,\r\n type: { get: function() { return 'textarea'; } },\r\n defaultValue: {\r\n get: function() { return this.textContent; },\r\n set: function(v) { this.textContent = v; },\r\n },\r\n value: {\r\n get: function() { return this.defaultValue; /* never dirty */ },\r\n set: function(v) {\r\n // This isn't completely correct: according to the spec, this\r\n // should \"dirty\" the API value, and result in\r\n // `this.value !== this.defaultValue`. But for most of what\r\n // folks want to do, this implementation should be fine:\r\n this.defaultValue = v;\r\n },\r\n },\r\n textLength: { get: function() { return this.value.length; } },\r\n },\r\n attributes: {\r\n autocomplete: String, // It's complicated\r\n name: String,\r\n disabled: Boolean,\r\n autofocus: Boolean,\r\n placeholder: String,\r\n wrap: String,\r\n dirName: String,\r\n required: Boolean,\r\n readOnly: Boolean,\r\n rows: {type: 'limited unsigned long with fallback', default: 2 },\r\n cols: {type: 'limited unsigned long with fallback', default: 20 },\r\n maxLength: {type: 'unsigned long', min: 0, setmin: 0, default: -1},\r\n minLength: {type: 'unsigned long', min: 0, setmin: 0, default: -1},\r\n inputMode: { type: [ \"verbatim\", \"latin\", \"latin-name\", \"latin-prose\", \"full-width-latin\", \"kana\", \"kana-name\", \"katakana\", \"numeric\", \"tel\", \"email\", \"url\" ], missing: '' },\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'time',\r\n name: 'HTMLTimeElement',\r\n ctor: function HTMLTimeElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n dateTime: String,\r\n pubDate: Boolean\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'title',\r\n name: 'HTMLTitleElement',\r\n ctor: function HTMLTitleElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n props: {\r\n text: { get: function() {\r\n return this.textContent;\r\n }}\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'ul',\r\n name: 'HTMLUListElement',\r\n ctor: function HTMLUListElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n type: String,\r\n // Obsolete\r\n compact: Boolean,\r\n }\r\n});\r\n\r\ndefine({\r\n name: 'HTMLMediaElement',\r\n ctor: function HTMLMediaElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n src: URL,\r\n crossOrigin: CORS,\r\n preload: { type:[\"metadata\", \"none\", \"auto\", {value: \"\", alias: \"auto\"}], missing: 'auto' },\r\n loop: Boolean,\r\n autoplay: Boolean,\r\n mediaGroup: String,\r\n controls: Boolean,\r\n defaultMuted: {name: \"muted\", type: Boolean}\r\n }\r\n});\r\n\r\ndefine({\r\n name: 'HTMLAudioElement',\r\n tag: 'audio',\r\n superclass: htmlElements.HTMLMediaElement,\r\n ctor: function HTMLAudioElement(doc, localName, prefix) {\r\n htmlElements.HTMLMediaElement.call(this, doc, localName, prefix);\r\n }\r\n});\r\n\r\ndefine({\r\n name: 'HTMLVideoElement',\r\n tag: 'video',\r\n superclass: htmlElements.HTMLMediaElement,\r\n ctor: function HTMLVideoElement(doc, localName, prefix) {\r\n htmlElements.HTMLMediaElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n poster: URL,\r\n width: {type: \"unsigned long\", min: 0, default: 0 },\r\n height: {type: \"unsigned long\", min: 0, default: 0 }\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'td',\r\n name: 'HTMLTableDataCellElement',\r\n superclass: htmlElements.HTMLTableCellElement,\r\n ctor: function HTMLTableDataCellElement(doc, localName, prefix) {\r\n htmlElements.HTMLTableCellElement.call(this, doc, localName, prefix);\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'th',\r\n name: 'HTMLTableHeaderCellElement',\r\n superclass: htmlElements.HTMLTableCellElement,\r\n ctor: function HTMLTableHeaderCellElement(doc, localName, prefix) {\r\n htmlElements.HTMLTableCellElement.call(this, doc, localName, prefix);\r\n },\r\n});\r\n\r\ndefine({\r\n tag: 'frameset',\r\n name: 'HTMLFrameSetElement',\r\n ctor: function HTMLFrameSetElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'frame',\r\n name: 'HTMLFrameElement',\r\n ctor: function HTMLFrameElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'canvas',\r\n name: 'HTMLCanvasElement',\r\n ctor: function HTMLCanvasElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n props: {\r\n getContext: { value: utils.nyi },\r\n probablySupportsContext: { value: utils.nyi },\r\n setContext: { value: utils.nyi },\r\n transferControlToProxy: { value: utils.nyi },\r\n toDataURL: { value: utils.nyi },\r\n toBlob: { value: utils.nyi }\r\n },\r\n attributes: {\r\n width: { type: \"unsigned long\", default: 300},\r\n height: { type: \"unsigned long\", default: 150}\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'dialog',\r\n name: 'HTMLDialogElement',\r\n ctor: function HTMLDialogElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n props: {\r\n show: { value: utils.nyi },\r\n showModal: { value: utils.nyi },\r\n close: { value: utils.nyi }\r\n },\r\n attributes: {\r\n open: Boolean,\r\n returnValue: String\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'menuitem',\r\n name: 'HTMLMenuItemElement',\r\n ctor: function HTMLMenuItemElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n props: {\r\n // The menuitem's label\r\n _label: {\r\n get: function() {\r\n var val = this._getattr('label');\r\n if (val !== null && val !== '') { return val; }\r\n val = this.textContent;\r\n // Strip and collapse whitespace\r\n return val.replace(/[ \\t\\n\\f\\r]+/g, ' ').trim();\r\n }\r\n },\r\n // The menuitem label IDL attribute\r\n label: {\r\n get: function() {\r\n var val = this._getattr('label');\r\n if (val !== null) { return val; }\r\n return this._label;\r\n },\r\n set: function(v) {\r\n this._setattr('label', v);\r\n },\r\n }\r\n },\r\n attributes: {\r\n type: { type: [\"command\",\"checkbox\",\"radio\"], missing: 'command' },\r\n icon: URL,\r\n disabled: Boolean,\r\n checked: Boolean,\r\n radiogroup: String,\r\n default: Boolean\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'source',\r\n name: 'HTMLSourceElement',\r\n ctor: function HTMLSourceElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n srcset: String,\r\n sizes: String,\r\n media: String,\r\n src: URL,\r\n type: String,\r\n width: String,\r\n height: String,\r\n }\r\n});\r\n\r\ndefine({\r\n tag: 'track',\r\n name: 'HTMLTrackElement',\r\n ctor: function HTMLTrackElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n src: URL,\r\n srclang: String,\r\n label: String,\r\n default: Boolean,\r\n kind: { type: [\"subtitles\", \"captions\", \"descriptions\", \"chapters\", \"metadata\"], missing: 'subtitles', invalid: 'metadata' },\r\n },\r\n props: {\r\n NONE: { get: function() { return 0; } },\r\n LOADING: { get: function() { return 1; } },\r\n LOADED: { get: function() { return 2; } },\r\n ERROR: { get: function() { return 3; } },\r\n readyState: { get: utils.nyi },\r\n track: { get: utils.nyi }\r\n }\r\n});\r\n\r\ndefine({\r\n // obsolete\r\n tag: 'font',\r\n name: 'HTMLFontElement',\r\n ctor: function HTMLFontElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n color: { type: String, treatNullAsEmptyString: true },\r\n face: { type: String },\r\n size: { type: String },\r\n },\r\n});\r\n\r\ndefine({\r\n // obsolete\r\n tag: 'dir',\r\n name: 'HTMLDirectoryElement',\r\n ctor: function HTMLDirectoryElement(doc, localName, prefix) {\r\n HTMLElement.call(this, doc, localName, prefix);\r\n },\r\n attributes: {\r\n compact: Boolean,\r\n },\r\n});\r\n\r\ndefine({\r\n tags: [\r\n \"abbr\", \"address\", \"article\", \"aside\", \"b\", \"bdi\", \"bdo\", \"cite\", \"content\", \"code\",\r\n \"dd\", \"dfn\", \"dt\", \"em\", \"figcaption\", \"figure\", \"footer\", \"header\", \"hgroup\", \"i\", \"kbd\",\r\n \"main\", \"mark\", \"nav\", \"noscript\", \"rb\", \"rp\", \"rt\", \"rtc\",\r\n \"ruby\", \"s\", \"samp\", \"section\", \"small\", \"strong\", \"sub\", \"summary\", \"sup\", \"u\", \"var\", \"wbr\",\r\n // Legacy elements\r\n \"acronym\", \"basefont\", \"big\", \"center\", \"nobr\", \"noembed\", \"noframes\",\r\n \"plaintext\", \"strike\", \"tt\"\r\n ]\r\n});\r\n","\"use strict\";\r\nvar Element = require('./Element');\r\nvar defineElement = require('./defineElement');\r\nvar utils = require('./utils');\r\nvar CSSStyleDeclaration = require('./CSSStyleDeclaration');\r\n\r\nvar svgElements = exports.elements = {};\r\nvar svgNameToImpl = Object.create(null);\r\n\r\nexports.createElement = function(doc, localName, prefix) {\r\n var impl = svgNameToImpl[localName] || SVGElement;\r\n return new impl(doc, localName, prefix);\r\n};\r\n\r\nfunction define(spec) {\r\n return defineElement(spec, SVGElement, svgElements, svgNameToImpl);\r\n}\r\n\r\nvar SVGElement = define({\r\n superclass: Element,\r\n name: 'SVGElement',\r\n ctor: function SVGElement(doc, localName, prefix) {\r\n Element.call(this, doc, localName, utils.NAMESPACE.SVG, prefix);\r\n },\r\n props: {\r\n style: { get: function() {\r\n if (!this._style)\r\n this._style = new CSSStyleDeclaration(this);\r\n return this._style;\r\n }}\r\n }\r\n});\r\n\r\ndefine({\r\n name: 'SVGSVGElement',\r\n ctor: function SVGSVGElement(doc, localName, prefix) {\r\n SVGElement.call(this, doc, localName, prefix);\r\n },\r\n tag: 'svg',\r\n props: {\r\n createSVGRect: { value: function () {\r\n return exports.createElement(this.ownerDocument, 'rect', null);\r\n } }\r\n }\r\n});\r\n\r\ndefine({\r\n tags: [\r\n 'a', 'altGlyph', 'altGlyphDef', 'altGlyphItem', 'animate', 'animateColor', 'animateMotion', 'animateTransform',\r\n 'circle', 'clipPath', 'color-profile', 'cursor', 'defs', 'desc', 'ellipse', 'feBlend', 'feColorMatrix',\r\n 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight',\r\n 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode',\r\n 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence', 'filter',\r\n 'font', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignObject', 'g',\r\n 'glyph', 'glyphRef', 'hkern', 'image', 'line', 'linearGradient', 'marker', 'mask', 'metadata', 'missing-glyph',\r\n 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'script', 'set', 'stop', 'style',\r\n 'switch', 'symbol', 'text', 'textPath', 'title', 'tref', 'tspan', 'use', 'view', 'vkern'\r\n ]\r\n});\r\n","\"use strict\";\r\nmodule.exports = {\r\n VALUE: 1, // The value of a Text, Comment or PI node changed\r\n ATTR: 2, // A new attribute was added or an attribute value and/or prefix changed\r\n REMOVE_ATTR: 3, // An attribute was removed\r\n REMOVE: 4, // A node was removed\r\n MOVE: 5, // A node was moved\r\n INSERT: 6 // A node (or a subtree of nodes) was inserted\r\n};","\"use strict\";\r\nmodule.exports = Document;\r\n\r\nvar Node = require('./Node');\r\nvar NodeList = require('./NodeList');\r\nvar ContainerNode = require('./ContainerNode');\r\nvar Element = require('./Element');\r\nvar Text = require('./Text');\r\nvar Comment = require('./Comment');\r\nvar Event = require('./Event');\r\nvar DocumentFragment = require('./DocumentFragment');\r\nvar ProcessingInstruction = require('./ProcessingInstruction');\r\nvar DOMImplementation = require('./DOMImplementation');\r\nvar TreeWalker = require('./TreeWalker');\r\nvar NodeIterator = require('./NodeIterator');\r\nvar NodeFilter = require('./NodeFilter');\r\nvar URL = require('./URL');\r\nvar select = require('./select');\r\nvar events = require('./events');\r\nvar xml = require('./xmlnames');\r\nvar html = require('./htmlelts');\r\nvar svg = require('./svg');\r\nvar utils = require('./utils');\r\nvar MUTATE = require('./MutationConstants');\r\nvar NAMESPACE = utils.NAMESPACE;\r\nvar isApiWritable = require(\"./config\").isApiWritable;\r\n\r\nfunction Document(isHTML, address) {\r\n ContainerNode.call(this);\r\n this.nodeType = Node.DOCUMENT_NODE;\r\n this.isHTML = isHTML;\r\n this._address = address || 'about:blank';\r\n this.readyState = 'loading';\r\n this.implementation = new DOMImplementation(this);\r\n\r\n // DOMCore says that documents are always associated with themselves\r\n this.ownerDocument = null; // ... but W3C tests expect null\r\n this._contentType = isHTML ? 'text/html' : 'application/xml';\r\n\r\n // These will be initialized by our custom versions of\r\n // appendChild and insertBefore that override the inherited\r\n // Node methods.\r\n // XXX: override those methods!\r\n this.doctype = null;\r\n this.documentElement = null;\r\n\r\n // \"Associated inert template document\"\r\n this._templateDocCache = null;\r\n // List of active NodeIterators, see NodeIterator#_preremove()\r\n this._nodeIterators = null;\r\n\r\n // Documents are always rooted, by definition\r\n this._nid = 1;\r\n this._nextnid = 2; // For numbering children of the document\r\n this._nodes = [null, this]; // nid to node map\r\n\r\n // This maintains the mapping from element ids to element nodes.\r\n // We may need to update this mapping every time a node is rooted\r\n // or uprooted, and any time an attribute is added, removed or changed\r\n // on a rooted element.\r\n this.byId = Object.create(null);\r\n\r\n // This property holds a monotonically increasing value akin to\r\n // a timestamp used to record the last modification time of nodes\r\n // and their subtrees. See the lastModTime attribute and modify()\r\n // method of the Node class. And see FilteredElementList for an example\r\n // of the use of lastModTime\r\n this.modclock = 0;\r\n}\r\n\r\n// Map from lowercase event category names (used as arguments to\r\n// createEvent()) to the property name in the impl object of the\r\n// event constructor.\r\nvar supportedEvents = {\r\n event: 'Event',\r\n customevent: 'CustomEvent',\r\n uievent: 'UIEvent',\r\n mouseevent: 'MouseEvent'\r\n};\r\n\r\n// Certain arguments to document.createEvent() must be treated specially\r\nvar replacementEvent = {\r\n events: 'event',\r\n htmlevents: 'event',\r\n mouseevents: 'mouseevent',\r\n mutationevents: 'mutationevent',\r\n uievents: 'uievent'\r\n};\r\n\r\nvar mirrorAttr = function(f, name, defaultValue) {\r\n return {\r\n get: function() {\r\n var o = f.call(this);\r\n if (o) { return o[name]; }\r\n return defaultValue;\r\n },\r\n set: function(value) {\r\n var o = f.call(this);\r\n if (o) { o[name] = value; }\r\n },\r\n };\r\n};\r\n\r\n/** @spec https://dom.spec.whatwg.org/#validate-and-extract */\r\nfunction validateAndExtract(namespace, qualifiedName) {\r\n var prefix, localName, pos;\r\n if (namespace==='') { namespace = null; }\r\n // See https://github.com/whatwg/dom/issues/671\r\n // and https://github.com/whatwg/dom/issues/319\r\n if (!xml.isValidQName(qualifiedName)) {\r\n utils.InvalidCharacterError();\r\n }\r\n prefix = null;\r\n localName = qualifiedName;\r\n\r\n pos = qualifiedName.indexOf(':');\r\n if (pos >= 0) {\r\n prefix = qualifiedName.substring(0, pos);\r\n localName = qualifiedName.substring(pos+1);\r\n }\r\n if (prefix !== null && namespace === null) {\r\n utils.NamespaceError();\r\n }\r\n if (prefix === 'xml' && namespace !== NAMESPACE.XML) {\r\n utils.NamespaceError();\r\n }\r\n if ((prefix === 'xmlns' || qualifiedName === 'xmlns') &&\r\n namespace !== NAMESPACE.XMLNS) {\r\n utils.NamespaceError();\r\n }\r\n if (namespace === NAMESPACE.XMLNS && !(prefix==='xmlns' || qualifiedName==='xmlns')) {\r\n utils.NamespaceError();\r\n }\r\n return { namespace: namespace, prefix: prefix, localName: localName };\r\n}\r\n\r\nDocument.prototype = Object.create(ContainerNode.prototype, {\r\n // This method allows dom.js to communicate with a renderer\r\n // that displays the document in some way\r\n // XXX: I should probably move this to the window object\r\n _setMutationHandler: { value: function(handler) {\r\n this.mutationHandler = handler;\r\n }},\r\n\r\n // This method allows dom.js to receive event notifications\r\n // from the renderer.\r\n // XXX: I should probably move this to the window object\r\n _dispatchRendererEvent: { value: function(targetNid, type, details) {\r\n var target = this._nodes[targetNid];\r\n if (!target) return;\r\n target._dispatchEvent(new Event(type, details), true);\r\n }},\r\n\r\n nodeName: { value: '#document'},\r\n nodeValue: {\r\n get: function() {\r\n return null;\r\n },\r\n set: function() {}\r\n },\r\n\r\n // XXX: DOMCore may remove documentURI, so it is NYI for now\r\n documentURI: { get: function() { return this._address; }, set: utils.nyi },\r\n compatMode: { get: function() {\r\n // The _quirks property is set by the HTML parser\r\n return this._quirks ? 'BackCompat' : 'CSS1Compat';\r\n }},\r\n\r\n createTextNode: { value: function(data) {\r\n return new Text(this, String(data));\r\n }},\r\n createComment: { value: function(data) {\r\n return new Comment(this, data);\r\n }},\r\n createDocumentFragment: { value: function() {\r\n return new DocumentFragment(this);\r\n }},\r\n createProcessingInstruction: { value: function(target, data) {\r\n if (!xml.isValidName(target) || data.indexOf('?>') !== -1)\r\n utils.InvalidCharacterError();\r\n return new ProcessingInstruction(this, target, data);\r\n }},\r\n\r\n createAttribute: { value: function(localName) {\r\n localName = String(localName);\r\n if (!xml.isValidName(localName)) utils.InvalidCharacterError();\r\n if (this.isHTML) {\r\n localName = utils.toASCIILowerCase(localName);\r\n }\r\n return new Element._Attr(null, localName, null, null, '');\r\n }},\r\n createAttributeNS: { value: function(namespace, qualifiedName) {\r\n // Convert parameter types according to WebIDL\r\n namespace =\r\n (namespace === null || namespace === undefined || namespace === '') ? null :\r\n String(namespace);\r\n qualifiedName = String(qualifiedName);\r\n var ve = validateAndExtract(namespace, qualifiedName);\r\n return new Element._Attr(null, ve.localName, ve.prefix, ve.namespace, '');\r\n }},\r\n\r\n createElement: { value: function(localName) {\r\n localName = String(localName);\r\n if (!xml.isValidName(localName)) utils.InvalidCharacterError();\r\n // Per spec, namespace should be HTML namespace if \"context object is\r\n // an HTML document or context object's content type is\r\n // \"application/xhtml+xml\", and null otherwise.\r\n if (this.isHTML) {\r\n if (/[A-Z]/.test(localName))\r\n localName = utils.toASCIILowerCase(localName);\r\n return html.createElement(this, localName, null);\r\n } else if (this.contentType === 'application/xhtml+xml') {\r\n return html.createElement(this, localName, null);\r\n } else {\r\n return new Element(this, localName, null, null);\r\n }\r\n }, writable: isApiWritable },\r\n\r\n createElementNS: { value: function(namespace, qualifiedName) {\r\n // Convert parameter types according to WebIDL\r\n namespace =\r\n (namespace === null || namespace === undefined || namespace === '') ? null :\r\n String(namespace);\r\n qualifiedName = String(qualifiedName);\r\n var ve = validateAndExtract(namespace, qualifiedName);\r\n return this._createElementNS(ve.localName, ve.namespace, ve.prefix);\r\n }, writable: isApiWritable },\r\n\r\n // This is used directly by HTML parser, which allows it to create\r\n // elements with localNames containing ':' and non-default namespaces\r\n _createElementNS: { value: function(localName, namespace, prefix) {\r\n if (namespace === NAMESPACE.HTML) {\r\n return html.createElement(this, localName, prefix);\r\n }\r\n else if (namespace === NAMESPACE.SVG) {\r\n return svg.createElement(this, localName, prefix);\r\n }\r\n\r\n return new Element(this, localName, namespace, prefix);\r\n }},\r\n\r\n createEvent: { value: function createEvent(interfaceName) {\r\n interfaceName = interfaceName.toLowerCase();\r\n var name = replacementEvent[interfaceName] || interfaceName;\r\n var constructor = events[supportedEvents[name]];\r\n\r\n if (constructor) {\r\n var e = new constructor();\r\n e._initialized = false;\r\n return e;\r\n }\r\n else {\r\n utils.NotSupportedError();\r\n }\r\n }},\r\n\r\n // See: http://www.w3.org/TR/dom/#dom-document-createtreewalker\r\n createTreeWalker: {value: function (root, whatToShow, filter) {\r\n if (!root) { throw new TypeError(\"root argument is required\"); }\r\n if (!(root instanceof Node)) { throw new TypeError(\"root not a node\"); }\r\n whatToShow = whatToShow === undefined ? NodeFilter.SHOW_ALL : (+whatToShow);\r\n filter = filter === undefined ? null : filter;\r\n\r\n return new TreeWalker(root, whatToShow, filter);\r\n }},\r\n\r\n // See: http://www.w3.org/TR/dom/#dom-document-createnodeiterator\r\n createNodeIterator: {value: function (root, whatToShow, filter) {\r\n if (!root) { throw new TypeError(\"root argument is required\"); }\r\n if (!(root instanceof Node)) { throw new TypeError(\"root not a node\"); }\r\n whatToShow = whatToShow === undefined ? NodeFilter.SHOW_ALL : (+whatToShow);\r\n filter = filter === undefined ? null : filter;\r\n\r\n return new NodeIterator(root, whatToShow, filter);\r\n }},\r\n\r\n _attachNodeIterator: { value: function(ni) {\r\n // XXX ideally this should be a weak reference from Document to NodeIterator\r\n if (!this._nodeIterators) { this._nodeIterators = []; }\r\n this._nodeIterators.push(ni);\r\n }},\r\n\r\n _detachNodeIterator: { value: function(ni) {\r\n // ni should always be in list of node iterators\r\n var idx = this._nodeIterators.indexOf(ni);\r\n this._nodeIterators.splice(idx, 1);\r\n }},\r\n\r\n _preremoveNodeIterators: { value: function(toBeRemoved) {\r\n if (this._nodeIterators) {\r\n this._nodeIterators.forEach(function(ni) { ni._preremove(toBeRemoved); });\r\n }\r\n }},\r\n\r\n // Maintain the documentElement and\r\n // doctype properties of the document. Each of the following\r\n // methods chains to the Node implementation of the method\r\n // to do the actual inserting, removal or replacement.\r\n\r\n _updateDocTypeElement: { value: function _updateDocTypeElement() {\r\n this.doctype = this.documentElement = null;\r\n for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\r\n if (kid.nodeType === Node.DOCUMENT_TYPE_NODE)\r\n this.doctype = kid;\r\n else if (kid.nodeType === Node.ELEMENT_NODE)\r\n this.documentElement = kid;\r\n }\r\n }},\r\n\r\n insertBefore: { value: function insertBefore(child, refChild) {\r\n Node.prototype.insertBefore.call(this, child, refChild);\r\n this._updateDocTypeElement();\r\n return child;\r\n }},\r\n\r\n replaceChild: { value: function replaceChild(node, child) {\r\n Node.prototype.replaceChild.call(this, node, child);\r\n this._updateDocTypeElement();\r\n return child;\r\n }},\r\n\r\n removeChild: { value: function removeChild(child) {\r\n Node.prototype.removeChild.call(this, child);\r\n this._updateDocTypeElement();\r\n return child;\r\n }},\r\n\r\n getElementById: { value: function(id) {\r\n var n = this.byId[id];\r\n if (!n) return null;\r\n if (n instanceof MultiId) { // there was more than one element with this id\r\n return n.getFirst();\r\n }\r\n return n;\r\n }},\r\n\r\n _hasMultipleElementsWithId: { value: function(id) {\r\n // Used internally by querySelectorAll optimization\r\n return (this.byId[id] instanceof MultiId);\r\n }},\r\n\r\n // Just copy this method from the Element prototype\r\n getElementsByName: { value: Element.prototype.getElementsByName },\r\n getElementsByTagName: { value: Element.prototype.getElementsByTagName },\r\n getElementsByTagNameNS: { value: Element.prototype.getElementsByTagNameNS },\r\n getElementsByClassName: { value: Element.prototype.getElementsByClassName },\r\n\r\n adoptNode: { value: function adoptNode(node) {\r\n if (node.nodeType === Node.DOCUMENT_NODE) utils.NotSupportedError();\r\n if (node.nodeType === Node.ATTRIBUTE_NODE) { return node; }\r\n\r\n if (node.parentNode) node.parentNode.removeChild(node);\r\n\r\n if (node.ownerDocument !== this)\r\n recursivelySetOwner(node, this);\r\n\r\n return node;\r\n }},\r\n\r\n importNode: { value: function importNode(node, deep) {\r\n return this.adoptNode(node.cloneNode(deep));\r\n }, writable: isApiWritable },\r\n\r\n // The following attributes and methods are from the HTML spec\r\n origin: { get: function origin() { return null; } },\r\n characterSet: { get: function characterSet() { return \"UTF-8\"; } },\r\n contentType: { get: function contentType() { return this._contentType; } },\r\n URL: { get: function URL() { return this._address; } },\r\n domain: { get: utils.nyi, set: utils.nyi },\r\n referrer: { get: utils.nyi },\r\n cookie: { get: utils.nyi, set: utils.nyi },\r\n lastModified: { get: utils.nyi },\r\n location: {\r\n\tget: function() {\r\n\t return this.defaultView ? this.defaultView.location : null; // gh #75\r\n\t},\r\n\tset: utils.nyi\r\n },\r\n _titleElement: {\r\n get: function() {\r\n // The title element of a document is the first title element in the\r\n // document in tree order, if there is one, or null otherwise.\r\n return this.getElementsByTagName('title').item(0) || null;\r\n }\r\n },\r\n title: {\r\n get: function() {\r\n var elt = this._titleElement;\r\n // The child text content of the title element, or '' if null.\r\n var value = elt ? elt.textContent : '';\r\n // Strip and collapse whitespace in value\r\n return value.replace(/[ \\t\\n\\r\\f]+/g, ' ').replace(/(^ )|( $)/g, '');\r\n },\r\n set: function(value) {\r\n var elt = this._titleElement;\r\n var head = this.head;\r\n if (!elt && !head) { return; /* according to spec */ }\r\n if (!elt) {\r\n elt = this.createElement('title');\r\n head.appendChild(elt);\r\n }\r\n elt.textContent = value;\r\n }\r\n },\r\n dir: mirrorAttr(function() {\r\n var htmlElement = this.documentElement;\r\n if (htmlElement && htmlElement.tagName === 'HTML') { return htmlElement; }\r\n }, 'dir', ''),\r\n fgColor: mirrorAttr(function() { return this.body; }, 'text', ''),\r\n linkColor: mirrorAttr(function() { return this.body; }, 'link', ''),\r\n vlinkColor: mirrorAttr(function() { return this.body; }, 'vLink', ''),\r\n alinkColor: mirrorAttr(function() { return this.body; }, 'aLink', ''),\r\n bgColor: mirrorAttr(function() { return this.body; }, 'bgColor', ''),\r\n\r\n // Historical aliases of Document#characterSet\r\n charset: { get: function() { return this.characterSet; } },\r\n inputEncoding: { get: function() { return this.characterSet; } },\r\n\r\n scrollingElement: {\r\n get: function() {\r\n return this._quirks ? this.body : this.documentElement;\r\n }\r\n },\r\n\r\n // Return the first <body> child of the document element.\r\n // XXX For now, setting this attribute is not implemented.\r\n body: {\r\n get: function() {\r\n return namedHTMLChild(this.documentElement, 'body');\r\n },\r\n set: utils.nyi\r\n },\r\n // Return the first <head> child of the document element.\r\n head: { get: function() {\r\n return namedHTMLChild(this.documentElement, 'head');\r\n }},\r\n images: { get: utils.nyi },\r\n embeds: { get: utils.nyi },\r\n plugins: { get: utils.nyi },\r\n links: { get: utils.nyi },\r\n forms: { get: utils.nyi },\r\n scripts: { get: utils.nyi },\r\n applets: { get: function() { return []; } },\r\n activeElement: { get: function() { return null; } },\r\n innerHTML: {\r\n get: function() { return this.serialize(); },\r\n set: utils.nyi\r\n },\r\n outerHTML: {\r\n get: function() { return this.serialize(); },\r\n set: utils.nyi\r\n },\r\n\r\n write: { value: function(args) {\r\n if (!this.isHTML) utils.InvalidStateError();\r\n\r\n // XXX: still have to implement the ignore part\r\n if (!this._parser /* && this._ignore_destructive_writes > 0 */ )\r\n return;\r\n\r\n if (!this._parser) {\r\n // XXX call document.open, etc.\r\n }\r\n\r\n var s = arguments.join('');\r\n\r\n // If the Document object's reload override flag is set, then\r\n // append the string consisting of the concatenation of all the\r\n // arguments to the method to the Document's reload override\r\n // buffer.\r\n // XXX: don't know what this is about. Still have to do it\r\n\r\n // If there is no pending parsing-blocking script, have the\r\n // tokenizer process the characters that were inserted, one at a\r\n // time, processing resulting tokens as they are emitted, and\r\n // stopping when the tokenizer reaches the insertion point or when\r\n // the processing of the tokenizer is aborted by the tree\r\n // construction stage (this can happen if a script end tag token is\r\n // emitted by the tokenizer).\r\n\r\n // XXX: still have to do the above. Sounds as if we don't\r\n // always call parse() here. If we're blocked, then we just\r\n // insert the text into the stream but don't parse it reentrantly...\r\n\r\n // Invoke the parser reentrantly\r\n this._parser.parse(s);\r\n }},\r\n\r\n writeln: { value: function writeln(args) {\r\n this.write(Array.prototype.join.call(arguments, '') + '\\n');\r\n }},\r\n\r\n open: { value: function() {\r\n this.documentElement = null;\r\n }},\r\n\r\n close: { value: function() {\r\n this.readyState = 'interactive';\r\n this._dispatchEvent(new Event('readystatechange'), true);\r\n this._dispatchEvent(new Event('DOMContentLoaded'), true);\r\n this.readyState = 'complete';\r\n this._dispatchEvent(new Event('readystatechange'), true);\r\n if (this.defaultView) {\r\n this.defaultView._dispatchEvent(new Event('load'), true);\r\n }\r\n }},\r\n\r\n // Utility methods\r\n clone: { value: function clone() {\r\n var d = new Document(this.isHTML, this._address);\r\n d._quirks = this._quirks;\r\n d._contentType = this._contentType;\r\n return d;\r\n }},\r\n\r\n // We need to adopt the nodes if we do a deep clone\r\n cloneNode: { value: function cloneNode(deep) {\r\n var clone = Node.prototype.cloneNode.call(this, false);\r\n if (deep) {\r\n for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\r\n clone._appendChild(clone.importNode(kid, true));\r\n }\r\n }\r\n clone._updateDocTypeElement();\r\n return clone;\r\n }},\r\n\r\n isEqual: { value: function isEqual(n) {\r\n // Any two documents are shallowly equal.\r\n // Node.isEqualNode will also test the children\r\n return true;\r\n }},\r\n\r\n // Implementation-specific function. Called when a text, comment,\r\n // or pi value changes.\r\n mutateValue: { value: function(node) {\r\n if (this.mutationHandler) {\r\n this.mutationHandler({\r\n type: MUTATE.VALUE,\r\n target: node,\r\n data: node.data\r\n });\r\n }\r\n }},\r\n\r\n // Invoked when an attribute's value changes. Attr holds the new\r\n // value. oldval is the old value. Attribute mutations can also\r\n // involve changes to the prefix (and therefore the qualified name)\r\n mutateAttr: { value: function(attr, oldval) {\r\n // Manage id->element mapping for getElementsById()\r\n // XXX: this special case id handling should not go here,\r\n // but in the attribute declaration for the id attribute\r\n /*\r\n if (attr.localName === 'id' && attr.namespaceURI === null) {\r\n if (oldval) delId(oldval, attr.ownerElement);\r\n addId(attr.value, attr.ownerElement);\r\n }\r\n */\r\n if (this.mutationHandler) {\r\n this.mutationHandler({\r\n type: MUTATE.ATTR,\r\n target: attr.ownerElement,\r\n attr: attr\r\n });\r\n }\r\n }},\r\n\r\n // Used by removeAttribute and removeAttributeNS for attributes.\r\n mutateRemoveAttr: { value: function(attr) {\r\n/*\r\n* This is now handled in Attributes.js\r\n // Manage id to element mapping\r\n if (attr.localName === 'id' && attr.namespaceURI === null) {\r\n this.delId(attr.value, attr.ownerElement);\r\n }\r\n*/\r\n if (this.mutationHandler) {\r\n this.mutationHandler({\r\n type: MUTATE.REMOVE_ATTR,\r\n target: attr.ownerElement,\r\n attr: attr\r\n });\r\n }\r\n }},\r\n\r\n // Called by Node.removeChild, etc. to remove a rooted element from\r\n // the tree. Only needs to generate a single mutation event when a\r\n // node is removed, but must recursively mark all descendants as not\r\n // rooted.\r\n mutateRemove: { value: function(node) {\r\n // Send a single mutation event\r\n if (this.mutationHandler) {\r\n this.mutationHandler({\r\n type: MUTATE.REMOVE,\r\n target: node.parentNode,\r\n node: node\r\n });\r\n }\r\n\r\n // Mark this and all descendants as not rooted\r\n recursivelyUproot(node);\r\n }},\r\n\r\n // Called when a new element becomes rooted. It must recursively\r\n // generate mutation events for each of the children, and mark them all\r\n // as rooted.\r\n mutateInsert: { value: function(node) {\r\n // Mark node and its descendants as rooted\r\n recursivelyRoot(node);\r\n\r\n // Send a single mutation event\r\n if (this.mutationHandler) {\r\n this.mutationHandler({\r\n type: MUTATE.INSERT,\r\n target: node.parentNode,\r\n node: node\r\n });\r\n }\r\n }},\r\n\r\n // Called when a rooted element is moved within the document\r\n mutateMove: { value: function(node) {\r\n if (this.mutationHandler) {\r\n this.mutationHandler({\r\n type: MUTATE.MOVE,\r\n target: node\r\n });\r\n }\r\n }},\r\n\r\n\r\n // Add a mapping from id to n for n.ownerDocument\r\n addId: { value: function addId(id, n) {\r\n var val = this.byId[id];\r\n if (!val) {\r\n this.byId[id] = n;\r\n }\r\n else {\r\n // TODO: Add a way to opt-out console warnings\r\n //console.warn('Duplicate element id ' + id);\r\n if (!(val instanceof MultiId)) {\r\n val = new MultiId(val);\r\n this.byId[id] = val;\r\n }\r\n val.add(n);\r\n }\r\n }},\r\n\r\n // Delete the mapping from id to n for n.ownerDocument\r\n delId: { value: function delId(id, n) {\r\n var val = this.byId[id];\r\n utils.assert(val);\r\n\r\n if (val instanceof MultiId) {\r\n val.del(n);\r\n if (val.length === 1) { // convert back to a single node\r\n this.byId[id] = val.downgrade();\r\n }\r\n }\r\n else {\r\n this.byId[id] = undefined;\r\n }\r\n }},\r\n\r\n _resolve: { value: function(href) {\r\n //XXX: Cache the URL\r\n return new URL(this._documentBaseURL).resolve(href);\r\n }},\r\n\r\n _documentBaseURL: { get: function() {\r\n // XXX: This is not implemented correctly yet\r\n var url = this._address;\r\n if (url === 'about:blank') url = '/';\r\n\r\n var base = this.querySelector('base[href]');\r\n if (base) {\r\n return new URL(url).resolve(base.getAttribute('href'));\r\n }\r\n return url;\r\n\r\n // The document base URL of a Document object is the\r\n // absolute URL obtained by running these substeps:\r\n\r\n // Let fallback base url be the document's address.\r\n\r\n // If fallback base url is about:blank, and the\r\n // Document's browsing context has a creator browsing\r\n // context, then let fallback base url be the document\r\n // base URL of the creator Document instead.\r\n\r\n // If the Document is an iframe srcdoc document, then\r\n // let fallback base url be the document base URL of\r\n // the Document's browsing context's browsing context\r\n // container's Document instead.\r\n\r\n // If there is no base element that has an href\r\n // attribute, then the document base URL is fallback\r\n // base url; abort these steps. Otherwise, let url be\r\n // the value of the href attribute of the first such\r\n // element.\r\n\r\n // Resolve url relative to fallback base url (thus,\r\n // the base href attribute isn't affected by xml:base\r\n // attributes).\r\n\r\n // The document base URL is the result of the previous\r\n // step if it was successful; otherwise it is fallback\r\n // base url.\r\n }},\r\n\r\n _templateDoc: { get: function() {\r\n if (!this._templateDocCache) {\r\n // \"associated inert template document\"\r\n var newDoc = new Document(this.isHTML, this._address);\r\n this._templateDocCache = newDoc._templateDocCache = newDoc;\r\n }\r\n return this._templateDocCache;\r\n }},\r\n\r\n querySelector: { value: function(selector) {\r\n return select(selector, this)[0];\r\n }},\r\n\r\n querySelectorAll: { value: function(selector) {\r\n var nodes = select(selector, this);\r\n return nodes.item ? nodes : new NodeList(nodes);\r\n }}\r\n\r\n});\r\n\r\n\r\nvar eventHandlerTypes = [\r\n 'abort', 'canplay', 'canplaythrough', 'change', 'click', 'contextmenu',\r\n 'cuechange', 'dblclick', 'drag', 'dragend', 'dragenter', 'dragleave',\r\n 'dragover', 'dragstart', 'drop', 'durationchange', 'emptied', 'ended',\r\n 'input', 'invalid', 'keydown', 'keypress', 'keyup', 'loadeddata',\r\n 'loadedmetadata', 'loadstart', 'mousedown', 'mousemove', 'mouseout',\r\n 'mouseover', 'mouseup', 'mousewheel', 'pause', 'play', 'playing',\r\n 'progress', 'ratechange', 'readystatechange', 'reset', 'seeked',\r\n 'seeking', 'select', 'show', 'stalled', 'submit', 'suspend',\r\n 'timeupdate', 'volumechange', 'waiting',\r\n\r\n 'blur', 'error', 'focus', 'load', 'scroll'\r\n];\r\n\r\n// Add event handler idl attribute getters and setters to Document\r\neventHandlerTypes.forEach(function(type) {\r\n // Define the event handler registration IDL attribute for this type\r\n Object.defineProperty(Document.prototype, 'on' + type, {\r\n get: function() {\r\n return this._getEventHandler(type);\r\n },\r\n set: function(v) {\r\n this._setEventHandler(type, v);\r\n }\r\n });\r\n});\r\n\r\nfunction namedHTMLChild(parent, name) {\r\n if (parent && parent.isHTML) {\r\n for (var kid = parent.firstChild; kid !== null; kid = kid.nextSibling) {\r\n if (kid.nodeType === Node.ELEMENT_NODE &&\r\n kid.localName === name &&\r\n kid.namespaceURI === NAMESPACE.HTML) {\r\n return kid;\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction root(n) {\r\n n._nid = n.ownerDocument._nextnid++;\r\n n.ownerDocument._nodes[n._nid] = n;\r\n // Manage id to element mapping\r\n if (n.nodeType === Node.ELEMENT_NODE) {\r\n var id = n.getAttribute('id');\r\n if (id) n.ownerDocument.addId(id, n);\r\n\r\n // Script elements need to know when they're inserted\r\n // into the document\r\n if (n._roothook) n._roothook();\r\n }\r\n}\r\n\r\nfunction uproot(n) {\r\n // Manage id to element mapping\r\n if (n.nodeType === Node.ELEMENT_NODE) {\r\n var id = n.getAttribute('id');\r\n if (id) n.ownerDocument.delId(id, n);\r\n }\r\n n.ownerDocument._nodes[n._nid] = undefined;\r\n n._nid = undefined;\r\n}\r\n\r\nfunction recursivelyRoot(node) {\r\n root(node);\r\n // XXX:\r\n // accessing childNodes on a leaf node creates a new array the\r\n // first time, so be careful to write this loop so that it\r\n // doesn't do that. node is polymorphic, so maybe this is hard to\r\n // optimize? Try switching on nodeType?\r\n/*\r\n if (node.hasChildNodes()) {\r\n var kids = node.childNodes;\r\n for(var i = 0, n = kids.length; i < n; i++)\r\n recursivelyRoot(kids[i]);\r\n }\r\n*/\r\n if (node.nodeType === Node.ELEMENT_NODE) {\r\n for (var kid = node.firstChild; kid !== null; kid = kid.nextSibling)\r\n recursivelyRoot(kid);\r\n }\r\n}\r\n\r\nfunction recursivelyUproot(node) {\r\n uproot(node);\r\n for (var kid = node.firstChild; kid !== null; kid = kid.nextSibling)\r\n recursivelyUproot(kid);\r\n}\r\n\r\nfunction recursivelySetOwner(node, owner) {\r\n node.ownerDocument = owner;\r\n node._lastModTime = undefined; // mod times are document-based\r\n if (Object.prototype.hasOwnProperty.call(node, '_tagName')) {\r\n node._tagName = undefined; // Element subclasses might need to change case\r\n }\r\n for (var kid = node.firstChild; kid !== null; kid = kid.nextSibling)\r\n recursivelySetOwner(kid, owner);\r\n}\r\n\r\n// A class for storing multiple nodes with the same ID\r\nfunction MultiId(node) {\r\n this.nodes = Object.create(null);\r\n this.nodes[node._nid] = node;\r\n this.length = 1;\r\n this.firstNode = undefined;\r\n}\r\n\r\n// Add a node to the list, with O(1) time\r\nMultiId.prototype.add = function(node) {\r\n if (!this.nodes[node._nid]) {\r\n this.nodes[node._nid] = node;\r\n this.length++;\r\n this.firstNode = undefined;\r\n }\r\n};\r\n\r\n// Remove a node from the list, with O(1) time\r\nMultiId.prototype.del = function(node) {\r\n if (this.nodes[node._nid]) {\r\n delete this.nodes[node._nid];\r\n this.length--;\r\n this.firstNode = undefined;\r\n }\r\n};\r\n\r\n// Get the first node from the list, in the document order\r\n// Takes O(N) time in the size of the list, with a cache that is invalidated\r\n// when the list is modified.\r\nMultiId.prototype.getFirst = function() {\r\n /* jshint bitwise: false */\r\n if (!this.firstNode) {\r\n var nid;\r\n for (nid in this.nodes) {\r\n if (this.firstNode === undefined ||\r\n this.firstNode.compareDocumentPosition(this.nodes[nid]) & Node.DOCUMENT_POSITION_PRECEDING) {\r\n this.firstNode = this.nodes[nid];\r\n }\r\n }\r\n }\r\n return this.firstNode;\r\n};\r\n\r\n// If there is only one node left, return it. Otherwise return \"this\".\r\nMultiId.prototype.downgrade = function() {\r\n if (this.length === 1) {\r\n var nid;\r\n for (nid in this.nodes) {\r\n return this.nodes[nid];\r\n }\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = DocumentType;\r\n\r\nvar Node = require('./Node');\r\nvar Leaf = require('./Leaf');\r\nvar ChildNode = require('./ChildNode');\r\n\r\nfunction DocumentType(ownerDocument, name, publicId, systemId) {\r\n Leaf.call(this);\r\n this.nodeType = Node.DOCUMENT_TYPE_NODE;\r\n this.ownerDocument = ownerDocument || null;\r\n this.name = name;\r\n this.publicId = publicId || \"\";\r\n this.systemId = systemId || \"\";\r\n}\r\n\r\nDocumentType.prototype = Object.create(Leaf.prototype, {\r\n nodeName: { get: function() { return this.name; }},\r\n nodeValue: {\r\n get: function() { return null; },\r\n set: function() {}\r\n },\r\n\r\n // Utility methods\r\n clone: { value: function clone() {\r\n return new DocumentType(this.ownerDocument, this.name, this.publicId, this.systemId);\r\n }},\r\n\r\n isEqual: { value: function isEqual(n) {\r\n return this.name === n.name &&\r\n this.publicId === n.publicId &&\r\n this.systemId === n.systemId;\r\n }}\r\n});\r\n\r\nObject.defineProperties(DocumentType.prototype, ChildNode);\r\n","\"use strict\";\r\nmodule.exports = HTMLParser;\r\n\r\nvar Document = require('./Document');\r\nvar DocumentType = require('./DocumentType');\r\nvar Node = require('./Node');\r\nvar NAMESPACE = require('./utils').NAMESPACE;\r\nvar html = require('./htmlelts');\r\nvar impl = html.elements;\r\n\r\nvar pushAll = Function.prototype.apply.bind(Array.prototype.push);\r\n\r\n/*\r\n * This file contains an implementation of the HTML parsing algorithm.\r\n * The algorithm and the implementation are complex because HTML\r\n * explicitly defines how the parser should behave for all possible\r\n * valid and invalid inputs.\r\n *\r\n * Usage:\r\n *\r\n * The file defines a single HTMLParser() function, which dom.js exposes\r\n * publicly as document.implementation.mozHTMLParser(). This is a\r\n * factory function, not a constructor.\r\n *\r\n * When you call document.implementation.mozHTMLParser(), it returns\r\n * an object that has parse() and document() methods. To parse HTML text,\r\n * pass the text (in one or more chunks) to the parse() method. When\r\n * you've passed all the text (on the last chunk, or afterward) pass\r\n * true as the second argument to parse() to tell the parser that there\r\n * is no more coming. Call document() to get the document object that\r\n * the parser is parsing into. You can call this at any time, before\r\n * or after calling parse().\r\n *\r\n * The first argument to mozHTMLParser is the absolute URL of the document.\r\n *\r\n * The second argument is optional and is for internal use only. Pass an\r\n * element as the fragmentContext to do innerHTML parsing for the\r\n * element. To do innerHTML parsing on a document, pass null. Otherwise,\r\n * omit the 2nd argument. See HTMLElement.innerHTML for an example. Note\r\n * that if you pass a context element, the end() method will return an\r\n * unwrapped document instead of a wrapped one.\r\n *\r\n * Implementation details:\r\n *\r\n * This is a long file of almost 7000 lines. It is structured as one\r\n * big function nested within another big function. The outer\r\n * function defines a bunch of constant data, utility functions\r\n * that use that data, and a couple of classes used by the parser.\r\n * The outer function also defines and returns the\r\n * inner function. This inner function is the HTMLParser factory\r\n * function that implements the parser and holds all the parser state\r\n * as local variables. The HTMLParser function is quite big because\r\n * it defines many nested functions that use those local variables.\r\n *\r\n * There are three tightly coupled parser stages: a scanner, a\r\n * tokenizer and a tree builder. In a (possibly misguided) attempt at\r\n * efficiency, the stages are not implemented as separate classes:\r\n * everything shares state and is (mostly) implemented in imperative\r\n * (rather than OO) style.\r\n *\r\n * The stages of the parser work like this: When the client code calls\r\n * the parser's parse() method, the specified string is passed to\r\n * scanChars(). The scanner loops through that string and passes characters\r\n * (sometimes one at a time, sometimes in chunks) to the tokenizer stage.\r\n * The tokenizer groups the characters into tokens: tags, endtags, runs\r\n * of text, comments, doctype declarations, and the end-of-file (EOF)\r\n * token. These tokens are then passed to the tree building stage via\r\n * the insertToken() function. The tree building stage builds up the\r\n * document tree.\r\n *\r\n * The tokenizer stage is a finite state machine. Each state is\r\n * implemented as a function with a name that ends in \"_state\". The\r\n * initial state is data_state(). The current tokenizer state is stored\r\n * in the variable 'tokenizer'. Most state functions expect a single\r\n * integer argument which represents a single UTF-16 codepoint. Some\r\n * states want more characters and set a lookahead property on\r\n * themselves. The scanChars() function in the scanner checks for this\r\n * lookahead property. If it doesn't exist, then scanChars() just passes\r\n * the next input character to the current tokenizer state function.\r\n * Otherwise, scanChars() looks ahead (a given # of characters, or for a\r\n * matching string, or for a matching regexp) and passes a string of\r\n * characters to the current tokenizer state function.\r\n *\r\n * As a shortcut, certain states of the tokenizer use regular expressions\r\n * to look ahead in the scanner's input buffer for runs of text, simple\r\n * tags and attributes. For well-formed input, these shortcuts skip a\r\n * lot of state transitions and speed things up a bit.\r\n *\r\n * When a tokenizer state function has consumed a complete token, it\r\n * emits that token, by calling insertToken(), or by calling a utility\r\n * function that itself calls insertToken(). These tokens are passed to\r\n * the tree building stage, which is also a state machine. Like the\r\n * tokenizer, the tree building states are implemented as functions, and\r\n * these functions have names that end with _mode (because the HTML spec\r\n * refers to them as insertion modes). The current insertion mode is held\r\n * by the 'parser' variable. Each insertion mode function takes up to 4\r\n * arguments. The first is a token type, represented by the constants\r\n * TAG, ENDTAG, TEXT, COMMENT, DOCTYPE and EOF. The second argument is\r\n * the value of the token: the text or comment data, or tagname or\r\n * doctype. For tags, the 3rd argument is an array of attributes. For\r\n * DOCTYPES it is the optional public id. For tags, the 4th argument is\r\n * true if the tag is self-closing. For doctypes, the 4th argument is the\r\n * optional system id.\r\n *\r\n * Search for \"***\" to find the major sub-divisions in the code.\r\n */\r\n\r\n\r\n/***\r\n * Data prolog. Lots of constants declared here, including some\r\n * very large objects. They're used throughout the code that follows\r\n */\r\n// Token types for the tree builder.\r\nvar EOF = -1;\r\nvar TEXT = 1;\r\nvar TAG = 2;\r\nvar ENDTAG = 3;\r\nvar COMMENT = 4;\r\nvar DOCTYPE = 5;\r\n\r\n// A re-usable empty array\r\nvar NOATTRS = [];\r\n\r\n// These DTD public ids put the browser in quirks mode\r\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;\r\n\r\nvar quirkySystemId = \"http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd\";\r\n\r\nvar conditionallyQuirkyPublicIds = /^-\\/\\/W3C\\/\\/DTD HTML 4\\.01 Frameset\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 4\\.01 Transitional\\/\\//i;\r\n\r\n// These DTD public ids put the browser in limited quirks mode\r\nvar limitedQuirkyPublicIds = /^-\\/\\/W3C\\/\\/DTD XHTML 1\\.0 Frameset\\/\\/|^-\\/\\/W3C\\/\\/DTD XHTML 1\\.0 Transitional\\/\\//i;\r\n\r\n\r\n// Element sets below. See the isA() function for a way to test\r\n// whether an element is a member of a set\r\nvar specialSet = Object.create(null);\r\nspecialSet[NAMESPACE.HTML] = {\r\n __proto__: null,\r\n \"address\":true, \"applet\":true, \"area\":true, \"article\":true,\r\n \"aside\":true, \"base\":true, \"basefont\":true, \"bgsound\":true,\r\n \"blockquote\":true, \"body\":true, \"br\":true, \"button\":true,\r\n \"caption\":true, \"center\":true, \"col\":true, \"colgroup\":true,\r\n \"dd\":true, \"details\":true, \"dir\":true,\r\n \"div\":true, \"dl\":true, \"dt\":true, \"embed\":true,\r\n \"fieldset\":true, \"figcaption\":true, \"figure\":true, \"footer\":true,\r\n \"form\":true, \"frame\":true, \"frameset\":true, \"h1\":true,\r\n \"h2\":true, \"h3\":true, \"h4\":true, \"h5\":true,\r\n \"h6\":true, \"head\":true, \"header\":true, \"hgroup\":true,\r\n \"hr\":true, \"html\":true, \"iframe\":true, \"img\":true,\r\n \"input\":true, \"li\":true, \"link\":true,\r\n \"listing\":true, \"main\":true, \"marquee\":true, \"menu\":true, \"meta\":true,\r\n \"nav\":true, \"noembed\":true, \"noframes\":true, \"noscript\":true,\r\n \"object\":true, \"ol\":true, \"p\":true, \"param\":true,\r\n \"plaintext\":true, \"pre\":true, \"script\":true, \"section\":true,\r\n \"select\":true, \"source\":true, \"style\":true, \"summary\":true, \"table\":true,\r\n \"tbody\":true, \"td\":true, \"template\":true, \"textarea\":true, \"tfoot\":true,\r\n \"th\":true, \"thead\":true, \"title\":true, \"tr\":true, \"track\":true,\r\n // Note that \"xmp\" was removed from the \"special\" set in the latest\r\n // spec, apparently by accident; see\r\n // https://github.com/whatwg/html/pull/1919\r\n \"ul\":true, \"wbr\":true, \"xmp\":true\r\n};\r\nspecialSet[NAMESPACE.SVG] = {\r\n __proto__: null,\r\n \"foreignObject\": true, \"desc\": true, \"title\": true\r\n};\r\nspecialSet[NAMESPACE.MATHML] = {\r\n __proto__: null,\r\n \"mi\":true, \"mo\":true, \"mn\":true, \"ms\":true,\r\n \"mtext\":true, \"annotation-xml\":true\r\n};\r\n\r\n// The set of address, div, and p HTML tags\r\nvar addressdivpSet = Object.create(null);\r\naddressdivpSet[NAMESPACE.HTML] = {\r\n __proto__: null,\r\n \"address\":true, \"div\":true, \"p\":true\r\n};\r\n\r\nvar dddtSet = Object.create(null);\r\ndddtSet[NAMESPACE.HTML] = {\r\n __proto__: null,\r\n \"dd\":true, \"dt\":true\r\n};\r\n\r\nvar tablesectionrowSet = Object.create(null);\r\ntablesectionrowSet[NAMESPACE.HTML] = {\r\n __proto__: null,\r\n \"table\":true, \"thead\":true, \"tbody\":true, \"tfoot\":true, \"tr\":true\r\n};\r\n\r\nvar impliedEndTagsSet = Object.create(null);\r\nimpliedEndTagsSet[NAMESPACE.HTML] = {\r\n __proto__: null,\r\n \"dd\": true, \"dt\": true, \"li\": true, \"menuitem\": true, \"optgroup\": true,\r\n \"option\": true, \"p\": true, \"rb\": true, \"rp\": true, \"rt\": true, \"rtc\": true\r\n};\r\n\r\nvar thoroughImpliedEndTagsSet = Object.create(null);\r\nthoroughImpliedEndTagsSet[NAMESPACE.HTML] = {\r\n __proto__: null,\r\n \"caption\": true, \"colgroup\": true, \"dd\": true, \"dt\": true, \"li\": true,\r\n \"optgroup\": true, \"option\": true, \"p\": true, \"rb\": true, \"rp\": true,\r\n \"rt\": true, \"rtc\": true, \"tbody\": true, \"td\": true, \"tfoot\": true,\r\n \"th\": true, \"thead\": true, \"tr\": true\r\n};\r\n\r\nvar tableContextSet = Object.create(null);\r\ntableContextSet[NAMESPACE.HTML] = {\r\n __proto__: null,\r\n \"table\": true, \"template\": true, \"html\": true\r\n};\r\n\r\nvar tableBodyContextSet = Object.create(null);\r\ntableBodyContextSet[NAMESPACE.HTML] = {\r\n __proto__: null,\r\n \"tbody\": true, \"tfoot\": true, \"thead\": true, \"template\": true, \"html\": true\r\n};\r\n\r\nvar tableRowContextSet = Object.create(null);\r\ntableRowContextSet[NAMESPACE.HTML] = {\r\n __proto__: null,\r\n \"tr\": true, \"template\": true, \"html\": true\r\n};\r\n\r\n// See http://www.w3.org/TR/html5/forms.html#form-associated-element\r\nvar formassociatedSet = Object.create(null);\r\nformassociatedSet[NAMESPACE.HTML] = {\r\n __proto__: null,\r\n \"button\": true, \"fieldset\": true, \"input\": true, \"keygen\": true,\r\n \"object\": true, \"output\": true, \"select\": true, \"textarea\": true,\r\n \"img\": true\r\n};\r\n\r\nvar inScopeSet = Object.create(null);\r\ninScopeSet[NAMESPACE.HTML]= {\r\n __proto__: null,\r\n \"applet\":true, \"caption\":true, \"html\":true, \"table\":true,\r\n \"td\":true, \"th\":true, \"marquee\":true, \"object\":true,\r\n \"template\":true\r\n};\r\ninScopeSet[NAMESPACE.MATHML] = {\r\n __proto__: null,\r\n \"mi\":true, \"mo\":true, \"mn\":true, \"ms\":true,\r\n \"mtext\":true, \"annotation-xml\":true\r\n};\r\ninScopeSet[NAMESPACE.SVG] = {\r\n __proto__: null,\r\n \"foreignObject\":true, \"desc\":true, \"title\":true\r\n};\r\n\r\nvar inListItemScopeSet = Object.create(inScopeSet);\r\ninListItemScopeSet[NAMESPACE.HTML] =\r\n Object.create(inScopeSet[NAMESPACE.HTML]);\r\ninListItemScopeSet[NAMESPACE.HTML].ol = true;\r\ninListItemScopeSet[NAMESPACE.HTML].ul = true;\r\n\r\nvar inButtonScopeSet = Object.create(inScopeSet);\r\ninButtonScopeSet[NAMESPACE.HTML] =\r\n Object.create(inScopeSet[NAMESPACE.HTML]);\r\ninButtonScopeSet[NAMESPACE.HTML].button = true;\r\n\r\nvar inTableScopeSet = Object.create(null);\r\ninTableScopeSet[NAMESPACE.HTML] = {\r\n __proto__: null,\r\n \"html\":true, \"table\":true, \"template\":true\r\n};\r\n\r\n// The set of elements for select scope is the everything *except* these\r\nvar invertedSelectScopeSet = Object.create(null);\r\ninvertedSelectScopeSet[NAMESPACE.HTML] = {\r\n __proto__: null,\r\n \"optgroup\":true, \"option\":true\r\n};\r\n\r\nvar mathmlTextIntegrationPointSet = Object.create(null);\r\nmathmlTextIntegrationPointSet[NAMESPACE.MATHML] = {\r\n __proto__: null,\r\n mi: true,\r\n mo: true,\r\n mn: true,\r\n ms: true,\r\n mtext: true\r\n};\r\n\r\nvar htmlIntegrationPointSet = Object.create(null);\r\nhtmlIntegrationPointSet[NAMESPACE.SVG] = {\r\n __proto__: null,\r\n foreignObject: true,\r\n desc: true,\r\n title: true\r\n};\r\n\r\nvar foreignAttributes = {\r\n __proto__: null,\r\n \"xlink:actuate\": NAMESPACE.XLINK, \"xlink:arcrole\": NAMESPACE.XLINK,\r\n \"xlink:href\": NAMESPACE.XLINK, \"xlink:role\": NAMESPACE.XLINK,\r\n \"xlink:show\": NAMESPACE.XLINK, \"xlink:title\": NAMESPACE.XLINK,\r\n \"xlink:type\": NAMESPACE.XLINK, \"xml:base\": NAMESPACE.XML,\r\n \"xml:lang\": NAMESPACE.XML, \"xml:space\": NAMESPACE.XML,\r\n \"xmlns\": NAMESPACE.XMLNS, \"xmlns:xlink\": NAMESPACE.XMLNS\r\n};\r\n\r\n\r\n// Lowercase to mixed case mapping for SVG attributes and tagnames\r\nvar svgAttrAdjustments = {\r\n __proto__: null,\r\n attributename: \"attributeName\", attributetype: \"attributeType\",\r\n basefrequency: \"baseFrequency\", baseprofile: \"baseProfile\",\r\n calcmode: \"calcMode\", clippathunits: \"clipPathUnits\",\r\n diffuseconstant: \"diffuseConstant\",\r\n edgemode: \"edgeMode\",\r\n filterunits: \"filterUnits\",\r\n glyphref: \"glyphRef\", gradienttransform: \"gradientTransform\",\r\n gradientunits: \"gradientUnits\", kernelmatrix: \"kernelMatrix\",\r\n kernelunitlength: \"kernelUnitLength\", keypoints: \"keyPoints\",\r\n keysplines: \"keySplines\", keytimes: \"keyTimes\",\r\n lengthadjust: \"lengthAdjust\", limitingconeangle: \"limitingConeAngle\",\r\n markerheight: \"markerHeight\", markerunits: \"markerUnits\",\r\n markerwidth: \"markerWidth\", maskcontentunits: \"maskContentUnits\",\r\n maskunits: \"maskUnits\", numoctaves: \"numOctaves\",\r\n pathlength: \"pathLength\", patterncontentunits: \"patternContentUnits\",\r\n patterntransform: \"patternTransform\", patternunits: \"patternUnits\",\r\n pointsatx: \"pointsAtX\", pointsaty: \"pointsAtY\",\r\n pointsatz: \"pointsAtZ\", preservealpha: \"preserveAlpha\",\r\n preserveaspectratio: \"preserveAspectRatio\",\r\n primitiveunits: \"primitiveUnits\", refx: \"refX\",\r\n refy: \"refY\", repeatcount: \"repeatCount\",\r\n repeatdur: \"repeatDur\", requiredextensions: \"requiredExtensions\",\r\n requiredfeatures: \"requiredFeatures\",\r\n specularconstant: \"specularConstant\",\r\n specularexponent: \"specularExponent\", spreadmethod: \"spreadMethod\",\r\n startoffset: \"startOffset\", stddeviation: \"stdDeviation\",\r\n stitchtiles: \"stitchTiles\", surfacescale: \"surfaceScale\",\r\n systemlanguage: \"systemLanguage\", tablevalues: \"tableValues\",\r\n targetx: \"targetX\", targety: \"targetY\",\r\n textlength: \"textLength\", viewbox: \"viewBox\",\r\n viewtarget: \"viewTarget\", xchannelselector: \"xChannelSelector\",\r\n ychannelselector: \"yChannelSelector\", zoomandpan: \"zoomAndPan\"\r\n};\r\n\r\nvar svgTagNameAdjustments = {\r\n __proto__: null,\r\n altglyph: \"altGlyph\", altglyphdef: \"altGlyphDef\",\r\n altglyphitem: \"altGlyphItem\", animatecolor: \"animateColor\",\r\n animatemotion: \"animateMotion\", animatetransform: \"animateTransform\",\r\n clippath: \"clipPath\", feblend: \"feBlend\",\r\n fecolormatrix: \"feColorMatrix\",\r\n fecomponenttransfer: \"feComponentTransfer\", fecomposite: \"feComposite\",\r\n feconvolvematrix: \"feConvolveMatrix\",\r\n fediffuselighting: \"feDiffuseLighting\",\r\n fedisplacementmap: \"feDisplacementMap\",\r\n fedistantlight: \"feDistantLight\", feflood: \"feFlood\",\r\n fefunca: \"feFuncA\", fefuncb: \"feFuncB\",\r\n fefuncg: \"feFuncG\", fefuncr: \"feFuncR\",\r\n fegaussianblur: \"feGaussianBlur\", feimage: \"feImage\",\r\n femerge: \"feMerge\", femergenode: \"feMergeNode\",\r\n femorphology: \"feMorphology\", feoffset: \"feOffset\",\r\n fepointlight: \"fePointLight\", fespecularlighting: \"feSpecularLighting\",\r\n fespotlight: \"feSpotLight\", fetile: \"feTile\",\r\n feturbulence: \"feTurbulence\", foreignobject: \"foreignObject\",\r\n glyphref: \"glyphRef\", lineargradient: \"linearGradient\",\r\n radialgradient: \"radialGradient\", textpath: \"textPath\"\r\n};\r\n\r\n\r\n// Data for parsing numeric and named character references\r\n// These next 3 objects are direct translations of tables\r\n// in the HTML spec into JavaScript object format\r\nvar numericCharRefReplacements = {\r\n __proto__: null,\r\n 0x00:0xFFFD, 0x80:0x20AC, 0x82:0x201A, 0x83:0x0192, 0x84:0x201E,\r\n 0x85:0x2026, 0x86:0x2020, 0x87:0x2021, 0x88:0x02C6, 0x89:0x2030,\r\n 0x8A:0x0160, 0x8B:0x2039, 0x8C:0x0152, 0x8E:0x017D, 0x91:0x2018,\r\n 0x92:0x2019, 0x93:0x201C, 0x94:0x201D, 0x95:0x2022, 0x96:0x2013,\r\n 0x97:0x2014, 0x98:0x02DC, 0x99:0x2122, 0x9A:0x0161, 0x9B:0x203A,\r\n 0x9C:0x0153, 0x9E:0x017E, 0x9F:0x0178\r\n};\r\n\r\n/*\r\n * This table is generated with test/tools/update-entities.js\r\n */\r\nvar namedCharRefs = {\r\n __proto__: null,\r\n \"AElig\":0xc6, \"AElig;\":0xc6,\r\n \"AMP\":0x26, \"AMP;\":0x26,\r\n \"Aacute\":0xc1, \"Aacute;\":0xc1,\r\n \"Abreve;\":0x102, \"Acirc\":0xc2,\r\n \"Acirc;\":0xc2, \"Acy;\":0x410,\r\n \"Afr;\":[0xd835,0xdd04], \"Agrave\":0xc0,\r\n \"Agrave;\":0xc0, \"Alpha;\":0x391,\r\n \"Amacr;\":0x100, \"And;\":0x2a53,\r\n \"Aogon;\":0x104, \"Aopf;\":[0xd835,0xdd38],\r\n \"ApplyFunction;\":0x2061, \"Aring\":0xc5,\r\n \"Aring;\":0xc5, \"Ascr;\":[0xd835,0xdc9c],\r\n \"Assign;\":0x2254, \"Atilde\":0xc3,\r\n \"Atilde;\":0xc3, \"Auml\":0xc4,\r\n \"Auml;\":0xc4, \"Backslash;\":0x2216,\r\n \"Barv;\":0x2ae7, \"Barwed;\":0x2306,\r\n \"Bcy;\":0x411, \"Because;\":0x2235,\r\n \"Bernoullis;\":0x212c, \"Beta;\":0x392,\r\n \"Bfr;\":[0xd835,0xdd05], \"Bopf;\":[0xd835,0xdd39],\r\n \"Breve;\":0x2d8, \"Bscr;\":0x212c,\r\n \"Bumpeq;\":0x224e, \"CHcy;\":0x427,\r\n \"COPY\":0xa9, \"COPY;\":0xa9,\r\n \"Cacute;\":0x106, \"Cap;\":0x22d2,\r\n \"CapitalDifferentialD;\":0x2145, \"Cayleys;\":0x212d,\r\n \"Ccaron;\":0x10c, \"Ccedil\":0xc7,\r\n \"Ccedil;\":0xc7, \"Ccirc;\":0x108,\r\n \"Cconint;\":0x2230, \"Cdot;\":0x10a,\r\n \"Cedilla;\":0xb8, \"CenterDot;\":0xb7,\r\n \"Cfr;\":0x212d, \"Chi;\":0x3a7,\r\n \"CircleDot;\":0x2299, \"CircleMinus;\":0x2296,\r\n \"CirclePlus;\":0x2295, \"CircleTimes;\":0x2297,\r\n \"ClockwiseContourIntegral;\":0x2232, \"CloseCurlyDoubleQuote;\":0x201d,\r\n \"CloseCurlyQuote;\":0x2019, \"Colon;\":0x2237,\r\n \"Colone;\":0x2a74, \"Congruent;\":0x2261,\r\n \"Conint;\":0x222f, \"ContourIntegral;\":0x222e,\r\n \"Copf;\":0x2102, \"Coproduct;\":0x2210,\r\n \"CounterClockwiseContourIntegral;\":0x2233, \"Cross;\":0x2a2f,\r\n \"Cscr;\":[0xd835,0xdc9e], \"Cup;\":0x22d3,\r\n \"CupCap;\":0x224d, \"DD;\":0x2145,\r\n \"DDotrahd;\":0x2911, \"DJcy;\":0x402,\r\n \"DScy;\":0x405, \"DZcy;\":0x40f,\r\n \"Dagger;\":0x2021, \"Darr;\":0x21a1,\r\n \"Dashv;\":0x2ae4, \"Dcaron;\":0x10e,\r\n \"Dcy;\":0x414, \"Del;\":0x2207,\r\n \"Delta;\":0x394, \"Dfr;\":[0xd835,0xdd07],\r\n \"DiacriticalAcute;\":0xb4, \"DiacriticalDot;\":0x2d9,\r\n \"DiacriticalDoubleAcute;\":0x2dd, \"DiacriticalGrave;\":0x60,\r\n \"DiacriticalTilde;\":0x2dc, \"Diamond;\":0x22c4,\r\n \"DifferentialD;\":0x2146, \"Dopf;\":[0xd835,0xdd3b],\r\n \"Dot;\":0xa8, \"DotDot;\":0x20dc,\r\n \"DotEqual;\":0x2250, \"DoubleContourIntegral;\":0x222f,\r\n \"DoubleDot;\":0xa8, \"DoubleDownArrow;\":0x21d3,\r\n \"DoubleLeftArrow;\":0x21d0, \"DoubleLeftRightArrow;\":0x21d4,\r\n \"DoubleLeftTee;\":0x2ae4, \"DoubleLongLeftArrow;\":0x27f8,\r\n \"DoubleLongLeftRightArrow;\":0x27fa, \"DoubleLongRightArrow;\":0x27f9,\r\n \"DoubleRightArrow;\":0x21d2, \"DoubleRightTee;\":0x22a8,\r\n \"DoubleUpArrow;\":0x21d1, \"DoubleUpDownArrow;\":0x21d5,\r\n \"DoubleVerticalBar;\":0x2225, \"DownArrow;\":0x2193,\r\n \"DownArrowBar;\":0x2913, \"DownArrowUpArrow;\":0x21f5,\r\n \"DownBreve;\":0x311, \"DownLeftRightVector;\":0x2950,\r\n \"DownLeftTeeVector;\":0x295e, \"DownLeftVector;\":0x21bd,\r\n \"DownLeftVectorBar;\":0x2956, \"DownRightTeeVector;\":0x295f,\r\n \"DownRightVector;\":0x21c1, \"DownRightVectorBar;\":0x2957,\r\n \"DownTee;\":0x22a4, \"DownTeeArrow;\":0x21a7,\r\n \"Downarrow;\":0x21d3, \"Dscr;\":[0xd835,0xdc9f],\r\n \"Dstrok;\":0x110, \"ENG;\":0x14a,\r\n \"ETH\":0xd0, \"ETH;\":0xd0,\r\n \"Eacute\":0xc9, \"Eacute;\":0xc9,\r\n \"Ecaron;\":0x11a, \"Ecirc\":0xca,\r\n \"Ecirc;\":0xca, \"Ecy;\":0x42d,\r\n \"Edot;\":0x116, \"Efr;\":[0xd835,0xdd08],\r\n \"Egrave\":0xc8, \"Egrave;\":0xc8,\r\n \"Element;\":0x2208, \"Emacr;\":0x112,\r\n \"EmptySmallSquare;\":0x25fb, \"EmptyVerySmallSquare;\":0x25ab,\r\n \"Eogon;\":0x118, \"Eopf;\":[0xd835,0xdd3c],\r\n \"Epsilon;\":0x395, \"Equal;\":0x2a75,\r\n \"EqualTilde;\":0x2242, \"Equilibrium;\":0x21cc,\r\n \"Escr;\":0x2130, \"Esim;\":0x2a73,\r\n \"Eta;\":0x397, \"Euml\":0xcb,\r\n \"Euml;\":0xcb, \"Exists;\":0x2203,\r\n \"ExponentialE;\":0x2147, \"Fcy;\":0x424,\r\n \"Ffr;\":[0xd835,0xdd09], \"FilledSmallSquare;\":0x25fc,\r\n \"FilledVerySmallSquare;\":0x25aa, \"Fopf;\":[0xd835,0xdd3d],\r\n \"ForAll;\":0x2200, \"Fouriertrf;\":0x2131,\r\n \"Fscr;\":0x2131, \"GJcy;\":0x403,\r\n \"GT\":0x3e, \"GT;\":0x3e,\r\n \"Gamma;\":0x393, \"Gammad;\":0x3dc,\r\n \"Gbreve;\":0x11e, \"Gcedil;\":0x122,\r\n \"Gcirc;\":0x11c, \"Gcy;\":0x413,\r\n \"Gdot;\":0x120, \"Gfr;\":[0xd835,0xdd0a],\r\n \"Gg;\":0x22d9, \"Gopf;\":[0xd835,0xdd3e],\r\n \"GreaterEqual;\":0x2265, \"GreaterEqualLess;\":0x22db,\r\n \"GreaterFullEqual;\":0x2267, \"GreaterGreater;\":0x2aa2,\r\n \"GreaterLess;\":0x2277, \"GreaterSlantEqual;\":0x2a7e,\r\n \"GreaterTilde;\":0x2273, \"Gscr;\":[0xd835,0xdca2],\r\n \"Gt;\":0x226b, \"HARDcy;\":0x42a,\r\n \"Hacek;\":0x2c7, \"Hat;\":0x5e,\r\n \"Hcirc;\":0x124, \"Hfr;\":0x210c,\r\n \"HilbertSpace;\":0x210b, \"Hopf;\":0x210d,\r\n \"HorizontalLine;\":0x2500, \"Hscr;\":0x210b,\r\n \"Hstrok;\":0x126, \"HumpDownHump;\":0x224e,\r\n \"HumpEqual;\":0x224f, \"IEcy;\":0x415,\r\n \"IJlig;\":0x132, \"IOcy;\":0x401,\r\n \"Iacute\":0xcd, \"Iacute;\":0xcd,\r\n \"Icirc\":0xce, \"Icirc;\":0xce,\r\n \"Icy;\":0x418, \"Idot;\":0x130,\r\n \"Ifr;\":0x2111, \"Igrave\":0xcc,\r\n \"Igrave;\":0xcc, \"Im;\":0x2111,\r\n \"Imacr;\":0x12a, \"ImaginaryI;\":0x2148,\r\n \"Implies;\":0x21d2, \"Int;\":0x222c,\r\n \"Integral;\":0x222b, \"Intersection;\":0x22c2,\r\n \"InvisibleComma;\":0x2063, \"InvisibleTimes;\":0x2062,\r\n \"Iogon;\":0x12e, \"Iopf;\":[0xd835,0xdd40],\r\n \"Iota;\":0x399, \"Iscr;\":0x2110,\r\n \"Itilde;\":0x128, \"Iukcy;\":0x406,\r\n \"Iuml\":0xcf, \"Iuml;\":0xcf,\r\n \"Jcirc;\":0x134, \"Jcy;\":0x419,\r\n \"Jfr;\":[0xd835,0xdd0d], \"Jopf;\":[0xd835,0xdd41],\r\n \"Jscr;\":[0xd835,0xdca5], \"Jsercy;\":0x408,\r\n \"Jukcy;\":0x404, \"KHcy;\":0x425,\r\n \"KJcy;\":0x40c, \"Kappa;\":0x39a,\r\n \"Kcedil;\":0x136, \"Kcy;\":0x41a,\r\n \"Kfr;\":[0xd835,0xdd0e], \"Kopf;\":[0xd835,0xdd42],\r\n \"Kscr;\":[0xd835,0xdca6], \"LJcy;\":0x409,\r\n \"LT\":0x3c, \"LT;\":0x3c,\r\n \"Lacute;\":0x139, \"Lambda;\":0x39b,\r\n \"Lang;\":0x27ea, \"Laplacetrf;\":0x2112,\r\n \"Larr;\":0x219e, \"Lcaron;\":0x13d,\r\n \"Lcedil;\":0x13b, \"Lcy;\":0x41b,\r\n \"LeftAngleBracket;\":0x27e8, \"LeftArrow;\":0x2190,\r\n \"LeftArrowBar;\":0x21e4, \"LeftArrowRightArrow;\":0x21c6,\r\n \"LeftCeiling;\":0x2308, \"LeftDoubleBracket;\":0x27e6,\r\n \"LeftDownTeeVector;\":0x2961, \"LeftDownVector;\":0x21c3,\r\n \"LeftDownVectorBar;\":0x2959, \"LeftFloor;\":0x230a,\r\n \"LeftRightArrow;\":0x2194, \"LeftRightVector;\":0x294e,\r\n \"LeftTee;\":0x22a3, \"LeftTeeArrow;\":0x21a4,\r\n \"LeftTeeVector;\":0x295a, \"LeftTriangle;\":0x22b2,\r\n \"LeftTriangleBar;\":0x29cf, \"LeftTriangleEqual;\":0x22b4,\r\n \"LeftUpDownVector;\":0x2951, \"LeftUpTeeVector;\":0x2960,\r\n \"LeftUpVector;\":0x21bf, \"LeftUpVectorBar;\":0x2958,\r\n \"LeftVector;\":0x21bc, \"LeftVectorBar;\":0x2952,\r\n \"Leftarrow;\":0x21d0, \"Leftrightarrow;\":0x21d4,\r\n \"LessEqualGreater;\":0x22da, \"LessFullEqual;\":0x2266,\r\n \"LessGreater;\":0x2276, \"LessLess;\":0x2aa1,\r\n \"LessSlantEqual;\":0x2a7d, \"LessTilde;\":0x2272,\r\n \"Lfr;\":[0xd835,0xdd0f], \"Ll;\":0x22d8,\r\n \"Lleftarrow;\":0x21da, \"Lmidot;\":0x13f,\r\n \"LongLeftArrow;\":0x27f5, \"LongLeftRightArrow;\":0x27f7,\r\n \"LongRightArrow;\":0x27f6, \"Longleftarrow;\":0x27f8,\r\n \"Longleftrightarrow;\":0x27fa, \"Longrightarrow;\":0x27f9,\r\n \"Lopf;\":[0xd835,0xdd43], \"LowerLeftArrow;\":0x2199,\r\n \"LowerRightArrow;\":0x2198, \"Lscr;\":0x2112,\r\n \"Lsh;\":0x21b0, \"Lstrok;\":0x141,\r\n \"Lt;\":0x226a, \"Map;\":0x2905,\r\n \"Mcy;\":0x41c, \"MediumSpace;\":0x205f,\r\n \"Mellintrf;\":0x2133, \"Mfr;\":[0xd835,0xdd10],\r\n \"MinusPlus;\":0x2213, \"Mopf;\":[0xd835,0xdd44],\r\n \"Mscr;\":0x2133, \"Mu;\":0x39c,\r\n \"NJcy;\":0x40a, \"Nacute;\":0x143,\r\n \"Ncaron;\":0x147, \"Ncedil;\":0x145,\r\n \"Ncy;\":0x41d, \"NegativeMediumSpace;\":0x200b,\r\n \"NegativeThickSpace;\":0x200b, \"NegativeThinSpace;\":0x200b,\r\n \"NegativeVeryThinSpace;\":0x200b, \"NestedGreaterGreater;\":0x226b,\r\n \"NestedLessLess;\":0x226a, \"NewLine;\":0xa,\r\n \"Nfr;\":[0xd835,0xdd11], \"NoBreak;\":0x2060,\r\n \"NonBreakingSpace;\":0xa0, \"Nopf;\":0x2115,\r\n \"Not;\":0x2aec, \"NotCongruent;\":0x2262,\r\n \"NotCupCap;\":0x226d, \"NotDoubleVerticalBar;\":0x2226,\r\n \"NotElement;\":0x2209, \"NotEqual;\":0x2260,\r\n \"NotEqualTilde;\":[0x2242,0x338], \"NotExists;\":0x2204,\r\n \"NotGreater;\":0x226f, \"NotGreaterEqual;\":0x2271,\r\n \"NotGreaterFullEqual;\":[0x2267,0x338], \"NotGreaterGreater;\":[0x226b,0x338],\r\n \"NotGreaterLess;\":0x2279, \"NotGreaterSlantEqual;\":[0x2a7e,0x338],\r\n \"NotGreaterTilde;\":0x2275, \"NotHumpDownHump;\":[0x224e,0x338],\r\n \"NotHumpEqual;\":[0x224f,0x338], \"NotLeftTriangle;\":0x22ea,\r\n \"NotLeftTriangleBar;\":[0x29cf,0x338], \"NotLeftTriangleEqual;\":0x22ec,\r\n \"NotLess;\":0x226e, \"NotLessEqual;\":0x2270,\r\n \"NotLessGreater;\":0x2278, \"NotLessLess;\":[0x226a,0x338],\r\n \"NotLessSlantEqual;\":[0x2a7d,0x338], \"NotLessTilde;\":0x2274,\r\n \"NotNestedGreaterGreater;\":[0x2aa2,0x338], \"NotNestedLessLess;\":[0x2aa1,0x338],\r\n \"NotPrecedes;\":0x2280, \"NotPrecedesEqual;\":[0x2aaf,0x338],\r\n \"NotPrecedesSlantEqual;\":0x22e0, \"NotReverseElement;\":0x220c,\r\n \"NotRightTriangle;\":0x22eb, \"NotRightTriangleBar;\":[0x29d0,0x338],\r\n \"NotRightTriangleEqual;\":0x22ed, \"NotSquareSubset;\":[0x228f,0x338],\r\n \"NotSquareSubsetEqual;\":0x22e2, \"NotSquareSuperset;\":[0x2290,0x338],\r\n \"NotSquareSupersetEqual;\":0x22e3, \"NotSubset;\":[0x2282,0x20d2],\r\n \"NotSubsetEqual;\":0x2288, \"NotSucceeds;\":0x2281,\r\n \"NotSucceedsEqual;\":[0x2ab0,0x338], \"NotSucceedsSlantEqual;\":0x22e1,\r\n \"NotSucceedsTilde;\":[0x227f,0x338], \"NotSuperset;\":[0x2283,0x20d2],\r\n \"NotSupersetEqual;\":0x2289, \"NotTilde;\":0x2241,\r\n \"NotTildeEqual;\":0x2244, \"NotTildeFullEqual;\":0x2247,\r\n \"NotTildeTilde;\":0x2249, \"NotVerticalBar;\":0x2224,\r\n \"Nscr;\":[0xd835,0xdca9], \"Ntilde\":0xd1,\r\n \"Ntilde;\":0xd1, \"Nu;\":0x39d,\r\n \"OElig;\":0x152, \"Oacute\":0xd3,\r\n \"Oacute;\":0xd3, \"Ocirc\":0xd4,\r\n \"Ocirc;\":0xd4, \"Ocy;\":0x41e,\r\n \"Odblac;\":0x150, \"Ofr;\":[0xd835,0xdd12],\r\n \"Ograve\":0xd2, \"Ograve;\":0xd2,\r\n \"Omacr;\":0x14c, \"Omega;\":0x3a9,\r\n \"Omicron;\":0x39f, \"Oopf;\":[0xd835,0xdd46],\r\n \"OpenCurlyDoubleQuote;\":0x201c, \"OpenCurlyQuote;\":0x2018,\r\n \"Or;\":0x2a54, \"Oscr;\":[0xd835,0xdcaa],\r\n \"Oslash\":0xd8, \"Oslash;\":0xd8,\r\n \"Otilde\":0xd5, \"Otilde;\":0xd5,\r\n \"Otimes;\":0x2a37, \"Ouml\":0xd6,\r\n \"Ouml;\":0xd6, \"OverBar;\":0x203e,\r\n \"OverBrace;\":0x23de, \"OverBracket;\":0x23b4,\r\n \"OverParenthesis;\":0x23dc, \"PartialD;\":0x2202,\r\n \"Pcy;\":0x41f, \"Pfr;\":[0xd835,0xdd13],\r\n \"Phi;\":0x3a6, \"Pi;\":0x3a0,\r\n \"PlusMinus;\":0xb1, \"Poincareplane;\":0x210c,\r\n \"Popf;\":0x2119, \"Pr;\":0x2abb,\r\n \"Precedes;\":0x227a, \"PrecedesEqual;\":0x2aaf,\r\n \"PrecedesSlantEqual;\":0x227c, \"PrecedesTilde;\":0x227e,\r\n \"Prime;\":0x2033, \"Product;\":0x220f,\r\n \"Proportion;\":0x2237, \"Proportional;\":0x221d,\r\n \"Pscr;\":[0xd835,0xdcab], \"Psi;\":0x3a8,\r\n \"QUOT\":0x22, \"QUOT;\":0x22,\r\n \"Qfr;\":[0xd835,0xdd14], \"Qopf;\":0x211a,\r\n \"Qscr;\":[0xd835,0xdcac], \"RBarr;\":0x2910,\r\n \"REG\":0xae, \"REG;\":0xae,\r\n \"Racute;\":0x154, \"Rang;\":0x27eb,\r\n \"Rarr;\":0x21a0, \"Rarrtl;\":0x2916,\r\n \"Rcaron;\":0x158, \"Rcedil;\":0x156,\r\n \"Rcy;\":0x420, \"Re;\":0x211c,\r\n \"ReverseElement;\":0x220b, \"ReverseEquilibrium;\":0x21cb,\r\n \"ReverseUpEquilibrium;\":0x296f, \"Rfr;\":0x211c,\r\n \"Rho;\":0x3a1, \"RightAngleBracket;\":0x27e9,\r\n \"RightArrow;\":0x2192, \"RightArrowBar;\":0x21e5,\r\n \"RightArrowLeftArrow;\":0x21c4, \"RightCeiling;\":0x2309,\r\n \"RightDoubleBracket;\":0x27e7, \"RightDownTeeVector;\":0x295d,\r\n \"RightDownVector;\":0x21c2, \"RightDownVectorBar;\":0x2955,\r\n \"RightFloor;\":0x230b, \"RightTee;\":0x22a2,\r\n \"RightTeeArrow;\":0x21a6, \"RightTeeVector;\":0x295b,\r\n \"RightTriangle;\":0x22b3, \"RightTriangleBar;\":0x29d0,\r\n \"RightTriangleEqual;\":0x22b5, \"RightUpDownVector;\":0x294f,\r\n \"RightUpTeeVector;\":0x295c, \"RightUpVector;\":0x21be,\r\n \"RightUpVectorBar;\":0x2954, \"RightVector;\":0x21c0,\r\n \"RightVectorBar;\":0x2953, \"Rightarrow;\":0x21d2,\r\n \"Ropf;\":0x211d, \"RoundImplies;\":0x2970,\r\n \"Rrightarrow;\":0x21db, \"Rscr;\":0x211b,\r\n \"Rsh;\":0x21b1, \"RuleDelayed;\":0x29f4,\r\n \"SHCHcy;\":0x429, \"SHcy;\":0x428,\r\n \"SOFTcy;\":0x42c, \"Sacute;\":0x15a,\r\n \"Sc;\":0x2abc, \"Scaron;\":0x160,\r\n \"Scedil;\":0x15e, \"Scirc;\":0x15c,\r\n \"Scy;\":0x421, \"Sfr;\":[0xd835,0xdd16],\r\n \"ShortDownArrow;\":0x2193, \"ShortLeftArrow;\":0x2190,\r\n \"ShortRightArrow;\":0x2192, \"ShortUpArrow;\":0x2191,\r\n \"Sigma;\":0x3a3, \"SmallCircle;\":0x2218,\r\n \"Sopf;\":[0xd835,0xdd4a], \"Sqrt;\":0x221a,\r\n \"Square;\":0x25a1, \"SquareIntersection;\":0x2293,\r\n \"SquareSubset;\":0x228f, \"SquareSubsetEqual;\":0x2291,\r\n \"SquareSuperset;\":0x2290, \"SquareSupersetEqual;\":0x2292,\r\n \"SquareUnion;\":0x2294, \"Sscr;\":[0xd835,0xdcae],\r\n \"Star;\":0x22c6, \"Sub;\":0x22d0,\r\n \"Subset;\":0x22d0, \"SubsetEqual;\":0x2286,\r\n \"Succeeds;\":0x227b, \"SucceedsEqual;\":0x2ab0,\r\n \"SucceedsSlantEqual;\":0x227d, \"SucceedsTilde;\":0x227f,\r\n \"SuchThat;\":0x220b, \"Sum;\":0x2211,\r\n \"Sup;\":0x22d1, \"Superset;\":0x2283,\r\n \"SupersetEqual;\":0x2287, \"Supset;\":0x22d1,\r\n \"THORN\":0xde, \"THORN;\":0xde,\r\n \"TRADE;\":0x2122, \"TSHcy;\":0x40b,\r\n \"TScy;\":0x426, \"Tab;\":0x9,\r\n \"Tau;\":0x3a4, \"Tcaron;\":0x164,\r\n \"Tcedil;\":0x162, \"Tcy;\":0x422,\r\n \"Tfr;\":[0xd835,0xdd17], \"Therefore;\":0x2234,\r\n \"Theta;\":0x398, \"ThickSpace;\":[0x205f,0x200a],\r\n \"ThinSpace;\":0x2009, \"Tilde;\":0x223c,\r\n \"TildeEqual;\":0x2243, \"TildeFullEqual;\":0x2245,\r\n \"TildeTilde;\":0x2248, \"Topf;\":[0xd835,0xdd4b],\r\n \"TripleDot;\":0x20db, \"Tscr;\":[0xd835,0xdcaf],\r\n \"Tstrok;\":0x166, \"Uacute\":0xda,\r\n \"Uacute;\":0xda, \"Uarr;\":0x219f,\r\n \"Uarrocir;\":0x2949, \"Ubrcy;\":0x40e,\r\n \"Ubreve;\":0x16c, \"Ucirc\":0xdb,\r\n \"Ucirc;\":0xdb, \"Ucy;\":0x423,\r\n \"Udblac;\":0x170, \"Ufr;\":[0xd835,0xdd18],\r\n \"Ugrave\":0xd9, \"Ugrave;\":0xd9,\r\n \"Umacr;\":0x16a, \"UnderBar;\":0x5f,\r\n \"UnderBrace;\":0x23df, \"UnderBracket;\":0x23b5,\r\n \"UnderParenthesis;\":0x23dd, \"Union;\":0x22c3,\r\n \"UnionPlus;\":0x228e, \"Uogon;\":0x172,\r\n \"Uopf;\":[0xd835,0xdd4c], \"UpArrow;\":0x2191,\r\n \"UpArrowBar;\":0x2912, \"UpArrowDownArrow;\":0x21c5,\r\n \"UpDownArrow;\":0x2195, \"UpEquilibrium;\":0x296e,\r\n \"UpTee;\":0x22a5, \"UpTeeArrow;\":0x21a5,\r\n \"Uparrow;\":0x21d1, \"Updownarrow;\":0x21d5,\r\n \"UpperLeftArrow;\":0x2196, \"UpperRightArrow;\":0x2197,\r\n \"Upsi;\":0x3d2, \"Upsilon;\":0x3a5,\r\n \"Uring;\":0x16e, \"Uscr;\":[0xd835,0xdcb0],\r\n \"Utilde;\":0x168, \"Uuml\":0xdc,\r\n \"Uuml;\":0xdc, \"VDash;\":0x22ab,\r\n \"Vbar;\":0x2aeb, \"Vcy;\":0x412,\r\n \"Vdash;\":0x22a9, \"Vdashl;\":0x2ae6,\r\n \"Vee;\":0x22c1, \"Verbar;\":0x2016,\r\n \"Vert;\":0x2016, \"VerticalBar;\":0x2223,\r\n \"VerticalLine;\":0x7c, \"VerticalSeparator;\":0x2758,\r\n \"VerticalTilde;\":0x2240, \"VeryThinSpace;\":0x200a,\r\n \"Vfr;\":[0xd835,0xdd19], \"Vopf;\":[0xd835,0xdd4d],\r\n \"Vscr;\":[0xd835,0xdcb1], \"Vvdash;\":0x22aa,\r\n \"Wcirc;\":0x174, \"Wedge;\":0x22c0,\r\n \"Wfr;\":[0xd835,0xdd1a], \"Wopf;\":[0xd835,0xdd4e],\r\n \"Wscr;\":[0xd835,0xdcb2], \"Xfr;\":[0xd835,0xdd1b],\r\n \"Xi;\":0x39e, \"Xopf;\":[0xd835,0xdd4f],\r\n \"Xscr;\":[0xd835,0xdcb3], \"YAcy;\":0x42f,\r\n \"YIcy;\":0x407, \"YUcy;\":0x42e,\r\n \"Yacute\":0xdd, \"Yacute;\":0xdd,\r\n \"Ycirc;\":0x176, \"Ycy;\":0x42b,\r\n \"Yfr;\":[0xd835,0xdd1c], \"Yopf;\":[0xd835,0xdd50],\r\n \"Yscr;\":[0xd835,0xdcb4], \"Yuml;\":0x178,\r\n \"ZHcy;\":0x416, \"Zacute;\":0x179,\r\n \"Zcaron;\":0x17d, \"Zcy;\":0x417,\r\n \"Zdot;\":0x17b, \"ZeroWidthSpace;\":0x200b,\r\n \"Zeta;\":0x396, \"Zfr;\":0x2128,\r\n \"Zopf;\":0x2124, \"Zscr;\":[0xd835,0xdcb5],\r\n \"aacute\":0xe1, \"aacute;\":0xe1,\r\n \"abreve;\":0x103, \"ac;\":0x223e,\r\n \"acE;\":[0x223e,0x333], \"acd;\":0x223f,\r\n \"acirc\":0xe2, \"acirc;\":0xe2,\r\n \"acute\":0xb4, \"acute;\":0xb4,\r\n \"acy;\":0x430, \"aelig\":0xe6,\r\n \"aelig;\":0xe6, \"af;\":0x2061,\r\n \"afr;\":[0xd835,0xdd1e], \"agrave\":0xe0,\r\n \"agrave;\":0xe0, \"alefsym;\":0x2135,\r\n \"aleph;\":0x2135, \"alpha;\":0x3b1,\r\n \"amacr;\":0x101, \"amalg;\":0x2a3f,\r\n \"amp\":0x26, \"amp;\":0x26,\r\n \"and;\":0x2227, \"andand;\":0x2a55,\r\n \"andd;\":0x2a5c, \"andslope;\":0x2a58,\r\n \"andv;\":0x2a5a, \"ang;\":0x2220,\r\n \"ange;\":0x29a4, \"angle;\":0x2220,\r\n \"angmsd;\":0x2221, \"angmsdaa;\":0x29a8,\r\n \"angmsdab;\":0x29a9, \"angmsdac;\":0x29aa,\r\n \"angmsdad;\":0x29ab, \"angmsdae;\":0x29ac,\r\n \"angmsdaf;\":0x29ad, \"angmsdag;\":0x29ae,\r\n \"angmsdah;\":0x29af, \"angrt;\":0x221f,\r\n \"angrtvb;\":0x22be, \"angrtvbd;\":0x299d,\r\n \"angsph;\":0x2222, \"angst;\":0xc5,\r\n \"angzarr;\":0x237c, \"aogon;\":0x105,\r\n \"aopf;\":[0xd835,0xdd52], \"ap;\":0x2248,\r\n \"apE;\":0x2a70, \"apacir;\":0x2a6f,\r\n \"ape;\":0x224a, \"apid;\":0x224b,\r\n \"apos;\":0x27, \"approx;\":0x2248,\r\n \"approxeq;\":0x224a, \"aring\":0xe5,\r\n \"aring;\":0xe5, \"ascr;\":[0xd835,0xdcb6],\r\n \"ast;\":0x2a, \"asymp;\":0x2248,\r\n \"asympeq;\":0x224d, \"atilde\":0xe3,\r\n \"atilde;\":0xe3, \"auml\":0xe4,\r\n \"auml;\":0xe4, \"awconint;\":0x2233,\r\n \"awint;\":0x2a11, \"bNot;\":0x2aed,\r\n \"backcong;\":0x224c, \"backepsilon;\":0x3f6,\r\n \"backprime;\":0x2035, \"backsim;\":0x223d,\r\n \"backsimeq;\":0x22cd, \"barvee;\":0x22bd,\r\n \"barwed;\":0x2305, \"barwedge;\":0x2305,\r\n \"bbrk;\":0x23b5, \"bbrktbrk;\":0x23b6,\r\n \"bcong;\":0x224c, \"bcy;\":0x431,\r\n \"bdquo;\":0x201e, \"becaus;\":0x2235,\r\n \"because;\":0x2235, \"bemptyv;\":0x29b0,\r\n \"bepsi;\":0x3f6, \"bernou;\":0x212c,\r\n \"beta;\":0x3b2, \"beth;\":0x2136,\r\n \"between;\":0x226c, \"bfr;\":[0xd835,0xdd1f],\r\n \"bigcap;\":0x22c2, \"bigcirc;\":0x25ef,\r\n \"bigcup;\":0x22c3, \"bigodot;\":0x2a00,\r\n \"bigoplus;\":0x2a01, \"bigotimes;\":0x2a02,\r\n \"bigsqcup;\":0x2a06, \"bigstar;\":0x2605,\r\n \"bigtriangledown;\":0x25bd, \"bigtriangleup;\":0x25b3,\r\n \"biguplus;\":0x2a04, \"bigvee;\":0x22c1,\r\n \"bigwedge;\":0x22c0, \"bkarow;\":0x290d,\r\n \"blacklozenge;\":0x29eb, \"blacksquare;\":0x25aa,\r\n \"blacktriangle;\":0x25b4, \"blacktriangledown;\":0x25be,\r\n \"blacktriangleleft;\":0x25c2, \"blacktriangleright;\":0x25b8,\r\n \"blank;\":0x2423, \"blk12;\":0x2592,\r\n \"blk14;\":0x2591, \"blk34;\":0x2593,\r\n \"block;\":0x2588, \"bne;\":[0x3d,0x20e5],\r\n \"bnequiv;\":[0x2261,0x20e5], \"bnot;\":0x2310,\r\n \"bopf;\":[0xd835,0xdd53], \"bot;\":0x22a5,\r\n \"bottom;\":0x22a5, \"bowtie;\":0x22c8,\r\n \"boxDL;\":0x2557, \"boxDR;\":0x2554,\r\n \"boxDl;\":0x2556, \"boxDr;\":0x2553,\r\n \"boxH;\":0x2550, \"boxHD;\":0x2566,\r\n \"boxHU;\":0x2569, \"boxHd;\":0x2564,\r\n \"boxHu;\":0x2567, \"boxUL;\":0x255d,\r\n \"boxUR;\":0x255a, \"boxUl;\":0x255c,\r\n \"boxUr;\":0x2559, \"boxV;\":0x2551,\r\n \"boxVH;\":0x256c, \"boxVL;\":0x2563,\r\n \"boxVR;\":0x2560, \"boxVh;\":0x256b,\r\n \"boxVl;\":0x2562, \"boxVr;\":0x255f,\r\n \"boxbox;\":0x29c9, \"boxdL;\":0x2555,\r\n \"boxdR;\":0x2552, \"boxdl;\":0x2510,\r\n \"boxdr;\":0x250c, \"boxh;\":0x2500,\r\n \"boxhD;\":0x2565, \"boxhU;\":0x2568,\r\n \"boxhd;\":0x252c, \"boxhu;\":0x2534,\r\n \"boxminus;\":0x229f, \"boxplus;\":0x229e,\r\n \"boxtimes;\":0x22a0, \"boxuL;\":0x255b,\r\n \"boxuR;\":0x2558, \"boxul;\":0x2518,\r\n \"boxur;\":0x2514, \"boxv;\":0x2502,\r\n \"boxvH;\":0x256a, \"boxvL;\":0x2561,\r\n \"boxvR;\":0x255e, \"boxvh;\":0x253c,\r\n \"boxvl;\":0x2524, \"boxvr;\":0x251c,\r\n \"bprime;\":0x2035, \"breve;\":0x2d8,\r\n \"brvbar\":0xa6, \"brvbar;\":0xa6,\r\n \"bscr;\":[0xd835,0xdcb7], \"bsemi;\":0x204f,\r\n \"bsim;\":0x223d, \"bsime;\":0x22cd,\r\n \"bsol;\":0x5c, \"bsolb;\":0x29c5,\r\n \"bsolhsub;\":0x27c8, \"bull;\":0x2022,\r\n \"bullet;\":0x2022, \"bump;\":0x224e,\r\n \"bumpE;\":0x2aae, \"bumpe;\":0x224f,\r\n \"bumpeq;\":0x224f, \"cacute;\":0x107,\r\n \"cap;\":0x2229, \"capand;\":0x2a44,\r\n \"capbrcup;\":0x2a49, \"capcap;\":0x2a4b,\r\n \"capcup;\":0x2a47, \"capdot;\":0x2a40,\r\n \"caps;\":[0x2229,0xfe00], \"caret;\":0x2041,\r\n \"caron;\":0x2c7, \"ccaps;\":0x2a4d,\r\n \"ccaron;\":0x10d, \"ccedil\":0xe7,\r\n \"ccedil;\":0xe7, \"ccirc;\":0x109,\r\n \"ccups;\":0x2a4c, \"ccupssm;\":0x2a50,\r\n \"cdot;\":0x10b, \"cedil\":0xb8,\r\n \"cedil;\":0xb8, \"cemptyv;\":0x29b2,\r\n \"cent\":0xa2, \"cent;\":0xa2,\r\n \"centerdot;\":0xb7, \"cfr;\":[0xd835,0xdd20],\r\n \"chcy;\":0x447, \"check;\":0x2713,\r\n \"checkmark;\":0x2713, \"chi;\":0x3c7,\r\n \"cir;\":0x25cb, \"cirE;\":0x29c3,\r\n \"circ;\":0x2c6, \"circeq;\":0x2257,\r\n \"circlearrowleft;\":0x21ba, \"circlearrowright;\":0x21bb,\r\n \"circledR;\":0xae, \"circledS;\":0x24c8,\r\n \"circledast;\":0x229b, \"circledcirc;\":0x229a,\r\n \"circleddash;\":0x229d, \"cire;\":0x2257,\r\n \"cirfnint;\":0x2a10, \"cirmid;\":0x2aef,\r\n \"cirscir;\":0x29c2, \"clubs;\":0x2663,\r\n \"clubsuit;\":0x2663, \"colon;\":0x3a,\r\n \"colone;\":0x2254, \"coloneq;\":0x2254,\r\n \"comma;\":0x2c, \"commat;\":0x40,\r\n \"comp;\":0x2201, \"compfn;\":0x2218,\r\n \"complement;\":0x2201, \"complexes;\":0x2102,\r\n \"cong;\":0x2245, \"congdot;\":0x2a6d,\r\n \"conint;\":0x222e, \"copf;\":[0xd835,0xdd54],\r\n \"coprod;\":0x2210, \"copy\":0xa9,\r\n \"copy;\":0xa9, \"copysr;\":0x2117,\r\n \"crarr;\":0x21b5, \"cross;\":0x2717,\r\n \"cscr;\":[0xd835,0xdcb8], \"csub;\":0x2acf,\r\n \"csube;\":0x2ad1, \"csup;\":0x2ad0,\r\n \"csupe;\":0x2ad2, \"ctdot;\":0x22ef,\r\n \"cudarrl;\":0x2938, \"cudarrr;\":0x2935,\r\n \"cuepr;\":0x22de, \"cuesc;\":0x22df,\r\n \"cularr;\":0x21b6, \"cularrp;\":0x293d,\r\n \"cup;\":0x222a, \"cupbrcap;\":0x2a48,\r\n \"cupcap;\":0x2a46, \"cupcup;\":0x2a4a,\r\n \"cupdot;\":0x228d, \"cupor;\":0x2a45,\r\n \"cups;\":[0x222a,0xfe00], \"curarr;\":0x21b7,\r\n \"curarrm;\":0x293c, \"curlyeqprec;\":0x22de,\r\n \"curlyeqsucc;\":0x22df, \"curlyvee;\":0x22ce,\r\n \"curlywedge;\":0x22cf, \"curren\":0xa4,\r\n \"curren;\":0xa4, \"curvearrowleft;\":0x21b6,\r\n \"curvearrowright;\":0x21b7, \"cuvee;\":0x22ce,\r\n \"cuwed;\":0x22cf, \"cwconint;\":0x2232,\r\n \"cwint;\":0x2231, \"cylcty;\":0x232d,\r\n \"dArr;\":0x21d3, \"dHar;\":0x2965,\r\n \"dagger;\":0x2020, \"daleth;\":0x2138,\r\n \"darr;\":0x2193, \"dash;\":0x2010,\r\n \"dashv;\":0x22a3, \"dbkarow;\":0x290f,\r\n \"dblac;\":0x2dd, \"dcaron;\":0x10f,\r\n \"dcy;\":0x434, \"dd;\":0x2146,\r\n \"ddagger;\":0x2021, \"ddarr;\":0x21ca,\r\n \"ddotseq;\":0x2a77, \"deg\":0xb0,\r\n \"deg;\":0xb0, \"delta;\":0x3b4,\r\n \"demptyv;\":0x29b1, \"dfisht;\":0x297f,\r\n \"dfr;\":[0xd835,0xdd21], \"dharl;\":0x21c3,\r\n \"dharr;\":0x21c2, \"diam;\":0x22c4,\r\n \"diamond;\":0x22c4, \"diamondsuit;\":0x2666,\r\n \"diams;\":0x2666, \"die;\":0xa8,\r\n \"digamma;\":0x3dd, \"disin;\":0x22f2,\r\n \"div;\":0xf7, \"divide\":0xf7,\r\n \"divide;\":0xf7, \"divideontimes;\":0x22c7,\r\n \"divonx;\":0x22c7, \"djcy;\":0x452,\r\n \"dlcorn;\":0x231e, \"dlcrop;\":0x230d,\r\n \"dollar;\":0x24, \"dopf;\":[0xd835,0xdd55],\r\n \"dot;\":0x2d9, \"doteq;\":0x2250,\r\n \"doteqdot;\":0x2251, \"dotminus;\":0x2238,\r\n \"dotplus;\":0x2214, \"dotsquare;\":0x22a1,\r\n \"doublebarwedge;\":0x2306, \"downarrow;\":0x2193,\r\n \"downdownarrows;\":0x21ca, \"downharpoonleft;\":0x21c3,\r\n \"downharpoonright;\":0x21c2, \"drbkarow;\":0x2910,\r\n \"drcorn;\":0x231f, \"drcrop;\":0x230c,\r\n \"dscr;\":[0xd835,0xdcb9], \"dscy;\":0x455,\r\n \"dsol;\":0x29f6, \"dstrok;\":0x111,\r\n \"dtdot;\":0x22f1, \"dtri;\":0x25bf,\r\n \"dtrif;\":0x25be, \"duarr;\":0x21f5,\r\n \"duhar;\":0x296f, \"dwangle;\":0x29a6,\r\n \"dzcy;\":0x45f, \"dzigrarr;\":0x27ff,\r\n \"eDDot;\":0x2a77, \"eDot;\":0x2251,\r\n \"eacute\":0xe9, \"eacute;\":0xe9,\r\n \"easter;\":0x2a6e, \"ecaron;\":0x11b,\r\n \"ecir;\":0x2256, \"ecirc\":0xea,\r\n \"ecirc;\":0xea, \"ecolon;\":0x2255,\r\n \"ecy;\":0x44d, \"edot;\":0x117,\r\n \"ee;\":0x2147, \"efDot;\":0x2252,\r\n \"efr;\":[0xd835,0xdd22], \"eg;\":0x2a9a,\r\n \"egrave\":0xe8, \"egrave;\":0xe8,\r\n \"egs;\":0x2a96, \"egsdot;\":0x2a98,\r\n \"el;\":0x2a99, \"elinters;\":0x23e7,\r\n \"ell;\":0x2113, \"els;\":0x2a95,\r\n \"elsdot;\":0x2a97, \"emacr;\":0x113,\r\n \"empty;\":0x2205, \"emptyset;\":0x2205,\r\n \"emptyv;\":0x2205, \"emsp13;\":0x2004,\r\n \"emsp14;\":0x2005, \"emsp;\":0x2003,\r\n \"eng;\":0x14b, \"ensp;\":0x2002,\r\n \"eogon;\":0x119, \"eopf;\":[0xd835,0xdd56],\r\n \"epar;\":0x22d5, \"eparsl;\":0x29e3,\r\n \"eplus;\":0x2a71, \"epsi;\":0x3b5,\r\n \"epsilon;\":0x3b5, \"epsiv;\":0x3f5,\r\n \"eqcirc;\":0x2256, \"eqcolon;\":0x2255,\r\n \"eqsim;\":0x2242, \"eqslantgtr;\":0x2a96,\r\n \"eqslantless;\":0x2a95, \"equals;\":0x3d,\r\n \"equest;\":0x225f, \"equiv;\":0x2261,\r\n \"equivDD;\":0x2a78, \"eqvparsl;\":0x29e5,\r\n \"erDot;\":0x2253, \"erarr;\":0x2971,\r\n \"escr;\":0x212f, \"esdot;\":0x2250,\r\n \"esim;\":0x2242, \"eta;\":0x3b7,\r\n \"eth\":0xf0, \"eth;\":0xf0,\r\n \"euml\":0xeb, \"euml;\":0xeb,\r\n \"euro;\":0x20ac, \"excl;\":0x21,\r\n \"exist;\":0x2203, \"expectation;\":0x2130,\r\n \"exponentiale;\":0x2147, \"fallingdotseq;\":0x2252,\r\n \"fcy;\":0x444, \"female;\":0x2640,\r\n \"ffilig;\":0xfb03, \"fflig;\":0xfb00,\r\n \"ffllig;\":0xfb04, \"ffr;\":[0xd835,0xdd23],\r\n \"filig;\":0xfb01, \"fjlig;\":[0x66,0x6a],\r\n \"flat;\":0x266d, \"fllig;\":0xfb02,\r\n \"fltns;\":0x25b1, \"fnof;\":0x192,\r\n \"fopf;\":[0xd835,0xdd57], \"forall;\":0x2200,\r\n \"fork;\":0x22d4, \"forkv;\":0x2ad9,\r\n \"fpartint;\":0x2a0d, \"frac12\":0xbd,\r\n \"frac12;\":0xbd, \"frac13;\":0x2153,\r\n \"frac14\":0xbc, \"frac14;\":0xbc,\r\n \"frac15;\":0x2155, \"frac16;\":0x2159,\r\n \"frac18;\":0x215b, \"frac23;\":0x2154,\r\n \"frac25;\":0x2156, \"frac34\":0xbe,\r\n \"frac34;\":0xbe, \"frac35;\":0x2157,\r\n \"frac38;\":0x215c, \"frac45;\":0x2158,\r\n \"frac56;\":0x215a, \"frac58;\":0x215d,\r\n \"frac78;\":0x215e, \"frasl;\":0x2044,\r\n \"frown;\":0x2322, \"fscr;\":[0xd835,0xdcbb],\r\n \"gE;\":0x2267, \"gEl;\":0x2a8c,\r\n \"gacute;\":0x1f5, \"gamma;\":0x3b3,\r\n \"gammad;\":0x3dd, \"gap;\":0x2a86,\r\n \"gbreve;\":0x11f, \"gcirc;\":0x11d,\r\n \"gcy;\":0x433, \"gdot;\":0x121,\r\n \"ge;\":0x2265, \"gel;\":0x22db,\r\n \"geq;\":0x2265, \"geqq;\":0x2267,\r\n \"geqslant;\":0x2a7e, \"ges;\":0x2a7e,\r\n \"gescc;\":0x2aa9, \"gesdot;\":0x2a80,\r\n \"gesdoto;\":0x2a82, \"gesdotol;\":0x2a84,\r\n \"gesl;\":[0x22db,0xfe00], \"gesles;\":0x2a94,\r\n \"gfr;\":[0xd835,0xdd24], \"gg;\":0x226b,\r\n \"ggg;\":0x22d9, \"gimel;\":0x2137,\r\n \"gjcy;\":0x453, \"gl;\":0x2277,\r\n \"glE;\":0x2a92, \"gla;\":0x2aa5,\r\n \"glj;\":0x2aa4, \"gnE;\":0x2269,\r\n \"gnap;\":0x2a8a, \"gnapprox;\":0x2a8a,\r\n \"gne;\":0x2a88, \"gneq;\":0x2a88,\r\n \"gneqq;\":0x2269, \"gnsim;\":0x22e7,\r\n \"gopf;\":[0xd835,0xdd58], \"grave;\":0x60,\r\n \"gscr;\":0x210a, \"gsim;\":0x2273,\r\n \"gsime;\":0x2a8e, \"gsiml;\":0x2a90,\r\n \"gt\":0x3e, \"gt;\":0x3e,\r\n \"gtcc;\":0x2aa7, \"gtcir;\":0x2a7a,\r\n \"gtdot;\":0x22d7, \"gtlPar;\":0x2995,\r\n \"gtquest;\":0x2a7c, \"gtrapprox;\":0x2a86,\r\n \"gtrarr;\":0x2978, \"gtrdot;\":0x22d7,\r\n \"gtreqless;\":0x22db, \"gtreqqless;\":0x2a8c,\r\n \"gtrless;\":0x2277, \"gtrsim;\":0x2273,\r\n \"gvertneqq;\":[0x2269,0xfe00], \"gvnE;\":[0x2269,0xfe00],\r\n \"hArr;\":0x21d4, \"hairsp;\":0x200a,\r\n \"half;\":0xbd, \"hamilt;\":0x210b,\r\n \"hardcy;\":0x44a, \"harr;\":0x2194,\r\n \"harrcir;\":0x2948, \"harrw;\":0x21ad,\r\n \"hbar;\":0x210f, \"hcirc;\":0x125,\r\n \"hearts;\":0x2665, \"heartsuit;\":0x2665,\r\n \"hellip;\":0x2026, \"hercon;\":0x22b9,\r\n \"hfr;\":[0xd835,0xdd25], \"hksearow;\":0x2925,\r\n \"hkswarow;\":0x2926, \"hoarr;\":0x21ff,\r\n \"homtht;\":0x223b, \"hookleftarrow;\":0x21a9,\r\n \"hookrightarrow;\":0x21aa, \"hopf;\":[0xd835,0xdd59],\r\n \"horbar;\":0x2015, \"hscr;\":[0xd835,0xdcbd],\r\n \"hslash;\":0x210f, \"hstrok;\":0x127,\r\n \"hybull;\":0x2043, \"hyphen;\":0x2010,\r\n \"iacute\":0xed, \"iacute;\":0xed,\r\n \"ic;\":0x2063, \"icirc\":0xee,\r\n \"icirc;\":0xee, \"icy;\":0x438,\r\n \"iecy;\":0x435, \"iexcl\":0xa1,\r\n \"iexcl;\":0xa1, \"iff;\":0x21d4,\r\n \"ifr;\":[0xd835,0xdd26], \"igrave\":0xec,\r\n \"igrave;\":0xec, \"ii;\":0x2148,\r\n \"iiiint;\":0x2a0c, \"iiint;\":0x222d,\r\n \"iinfin;\":0x29dc, \"iiota;\":0x2129,\r\n \"ijlig;\":0x133, \"imacr;\":0x12b,\r\n \"image;\":0x2111, \"imagline;\":0x2110,\r\n \"imagpart;\":0x2111, \"imath;\":0x131,\r\n \"imof;\":0x22b7, \"imped;\":0x1b5,\r\n \"in;\":0x2208, \"incare;\":0x2105,\r\n \"infin;\":0x221e, \"infintie;\":0x29dd,\r\n \"inodot;\":0x131, \"int;\":0x222b,\r\n \"intcal;\":0x22ba, \"integers;\":0x2124,\r\n \"intercal;\":0x22ba, \"intlarhk;\":0x2a17,\r\n \"intprod;\":0x2a3c, \"iocy;\":0x451,\r\n \"iogon;\":0x12f, \"iopf;\":[0xd835,0xdd5a],\r\n \"iota;\":0x3b9, \"iprod;\":0x2a3c,\r\n \"iquest\":0xbf, \"iquest;\":0xbf,\r\n \"iscr;\":[0xd835,0xdcbe], \"isin;\":0x2208,\r\n \"isinE;\":0x22f9, \"isindot;\":0x22f5,\r\n \"isins;\":0x22f4, \"isinsv;\":0x22f3,\r\n \"isinv;\":0x2208, \"it;\":0x2062,\r\n \"itilde;\":0x129, \"iukcy;\":0x456,\r\n \"iuml\":0xef, \"iuml;\":0xef,\r\n \"jcirc;\":0x135, \"jcy;\":0x439,\r\n \"jfr;\":[0xd835,0xdd27], \"jmath;\":0x237,\r\n \"jopf;\":[0xd835,0xdd5b], \"jscr;\":[0xd835,0xdcbf],\r\n \"jsercy;\":0x458, \"jukcy;\":0x454,\r\n \"kappa;\":0x3ba, \"kappav;\":0x3f0,\r\n \"kcedil;\":0x137, \"kcy;\":0x43a,\r\n \"kfr;\":[0xd835,0xdd28], \"kgreen;\":0x138,\r\n \"khcy;\":0x445, \"kjcy;\":0x45c,\r\n \"kopf;\":[0xd835,0xdd5c], \"kscr;\":[0xd835,0xdcc0],\r\n \"lAarr;\":0x21da, \"lArr;\":0x21d0,\r\n \"lAtail;\":0x291b, \"lBarr;\":0x290e,\r\n \"lE;\":0x2266, \"lEg;\":0x2a8b,\r\n \"lHar;\":0x2962, \"lacute;\":0x13a,\r\n \"laemptyv;\":0x29b4, \"lagran;\":0x2112,\r\n \"lambda;\":0x3bb, \"lang;\":0x27e8,\r\n \"langd;\":0x2991, \"langle;\":0x27e8,\r\n \"lap;\":0x2a85, \"laquo\":0xab,\r\n \"laquo;\":0xab, \"larr;\":0x2190,\r\n \"larrb;\":0x21e4, \"larrbfs;\":0x291f,\r\n \"larrfs;\":0x291d, \"larrhk;\":0x21a9,\r\n \"larrlp;\":0x21ab, \"larrpl;\":0x2939,\r\n \"larrsim;\":0x2973, \"larrtl;\":0x21a2,\r\n \"lat;\":0x2aab, \"latail;\":0x2919,\r\n \"late;\":0x2aad, \"lates;\":[0x2aad,0xfe00],\r\n \"lbarr;\":0x290c, \"lbbrk;\":0x2772,\r\n \"lbrace;\":0x7b, \"lbrack;\":0x5b,\r\n \"lbrke;\":0x298b, \"lbrksld;\":0x298f,\r\n \"lbrkslu;\":0x298d, \"lcaron;\":0x13e,\r\n \"lcedil;\":0x13c, \"lceil;\":0x2308,\r\n \"lcub;\":0x7b, \"lcy;\":0x43b,\r\n \"ldca;\":0x2936, \"ldquo;\":0x201c,\r\n \"ldquor;\":0x201e, \"ldrdhar;\":0x2967,\r\n \"ldrushar;\":0x294b, \"ldsh;\":0x21b2,\r\n \"le;\":0x2264, \"leftarrow;\":0x2190,\r\n \"leftarrowtail;\":0x21a2, \"leftharpoondown;\":0x21bd,\r\n \"leftharpoonup;\":0x21bc, \"leftleftarrows;\":0x21c7,\r\n \"leftrightarrow;\":0x2194, \"leftrightarrows;\":0x21c6,\r\n \"leftrightharpoons;\":0x21cb, \"leftrightsquigarrow;\":0x21ad,\r\n \"leftthreetimes;\":0x22cb, \"leg;\":0x22da,\r\n \"leq;\":0x2264, \"leqq;\":0x2266,\r\n \"leqslant;\":0x2a7d, \"les;\":0x2a7d,\r\n \"lescc;\":0x2aa8, \"lesdot;\":0x2a7f,\r\n \"lesdoto;\":0x2a81, \"lesdotor;\":0x2a83,\r\n \"lesg;\":[0x22da,0xfe00], \"lesges;\":0x2a93,\r\n \"lessapprox;\":0x2a85, \"lessdot;\":0x22d6,\r\n \"lesseqgtr;\":0x22da, \"lesseqqgtr;\":0x2a8b,\r\n \"lessgtr;\":0x2276, \"lesssim;\":0x2272,\r\n \"lfisht;\":0x297c, \"lfloor;\":0x230a,\r\n \"lfr;\":[0xd835,0xdd29], \"lg;\":0x2276,\r\n \"lgE;\":0x2a91, \"lhard;\":0x21bd,\r\n \"lharu;\":0x21bc, \"lharul;\":0x296a,\r\n \"lhblk;\":0x2584, \"ljcy;\":0x459,\r\n \"ll;\":0x226a, \"llarr;\":0x21c7,\r\n \"llcorner;\":0x231e, \"llhard;\":0x296b,\r\n \"lltri;\":0x25fa, \"lmidot;\":0x140,\r\n \"lmoust;\":0x23b0, \"lmoustache;\":0x23b0,\r\n \"lnE;\":0x2268, \"lnap;\":0x2a89,\r\n \"lnapprox;\":0x2a89, \"lne;\":0x2a87,\r\n \"lneq;\":0x2a87, \"lneqq;\":0x2268,\r\n \"lnsim;\":0x22e6, \"loang;\":0x27ec,\r\n \"loarr;\":0x21fd, \"lobrk;\":0x27e6,\r\n \"longleftarrow;\":0x27f5, \"longleftrightarrow;\":0x27f7,\r\n \"longmapsto;\":0x27fc, \"longrightarrow;\":0x27f6,\r\n \"looparrowleft;\":0x21ab, \"looparrowright;\":0x21ac,\r\n \"lopar;\":0x2985, \"lopf;\":[0xd835,0xdd5d],\r\n \"loplus;\":0x2a2d, \"lotimes;\":0x2a34,\r\n \"lowast;\":0x2217, \"lowbar;\":0x5f,\r\n \"loz;\":0x25ca, \"lozenge;\":0x25ca,\r\n \"lozf;\":0x29eb, \"lpar;\":0x28,\r\n \"lparlt;\":0x2993, \"lrarr;\":0x21c6,\r\n \"lrcorner;\":0x231f, \"lrhar;\":0x21cb,\r\n \"lrhard;\":0x296d, \"lrm;\":0x200e,\r\n \"lrtri;\":0x22bf, \"lsaquo;\":0x2039,\r\n \"lscr;\":[0xd835,0xdcc1], \"lsh;\":0x21b0,\r\n \"lsim;\":0x2272, \"lsime;\":0x2a8d,\r\n \"lsimg;\":0x2a8f, \"lsqb;\":0x5b,\r\n \"lsquo;\":0x2018, \"lsquor;\":0x201a,\r\n \"lstrok;\":0x142, \"lt\":0x3c,\r\n \"lt;\":0x3c, \"ltcc;\":0x2aa6,\r\n \"ltcir;\":0x2a79, \"ltdot;\":0x22d6,\r\n \"lthree;\":0x22cb, \"ltimes;\":0x22c9,\r\n \"ltlarr;\":0x2976, \"ltquest;\":0x2a7b,\r\n \"ltrPar;\":0x2996, \"ltri;\":0x25c3,\r\n \"ltrie;\":0x22b4, \"ltrif;\":0x25c2,\r\n \"lurdshar;\":0x294a, \"luruhar;\":0x2966,\r\n \"lvertneqq;\":[0x2268,0xfe00], \"lvnE;\":[0x2268,0xfe00],\r\n \"mDDot;\":0x223a, \"macr\":0xaf,\r\n \"macr;\":0xaf, \"male;\":0x2642,\r\n \"malt;\":0x2720, \"maltese;\":0x2720,\r\n \"map;\":0x21a6, \"mapsto;\":0x21a6,\r\n \"mapstodown;\":0x21a7, \"mapstoleft;\":0x21a4,\r\n \"mapstoup;\":0x21a5, \"marker;\":0x25ae,\r\n \"mcomma;\":0x2a29, \"mcy;\":0x43c,\r\n \"mdash;\":0x2014, \"measuredangle;\":0x2221,\r\n \"mfr;\":[0xd835,0xdd2a], \"mho;\":0x2127,\r\n \"micro\":0xb5, \"micro;\":0xb5,\r\n \"mid;\":0x2223, \"midast;\":0x2a,\r\n \"midcir;\":0x2af0, \"middot\":0xb7,\r\n \"middot;\":0xb7, \"minus;\":0x2212,\r\n \"minusb;\":0x229f, \"minusd;\":0x2238,\r\n \"minusdu;\":0x2a2a, \"mlcp;\":0x2adb,\r\n \"mldr;\":0x2026, \"mnplus;\":0x2213,\r\n \"models;\":0x22a7, \"mopf;\":[0xd835,0xdd5e],\r\n \"mp;\":0x2213, \"mscr;\":[0xd835,0xdcc2],\r\n \"mstpos;\":0x223e, \"mu;\":0x3bc,\r\n \"multimap;\":0x22b8, \"mumap;\":0x22b8,\r\n \"nGg;\":[0x22d9,0x338], \"nGt;\":[0x226b,0x20d2],\r\n \"nGtv;\":[0x226b,0x338], \"nLeftarrow;\":0x21cd,\r\n \"nLeftrightarrow;\":0x21ce, \"nLl;\":[0x22d8,0x338],\r\n \"nLt;\":[0x226a,0x20d2], \"nLtv;\":[0x226a,0x338],\r\n \"nRightarrow;\":0x21cf, \"nVDash;\":0x22af,\r\n \"nVdash;\":0x22ae, \"nabla;\":0x2207,\r\n \"nacute;\":0x144, \"nang;\":[0x2220,0x20d2],\r\n \"nap;\":0x2249, \"napE;\":[0x2a70,0x338],\r\n \"napid;\":[0x224b,0x338], \"napos;\":0x149,\r\n \"napprox;\":0x2249, \"natur;\":0x266e,\r\n \"natural;\":0x266e, \"naturals;\":0x2115,\r\n \"nbsp\":0xa0, \"nbsp;\":0xa0,\r\n \"nbump;\":[0x224e,0x338], \"nbumpe;\":[0x224f,0x338],\r\n \"ncap;\":0x2a43, \"ncaron;\":0x148,\r\n \"ncedil;\":0x146, \"ncong;\":0x2247,\r\n \"ncongdot;\":[0x2a6d,0x338], \"ncup;\":0x2a42,\r\n \"ncy;\":0x43d, \"ndash;\":0x2013,\r\n \"ne;\":0x2260, \"neArr;\":0x21d7,\r\n \"nearhk;\":0x2924, \"nearr;\":0x2197,\r\n \"nearrow;\":0x2197, \"nedot;\":[0x2250,0x338],\r\n \"nequiv;\":0x2262, \"nesear;\":0x2928,\r\n \"nesim;\":[0x2242,0x338], \"nexist;\":0x2204,\r\n \"nexists;\":0x2204, \"nfr;\":[0xd835,0xdd2b],\r\n \"ngE;\":[0x2267,0x338], \"nge;\":0x2271,\r\n \"ngeq;\":0x2271, \"ngeqq;\":[0x2267,0x338],\r\n \"ngeqslant;\":[0x2a7e,0x338], \"nges;\":[0x2a7e,0x338],\r\n \"ngsim;\":0x2275, \"ngt;\":0x226f,\r\n \"ngtr;\":0x226f, \"nhArr;\":0x21ce,\r\n \"nharr;\":0x21ae, \"nhpar;\":0x2af2,\r\n \"ni;\":0x220b, \"nis;\":0x22fc,\r\n \"nisd;\":0x22fa, \"niv;\":0x220b,\r\n \"njcy;\":0x45a, \"nlArr;\":0x21cd,\r\n \"nlE;\":[0x2266,0x338], \"nlarr;\":0x219a,\r\n \"nldr;\":0x2025, \"nle;\":0x2270,\r\n \"nleftarrow;\":0x219a, \"nleftrightarrow;\":0x21ae,\r\n \"nleq;\":0x2270, \"nleqq;\":[0x2266,0x338],\r\n \"nleqslant;\":[0x2a7d,0x338], \"nles;\":[0x2a7d,0x338],\r\n \"nless;\":0x226e, \"nlsim;\":0x2274,\r\n \"nlt;\":0x226e, \"nltri;\":0x22ea,\r\n \"nltrie;\":0x22ec, \"nmid;\":0x2224,\r\n \"nopf;\":[0xd835,0xdd5f], \"not\":0xac,\r\n \"not;\":0xac, \"notin;\":0x2209,\r\n \"notinE;\":[0x22f9,0x338], \"notindot;\":[0x22f5,0x338],\r\n \"notinva;\":0x2209, \"notinvb;\":0x22f7,\r\n \"notinvc;\":0x22f6, \"notni;\":0x220c,\r\n \"notniva;\":0x220c, \"notnivb;\":0x22fe,\r\n \"notnivc;\":0x22fd, \"npar;\":0x2226,\r\n \"nparallel;\":0x2226, \"nparsl;\":[0x2afd,0x20e5],\r\n \"npart;\":[0x2202,0x338], \"npolint;\":0x2a14,\r\n \"npr;\":0x2280, \"nprcue;\":0x22e0,\r\n \"npre;\":[0x2aaf,0x338], \"nprec;\":0x2280,\r\n \"npreceq;\":[0x2aaf,0x338], \"nrArr;\":0x21cf,\r\n \"nrarr;\":0x219b, \"nrarrc;\":[0x2933,0x338],\r\n \"nrarrw;\":[0x219d,0x338], \"nrightarrow;\":0x219b,\r\n \"nrtri;\":0x22eb, \"nrtrie;\":0x22ed,\r\n \"nsc;\":0x2281, \"nsccue;\":0x22e1,\r\n \"nsce;\":[0x2ab0,0x338], \"nscr;\":[0xd835,0xdcc3],\r\n \"nshortmid;\":0x2224, \"nshortparallel;\":0x2226,\r\n \"nsim;\":0x2241, \"nsime;\":0x2244,\r\n \"nsimeq;\":0x2244, \"nsmid;\":0x2224,\r\n \"nspar;\":0x2226, \"nsqsube;\":0x22e2,\r\n \"nsqsupe;\":0x22e3, \"nsub;\":0x2284,\r\n \"nsubE;\":[0x2ac5,0x338], \"nsube;\":0x2288,\r\n \"nsubset;\":[0x2282,0x20d2], \"nsubseteq;\":0x2288,\r\n \"nsubseteqq;\":[0x2ac5,0x338], \"nsucc;\":0x2281,\r\n \"nsucceq;\":[0x2ab0,0x338], \"nsup;\":0x2285,\r\n \"nsupE;\":[0x2ac6,0x338], \"nsupe;\":0x2289,\r\n \"nsupset;\":[0x2283,0x20d2], \"nsupseteq;\":0x2289,\r\n \"nsupseteqq;\":[0x2ac6,0x338], \"ntgl;\":0x2279,\r\n \"ntilde\":0xf1, \"ntilde;\":0xf1,\r\n \"ntlg;\":0x2278, \"ntriangleleft;\":0x22ea,\r\n \"ntrianglelefteq;\":0x22ec, \"ntriangleright;\":0x22eb,\r\n \"ntrianglerighteq;\":0x22ed, \"nu;\":0x3bd,\r\n \"num;\":0x23, \"numero;\":0x2116,\r\n \"numsp;\":0x2007, \"nvDash;\":0x22ad,\r\n \"nvHarr;\":0x2904, \"nvap;\":[0x224d,0x20d2],\r\n \"nvdash;\":0x22ac, \"nvge;\":[0x2265,0x20d2],\r\n \"nvgt;\":[0x3e,0x20d2], \"nvinfin;\":0x29de,\r\n \"nvlArr;\":0x2902, \"nvle;\":[0x2264,0x20d2],\r\n \"nvlt;\":[0x3c,0x20d2], \"nvltrie;\":[0x22b4,0x20d2],\r\n \"nvrArr;\":0x2903, \"nvrtrie;\":[0x22b5,0x20d2],\r\n \"nvsim;\":[0x223c,0x20d2], \"nwArr;\":0x21d6,\r\n \"nwarhk;\":0x2923, \"nwarr;\":0x2196,\r\n \"nwarrow;\":0x2196, \"nwnear;\":0x2927,\r\n \"oS;\":0x24c8, \"oacute\":0xf3,\r\n \"oacute;\":0xf3, \"oast;\":0x229b,\r\n \"ocir;\":0x229a, \"ocirc\":0xf4,\r\n \"ocirc;\":0xf4, \"ocy;\":0x43e,\r\n \"odash;\":0x229d, \"odblac;\":0x151,\r\n \"odiv;\":0x2a38, \"odot;\":0x2299,\r\n \"odsold;\":0x29bc, \"oelig;\":0x153,\r\n \"ofcir;\":0x29bf, \"ofr;\":[0xd835,0xdd2c],\r\n \"ogon;\":0x2db, \"ograve\":0xf2,\r\n \"ograve;\":0xf2, \"ogt;\":0x29c1,\r\n \"ohbar;\":0x29b5, \"ohm;\":0x3a9,\r\n \"oint;\":0x222e, \"olarr;\":0x21ba,\r\n \"olcir;\":0x29be, \"olcross;\":0x29bb,\r\n \"oline;\":0x203e, \"olt;\":0x29c0,\r\n \"omacr;\":0x14d, \"omega;\":0x3c9,\r\n \"omicron;\":0x3bf, \"omid;\":0x29b6,\r\n \"ominus;\":0x2296, \"oopf;\":[0xd835,0xdd60],\r\n \"opar;\":0x29b7, \"operp;\":0x29b9,\r\n \"oplus;\":0x2295, \"or;\":0x2228,\r\n \"orarr;\":0x21bb, \"ord;\":0x2a5d,\r\n \"order;\":0x2134, \"orderof;\":0x2134,\r\n \"ordf\":0xaa, \"ordf;\":0xaa,\r\n \"ordm\":0xba, \"ordm;\":0xba,\r\n \"origof;\":0x22b6, \"oror;\":0x2a56,\r\n \"orslope;\":0x2a57, \"orv;\":0x2a5b,\r\n \"oscr;\":0x2134, \"oslash\":0xf8,\r\n \"oslash;\":0xf8, \"osol;\":0x2298,\r\n \"otilde\":0xf5, \"otilde;\":0xf5,\r\n \"otimes;\":0x2297, \"otimesas;\":0x2a36,\r\n \"ouml\":0xf6, \"ouml;\":0xf6,\r\n \"ovbar;\":0x233d, \"par;\":0x2225,\r\n \"para\":0xb6, \"para;\":0xb6,\r\n \"parallel;\":0x2225, \"parsim;\":0x2af3,\r\n \"parsl;\":0x2afd, \"part;\":0x2202,\r\n \"pcy;\":0x43f, \"percnt;\":0x25,\r\n \"period;\":0x2e, \"permil;\":0x2030,\r\n \"perp;\":0x22a5, \"pertenk;\":0x2031,\r\n \"pfr;\":[0xd835,0xdd2d], \"phi;\":0x3c6,\r\n \"phiv;\":0x3d5, \"phmmat;\":0x2133,\r\n \"phone;\":0x260e, \"pi;\":0x3c0,\r\n \"pitchfork;\":0x22d4, \"piv;\":0x3d6,\r\n \"planck;\":0x210f, \"planckh;\":0x210e,\r\n \"plankv;\":0x210f, \"plus;\":0x2b,\r\n \"plusacir;\":0x2a23, \"plusb;\":0x229e,\r\n \"pluscir;\":0x2a22, \"plusdo;\":0x2214,\r\n \"plusdu;\":0x2a25, \"pluse;\":0x2a72,\r\n \"plusmn\":0xb1, \"plusmn;\":0xb1,\r\n \"plussim;\":0x2a26, \"plustwo;\":0x2a27,\r\n \"pm;\":0xb1, \"pointint;\":0x2a15,\r\n \"popf;\":[0xd835,0xdd61], \"pound\":0xa3,\r\n \"pound;\":0xa3, \"pr;\":0x227a,\r\n \"prE;\":0x2ab3, \"prap;\":0x2ab7,\r\n \"prcue;\":0x227c, \"pre;\":0x2aaf,\r\n \"prec;\":0x227a, \"precapprox;\":0x2ab7,\r\n \"preccurlyeq;\":0x227c, \"preceq;\":0x2aaf,\r\n \"precnapprox;\":0x2ab9, \"precneqq;\":0x2ab5,\r\n \"precnsim;\":0x22e8, \"precsim;\":0x227e,\r\n \"prime;\":0x2032, \"primes;\":0x2119,\r\n \"prnE;\":0x2ab5, \"prnap;\":0x2ab9,\r\n \"prnsim;\":0x22e8, \"prod;\":0x220f,\r\n \"profalar;\":0x232e, \"profline;\":0x2312,\r\n \"profsurf;\":0x2313, \"prop;\":0x221d,\r\n \"propto;\":0x221d, \"prsim;\":0x227e,\r\n \"prurel;\":0x22b0, \"pscr;\":[0xd835,0xdcc5],\r\n \"psi;\":0x3c8, \"puncsp;\":0x2008,\r\n \"qfr;\":[0xd835,0xdd2e], \"qint;\":0x2a0c,\r\n \"qopf;\":[0xd835,0xdd62], \"qprime;\":0x2057,\r\n \"qscr;\":[0xd835,0xdcc6], \"quaternions;\":0x210d,\r\n \"quatint;\":0x2a16, \"quest;\":0x3f,\r\n \"questeq;\":0x225f, \"quot\":0x22,\r\n \"quot;\":0x22, \"rAarr;\":0x21db,\r\n \"rArr;\":0x21d2, \"rAtail;\":0x291c,\r\n \"rBarr;\":0x290f, \"rHar;\":0x2964,\r\n \"race;\":[0x223d,0x331], \"racute;\":0x155,\r\n \"radic;\":0x221a, \"raemptyv;\":0x29b3,\r\n \"rang;\":0x27e9, \"rangd;\":0x2992,\r\n \"range;\":0x29a5, \"rangle;\":0x27e9,\r\n \"raquo\":0xbb, \"raquo;\":0xbb,\r\n \"rarr;\":0x2192, \"rarrap;\":0x2975,\r\n \"rarrb;\":0x21e5, \"rarrbfs;\":0x2920,\r\n \"rarrc;\":0x2933, \"rarrfs;\":0x291e,\r\n \"rarrhk;\":0x21aa, \"rarrlp;\":0x21ac,\r\n \"rarrpl;\":0x2945, \"rarrsim;\":0x2974,\r\n \"rarrtl;\":0x21a3, \"rarrw;\":0x219d,\r\n \"ratail;\":0x291a, \"ratio;\":0x2236,\r\n \"rationals;\":0x211a, \"rbarr;\":0x290d,\r\n \"rbbrk;\":0x2773, \"rbrace;\":0x7d,\r\n \"rbrack;\":0x5d, \"rbrke;\":0x298c,\r\n \"rbrksld;\":0x298e, \"rbrkslu;\":0x2990,\r\n \"rcaron;\":0x159, \"rcedil;\":0x157,\r\n \"rceil;\":0x2309, \"rcub;\":0x7d,\r\n \"rcy;\":0x440, \"rdca;\":0x2937,\r\n \"rdldhar;\":0x2969, \"rdquo;\":0x201d,\r\n \"rdquor;\":0x201d, \"rdsh;\":0x21b3,\r\n \"real;\":0x211c, \"realine;\":0x211b,\r\n \"realpart;\":0x211c, \"reals;\":0x211d,\r\n \"rect;\":0x25ad, \"reg\":0xae,\r\n \"reg;\":0xae, \"rfisht;\":0x297d,\r\n \"rfloor;\":0x230b, \"rfr;\":[0xd835,0xdd2f],\r\n \"rhard;\":0x21c1, \"rharu;\":0x21c0,\r\n \"rharul;\":0x296c, \"rho;\":0x3c1,\r\n \"rhov;\":0x3f1, \"rightarrow;\":0x2192,\r\n \"rightarrowtail;\":0x21a3, \"rightharpoondown;\":0x21c1,\r\n \"rightharpoonup;\":0x21c0, \"rightleftarrows;\":0x21c4,\r\n \"rightleftharpoons;\":0x21cc, \"rightrightarrows;\":0x21c9,\r\n \"rightsquigarrow;\":0x219d, \"rightthreetimes;\":0x22cc,\r\n \"ring;\":0x2da, \"risingdotseq;\":0x2253,\r\n \"rlarr;\":0x21c4, \"rlhar;\":0x21cc,\r\n \"rlm;\":0x200f, \"rmoust;\":0x23b1,\r\n \"rmoustache;\":0x23b1, \"rnmid;\":0x2aee,\r\n \"roang;\":0x27ed, \"roarr;\":0x21fe,\r\n \"robrk;\":0x27e7, \"ropar;\":0x2986,\r\n \"ropf;\":[0xd835,0xdd63], \"roplus;\":0x2a2e,\r\n \"rotimes;\":0x2a35, \"rpar;\":0x29,\r\n \"rpargt;\":0x2994, \"rppolint;\":0x2a12,\r\n \"rrarr;\":0x21c9, \"rsaquo;\":0x203a,\r\n \"rscr;\":[0xd835,0xdcc7], \"rsh;\":0x21b1,\r\n \"rsqb;\":0x5d, \"rsquo;\":0x2019,\r\n \"rsquor;\":0x2019, \"rthree;\":0x22cc,\r\n \"rtimes;\":0x22ca, \"rtri;\":0x25b9,\r\n \"rtrie;\":0x22b5, \"rtrif;\":0x25b8,\r\n \"rtriltri;\":0x29ce, \"ruluhar;\":0x2968,\r\n \"rx;\":0x211e, \"sacute;\":0x15b,\r\n \"sbquo;\":0x201a, \"sc;\":0x227b,\r\n \"scE;\":0x2ab4, \"scap;\":0x2ab8,\r\n \"scaron;\":0x161, \"sccue;\":0x227d,\r\n \"sce;\":0x2ab0, \"scedil;\":0x15f,\r\n \"scirc;\":0x15d, \"scnE;\":0x2ab6,\r\n \"scnap;\":0x2aba, \"scnsim;\":0x22e9,\r\n \"scpolint;\":0x2a13, \"scsim;\":0x227f,\r\n \"scy;\":0x441, \"sdot;\":0x22c5,\r\n \"sdotb;\":0x22a1, \"sdote;\":0x2a66,\r\n \"seArr;\":0x21d8, \"searhk;\":0x2925,\r\n \"searr;\":0x2198, \"searrow;\":0x2198,\r\n \"sect\":0xa7, \"sect;\":0xa7,\r\n \"semi;\":0x3b, \"seswar;\":0x2929,\r\n \"setminus;\":0x2216, \"setmn;\":0x2216,\r\n \"sext;\":0x2736, \"sfr;\":[0xd835,0xdd30],\r\n \"sfrown;\":0x2322, \"sharp;\":0x266f,\r\n \"shchcy;\":0x449, \"shcy;\":0x448,\r\n \"shortmid;\":0x2223, \"shortparallel;\":0x2225,\r\n \"shy\":0xad, \"shy;\":0xad,\r\n \"sigma;\":0x3c3, \"sigmaf;\":0x3c2,\r\n \"sigmav;\":0x3c2, \"sim;\":0x223c,\r\n \"simdot;\":0x2a6a, \"sime;\":0x2243,\r\n \"simeq;\":0x2243, \"simg;\":0x2a9e,\r\n \"simgE;\":0x2aa0, \"siml;\":0x2a9d,\r\n \"simlE;\":0x2a9f, \"simne;\":0x2246,\r\n \"simplus;\":0x2a24, \"simrarr;\":0x2972,\r\n \"slarr;\":0x2190, \"smallsetminus;\":0x2216,\r\n \"smashp;\":0x2a33, \"smeparsl;\":0x29e4,\r\n \"smid;\":0x2223, \"smile;\":0x2323,\r\n \"smt;\":0x2aaa, \"smte;\":0x2aac,\r\n \"smtes;\":[0x2aac,0xfe00], \"softcy;\":0x44c,\r\n \"sol;\":0x2f, \"solb;\":0x29c4,\r\n \"solbar;\":0x233f, \"sopf;\":[0xd835,0xdd64],\r\n \"spades;\":0x2660, \"spadesuit;\":0x2660,\r\n \"spar;\":0x2225, \"sqcap;\":0x2293,\r\n \"sqcaps;\":[0x2293,0xfe00], \"sqcup;\":0x2294,\r\n \"sqcups;\":[0x2294,0xfe00], \"sqsub;\":0x228f,\r\n \"sqsube;\":0x2291, \"sqsubset;\":0x228f,\r\n \"sqsubseteq;\":0x2291, \"sqsup;\":0x2290,\r\n \"sqsupe;\":0x2292, \"sqsupset;\":0x2290,\r\n \"sqsupseteq;\":0x2292, \"squ;\":0x25a1,\r\n \"square;\":0x25a1, \"squarf;\":0x25aa,\r\n \"squf;\":0x25aa, \"srarr;\":0x2192,\r\n \"sscr;\":[0xd835,0xdcc8], \"ssetmn;\":0x2216,\r\n \"ssmile;\":0x2323, \"sstarf;\":0x22c6,\r\n \"star;\":0x2606, \"starf;\":0x2605,\r\n \"straightepsilon;\":0x3f5, \"straightphi;\":0x3d5,\r\n \"strns;\":0xaf, \"sub;\":0x2282,\r\n \"subE;\":0x2ac5, \"subdot;\":0x2abd,\r\n \"sube;\":0x2286, \"subedot;\":0x2ac3,\r\n \"submult;\":0x2ac1, \"subnE;\":0x2acb,\r\n \"subne;\":0x228a, \"subplus;\":0x2abf,\r\n \"subrarr;\":0x2979, \"subset;\":0x2282,\r\n \"subseteq;\":0x2286, \"subseteqq;\":0x2ac5,\r\n \"subsetneq;\":0x228a, \"subsetneqq;\":0x2acb,\r\n \"subsim;\":0x2ac7, \"subsub;\":0x2ad5,\r\n \"subsup;\":0x2ad3, \"succ;\":0x227b,\r\n \"succapprox;\":0x2ab8, \"succcurlyeq;\":0x227d,\r\n \"succeq;\":0x2ab0, \"succnapprox;\":0x2aba,\r\n \"succneqq;\":0x2ab6, \"succnsim;\":0x22e9,\r\n \"succsim;\":0x227f, \"sum;\":0x2211,\r\n \"sung;\":0x266a, \"sup1\":0xb9,\r\n \"sup1;\":0xb9, \"sup2\":0xb2,\r\n \"sup2;\":0xb2, \"sup3\":0xb3,\r\n \"sup3;\":0xb3, \"sup;\":0x2283,\r\n \"supE;\":0x2ac6, \"supdot;\":0x2abe,\r\n \"supdsub;\":0x2ad8, \"supe;\":0x2287,\r\n \"supedot;\":0x2ac4, \"suphsol;\":0x27c9,\r\n \"suphsub;\":0x2ad7, \"suplarr;\":0x297b,\r\n \"supmult;\":0x2ac2, \"supnE;\":0x2acc,\r\n \"supne;\":0x228b, \"supplus;\":0x2ac0,\r\n \"supset;\":0x2283, \"supseteq;\":0x2287,\r\n \"supseteqq;\":0x2ac6, \"supsetneq;\":0x228b,\r\n \"supsetneqq;\":0x2acc, \"supsim;\":0x2ac8,\r\n \"supsub;\":0x2ad4, \"supsup;\":0x2ad6,\r\n \"swArr;\":0x21d9, \"swarhk;\":0x2926,\r\n \"swarr;\":0x2199, \"swarrow;\":0x2199,\r\n \"swnwar;\":0x292a, \"szlig\":0xdf,\r\n \"szlig;\":0xdf, \"target;\":0x2316,\r\n \"tau;\":0x3c4, \"tbrk;\":0x23b4,\r\n \"tcaron;\":0x165, \"tcedil;\":0x163,\r\n \"tcy;\":0x442, \"tdot;\":0x20db,\r\n \"telrec;\":0x2315, \"tfr;\":[0xd835,0xdd31],\r\n \"there4;\":0x2234, \"therefore;\":0x2234,\r\n \"theta;\":0x3b8, \"thetasym;\":0x3d1,\r\n \"thetav;\":0x3d1, \"thickapprox;\":0x2248,\r\n \"thicksim;\":0x223c, \"thinsp;\":0x2009,\r\n \"thkap;\":0x2248, \"thksim;\":0x223c,\r\n \"thorn\":0xfe, \"thorn;\":0xfe,\r\n \"tilde;\":0x2dc, \"times\":0xd7,\r\n \"times;\":0xd7, \"timesb;\":0x22a0,\r\n \"timesbar;\":0x2a31, \"timesd;\":0x2a30,\r\n \"tint;\":0x222d, \"toea;\":0x2928,\r\n \"top;\":0x22a4, \"topbot;\":0x2336,\r\n \"topcir;\":0x2af1, \"topf;\":[0xd835,0xdd65],\r\n \"topfork;\":0x2ada, \"tosa;\":0x2929,\r\n \"tprime;\":0x2034, \"trade;\":0x2122,\r\n \"triangle;\":0x25b5, \"triangledown;\":0x25bf,\r\n \"triangleleft;\":0x25c3, \"trianglelefteq;\":0x22b4,\r\n \"triangleq;\":0x225c, \"triangleright;\":0x25b9,\r\n \"trianglerighteq;\":0x22b5, \"tridot;\":0x25ec,\r\n \"trie;\":0x225c, \"triminus;\":0x2a3a,\r\n \"triplus;\":0x2a39, \"trisb;\":0x29cd,\r\n \"tritime;\":0x2a3b, \"trpezium;\":0x23e2,\r\n \"tscr;\":[0xd835,0xdcc9], \"tscy;\":0x446,\r\n \"tshcy;\":0x45b, \"tstrok;\":0x167,\r\n \"twixt;\":0x226c, \"twoheadleftarrow;\":0x219e,\r\n \"twoheadrightarrow;\":0x21a0, \"uArr;\":0x21d1,\r\n \"uHar;\":0x2963, \"uacute\":0xfa,\r\n \"uacute;\":0xfa, \"uarr;\":0x2191,\r\n \"ubrcy;\":0x45e, \"ubreve;\":0x16d,\r\n \"ucirc\":0xfb, \"ucirc;\":0xfb,\r\n \"ucy;\":0x443, \"udarr;\":0x21c5,\r\n \"udblac;\":0x171, \"udhar;\":0x296e,\r\n \"ufisht;\":0x297e, \"ufr;\":[0xd835,0xdd32],\r\n \"ugrave\":0xf9, \"ugrave;\":0xf9,\r\n \"uharl;\":0x21bf, \"uharr;\":0x21be,\r\n \"uhblk;\":0x2580, \"ulcorn;\":0x231c,\r\n \"ulcorner;\":0x231c, \"ulcrop;\":0x230f,\r\n \"ultri;\":0x25f8, \"umacr;\":0x16b,\r\n \"uml\":0xa8, \"uml;\":0xa8,\r\n \"uogon;\":0x173, \"uopf;\":[0xd835,0xdd66],\r\n \"uparrow;\":0x2191, \"updownarrow;\":0x2195,\r\n \"upharpoonleft;\":0x21bf, \"upharpoonright;\":0x21be,\r\n \"uplus;\":0x228e, \"upsi;\":0x3c5,\r\n \"upsih;\":0x3d2, \"upsilon;\":0x3c5,\r\n \"upuparrows;\":0x21c8, \"urcorn;\":0x231d,\r\n \"urcorner;\":0x231d, \"urcrop;\":0x230e,\r\n \"uring;\":0x16f, \"urtri;\":0x25f9,\r\n \"uscr;\":[0xd835,0xdcca], \"utdot;\":0x22f0,\r\n \"utilde;\":0x169, \"utri;\":0x25b5,\r\n \"utrif;\":0x25b4, \"uuarr;\":0x21c8,\r\n \"uuml\":0xfc, \"uuml;\":0xfc,\r\n \"uwangle;\":0x29a7, \"vArr;\":0x21d5,\r\n \"vBar;\":0x2ae8, \"vBarv;\":0x2ae9,\r\n \"vDash;\":0x22a8, \"vangrt;\":0x299c,\r\n \"varepsilon;\":0x3f5, \"varkappa;\":0x3f0,\r\n \"varnothing;\":0x2205, \"varphi;\":0x3d5,\r\n \"varpi;\":0x3d6, \"varpropto;\":0x221d,\r\n \"varr;\":0x2195, \"varrho;\":0x3f1,\r\n \"varsigma;\":0x3c2, \"varsubsetneq;\":[0x228a,0xfe00],\r\n \"varsubsetneqq;\":[0x2acb,0xfe00], \"varsupsetneq;\":[0x228b,0xfe00],\r\n \"varsupsetneqq;\":[0x2acc,0xfe00], \"vartheta;\":0x3d1,\r\n \"vartriangleleft;\":0x22b2, \"vartriangleright;\":0x22b3,\r\n \"vcy;\":0x432, \"vdash;\":0x22a2,\r\n \"vee;\":0x2228, \"veebar;\":0x22bb,\r\n \"veeeq;\":0x225a, \"vellip;\":0x22ee,\r\n \"verbar;\":0x7c, \"vert;\":0x7c,\r\n \"vfr;\":[0xd835,0xdd33], \"vltri;\":0x22b2,\r\n \"vnsub;\":[0x2282,0x20d2], \"vnsup;\":[0x2283,0x20d2],\r\n \"vopf;\":[0xd835,0xdd67], \"vprop;\":0x221d,\r\n \"vrtri;\":0x22b3, \"vscr;\":[0xd835,0xdccb],\r\n \"vsubnE;\":[0x2acb,0xfe00], \"vsubne;\":[0x228a,0xfe00],\r\n \"vsupnE;\":[0x2acc,0xfe00], \"vsupne;\":[0x228b,0xfe00],\r\n \"vzigzag;\":0x299a, \"wcirc;\":0x175,\r\n \"wedbar;\":0x2a5f, \"wedge;\":0x2227,\r\n \"wedgeq;\":0x2259, \"weierp;\":0x2118,\r\n \"wfr;\":[0xd835,0xdd34], \"wopf;\":[0xd835,0xdd68],\r\n \"wp;\":0x2118, \"wr;\":0x2240,\r\n \"wreath;\":0x2240, \"wscr;\":[0xd835,0xdccc],\r\n \"xcap;\":0x22c2, \"xcirc;\":0x25ef,\r\n \"xcup;\":0x22c3, \"xdtri;\":0x25bd,\r\n \"xfr;\":[0xd835,0xdd35], \"xhArr;\":0x27fa,\r\n \"xharr;\":0x27f7, \"xi;\":0x3be,\r\n \"xlArr;\":0x27f8, \"xlarr;\":0x27f5,\r\n \"xmap;\":0x27fc, \"xnis;\":0x22fb,\r\n \"xodot;\":0x2a00, \"xopf;\":[0xd835,0xdd69],\r\n \"xoplus;\":0x2a01, \"xotime;\":0x2a02,\r\n \"xrArr;\":0x27f9, \"xrarr;\":0x27f6,\r\n \"xscr;\":[0xd835,0xdccd], \"xsqcup;\":0x2a06,\r\n \"xuplus;\":0x2a04, \"xutri;\":0x25b3,\r\n \"xvee;\":0x22c1, \"xwedge;\":0x22c0,\r\n \"yacute\":0xfd, \"yacute;\":0xfd,\r\n \"yacy;\":0x44f, \"ycirc;\":0x177,\r\n \"ycy;\":0x44b, \"yen\":0xa5,\r\n \"yen;\":0xa5, \"yfr;\":[0xd835,0xdd36],\r\n \"yicy;\":0x457, \"yopf;\":[0xd835,0xdd6a],\r\n \"yscr;\":[0xd835,0xdcce], \"yucy;\":0x44e,\r\n \"yuml\":0xff, \"yuml;\":0xff,\r\n \"zacute;\":0x17a, \"zcaron;\":0x17e,\r\n \"zcy;\":0x437, \"zdot;\":0x17c,\r\n \"zeetrf;\":0x2128, \"zeta;\":0x3b6,\r\n \"zfr;\":[0xd835,0xdd37], \"zhcy;\":0x436,\r\n \"zigrarr;\":0x21dd, \"zopf;\":[0xd835,0xdd6b],\r\n \"zscr;\":[0xd835,0xdccf], \"zwj;\":0x200d,\r\n \"zwnj;\":0x200c,\r\n};\r\n/*\r\n * This regexp is generated with test/tools/update-entities.js\r\n * It will always match at least one character -- but note that there\r\n * are no entities whose names are a single character long.\r\n */\r\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;\r\n\r\nvar NAMEDCHARREF_MAXLEN = 32;\r\n\r\n// Regular expression constants used by the tokenizer and parser\r\n\r\n// Note that \\r is included in all of these regexps because it will need\r\n// to be converted to LF by the scanChars() function.\r\nvar DBLQUOTEATTRVAL = /[^\\r\"&\\u0000]+/g;\r\nvar SINGLEQUOTEATTRVAL = /[^\\r'&\\u0000]+/g;\r\nvar UNQUOTEDATTRVAL = /[^\\r\\t\\n\\f &>\\u0000]+/g;\r\nvar TAGNAME = /[^\\r\\t\\n\\f \\/>A-Z\\u0000]+/g;\r\nvar ATTRNAME = /[^\\r\\t\\n\\f \\/=>A-Z\\u0000]+/g;\r\n\r\nvar CDATATEXT = /[^\\]\\r\\u0000\\uffff]*/g;\r\nvar DATATEXT = /[^&<\\r\\u0000\\uffff]*/g;\r\nvar RAWTEXT = /[^<\\r\\u0000\\uffff]*/g;\r\nvar PLAINTEXT = /[^\\r\\u0000\\uffff]*/g;\r\n// Since we don't have the 'sticky tag', add '|.' to the end of SIMPLETAG\r\n// and SIMPLEATTR so that we are guaranteed to always match. This prevents\r\n// us from scanning past the lastIndex set. (Note that the desired matches\r\n// are always greater than 1 char long, so longest-match will ensure that .\r\n// is not matched unless the desired match fails.)\r\nvar SIMPLETAG = /(?:(\\/)?([a-z]+)>)|[\\s\\S]/g;\r\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;\r\n\r\nvar NONWS = /[^\\x09\\x0A\\x0C\\x0D\\x20]/;\r\nvar ALLNONWS = /[^\\x09\\x0A\\x0C\\x0D\\x20]/g; // like above, with g flag\r\nvar NONWSNONNUL = /[^\\x00\\x09\\x0A\\x0C\\x0D\\x20]/; // don't allow NUL either\r\nvar LEADINGWS = /^[\\x09\\x0A\\x0C\\x0D\\x20]+/;\r\nvar NULCHARS = /\\x00/g;\r\n\r\n/***\r\n * These are utility functions that don't use any of the parser's\r\n * internal state.\r\n */\r\nfunction buf2str(buf) {\r\n var CHUNKSIZE=16384;\r\n if (buf.length < CHUNKSIZE) {\r\n return String.fromCharCode.apply(String, buf);\r\n }\r\n // special case for large strings, to avoid busting the stack.\r\n var result = '';\r\n for (var i = 0; i < buf.length; i += CHUNKSIZE) {\r\n result += String.fromCharCode.apply(String, buf.slice(i, i+CHUNKSIZE));\r\n }\r\n return result;\r\n}\r\n\r\nfunction str2buf(s) {\r\n var result = [];\r\n for (var i=0; i<s.length; i++) {\r\n result[i] = s.charCodeAt(i);\r\n }\r\n return result;\r\n}\r\n\r\n// Determine whether the element is a member of the set.\r\n// The set is an object that maps namespaces to objects. The objects\r\n// then map local tagnames to the value true if that tag is part of the set\r\nfunction isA(elt, set) {\r\n if (typeof set === 'string') {\r\n // convenience case for testing a particular HTML element\r\n return elt.namespaceURI === NAMESPACE.HTML &&\r\n elt.localName === set;\r\n }\r\n var tagnames = set[elt.namespaceURI];\r\n return tagnames && tagnames[elt.localName];\r\n}\r\n\r\nfunction isMathmlTextIntegrationPoint(n) {\r\n return isA(n, mathmlTextIntegrationPointSet);\r\n}\r\n\r\nfunction isHTMLIntegrationPoint(n) {\r\n if (isA(n, htmlIntegrationPointSet)) return true;\r\n if (n.namespaceURI === NAMESPACE.MATHML &&\r\n n.localName === \"annotation-xml\") {\r\n var encoding = n.getAttribute(\"encoding\");\r\n if (encoding) encoding = encoding.toLowerCase();\r\n if (encoding === \"text/html\" ||\r\n encoding === \"application/xhtml+xml\")\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nfunction adjustSVGTagName(name) {\r\n if (name in svgTagNameAdjustments)\r\n return svgTagNameAdjustments[name];\r\n else\r\n return name;\r\n}\r\n\r\nfunction adjustSVGAttributes(attrs) {\r\n for(var i = 0, n = attrs.length; i < n; i++) {\r\n if (attrs[i][0] in svgAttrAdjustments) {\r\n attrs[i][0] = svgAttrAdjustments[attrs[i][0]];\r\n }\r\n }\r\n}\r\n\r\nfunction adjustMathMLAttributes(attrs) {\r\n for(var i = 0, n = attrs.length; i < n; i++) {\r\n if (attrs[i][0] === \"definitionurl\") {\r\n attrs[i][0] = \"definitionURL\";\r\n break;\r\n }\r\n }\r\n}\r\n\r\nfunction adjustForeignAttributes(attrs) {\r\n for(var i = 0, n = attrs.length; i < n; i++) {\r\n if (attrs[i][0] in foreignAttributes) {\r\n // Attributes with namespaces get a 3rd element:\r\n // [Qname, value, namespace]\r\n attrs[i].push(foreignAttributes[attrs[i][0]]);\r\n }\r\n }\r\n}\r\n\r\n// For each attribute in attrs, if elt doesn't have an attribute\r\n// by that name, add the attribute to elt\r\n// XXX: I'm ignoring namespaces for now\r\nfunction transferAttributes(attrs, elt) {\r\n for(var i = 0, n = attrs.length; i < n; i++) {\r\n var name = attrs[i][0], value = attrs[i][1];\r\n if (elt.hasAttribute(name)) continue;\r\n elt._setAttribute(name, value);\r\n }\r\n}\r\n\r\n/***\r\n * The ElementStack class\r\n */\r\nHTMLParser.ElementStack = function ElementStack() {\r\n this.elements = [];\r\n this.top = null; // stack.top is the \"current node\" in the spec\r\n};\r\n\r\n/*\r\n// This is for debugging only\r\nHTMLParser.ElementStack.prototype.toString = function(e) {\r\n return \"STACK: \" +\r\n this.elements.map(function(e) {return e.localName;}).join(\"-\");\r\n}\r\n*/\r\n\r\nHTMLParser.ElementStack.prototype.push = function(e) {\r\n this.elements.push(e);\r\n this.top = e;\r\n};\r\n\r\nHTMLParser.ElementStack.prototype.pop = function(e) {\r\n this.elements.pop();\r\n this.top = this.elements[this.elements.length-1];\r\n};\r\n\r\n// Pop elements off the stack up to and including the first\r\n// element with the specified (HTML) tagname\r\nHTMLParser.ElementStack.prototype.popTag = function(tag) {\r\n for(var i = this.elements.length-1; i > 0; i--) {\r\n var e = this.elements[i];\r\n if (isA(e, tag)) break;\r\n }\r\n this.elements.length = i;\r\n this.top = this.elements[i-1];\r\n};\r\n\r\n// Pop elements off the stack up to and including the first\r\n// element that is an instance of the specified type\r\nHTMLParser.ElementStack.prototype.popElementType = function(type) {\r\n for(var i = this.elements.length-1; i > 0; i--) {\r\n if (this.elements[i] instanceof type) break;\r\n }\r\n this.elements.length = i;\r\n this.top = this.elements[i-1];\r\n};\r\n\r\n// Pop elements off the stack up to and including the element e.\r\n// Note that this is very different from removeElement()\r\n// This requires that e is on the stack.\r\nHTMLParser.ElementStack.prototype.popElement = function(e) {\r\n for(var i = this.elements.length-1; i > 0; i--) {\r\n if (this.elements[i] === e) break;\r\n }\r\n this.elements.length = i;\r\n this.top = this.elements[i-1];\r\n};\r\n\r\n// Remove a specific element from the stack.\r\n// Do nothing if the element is not on the stack\r\nHTMLParser.ElementStack.prototype.removeElement = function(e) {\r\n if (this.top === e) this.pop();\r\n else {\r\n var idx = this.elements.lastIndexOf(e);\r\n if (idx !== -1)\r\n this.elements.splice(idx, 1);\r\n }\r\n};\r\n\r\nHTMLParser.ElementStack.prototype.clearToContext = function(set) {\r\n // Note that we don't loop to 0. Never pop the <html> elt off.\r\n for(var i = this.elements.length-1; i > 0; i--) {\r\n if (isA(this.elements[i], set)) break;\r\n }\r\n this.elements.length = i+1;\r\n this.top = this.elements[i];\r\n};\r\n\r\nHTMLParser.ElementStack.prototype.contains = function(tag) {\r\n return this.inSpecificScope(tag, Object.create(null));\r\n};\r\n\r\nHTMLParser.ElementStack.prototype.inSpecificScope = function(tag, set) {\r\n for(var i = this.elements.length-1; i >= 0; i--) {\r\n var elt = this.elements[i];\r\n if (isA(elt, tag)) return true;\r\n if (isA(elt, set)) return false;\r\n }\r\n return false;\r\n};\r\n\r\n// Like the above, but for a specific element, not a tagname\r\nHTMLParser.ElementStack.prototype.elementInSpecificScope = function(target, set) {\r\n for(var i = this.elements.length-1; i >= 0; i--) {\r\n var elt = this.elements[i];\r\n if (elt === target) return true;\r\n if (isA(elt, set)) return false;\r\n }\r\n return false;\r\n};\r\n\r\n// Like the above, but for an element interface, not a tagname\r\nHTMLParser.ElementStack.prototype.elementTypeInSpecificScope = function(target, set) {\r\n for(var i = this.elements.length-1; i >= 0; i--) {\r\n var elt = this.elements[i];\r\n if (elt instanceof target) return true;\r\n if (isA(elt, set)) return false;\r\n }\r\n return false;\r\n};\r\n\r\nHTMLParser.ElementStack.prototype.inScope = function(tag) {\r\n return this.inSpecificScope(tag, inScopeSet);\r\n};\r\n\r\nHTMLParser.ElementStack.prototype.elementInScope = function(e) {\r\n return this.elementInSpecificScope(e, inScopeSet);\r\n};\r\n\r\nHTMLParser.ElementStack.prototype.elementTypeInScope = function(type) {\r\n return this.elementTypeInSpecificScope(type, inScopeSet);\r\n};\r\n\r\nHTMLParser.ElementStack.prototype.inButtonScope = function(tag) {\r\n return this.inSpecificScope(tag, inButtonScopeSet);\r\n};\r\n\r\nHTMLParser.ElementStack.prototype.inListItemScope = function(tag) {\r\n return this.inSpecificScope(tag, inListItemScopeSet);\r\n};\r\n\r\nHTMLParser.ElementStack.prototype.inTableScope = function(tag) {\r\n return this.inSpecificScope(tag, inTableScopeSet);\r\n};\r\n\r\nHTMLParser.ElementStack.prototype.inSelectScope = function(tag) {\r\n // Can't implement this one with inSpecificScope, since it involves\r\n // a set defined by inverting another set. So implement manually.\r\n for(var i = this.elements.length-1; i >= 0; i--) {\r\n var elt = this.elements[i];\r\n if (elt.namespaceURI !== NAMESPACE.HTML) return false;\r\n var localname = elt.localName;\r\n if (localname === tag) return true;\r\n if (localname !== \"optgroup\" && localname !== \"option\")\r\n return false;\r\n }\r\n return false;\r\n};\r\n\r\nHTMLParser.ElementStack.prototype.generateImpliedEndTags = function(butnot, thorough) {\r\n var endTagSet = thorough ? thoroughImpliedEndTagsSet : impliedEndTagsSet;\r\n for(var i = this.elements.length-1; i >= 0; i--) {\r\n var e = this.elements[i];\r\n if (butnot && isA(e, butnot)) break;\r\n if (!isA(this.elements[i], endTagSet)) break;\r\n }\r\n\r\n this.elements.length = i+1;\r\n this.top = this.elements[i];\r\n};\r\n\r\n/***\r\n * The ActiveFormattingElements class\r\n */\r\nHTMLParser.ActiveFormattingElements = function AFE() {\r\n this.list = []; // elements\r\n this.attrs = []; // attribute tokens for cloning\r\n};\r\n\r\nHTMLParser.ActiveFormattingElements.prototype.MARKER = { localName: \"|\" };\r\n\r\n/*\r\n// For debugging\r\nHTMLParser.ActiveFormattingElements.prototype.toString = function() {\r\n return \"AFE: \" +\r\n this.list.map(function(e) { return e.localName; }).join(\"-\");\r\n}\r\n*/\r\n\r\nHTMLParser.ActiveFormattingElements.prototype.insertMarker = function() {\r\n this.list.push(this.MARKER);\r\n this.attrs.push(this.MARKER);\r\n};\r\n\r\nHTMLParser.ActiveFormattingElements.prototype.push = function(elt, attrs) {\r\n // Scan backwards: if there are already 3 copies of this element\r\n // before we encounter a marker, then drop the last one\r\n var count = 0;\r\n for(var i = this.list.length-1; i >= 0; i--) {\r\n if (this.list[i] === this.MARKER) break;\r\n // equal() is defined below\r\n if (equal(elt, this.list[i], this.attrs[i])) {\r\n count++;\r\n if (count === 3) {\r\n this.list.splice(i, 1);\r\n this.attrs.splice(i, 1);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n\r\n // Now push the element onto the list\r\n this.list.push(elt);\r\n\r\n // Copy the attributes and push those on, too\r\n var attrcopy = [];\r\n for(var ii = 0; ii < attrs.length; ii++) {\r\n attrcopy[ii] = attrs[ii];\r\n }\r\n\r\n this.attrs.push(attrcopy);\r\n\r\n // This function defines equality of two elements for the purposes\r\n // of the AFE list. Note that it compares the new elements\r\n // attributes to the saved array of attributes associated with\r\n // the old element because a script could have changed the\r\n // old element's set of attributes\r\n function equal(newelt, oldelt, oldattrs) {\r\n if (newelt.localName !== oldelt.localName) return false;\r\n if (newelt._numattrs !== oldattrs.length) return false;\r\n for(var i = 0, n = oldattrs.length; i < n; i++) {\r\n var oldname = oldattrs[i][0];\r\n var oldval = oldattrs[i][1];\r\n if (!newelt.hasAttribute(oldname)) return false;\r\n if (newelt.getAttribute(oldname) !== oldval) return false;\r\n }\r\n return true;\r\n }\r\n};\r\n\r\nHTMLParser.ActiveFormattingElements.prototype.clearToMarker = function() {\r\n for(var i = this.list.length-1; i >= 0; i--) {\r\n if (this.list[i] === this.MARKER) break;\r\n }\r\n if (i < 0) i = 0;\r\n this.list.length = i;\r\n this.attrs.length = i;\r\n};\r\n\r\n// Find and return the last element with the specified tag between the\r\n// end of the list and the last marker on the list.\r\n// Used when parsing <a> in_body_mode()\r\nHTMLParser.ActiveFormattingElements.prototype.findElementByTag = function(tag) {\r\n for(var i = this.list.length-1; i >= 0; i--) {\r\n var elt = this.list[i];\r\n if (elt === this.MARKER) break;\r\n if (elt.localName === tag) return elt;\r\n }\r\n return null;\r\n};\r\n\r\nHTMLParser.ActiveFormattingElements.prototype.indexOf = function(e) {\r\n return this.list.lastIndexOf(e);\r\n};\r\n\r\n// Find the element e in the list and remove it\r\n// Used when parsing <a> in_body()\r\nHTMLParser.ActiveFormattingElements.prototype.remove = function(e) {\r\n var idx = this.list.lastIndexOf(e);\r\n if (idx !== -1) {\r\n this.list.splice(idx, 1);\r\n this.attrs.splice(idx, 1);\r\n }\r\n};\r\n\r\n// Find element a in the list and replace it with element b\r\n// XXX: Do I need to handle attributes here?\r\nHTMLParser.ActiveFormattingElements.prototype.replace = function(a, b, attrs) {\r\n var idx = this.list.lastIndexOf(a);\r\n if (idx !== -1) {\r\n this.list[idx] = b;\r\n this.attrs[idx] = attrs;\r\n }\r\n};\r\n\r\n// Find a in the list and insert b after it\r\n// This is only used for insert a bookmark object, so the\r\n// attrs array doesn't really matter\r\nHTMLParser.ActiveFormattingElements.prototype.insertAfter = function(a,b) {\r\n var idx = this.list.lastIndexOf(a);\r\n if (idx !== -1) {\r\n this.list.splice(idx, 0, b);\r\n this.attrs.splice(idx, 0, b);\r\n }\r\n};\r\n\r\n\r\n\r\n\r\n/***\r\n * This is the parser factory function. It is the return value of\r\n * the outer closure that it is defined within. Most of the parser\r\n * implementation details are inside this function.\r\n */\r\nfunction HTMLParser(address, fragmentContext, options) {\r\n /***\r\n * These are the parser's state variables\r\n */\r\n // Scanner state\r\n var chars = null;\r\n var numchars = 0; // Length of chars\r\n var nextchar = 0; // Index of next char\r\n var input_complete = false; // Becomes true when end() called.\r\n var scanner_skip_newline = false; // If previous char was CR\r\n var reentrant_invocations = 0;\r\n var saved_scanner_state = [];\r\n var leftovers = \"\";\r\n var first_batch = true;\r\n var paused = 0; // Becomes non-zero while loading scripts\r\n\r\n\r\n // Tokenizer state\r\n var tokenizer = data_state; // Current tokenizer state\r\n var return_state;\r\n var character_reference_code;\r\n var tagnamebuf = \"\";\r\n var lasttagname = \"\"; // holds the target end tag for text states\r\n var tempbuf = [];\r\n var attrnamebuf = \"\";\r\n var attrvaluebuf = \"\";\r\n var commentbuf = [];\r\n var doctypenamebuf = [];\r\n var doctypepublicbuf = [];\r\n var doctypesystembuf = [];\r\n var attributes = [];\r\n var is_end_tag = false;\r\n\r\n // Tree builder state\r\n var parser = initial_mode; // Current insertion mode\r\n var originalInsertionMode = null; // A saved insertion mode\r\n var templateInsertionModes = []; // Stack of template insertion modes.\r\n var stack = new HTMLParser.ElementStack(); // Stack of open elements\r\n var afe = new HTMLParser.ActiveFormattingElements(); // mis-nested tags\r\n var fragment = (fragmentContext!==undefined); // For innerHTML, etc.\r\n var head_element_pointer = null;\r\n var form_element_pointer = null;\r\n var scripting_enabled = true;\r\n if (fragmentContext) {\r\n\tscripting_enabled = fragmentContext.ownerDocument._scripting_enabled;\r\n }\r\n if (options && options.scripting_enabled === false)\r\n scripting_enabled = false;\r\n var frameset_ok = true;\r\n var force_quirks = false;\r\n var pending_table_text;\r\n var text_integration_mode; // XXX a spec bug workaround?\r\n\r\n // A single run of characters, buffered up to be sent to\r\n // the parser as a single string.\r\n var textrun = [];\r\n var textIncludesNUL = false;\r\n var ignore_linefeed = false;\r\n\r\n /***\r\n * This is the parser object that will be the return value of this\r\n * factory function, which is some 5000 lines below.\r\n * Note that the variable \"parser\" is the current state of the\r\n * parser's state machine. This variable \"htmlparser\" is the\r\n * return value and defines the public API of the parser\r\n */\r\n var htmlparser = {\r\n document: function() {\r\n return doc;\r\n },\r\n\r\n // Convenience function for internal use. Can only be called once,\r\n // as it removes the nodes from `doc` to add them to fragment.\r\n _asDocumentFragment: function() {\r\n var frag = doc.createDocumentFragment();\r\n var root = doc.firstChild;\r\n while(root.hasChildNodes()) {\r\n frag.appendChild(root.firstChild);\r\n }\r\n return frag;\r\n },\r\n\r\n // Internal function used from HTMLScriptElement to pause the\r\n // parser while a script is being loaded from the network\r\n pause: function() {\r\n // print(\"pausing parser\");\r\n paused++;\r\n },\r\n\r\n // Called when a script finishes loading\r\n resume: function() {\r\n // print(\"resuming parser\");\r\n paused--;\r\n // XXX: added this to force a resumption.\r\n // Is this the right thing to do?\r\n this.parse(\"\");\r\n },\r\n\r\n // Parse the HTML text s.\r\n // The second argument should be true if there is no more\r\n // text to be parsed, and should be false or omitted otherwise.\r\n // The second argument must not be set for recursive invocations\r\n // from document.write()\r\n parse: function(s, end, shouldPauseFunc) {\r\n var moreToDo;\r\n\r\n // If we're paused, remember the text to parse, but\r\n // don't parse it now.\r\n // (Don't invoke shouldPauseFunc because we haven't handled 'end' yet.)\r\n if (paused > 0) {\r\n leftovers += s;\r\n return true; // more to do\r\n }\r\n\r\n\r\n if (reentrant_invocations === 0) {\r\n // A normal, top-level invocation\r\n if (leftovers) {\r\n s = leftovers + s;\r\n leftovers = \"\";\r\n }\r\n\r\n // Add a special marker character to the end of\r\n // the buffer. If the scanner is at the end of\r\n // the buffer and input_complete is set, then this\r\n // character will transform into an EOF token.\r\n // Having an actual character that represents EOF\r\n // in the character buffer makes lookahead regexp\r\n // matching work more easily, and this is\r\n // important for character references.\r\n if (end) {\r\n s += \"\\uFFFF\";\r\n input_complete = true; // Makes scanChars() send EOF\r\n }\r\n\r\n chars = s;\r\n numchars = s.length;\r\n nextchar = 0;\r\n\r\n if (first_batch) {\r\n // We skip a leading Byte Order Mark (\\uFEFF)\r\n // on first batch of text we're given\r\n first_batch = false;\r\n if (chars.charCodeAt(0) === 0xFEFF) nextchar = 1;\r\n }\r\n\r\n reentrant_invocations++;\r\n moreToDo = scanChars(shouldPauseFunc);\r\n leftovers = chars.substring(nextchar, numchars);\r\n reentrant_invocations--;\r\n }\r\n else {\r\n // This is the re-entrant case, which we have to\r\n // handle a little differently.\r\n reentrant_invocations++;\r\n\r\n // Save current scanner state\r\n saved_scanner_state.push(chars, numchars, nextchar);\r\n\r\n // Set new scanner state\r\n chars = s;\r\n numchars = s.length;\r\n nextchar = 0;\r\n\r\n // Now scan as many of these new chars as we can\r\n scanChars();\r\n moreToDo = false;\r\n\r\n leftovers = chars.substring(nextchar, numchars);\r\n\r\n // restore old scanner state\r\n nextchar = saved_scanner_state.pop();\r\n numchars = saved_scanner_state.pop();\r\n chars = saved_scanner_state.pop();\r\n\r\n // If there were leftover chars from this invocation\r\n // insert them into the pending invocation's buffer\r\n // and trim already processed chars at the same time\r\n if (leftovers) {\r\n chars = leftovers + chars.substring(nextchar);\r\n numchars = chars.length;\r\n nextchar = 0;\r\n leftovers = \"\";\r\n }\r\n\r\n // Decrement the counter\r\n reentrant_invocations--;\r\n }\r\n return moreToDo;\r\n }\r\n };\r\n\r\n\r\n // This is the document we'll be building up\r\n var doc = new Document(true, address);\r\n\r\n // The document needs to know about the parser, for document.write().\r\n // This _parser property will be deleted when we're done parsing.\r\n doc._parser = htmlparser;\r\n\r\n // XXX I think that any document we use this parser on should support\r\n // scripts. But I may need to configure that through a parser parameter\r\n // Only documents with windows (\"browsing contexts\" to be precise)\r\n // allow scripting.\r\n doc._scripting_enabled = scripting_enabled;\r\n\r\n\r\n /***\r\n * The actual code of the HTMLParser() factory function begins here.\r\n */\r\n\r\n if (fragmentContext) { // for innerHTML parsing\r\n if (fragmentContext.ownerDocument._quirks)\r\n doc._quirks = true;\r\n if (fragmentContext.ownerDocument._limitedQuirks)\r\n doc._limitedQuirks = true;\r\n\r\n // Set the initial tokenizer state\r\n if (fragmentContext.namespaceURI === NAMESPACE.HTML) {\r\n switch(fragmentContext.localName) {\r\n case \"title\":\r\n case \"textarea\":\r\n tokenizer = rcdata_state;\r\n break;\r\n case \"style\":\r\n case \"xmp\":\r\n case \"iframe\":\r\n case \"noembed\":\r\n case \"noframes\":\r\n case \"script\":\r\n case \"plaintext\":\r\n tokenizer = plaintext_state;\r\n break;\r\n }\r\n }\r\n\r\n var root = doc.createElement(\"html\");\r\n doc._appendChild(root);\r\n stack.push(root);\r\n if (fragmentContext instanceof impl.HTMLTemplateElement) {\r\n templateInsertionModes.push(in_template_mode);\r\n }\r\n resetInsertionMode();\r\n\r\n for(var e = fragmentContext; e !== null; e = e.parentElement) {\r\n if (e instanceof impl.HTMLFormElement) {\r\n form_element_pointer = e;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n /***\r\n * Scanner functions\r\n */\r\n // Loop through the characters in chars, and pass them one at a time\r\n // to the tokenizer FSM. Return when no more characters can be processed\r\n // (This may leave 1 or more characters in the buffer: like a CR\r\n // waiting to see if the next char is LF, or for states that require\r\n // lookahead...)\r\n function scanChars(shouldPauseFunc) {\r\n var codepoint, s, pattern, eof;\r\n\r\n while(nextchar < numchars) {\r\n\r\n // If we just tokenized a </script> tag, then the paused flag\r\n // may have been set to tell us to stop tokenizing while\r\n // the script is loading\r\n if (paused > 0 || (shouldPauseFunc && shouldPauseFunc())) {\r\n return true;\r\n }\r\n\r\n\r\n switch(typeof tokenizer.lookahead) {\r\n case 'undefined':\r\n codepoint = chars.charCodeAt(nextchar++);\r\n if (scanner_skip_newline) {\r\n scanner_skip_newline = false;\r\n if (codepoint === 0x000A) {\r\n nextchar++;\r\n continue;\r\n }\r\n }\r\n switch(codepoint) {\r\n case 0x000D:\r\n // CR always turns into LF, but if the next character\r\n // is LF, then that second LF is skipped.\r\n if (nextchar < numchars) {\r\n if (chars.charCodeAt(nextchar) === 0x000A)\r\n nextchar++;\r\n }\r\n else {\r\n // We don't know the next char right now, so we\r\n // can't check if it is a LF. So set a flag\r\n scanner_skip_newline = true;\r\n }\r\n\r\n // In either case, emit a LF\r\n tokenizer(0x000A);\r\n\r\n break;\r\n case 0xFFFF:\r\n if (input_complete && nextchar === numchars) {\r\n tokenizer(EOF); // codepoint will be 0xFFFF here\r\n break;\r\n }\r\n /* falls through */\r\n default:\r\n tokenizer(codepoint);\r\n break;\r\n }\r\n break;\r\n\r\n case 'number':\r\n codepoint = chars.charCodeAt(nextchar);\r\n\r\n // The only tokenizer states that require fixed lookahead\r\n // only consume alphanum characters, so we don't have\r\n // to worry about CR and LF in this case\r\n\r\n // tokenizer wants n chars of lookahead\r\n var n = tokenizer.lookahead;\r\n var needsString = true;\r\n if (n < 0) {\r\n needsString = false;\r\n n = -n;\r\n }\r\n\r\n if (n < numchars - nextchar) {\r\n // If we can look ahead that far\r\n s = needsString ? chars.substring(nextchar, nextchar+n) : null;\r\n eof = false;\r\n }\r\n else { // if we don't have that many characters\r\n if (input_complete) { // If no more are coming\r\n // Just return what we have\r\n s = needsString ? chars.substring(nextchar, numchars) : null;\r\n eof = true;\r\n if (codepoint === 0xFFFF && nextchar === numchars-1)\r\n codepoint = EOF;\r\n }\r\n else {\r\n // Return now and wait for more chars later\r\n return true;\r\n }\r\n }\r\n tokenizer(codepoint, s, eof);\r\n break;\r\n case 'string':\r\n codepoint = chars.charCodeAt(nextchar);\r\n\r\n // tokenizer wants characters up to a matching string\r\n pattern = tokenizer.lookahead;\r\n var pos = chars.indexOf(pattern, nextchar);\r\n if (pos !== -1) {\r\n s = chars.substring(nextchar, pos + pattern.length);\r\n eof = false;\r\n }\r\n else { // No match\r\n // If more characters coming, wait for them\r\n if (!input_complete) return true;\r\n\r\n // Otherwise, we've got to return what we've got\r\n s = chars.substring(nextchar, numchars);\r\n if (codepoint === 0xFFFF && nextchar === numchars-1)\r\n codepoint = EOF;\r\n eof = true;\r\n }\r\n\r\n // The tokenizer states that require this kind of\r\n // lookahead have to be careful to handle CR characters\r\n // correctly\r\n tokenizer(codepoint, s, eof);\r\n break;\r\n }\r\n }\r\n return false; // no more characters to scan!\r\n }\r\n\r\n\r\n /***\r\n * Tokenizer utility functions\r\n */\r\n function addAttribute(name,value) {\r\n // Make sure there isn't already an attribute with this name\r\n // If there is, ignore this one.\r\n for(var i = 0; i < attributes.length; i++) {\r\n if (attributes[i][0] === name) return;\r\n }\r\n\r\n if (value !== undefined) {\r\n attributes.push([name, value]);\r\n }\r\n else {\r\n attributes.push([name]);\r\n }\r\n }\r\n\r\n // Shortcut for simple attributes\r\n function handleSimpleAttribute() {\r\n SIMPLEATTR.lastIndex = nextchar-1;\r\n var matched = SIMPLEATTR.exec(chars);\r\n if (!matched) throw new Error(\"should never happen\");\r\n var name = matched[1];\r\n if (!name) return false;\r\n var value = matched[2];\r\n var len = value.length;\r\n switch(value[0]) {\r\n case '\"':\r\n case \"'\":\r\n value = value.substring(1, len-1);\r\n nextchar += (matched[0].length-1);\r\n tokenizer = after_attribute_value_quoted_state;\r\n break;\r\n default:\r\n tokenizer = before_attribute_name_state;\r\n nextchar += (matched[0].length-1);\r\n value = value.substring(0, len-1);\r\n break;\r\n }\r\n\r\n // Make sure there isn't already an attribute with this name\r\n // If there is, ignore this one.\r\n for(var i = 0; i < attributes.length; i++) {\r\n if (attributes[i][0] === name) return true;\r\n }\r\n\r\n attributes.push([name, value]);\r\n return true;\r\n }\r\n\r\n function beginTagName() {\r\n is_end_tag = false;\r\n tagnamebuf = \"\";\r\n attributes.length = 0;\r\n }\r\n function beginEndTagName() {\r\n is_end_tag = true;\r\n tagnamebuf = \"\";\r\n attributes.length = 0;\r\n }\r\n\r\n function beginTempBuf() { tempbuf.length = 0; }\r\n function beginAttrName() { attrnamebuf = \"\"; }\r\n function beginAttrValue() { attrvaluebuf = \"\"; }\r\n function beginComment() { commentbuf.length = 0; }\r\n function beginDoctype() {\r\n doctypenamebuf.length = 0;\r\n doctypepublicbuf = null;\r\n doctypesystembuf = null;\r\n }\r\n function beginDoctypePublicId() { doctypepublicbuf = []; }\r\n function beginDoctypeSystemId() { doctypesystembuf = []; }\r\n function forcequirks() { force_quirks = true; }\r\n function cdataAllowed() {\r\n return stack.top &&\r\n stack.top.namespaceURI !== \"http://www.w3.org/1999/xhtml\";\r\n }\r\n\r\n // Return true if the codepoints in the specified buffer match the\r\n // characters of lasttagname\r\n function appropriateEndTag(buf) {\r\n return lasttagname === buf;\r\n }\r\n\r\n function flushText() {\r\n if (textrun.length > 0) {\r\n var s = buf2str(textrun);\r\n textrun.length = 0;\r\n\r\n if (ignore_linefeed) {\r\n ignore_linefeed = false;\r\n if (s[0] === \"\\n\") s = s.substring(1);\r\n if (s.length === 0) return;\r\n }\r\n\r\n insertToken(TEXT, s);\r\n textIncludesNUL = false;\r\n }\r\n ignore_linefeed = false;\r\n }\r\n\r\n // Consume chars matched by the pattern and return them as a string. Starts\r\n // matching at the current position, so users should drop the current char\r\n // otherwise.\r\n function getMatchingChars(pattern) {\r\n pattern.lastIndex = nextchar - 1;\r\n var match = pattern.exec(chars);\r\n if (match && match.index === nextchar - 1) {\r\n match = match[0];\r\n nextchar += match.length - 1;\r\n /* Careful! Make sure we haven't matched the EOF character! */\r\n if (input_complete && nextchar === numchars) {\r\n // Oops, backup one.\r\n match = match.slice(0, -1);\r\n nextchar--;\r\n }\r\n return match;\r\n } else {\r\n throw new Error(\"should never happen\");\r\n }\r\n }\r\n\r\n // emit a string of chars that match a regexp\r\n // Returns false if no chars matched.\r\n function emitCharsWhile(pattern) {\r\n pattern.lastIndex = nextchar-1;\r\n var match = pattern.exec(chars)[0];\r\n if (!match) return false;\r\n emitCharString(match);\r\n nextchar += match.length - 1;\r\n return true;\r\n }\r\n\r\n // This is used by CDATA sections\r\n function emitCharString(s) {\r\n if (textrun.length > 0) flushText();\r\n\r\n if (ignore_linefeed) {\r\n ignore_linefeed = false;\r\n if (s[0] === \"\\n\") s = s.substring(1);\r\n if (s.length === 0) return;\r\n }\r\n\r\n insertToken(TEXT, s);\r\n }\r\n\r\n function emitTag() {\r\n if (is_end_tag) insertToken(ENDTAG, tagnamebuf);\r\n else {\r\n // Remember the last open tag we emitted\r\n var tagname = tagnamebuf;\r\n tagnamebuf = \"\";\r\n lasttagname = tagname;\r\n insertToken(TAG, tagname, attributes);\r\n }\r\n }\r\n\r\n\r\n // A shortcut: look ahead and if this is a open or close tag\r\n // in lowercase with no spaces and no attributes, just emit it now.\r\n function emitSimpleTag() {\r\n if (nextchar === numchars) { return false; /* not even 1 char left */ }\r\n SIMPLETAG.lastIndex = nextchar;\r\n var matched = SIMPLETAG.exec(chars);\r\n if (!matched) throw new Error(\"should never happen\");\r\n var tagname = matched[2];\r\n if (!tagname) return false;\r\n var endtag = matched[1];\r\n if (endtag) {\r\n nextchar += (tagname.length+2);\r\n insertToken(ENDTAG, tagname);\r\n }\r\n else {\r\n nextchar += (tagname.length+1);\r\n lasttagname = tagname;\r\n insertToken(TAG, tagname, NOATTRS);\r\n }\r\n return true;\r\n }\r\n\r\n function emitSelfClosingTag() {\r\n if (is_end_tag) insertToken(ENDTAG, tagnamebuf, null, true);\r\n else {\r\n insertToken(TAG, tagnamebuf, attributes, true);\r\n }\r\n }\r\n\r\n function emitDoctype() {\r\n insertToken(DOCTYPE,\r\n buf2str(doctypenamebuf),\r\n doctypepublicbuf ? buf2str(doctypepublicbuf) : undefined,\r\n doctypesystembuf ? buf2str(doctypesystembuf) : undefined);\r\n }\r\n\r\n function emitEOF() {\r\n flushText();\r\n parser(EOF); // EOF never goes to insertForeignContent()\r\n doc.modclock = 1; // Start tracking modifications\r\n }\r\n\r\n // Insert a token, either using the current parser insertion mode\r\n // (for HTML stuff) or using the insertForeignToken() method.\r\n var insertToken = htmlparser.insertToken = function insertToken(t, value, arg3, arg4) {\r\n flushText();\r\n var current = stack.top;\r\n\r\n if (!current || current.namespaceURI === NAMESPACE.HTML) {\r\n // This is the common case\r\n parser(t, value, arg3, arg4);\r\n }\r\n else {\r\n // Otherwise we may need to insert this token as foreign content\r\n if (t !== TAG && t !== TEXT) {\r\n insertForeignToken(t, value, arg3, arg4);\r\n }\r\n else {\r\n // But in some cases we treat it as regular content\r\n if ((isMathmlTextIntegrationPoint(current) &&\r\n (t === TEXT ||\r\n (t === TAG &&\r\n value !== \"mglyph\" && value !== \"malignmark\"))) ||\r\n (t === TAG &&\r\n value === \"svg\" &&\r\n current.namespaceURI === NAMESPACE.MATHML &&\r\n current.localName === \"annotation-xml\") ||\r\n isHTMLIntegrationPoint(current)) {\r\n\r\n // XXX: the text_integration_mode stuff is an\r\n // attempted bug workaround of mine\r\n text_integration_mode = true;\r\n parser(t, value, arg3, arg4);\r\n text_integration_mode = false;\r\n }\r\n // Otherwise it is foreign content\r\n else {\r\n insertForeignToken(t, value, arg3, arg4);\r\n }\r\n }\r\n }\r\n };\r\n\r\n\r\n /***\r\n * Tree building utility functions\r\n */\r\n function insertComment(data) {\r\n var parent = stack.top;\r\n if (foster_parent_mode && isA(parent, tablesectionrowSet)) {\r\n fosterParent(function(doc) { return doc.createComment(data); });\r\n } else {\r\n // \"If the adjusted insertion location is inside a template element,\r\n // let it instead be inside the template element's template contents\"\r\n if (parent instanceof impl.HTMLTemplateElement) {\r\n parent = parent.content;\r\n }\r\n parent._appendChild(parent.ownerDocument.createComment(data));\r\n }\r\n }\r\n\r\n function insertText(s) {\r\n var parent = stack.top;\r\n if (foster_parent_mode && isA(parent, tablesectionrowSet)) {\r\n fosterParent(function(doc) { return doc.createTextNode(s); });\r\n } else {\r\n // \"If the adjusted insertion location is inside a template element,\r\n // let it instead be inside the template element's template contents\"\r\n if (parent instanceof impl.HTMLTemplateElement) {\r\n parent = parent.content;\r\n }\r\n // \"If there is a Text node immediately before the adjusted insertion\r\n // location, then append data to that Text node's data.\"\r\n var lastChild = parent.lastChild;\r\n if (lastChild && lastChild.nodeType === Node.TEXT_NODE) {\r\n lastChild.appendData(s);\r\n } else {\r\n parent._appendChild(parent.ownerDocument.createTextNode(s));\r\n }\r\n }\r\n }\r\n\r\n function createHTMLElt(doc, name, attrs) {\r\n // Create the element this way, rather than with\r\n // doc.createElement because createElement() does error\r\n // checking on the element name that we need to avoid here.\r\n var elt = html.createElement(doc, name, null);\r\n\r\n if (attrs) {\r\n for(var i = 0, n = attrs.length; i < n; i++) {\r\n // Use the _ version to avoid testing the validity\r\n // of the attribute name\r\n elt._setAttribute(attrs[i][0], attrs[i][1]);\r\n }\r\n }\r\n // XXX\r\n // If the element is a resettable form element,\r\n // run its reset algorithm now\r\n // XXX\r\n // handle case where form-element-pointer is not null\r\n return elt;\r\n }\r\n\r\n // The in_table insertion mode turns on this flag, and that makes\r\n // insertHTMLElement use the foster parenting algorithm for elements\r\n // tags inside a table\r\n var foster_parent_mode = false;\r\n\r\n function insertHTMLElement(name, attrs) {\r\n var elt = insertElement(function(doc) {\r\n return createHTMLElt(doc, name, attrs);\r\n });\r\n\r\n // XXX\r\n // If this is a form element, set its form attribute property here\r\n if (isA(elt, formassociatedSet)) {\r\n elt._form = form_element_pointer;\r\n }\r\n\r\n return elt;\r\n }\r\n\r\n // Insert the element into the open element or foster parent it\r\n function insertElement(eltFunc) {\r\n var elt;\r\n if (foster_parent_mode && isA(stack.top, tablesectionrowSet)) {\r\n elt = fosterParent(eltFunc);\r\n }\r\n else if (stack.top instanceof impl.HTMLTemplateElement) {\r\n // \"If the adjusted insertion location is inside a template element,\r\n // let it instead be inside the template element's template contents\"\r\n elt = eltFunc(stack.top.content.ownerDocument);\r\n stack.top.content._appendChild(elt);\r\n } else {\r\n elt = eltFunc(stack.top.ownerDocument);\r\n stack.top._appendChild(elt);\r\n }\r\n\r\n stack.push(elt);\r\n return elt;\r\n }\r\n\r\n function insertForeignElement(name, attrs, ns) {\r\n return insertElement(function(doc) {\r\n // We need to prevent createElementNS from trying to parse `name` as a\r\n // `qname`, so use an internal Document#_createElementNS() interface.\r\n var elt = doc._createElementNS(name, ns, null);\r\n if (attrs) {\r\n for(var i = 0, n = attrs.length; i < n; i++) {\r\n var attr = attrs[i];\r\n if (attr.length === 2)\r\n elt._setAttribute(attr[0], attr[1]);\r\n else {\r\n elt._setAttributeNS(attr[2], attr[0], attr[1]);\r\n }\r\n }\r\n }\r\n return elt;\r\n });\r\n }\r\n\r\n function lastElementOfType(type) {\r\n for(var i = stack.elements.length-1; i >= 0; i--) {\r\n if (stack.elements[i] instanceof type) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n }\r\n\r\n function fosterParent(eltFunc) {\r\n var parent, before, lastTable = -1, lastTemplate = -1, elt;\r\n\r\n lastTable = lastElementOfType(impl.HTMLTableElement);\r\n lastTemplate = lastElementOfType(impl.HTMLTemplateElement);\r\n\r\n if (lastTemplate >= 0 && (lastTable < 0 || lastTemplate > lastTable)) {\r\n parent = stack.elements[lastTemplate];\r\n } else if (lastTable >= 0) {\r\n parent = stack.elements[lastTable].parentNode;\r\n if (parent) {\r\n before = stack.elements[lastTable];\r\n } else {\r\n parent = stack.elements[lastTable - 1];\r\n }\r\n }\r\n if (!parent) parent = stack.elements[0]; // the `html` element.\r\n\r\n // \"If the adjusted insertion location is inside a template element,\r\n // let it instead be inside the template element's template contents\"\r\n if (parent instanceof impl.HTMLTemplateElement) {\r\n parent = parent.content;\r\n }\r\n // Create element in the appropriate document.\r\n elt = eltFunc(parent.ownerDocument);\r\n\r\n if (elt.nodeType === Node.TEXT_NODE) {\r\n var prev;\r\n if (before) prev = before.previousSibling;\r\n else prev = parent.lastChild;\r\n if (prev && prev.nodeType === Node.TEXT_NODE) {\r\n prev.appendData(elt.data);\r\n return elt;\r\n }\r\n }\r\n if (before)\r\n parent.insertBefore(elt, before);\r\n else\r\n parent._appendChild(elt);\r\n return elt;\r\n }\r\n\r\n\r\n function resetInsertionMode() {\r\n var last = false;\r\n for(var i = stack.elements.length-1; i >= 0; i--) {\r\n var node = stack.elements[i];\r\n if (i === 0) {\r\n last = true;\r\n if (fragment) {\r\n node = fragmentContext;\r\n }\r\n }\r\n if (node.namespaceURI === NAMESPACE.HTML) {\r\n var tag = node.localName;\r\n switch(tag) {\r\n case \"select\":\r\n for(var j = i; j > 0; ) {\r\n var ancestor = stack.elements[--j];\r\n if (ancestor instanceof impl.HTMLTemplateElement) {\r\n break;\r\n } else if (ancestor instanceof impl.HTMLTableElement) {\r\n parser = in_select_in_table_mode;\r\n return;\r\n }\r\n }\r\n parser = in_select_mode;\r\n return;\r\n case \"tr\":\r\n parser = in_row_mode;\r\n return;\r\n case \"tbody\":\r\n case \"tfoot\":\r\n case \"thead\":\r\n parser = in_table_body_mode;\r\n return;\r\n case \"caption\":\r\n parser = in_caption_mode;\r\n return;\r\n case \"colgroup\":\r\n parser = in_column_group_mode;\r\n return;\r\n case \"table\":\r\n parser = in_table_mode;\r\n return;\r\n case \"template\":\r\n parser = templateInsertionModes[templateInsertionModes.length-1];\r\n return;\r\n case \"body\":\r\n parser = in_body_mode;\r\n return;\r\n case \"frameset\":\r\n parser = in_frameset_mode;\r\n return;\r\n case \"html\":\r\n if (head_element_pointer === null) {\r\n parser = before_head_mode;\r\n } else {\r\n parser = after_head_mode;\r\n }\r\n return;\r\n default:\r\n if (!last) {\r\n if (tag === \"head\") {\r\n parser = in_head_mode;\r\n return;\r\n }\r\n if (tag === \"td\" || tag === \"th\") {\r\n parser = in_cell_mode;\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n if (last) {\r\n parser = in_body_mode;\r\n return;\r\n }\r\n }\r\n }\r\n\r\n\r\n function parseRawText(name, attrs) {\r\n insertHTMLElement(name, attrs);\r\n tokenizer = rawtext_state;\r\n originalInsertionMode = parser;\r\n parser = text_mode;\r\n }\r\n\r\n function parseRCDATA(name, attrs) {\r\n insertHTMLElement(name, attrs);\r\n tokenizer = rcdata_state;\r\n originalInsertionMode = parser;\r\n parser = text_mode;\r\n }\r\n\r\n // Make a copy of element i on the list of active formatting\r\n // elements, using its original attributes, not current\r\n // attributes (which may have been modified by a script)\r\n function afeclone(doc, i) {\r\n return {\r\n elt: createHTMLElt(doc, afe.list[i].localName, afe.attrs[i]),\r\n attrs: afe.attrs[i],\r\n };\r\n }\r\n\r\n\r\n function afereconstruct() {\r\n if (afe.list.length === 0) return;\r\n var entry = afe.list[afe.list.length-1];\r\n // If the last is a marker , do nothing\r\n if (entry === afe.MARKER) return;\r\n // Or if it is an open element, do nothing\r\n if (stack.elements.lastIndexOf(entry) !== -1) return;\r\n\r\n // Loop backward through the list until we find a marker or an\r\n // open element, and then move forward one from there.\r\n for(var i = afe.list.length-2; i >= 0; i--) {\r\n entry = afe.list[i];\r\n if (entry === afe.MARKER) break;\r\n if (stack.elements.lastIndexOf(entry) !== -1) break;\r\n }\r\n\r\n // Now loop forward, starting from the element after the current\r\n // one, recreating formatting elements and pushing them back onto\r\n // the list of open elements\r\n for(i = i+1; i < afe.list.length; i++) {\r\n var newelt = insertElement(function(doc) { return afeclone(doc, i).elt; });\r\n afe.list[i] = newelt;\r\n }\r\n }\r\n\r\n // Used by the adoptionAgency() function\r\n var BOOKMARK = {localName:\"BM\"};\r\n\r\n function adoptionAgency(tag) {\r\n // If the current node is an HTML element whose tag name is subject,\r\n // and the current node is not in the list of active formatting\r\n // elements, then pop the current node off the stack of open\r\n // elements and abort these steps.\r\n if (isA(stack.top, tag) && afe.indexOf(stack.top) === -1) {\r\n stack.pop();\r\n return true; // no more handling required\r\n }\r\n\r\n // Let outer loop counter be zero.\r\n var outer = 0;\r\n\r\n // Outer loop: If outer loop counter is greater than or\r\n // equal to eight, then abort these steps.\r\n while(outer < 8) {\r\n // Increment outer loop counter by one.\r\n outer++;\r\n\r\n // Let the formatting element be the last element in the list\r\n // of active formatting elements that: is between the end of\r\n // the list and the last scope marker in the list, if any, or\r\n // the start of the list otherwise, and has the same tag name\r\n // as the token.\r\n var fmtelt = afe.findElementByTag(tag);\r\n\r\n // If there is no such node, then abort these steps and instead\r\n // act as described in the \"any other end tag\" entry below.\r\n if (!fmtelt) {\r\n return false; // false means handle by the default case\r\n }\r\n\r\n // Otherwise, if there is such a node, but that node is not in\r\n // the stack of open elements, then this is a parse error;\r\n // remove the element from the list, and abort these steps.\r\n var index = stack.elements.lastIndexOf(fmtelt);\r\n if (index === -1) {\r\n afe.remove(fmtelt);\r\n return true; // true means no more handling required\r\n }\r\n\r\n // Otherwise, if there is such a node, and that node is also in\r\n // the stack of open elements, but the element is not in scope,\r\n // then this is a parse error; ignore the token, and abort\r\n // these steps.\r\n if (!stack.elementInScope(fmtelt)) {\r\n return true;\r\n }\r\n\r\n // Let the furthest block be the topmost node in the stack of\r\n // open elements that is lower in the stack than the formatting\r\n // element, and is an element in the special category. There\r\n // might not be one.\r\n var furthestblock = null, furthestblockindex;\r\n for(var i = index+1; i < stack.elements.length; i++) {\r\n if (isA(stack.elements[i], specialSet)) {\r\n furthestblock = stack.elements[i];\r\n furthestblockindex = i;\r\n break;\r\n }\r\n }\r\n\r\n // If there is no furthest block, then the UA must skip the\r\n // subsequent steps and instead just pop all the nodes from the\r\n // bottom of the stack of open elements, from the current node\r\n // up to and including the formatting element, and remove the\r\n // formatting element from the list of active formatting\r\n // elements.\r\n if (!furthestblock) {\r\n stack.popElement(fmtelt);\r\n afe.remove(fmtelt);\r\n return true;\r\n }\r\n else {\r\n // Let the common ancestor be the element immediately above\r\n // the formatting element in the stack of open elements.\r\n var ancestor = stack.elements[index-1];\r\n\r\n // Let a bookmark note the position of the formatting\r\n // element in the list of active formatting elements\r\n // relative to the elements on either side of it in the\r\n // list.\r\n afe.insertAfter(fmtelt, BOOKMARK);\r\n\r\n // Let node and last node be the furthest block.\r\n var node = furthestblock;\r\n var lastnode = furthestblock;\r\n var nodeindex = furthestblockindex;\r\n var nodeafeindex;\r\n\r\n // Let inner loop counter be zero.\r\n var inner = 0;\r\n\r\n while (true) {\r\n\r\n // Increment inner loop counter by one.\r\n inner++;\r\n\r\n // Let node be the element immediately above node in\r\n // the stack of open elements, or if node is no longer\r\n // in the stack of open elements (e.g. because it got\r\n // removed by this algorithm), the element that was\r\n // immediately above node in the stack of open elements\r\n // before node was removed.\r\n node = stack.elements[--nodeindex];\r\n\r\n // If node is the formatting element, then go\r\n // to the next step in the overall algorithm.\r\n if (node === fmtelt) break;\r\n\r\n // If the inner loop counter is greater than three and node\r\n // is in the list of active formatting elements, then remove\r\n // node from the list of active formatting elements.\r\n nodeafeindex = afe.indexOf(node);\r\n if (inner > 3 && nodeafeindex !== -1) {\r\n afe.remove(node);\r\n nodeafeindex = -1;\r\n }\r\n\r\n // If node is not in the list of active formatting\r\n // elements, then remove node from the stack of open\r\n // elements and then go back to the step labeled inner\r\n // loop.\r\n if (nodeafeindex === -1) {\r\n stack.removeElement(node);\r\n continue;\r\n }\r\n\r\n // Create an element for the token for which the\r\n // element node was created with common ancestor as\r\n // the intended parent, replace the entry for node\r\n // in the list of active formatting elements with an\r\n // entry for the new element, replace the entry for\r\n // node in the stack of open elements with an entry for\r\n // the new element, and let node be the new element.\r\n var newelt = afeclone(ancestor.ownerDocument, nodeafeindex);\r\n afe.replace(node, newelt.elt, newelt.attrs);\r\n stack.elements[nodeindex] = newelt.elt;\r\n node = newelt.elt;\r\n\r\n // If last node is the furthest block, then move the\r\n // aforementioned bookmark to be immediately after the\r\n // new node in the list of active formatting elements.\r\n if (lastnode === furthestblock) {\r\n afe.remove(BOOKMARK);\r\n afe.insertAfter(newelt.elt, BOOKMARK);\r\n }\r\n\r\n // Insert last node into node, first removing it from\r\n // its previous parent node if any.\r\n node._appendChild(lastnode);\r\n\r\n // Let last node be node.\r\n lastnode = node;\r\n }\r\n\r\n // If the common ancestor node is a table, tbody, tfoot,\r\n // thead, or tr element, then, foster parent whatever last\r\n // node ended up being in the previous step, first removing\r\n // it from its previous parent node if any.\r\n if (foster_parent_mode && isA(ancestor, tablesectionrowSet)) {\r\n fosterParent(function() { return lastnode; });\r\n }\r\n // Otherwise, append whatever last node ended up being in\r\n // the previous step to the common ancestor node, first\r\n // removing it from its previous parent node if any.\r\n else if (ancestor instanceof impl.HTMLTemplateElement) {\r\n ancestor.content._appendChild(lastnode);\r\n } else {\r\n ancestor._appendChild(lastnode);\r\n }\r\n\r\n // Create an element for the token for which the\r\n // formatting element was created, with furthest block\r\n // as the intended parent.\r\n var newelt2 = afeclone(furthestblock.ownerDocument, afe.indexOf(fmtelt));\r\n\r\n // Take all of the child nodes of the furthest block and\r\n // append them to the element created in the last step.\r\n while(furthestblock.hasChildNodes()) {\r\n newelt2.elt._appendChild(furthestblock.firstChild);\r\n }\r\n\r\n // Append that new element to the furthest block.\r\n furthestblock._appendChild(newelt2.elt);\r\n\r\n // Remove the formatting element from the list of active\r\n // formatting elements, and insert the new element into the\r\n // list of active formatting elements at the position of\r\n // the aforementioned bookmark.\r\n afe.remove(fmtelt);\r\n afe.replace(BOOKMARK, newelt2.elt, newelt2.attrs);\r\n\r\n // Remove the formatting element from the stack of open\r\n // elements, and insert the new element into the stack of\r\n // open elements immediately below the position of the\r\n // furthest block in that stack.\r\n stack.removeElement(fmtelt);\r\n var pos = stack.elements.lastIndexOf(furthestblock);\r\n stack.elements.splice(pos+1, 0, newelt2.elt);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n // We do this when we get /script in in_text_mode\r\n function handleScriptEnd() {\r\n // XXX:\r\n // This is just a stub implementation right now and doesn't run scripts.\r\n // Getting this method right involves the event loop, URL resolution\r\n // script fetching etc. For now I just want to be able to parse\r\n // documents and test the parser.\r\n\r\n //var script = stack.top;\r\n stack.pop();\r\n parser = originalInsertionMode;\r\n //script._prepare();\r\n return;\r\n\r\n // XXX: here is what this method is supposed to do\r\n\r\n // Provide a stable state.\r\n\r\n // Let script be the current node (which will be a script\r\n // element).\r\n\r\n // Pop the current node off the stack of open elements.\r\n\r\n // Switch the insertion mode to the original insertion mode.\r\n\r\n // Let the old insertion point have the same value as the current\r\n // insertion point. Let the insertion point be just before the\r\n // next input character.\r\n\r\n // Increment the parser's script nesting level by one.\r\n\r\n // Prepare the script. This might cause some script to execute,\r\n // which might cause new characters to be inserted into the\r\n // tokenizer, and might cause the tokenizer to output more tokens,\r\n // resulting in a reentrant invocation of the parser.\r\n\r\n // Decrement the parser's script nesting level by one. If the\r\n // parser's script nesting level is zero, then set the parser\r\n // pause flag to false.\r\n\r\n // Let the insertion point have the value of the old insertion\r\n // point. (In other words, restore the insertion point to its\r\n // previous value. This value might be the \"undefined\" value.)\r\n\r\n // At this stage, if there is a pending parsing-blocking script,\r\n // then:\r\n\r\n // If the script nesting level is not zero:\r\n\r\n // Set the parser pause flag to true, and abort the processing\r\n // of any nested invocations of the tokenizer, yielding\r\n // control back to the caller. (Tokenization will resume when\r\n // the caller returns to the \"outer\" tree construction stage.)\r\n\r\n // The tree construction stage of this particular parser is\r\n // being called reentrantly, say from a call to\r\n // document.write().\r\n\r\n // Otherwise:\r\n\r\n // Run these steps:\r\n\r\n // Let the script be the pending parsing-blocking\r\n // script. There is no longer a pending\r\n // parsing-blocking script.\r\n\r\n // Block the tokenizer for this instance of the HTML\r\n // parser, such that the event loop will not run tasks\r\n // that invoke the tokenizer.\r\n\r\n // If the parser's Document has a style sheet that is\r\n // blocking scripts or the script's \"ready to be\r\n // parser-executed\" flag is not set: spin the event\r\n // loop until the parser's Document has no style sheet\r\n // that is blocking scripts and the script's \"ready to\r\n // be parser-executed\" flag is set.\r\n\r\n // Unblock the tokenizer for this instance of the HTML\r\n // parser, such that tasks that invoke the tokenizer\r\n // can again be run.\r\n\r\n // Let the insertion point be just before the next\r\n // input character.\r\n\r\n // Increment the parser's script nesting level by one\r\n // (it should be zero before this step, so this sets\r\n // it to one).\r\n\r\n // Execute the script.\r\n\r\n // Decrement the parser's script nesting level by\r\n // one. If the parser's script nesting level is zero\r\n // (which it always should be at this point), then set\r\n // the parser pause flag to false.\r\n\r\n // Let the insertion point be undefined again.\r\n\r\n // If there is once again a pending parsing-blocking\r\n // script, then repeat these steps from step 1.\r\n\r\n\r\n }\r\n\r\n function stopParsing() {\r\n // XXX This is just a temporary implementation to get the parser working.\r\n // A full implementation involves scripts and events and the event loop.\r\n\r\n // Remove the link from document to parser.\r\n // This is instead of \"set the insertion point to undefined\".\r\n // It means that document.write() can't write into the doc anymore.\r\n delete doc._parser;\r\n\r\n stack.elements.length = 0; // pop everything off\r\n\r\n // If there is a window object associated with the document\r\n // then trigger an load event on it\r\n if (doc.defaultView) {\r\n doc.defaultView.dispatchEvent(new impl.Event(\"load\",{}));\r\n }\r\n\r\n }\r\n\r\n /****\r\n * Tokenizer states\r\n */\r\n\r\n /**\r\n * This file was partially mechanically generated from\r\n * http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html\r\n *\r\n * After mechanical conversion, it was further converted from\r\n * prose to JS by hand, but the intent is that it is a very\r\n * faithful rendering of the HTML tokenization spec in\r\n * JavaScript.\r\n *\r\n * It is not a goal of this tokenizer to detect or report\r\n * parse errors.\r\n *\r\n * XXX The tokenizer is supposed to work with straight UTF32\r\n * codepoints. But I don't think it has any dependencies on\r\n * any character outside of the BMP so I think it is safe to\r\n * pass it UTF16 characters. I don't think it will ever change\r\n * state in the middle of a surrogate pair.\r\n */\r\n\r\n /*\r\n * Each state is represented by a function. For most states, the\r\n * scanner simply passes the next character (as an integer\r\n * codepoint) to the current state function and automatically\r\n * consumes the character. If the state function can't process\r\n * the character it can call pushback() to push it back to the\r\n * scanner.\r\n *\r\n * Some states require lookahead, though. If a state function has\r\n * a lookahead property, then it is invoked differently. In this\r\n * case, the scanner invokes the function with 3 arguments: 1) the\r\n * next codepoint 2) a string of lookahead text 3) a boolean that\r\n * is true if the lookahead goes all the way to the EOF. (XXX\r\n * actually maybe this third is not necessary... the lookahead\r\n * could just include \\uFFFF?)\r\n *\r\n * If the lookahead property of a state function is an integer, it\r\n * specifies the number of characters required. If it is a string,\r\n * then the scanner will scan for that string and return all\r\n * characters up to and including that sequence, or up to EOF. If\r\n * the lookahead property is a regexp, then the scanner will match\r\n * the regexp at the current point and return the matching string.\r\n *\r\n * States that require lookahead are responsible for explicitly\r\n * consuming the characters they process. They do this by\r\n * incrementing nextchar by the number of processed characters.\r\n */\r\n function reconsume(c, new_state) {\r\n tokenizer = new_state;\r\n nextchar--; // pushback\r\n }\r\n\r\n function data_state(c) {\r\n switch(c) {\r\n case 0x0026: // AMPERSAND\r\n return_state = data_state;\r\n tokenizer = character_reference_state;\r\n break;\r\n case 0x003C: // LESS-THAN SIGN\r\n if (emitSimpleTag()) // Shortcut for <p>, <dl>, </div> etc.\r\n break;\r\n tokenizer = tag_open_state;\r\n break;\r\n case 0x0000: // NULL\r\n // Usually null characters emitted by the tokenizer will be\r\n // ignored by the tree builder, but sometimes they'll be\r\n // converted to \\uFFFD. I don't want to have the search every\r\n // string emitted to replace NULs, so I'll set a flag\r\n // if I've emitted a NUL.\r\n textrun.push(c);\r\n textIncludesNUL = true;\r\n break;\r\n case -1: // EOF\r\n emitEOF();\r\n break;\r\n default:\r\n // Instead of just pushing a single character and then\r\n // coming back to the very same place, lookahead and\r\n // emit everything we can at once.\r\n /*jshint -W030 */\r\n emitCharsWhile(DATATEXT) || textrun.push(c);\r\n break;\r\n }\r\n }\r\n\r\n function rcdata_state(c) {\r\n // Save the open tag so we can find a matching close tag\r\n switch(c) {\r\n case 0x0026: // AMPERSAND\r\n return_state = rcdata_state;\r\n tokenizer = character_reference_state;\r\n break;\r\n case 0x003C: // LESS-THAN SIGN\r\n tokenizer = rcdata_less_than_sign_state;\r\n break;\r\n case 0x0000: // NULL\r\n textrun.push(0xFFFD); // REPLACEMENT CHARACTER\r\n textIncludesNUL = true;\r\n break;\r\n case -1: // EOF\r\n emitEOF();\r\n break;\r\n default:\r\n textrun.push(c);\r\n break;\r\n }\r\n }\r\n\r\n function rawtext_state(c) {\r\n switch(c) {\r\n case 0x003C: // LESS-THAN SIGN\r\n tokenizer = rawtext_less_than_sign_state;\r\n break;\r\n case 0x0000: // NULL\r\n textrun.push(0xFFFD); // REPLACEMENT CHARACTER\r\n break;\r\n case -1: // EOF\r\n emitEOF();\r\n break;\r\n default:\r\n /*jshint -W030 */\r\n emitCharsWhile(RAWTEXT) || textrun.push(c);\r\n break;\r\n }\r\n }\r\n\r\n function script_data_state(c) {\r\n switch(c) {\r\n case 0x003C: // LESS-THAN SIGN\r\n tokenizer = script_data_less_than_sign_state;\r\n break;\r\n case 0x0000: // NULL\r\n textrun.push(0xFFFD); // REPLACEMENT CHARACTER\r\n break;\r\n case -1: // EOF\r\n emitEOF();\r\n break;\r\n default:\r\n /*jshint -W030 */\r\n emitCharsWhile(RAWTEXT) || textrun.push(c);\r\n break;\r\n }\r\n }\r\n\r\n function plaintext_state(c) {\r\n switch(c) {\r\n case 0x0000: // NULL\r\n textrun.push(0xFFFD); // REPLACEMENT CHARACTER\r\n break;\r\n case -1: // EOF\r\n emitEOF();\r\n break;\r\n default:\r\n /*jshint -W030 */\r\n emitCharsWhile(PLAINTEXT) || textrun.push(c);\r\n break;\r\n }\r\n }\r\n\r\n function tag_open_state(c) {\r\n switch(c) {\r\n case 0x0021: // EXCLAMATION MARK\r\n tokenizer = markup_declaration_open_state;\r\n break;\r\n case 0x002F: // SOLIDUS\r\n tokenizer = end_tag_open_state;\r\n break;\r\n case 0x0041: // [A-Z]\r\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n case 0x0061: // [a-z]\r\n case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\r\n case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\r\n case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\r\n case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\r\n case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\r\n beginTagName();\r\n reconsume(c, tag_name_state);\r\n break;\r\n case 0x003F: // QUESTION MARK\r\n reconsume(c, bogus_comment_state);\r\n break;\r\n default:\r\n textrun.push(0x003C); // LESS-THAN SIGN\r\n reconsume(c, data_state);\r\n break;\r\n }\r\n }\r\n\r\n function end_tag_open_state(c) {\r\n switch(c) {\r\n case 0x0041: // [A-Z]\r\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n case 0x0061: // [a-z]\r\n case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\r\n case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\r\n case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\r\n case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\r\n case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\r\n beginEndTagName();\r\n reconsume(c, tag_name_state);\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n tokenizer = data_state;\r\n break;\r\n case -1: // EOF\r\n textrun.push(0x003C); // LESS-THAN SIGN\r\n textrun.push(0x002F); // SOLIDUS\r\n emitEOF();\r\n break;\r\n default:\r\n reconsume(c, bogus_comment_state);\r\n break;\r\n }\r\n }\r\n\r\n function tag_name_state(c) {\r\n switch(c) {\r\n case 0x0009: // CHARACTER TABULATION (tab)\r\n case 0x000A: // LINE FEED (LF)\r\n case 0x000C: // FORM FEED (FF)\r\n case 0x0020: // SPACE\r\n tokenizer = before_attribute_name_state;\r\n break;\r\n case 0x002F: // SOLIDUS\r\n tokenizer = self_closing_start_tag_state;\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n tokenizer = data_state;\r\n emitTag();\r\n break;\r\n case 0x0041: // [A-Z]\r\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n tagnamebuf += String.fromCharCode(c + 0x0020);\r\n break;\r\n case 0x0000: // NULL\r\n tagnamebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */);\r\n break;\r\n case -1: // EOF\r\n emitEOF();\r\n break;\r\n default:\r\n tagnamebuf += getMatchingChars(TAGNAME);\r\n break;\r\n }\r\n }\r\n\r\n function rcdata_less_than_sign_state(c) {\r\n /* identical to the RAWTEXT less-than sign state, except s/RAWTEXT/RCDATA/g */\r\n if (c === 0x002F) { // SOLIDUS\r\n beginTempBuf();\r\n tokenizer = rcdata_end_tag_open_state;\r\n }\r\n else {\r\n textrun.push(0x003C); // LESS-THAN SIGN\r\n reconsume(c, rcdata_state);\r\n }\r\n }\r\n\r\n function rcdata_end_tag_open_state(c) {\r\n /* identical to the RAWTEXT (and Script data) end tag open state, except s/RAWTEXT/RCDATA/g */\r\n switch(c) {\r\n case 0x0041: // [A-Z]\r\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n case 0x0061: // [a-z]\r\n case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\r\n case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\r\n case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\r\n case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\r\n case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\r\n beginEndTagName();\r\n reconsume(c, rcdata_end_tag_name_state);\r\n break;\r\n default:\r\n textrun.push(0x003C); // LESS-THAN SIGN\r\n textrun.push(0x002F); // SOLIDUS\r\n reconsume(c, rcdata_state);\r\n break;\r\n }\r\n }\r\n\r\n function rcdata_end_tag_name_state(c) {\r\n /* identical to the RAWTEXT (and Script data) end tag name state, except s/RAWTEXT/RCDATA/g */\r\n switch(c) {\r\n case 0x0009: // CHARACTER TABULATION (tab)\r\n case 0x000A: // LINE FEED (LF)\r\n case 0x000C: // FORM FEED (FF)\r\n case 0x0020: // SPACE\r\n if (appropriateEndTag(tagnamebuf)) {\r\n tokenizer = before_attribute_name_state;\r\n return;\r\n }\r\n break;\r\n case 0x002F: // SOLIDUS\r\n if (appropriateEndTag(tagnamebuf)) {\r\n tokenizer = self_closing_start_tag_state;\r\n return;\r\n }\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n if (appropriateEndTag(tagnamebuf)) {\r\n tokenizer = data_state;\r\n emitTag();\r\n return;\r\n }\r\n break;\r\n case 0x0041: // [A-Z]\r\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n\r\n tagnamebuf += String.fromCharCode(c + 0x0020);\r\n tempbuf.push(c);\r\n return;\r\n case 0x0061: // [a-z]\r\n case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\r\n case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\r\n case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\r\n case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\r\n case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\r\n\r\n tagnamebuf += String.fromCharCode(c);\r\n tempbuf.push(c);\r\n return;\r\n default:\r\n break;\r\n }\r\n\r\n // If we don't return in one of the cases above, then this was not\r\n // an appropriately matching close tag, so back out by emitting all\r\n // the characters as text\r\n textrun.push(0x003C); // LESS-THAN SIGN\r\n textrun.push(0x002F); // SOLIDUS\r\n pushAll(textrun, tempbuf);\r\n reconsume(c, rcdata_state);\r\n }\r\n\r\n function rawtext_less_than_sign_state(c) {\r\n /* identical to the RCDATA less-than sign state, except s/RCDATA/RAWTEXT/g\r\n */\r\n if (c === 0x002F) { // SOLIDUS\r\n beginTempBuf();\r\n tokenizer = rawtext_end_tag_open_state;\r\n }\r\n else {\r\n textrun.push(0x003C); // LESS-THAN SIGN\r\n reconsume(c, rawtext_state);\r\n }\r\n }\r\n\r\n function rawtext_end_tag_open_state(c) {\r\n /* identical to the RCDATA (and Script data) end tag open state, except s/RCDATA/RAWTEXT/g */\r\n switch(c) {\r\n case 0x0041: // [A-Z]\r\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n case 0x0061: // [a-z]\r\n case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\r\n case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\r\n case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\r\n case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\r\n case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\r\n beginEndTagName();\r\n reconsume(c, rawtext_end_tag_name_state);\r\n break;\r\n default:\r\n textrun.push(0x003C); // LESS-THAN SIGN\r\n textrun.push(0x002F); // SOLIDUS\r\n reconsume(c, rawtext_state);\r\n break;\r\n }\r\n }\r\n\r\n function rawtext_end_tag_name_state(c) {\r\n /* identical to the RCDATA (and Script data) end tag name state, except s/RCDATA/RAWTEXT/g */\r\n switch(c) {\r\n case 0x0009: // CHARACTER TABULATION (tab)\r\n case 0x000A: // LINE FEED (LF)\r\n case 0x000C: // FORM FEED (FF)\r\n case 0x0020: // SPACE\r\n if (appropriateEndTag(tagnamebuf)) {\r\n tokenizer = before_attribute_name_state;\r\n return;\r\n }\r\n break;\r\n case 0x002F: // SOLIDUS\r\n if (appropriateEndTag(tagnamebuf)) {\r\n tokenizer = self_closing_start_tag_state;\r\n return;\r\n }\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n if (appropriateEndTag(tagnamebuf)) {\r\n tokenizer = data_state;\r\n emitTag();\r\n return;\r\n }\r\n break;\r\n case 0x0041: // [A-Z]\r\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n tagnamebuf += String.fromCharCode(c + 0x0020);\r\n tempbuf.push(c);\r\n return;\r\n case 0x0061: // [a-z]\r\n case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\r\n case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\r\n case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\r\n case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\r\n case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\r\n tagnamebuf += String.fromCharCode(c);\r\n tempbuf.push(c);\r\n return;\r\n default:\r\n break;\r\n }\r\n\r\n // If we don't return in one of the cases above, then this was not\r\n // an appropriately matching close tag, so back out by emitting all\r\n // the characters as text\r\n textrun.push(0x003C); // LESS-THAN SIGN\r\n textrun.push(0x002F); // SOLIDUS\r\n pushAll(textrun,tempbuf);\r\n reconsume(c, rawtext_state);\r\n }\r\n\r\n function script_data_less_than_sign_state(c) {\r\n switch(c) {\r\n case 0x002F: // SOLIDUS\r\n beginTempBuf();\r\n tokenizer = script_data_end_tag_open_state;\r\n break;\r\n case 0x0021: // EXCLAMATION MARK\r\n tokenizer = script_data_escape_start_state;\r\n textrun.push(0x003C); // LESS-THAN SIGN\r\n textrun.push(0x0021); // EXCLAMATION MARK\r\n break;\r\n default:\r\n textrun.push(0x003C); // LESS-THAN SIGN\r\n reconsume(c, script_data_state);\r\n break;\r\n }\r\n }\r\n\r\n function script_data_end_tag_open_state(c) {\r\n /* identical to the RCDATA (and RAWTEXT) end tag open state, except s/RCDATA/Script data/g */\r\n switch(c) {\r\n case 0x0041: // [A-Z]\r\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n case 0x0061: // [a-z]\r\n case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\r\n case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\r\n case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\r\n case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\r\n case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\r\n beginEndTagName();\r\n reconsume(c, script_data_end_tag_name_state);\r\n break;\r\n default:\r\n textrun.push(0x003C); // LESS-THAN SIGN\r\n textrun.push(0x002F); // SOLIDUS\r\n reconsume(c, script_data_state);\r\n break;\r\n }\r\n }\r\n\r\n function script_data_end_tag_name_state(c) {\r\n /* identical to the RCDATA (and RAWTEXT) end tag name state, except s/RCDATA/Script data/g */\r\n switch(c) {\r\n case 0x0009: // CHARACTER TABULATION (tab)\r\n case 0x000A: // LINE FEED (LF)\r\n case 0x000C: // FORM FEED (FF)\r\n case 0x0020: // SPACE\r\n if (appropriateEndTag(tagnamebuf)) {\r\n tokenizer = before_attribute_name_state;\r\n return;\r\n }\r\n break;\r\n case 0x002F: // SOLIDUS\r\n if (appropriateEndTag(tagnamebuf)) {\r\n tokenizer = self_closing_start_tag_state;\r\n return;\r\n }\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n if (appropriateEndTag(tagnamebuf)) {\r\n tokenizer = data_state;\r\n emitTag();\r\n return;\r\n }\r\n break;\r\n case 0x0041: // [A-Z]\r\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n\r\n tagnamebuf += String.fromCharCode(c + 0x0020);\r\n tempbuf.push(c);\r\n return;\r\n case 0x0061: // [a-z]\r\n case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\r\n case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\r\n case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\r\n case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\r\n case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\r\n\r\n tagnamebuf += String.fromCharCode(c);\r\n tempbuf.push(c);\r\n return;\r\n default:\r\n break;\r\n }\r\n\r\n // If we don't return in one of the cases above, then this was not\r\n // an appropriately matching close tag, so back out by emitting all\r\n // the characters as text\r\n textrun.push(0x003C); // LESS-THAN SIGN\r\n textrun.push(0x002F); // SOLIDUS\r\n pushAll(textrun,tempbuf);\r\n reconsume(c, script_data_state);\r\n }\r\n\r\n function script_data_escape_start_state(c) {\r\n if (c === 0x002D) { // HYPHEN-MINUS\r\n tokenizer = script_data_escape_start_dash_state;\r\n textrun.push(0x002D); // HYPHEN-MINUS\r\n }\r\n else {\r\n reconsume(c, script_data_state);\r\n }\r\n }\r\n\r\n function script_data_escape_start_dash_state(c) {\r\n if (c === 0x002D) { // HYPHEN-MINUS\r\n tokenizer = script_data_escaped_dash_dash_state;\r\n textrun.push(0x002D); // HYPHEN-MINUS\r\n }\r\n else {\r\n reconsume(c, script_data_state);\r\n }\r\n }\r\n\r\n function script_data_escaped_state(c) {\r\n switch(c) {\r\n case 0x002D: // HYPHEN-MINUS\r\n tokenizer = script_data_escaped_dash_state;\r\n textrun.push(0x002D); // HYPHEN-MINUS\r\n break;\r\n case 0x003C: // LESS-THAN SIGN\r\n tokenizer = script_data_escaped_less_than_sign_state;\r\n break;\r\n case 0x0000: // NULL\r\n textrun.push(0xFFFD); // REPLACEMENT CHARACTER\r\n break;\r\n case -1: // EOF\r\n emitEOF();\r\n break;\r\n default:\r\n textrun.push(c);\r\n break;\r\n }\r\n }\r\n\r\n function script_data_escaped_dash_state(c) {\r\n switch(c) {\r\n case 0x002D: // HYPHEN-MINUS\r\n tokenizer = script_data_escaped_dash_dash_state;\r\n textrun.push(0x002D); // HYPHEN-MINUS\r\n break;\r\n case 0x003C: // LESS-THAN SIGN\r\n tokenizer = script_data_escaped_less_than_sign_state;\r\n break;\r\n case 0x0000: // NULL\r\n tokenizer = script_data_escaped_state;\r\n textrun.push(0xFFFD); // REPLACEMENT CHARACTER\r\n break;\r\n case -1: // EOF\r\n emitEOF();\r\n break;\r\n default:\r\n tokenizer = script_data_escaped_state;\r\n textrun.push(c);\r\n break;\r\n }\r\n }\r\n\r\n function script_data_escaped_dash_dash_state(c) {\r\n switch(c) {\r\n case 0x002D: // HYPHEN-MINUS\r\n textrun.push(0x002D); // HYPHEN-MINUS\r\n break;\r\n case 0x003C: // LESS-THAN SIGN\r\n tokenizer = script_data_escaped_less_than_sign_state;\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n tokenizer = script_data_state;\r\n textrun.push(0x003E); // GREATER-THAN SIGN\r\n break;\r\n case 0x0000: // NULL\r\n tokenizer = script_data_escaped_state;\r\n textrun.push(0xFFFD); // REPLACEMENT CHARACTER\r\n break;\r\n case -1: // EOF\r\n emitEOF();\r\n break;\r\n default:\r\n tokenizer = script_data_escaped_state;\r\n textrun.push(c);\r\n break;\r\n }\r\n }\r\n\r\n function script_data_escaped_less_than_sign_state(c) {\r\n switch(c) {\r\n case 0x002F: // SOLIDUS\r\n beginTempBuf();\r\n tokenizer = script_data_escaped_end_tag_open_state;\r\n break;\r\n case 0x0041: // [A-Z]\r\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n case 0x0061: // [a-z]\r\n case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\r\n case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\r\n case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\r\n case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\r\n case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\r\n beginTempBuf();\r\n textrun.push(0x003C); // LESS-THAN SIGN\r\n reconsume(c, script_data_double_escape_start_state);\r\n break;\r\n default:\r\n textrun.push(0x003C); // LESS-THAN SIGN\r\n reconsume(c, script_data_escaped_state);\r\n break;\r\n }\r\n }\r\n\r\n function script_data_escaped_end_tag_open_state(c) {\r\n switch(c) {\r\n case 0x0041: // [A-Z]\r\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n case 0x0061: // [a-z]\r\n case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\r\n case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\r\n case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\r\n case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\r\n case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\r\n beginEndTagName();\r\n reconsume(c, script_data_escaped_end_tag_name_state);\r\n break;\r\n default:\r\n textrun.push(0x003C); // LESS-THAN SIGN\r\n textrun.push(0x002F); // SOLIDUS\r\n reconsume(c, script_data_escaped_state);\r\n break;\r\n }\r\n }\r\n\r\n function script_data_escaped_end_tag_name_state(c) {\r\n switch(c) {\r\n case 0x0009: // CHARACTER TABULATION (tab)\r\n case 0x000A: // LINE FEED (LF)\r\n case 0x000C: // FORM FEED (FF)\r\n case 0x0020: // SPACE\r\n if (appropriateEndTag(tagnamebuf)) {\r\n tokenizer = before_attribute_name_state;\r\n return;\r\n }\r\n break;\r\n case 0x002F: // SOLIDUS\r\n if (appropriateEndTag(tagnamebuf)) {\r\n tokenizer = self_closing_start_tag_state;\r\n return;\r\n }\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n if (appropriateEndTag(tagnamebuf)) {\r\n tokenizer = data_state;\r\n emitTag();\r\n return;\r\n }\r\n break;\r\n case 0x0041: // [A-Z]\r\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n tagnamebuf += String.fromCharCode(c + 0x0020);\r\n tempbuf.push(c);\r\n return;\r\n case 0x0061: // [a-z]\r\n case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\r\n case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\r\n case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\r\n case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\r\n case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\r\n tagnamebuf += String.fromCharCode(c);\r\n tempbuf.push(c);\r\n return;\r\n default:\r\n break;\r\n }\r\n\r\n // We get here in the default case, and if the closing tagname\r\n // is not an appropriate tagname.\r\n textrun.push(0x003C); // LESS-THAN SIGN\r\n textrun.push(0x002F); // SOLIDUS\r\n pushAll(textrun,tempbuf);\r\n reconsume(c, script_data_escaped_state);\r\n }\r\n\r\n function script_data_double_escape_start_state(c) {\r\n switch(c) {\r\n case 0x0009: // CHARACTER TABULATION (tab)\r\n case 0x000A: // LINE FEED (LF)\r\n case 0x000C: // FORM FEED (FF)\r\n case 0x0020: // SPACE\r\n case 0x002F: // SOLIDUS\r\n case 0x003E: // GREATER-THAN SIGN\r\n if (buf2str(tempbuf) === \"script\") {\r\n tokenizer = script_data_double_escaped_state;\r\n }\r\n else {\r\n tokenizer = script_data_escaped_state;\r\n }\r\n textrun.push(c);\r\n break;\r\n case 0x0041: // [A-Z]\r\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n tempbuf.push(c + 0x0020);\r\n textrun.push(c);\r\n break;\r\n case 0x0061: // [a-z]\r\n case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\r\n case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\r\n case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\r\n case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\r\n case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\r\n tempbuf.push(c);\r\n textrun.push(c);\r\n break;\r\n default:\r\n reconsume(c, script_data_escaped_state);\r\n break;\r\n }\r\n }\r\n\r\n function script_data_double_escaped_state(c) {\r\n switch(c) {\r\n case 0x002D: // HYPHEN-MINUS\r\n tokenizer = script_data_double_escaped_dash_state;\r\n textrun.push(0x002D); // HYPHEN-MINUS\r\n break;\r\n case 0x003C: // LESS-THAN SIGN\r\n tokenizer = script_data_double_escaped_less_than_sign_state;\r\n textrun.push(0x003C); // LESS-THAN SIGN\r\n break;\r\n case 0x0000: // NULL\r\n textrun.push(0xFFFD); // REPLACEMENT CHARACTER\r\n break;\r\n case -1: // EOF\r\n emitEOF();\r\n break;\r\n default:\r\n textrun.push(c);\r\n break;\r\n }\r\n }\r\n\r\n function script_data_double_escaped_dash_state(c) {\r\n switch(c) {\r\n case 0x002D: // HYPHEN-MINUS\r\n tokenizer = script_data_double_escaped_dash_dash_state;\r\n textrun.push(0x002D); // HYPHEN-MINUS\r\n break;\r\n case 0x003C: // LESS-THAN SIGN\r\n tokenizer = script_data_double_escaped_less_than_sign_state;\r\n textrun.push(0x003C); // LESS-THAN SIGN\r\n break;\r\n case 0x0000: // NULL\r\n tokenizer = script_data_double_escaped_state;\r\n textrun.push(0xFFFD); // REPLACEMENT CHARACTER\r\n break;\r\n case -1: // EOF\r\n emitEOF();\r\n break;\r\n default:\r\n tokenizer = script_data_double_escaped_state;\r\n textrun.push(c);\r\n break;\r\n }\r\n }\r\n\r\n function script_data_double_escaped_dash_dash_state(c) {\r\n switch(c) {\r\n case 0x002D: // HYPHEN-MINUS\r\n textrun.push(0x002D); // HYPHEN-MINUS\r\n break;\r\n case 0x003C: // LESS-THAN SIGN\r\n tokenizer = script_data_double_escaped_less_than_sign_state;\r\n textrun.push(0x003C); // LESS-THAN SIGN\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n tokenizer = script_data_state;\r\n textrun.push(0x003E); // GREATER-THAN SIGN\r\n break;\r\n case 0x0000: // NULL\r\n tokenizer = script_data_double_escaped_state;\r\n textrun.push(0xFFFD); // REPLACEMENT CHARACTER\r\n break;\r\n case -1: // EOF\r\n emitEOF();\r\n break;\r\n default:\r\n tokenizer = script_data_double_escaped_state;\r\n textrun.push(c);\r\n break;\r\n }\r\n }\r\n\r\n function script_data_double_escaped_less_than_sign_state(c) {\r\n if (c === 0x002F) { // SOLIDUS\r\n beginTempBuf();\r\n tokenizer = script_data_double_escape_end_state;\r\n textrun.push(0x002F); // SOLIDUS\r\n }\r\n else {\r\n reconsume(c, script_data_double_escaped_state);\r\n }\r\n }\r\n\r\n function script_data_double_escape_end_state(c) {\r\n switch(c) {\r\n case 0x0009: // CHARACTER TABULATION (tab)\r\n case 0x000A: // LINE FEED (LF)\r\n case 0x000C: // FORM FEED (FF)\r\n case 0x0020: // SPACE\r\n case 0x002F: // SOLIDUS\r\n case 0x003E: // GREATER-THAN SIGN\r\n if (buf2str(tempbuf) === \"script\") {\r\n tokenizer = script_data_escaped_state;\r\n }\r\n else {\r\n tokenizer = script_data_double_escaped_state;\r\n }\r\n textrun.push(c);\r\n break;\r\n case 0x0041: // [A-Z]\r\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n tempbuf.push(c + 0x0020);\r\n textrun.push(c);\r\n break;\r\n case 0x0061: // [a-z]\r\n case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\r\n case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\r\n case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\r\n case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\r\n case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\r\n tempbuf.push(c);\r\n textrun.push(c);\r\n break;\r\n default:\r\n reconsume(c, script_data_double_escaped_state);\r\n break;\r\n }\r\n }\r\n\r\n function before_attribute_name_state(c) {\r\n switch(c) {\r\n case 0x0009: // CHARACTER TABULATION (tab)\r\n case 0x000A: // LINE FEED (LF)\r\n case 0x000C: // FORM FEED (FF)\r\n case 0x0020: // SPACE\r\n /* Ignore the character. */\r\n break;\r\n // For SOLIDUS, GREATER-THAN SIGN, and EOF, spec says \"reconsume in\r\n // the after attribute name state\", but in our implementation that\r\n // state always has an active attribute in attrnamebuf. Just clone\r\n // the rules here, without the addAttribute business.\r\n case 0x002F: // SOLIDUS\r\n tokenizer = self_closing_start_tag_state;\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n tokenizer = data_state;\r\n emitTag();\r\n break;\r\n case -1: // EOF\r\n emitEOF();\r\n break;\r\n case 0x003D: // EQUALS SIGN\r\n beginAttrName();\r\n attrnamebuf += String.fromCharCode(c);\r\n tokenizer = attribute_name_state;\r\n break;\r\n default:\r\n if (handleSimpleAttribute()) break;\r\n beginAttrName();\r\n reconsume(c, attribute_name_state);\r\n break;\r\n }\r\n }\r\n\r\n // beginAttrName() must have been called before this point\r\n // There is an active attribute in attrnamebuf (but not attrvaluebuf)\r\n function attribute_name_state(c) {\r\n switch(c) {\r\n case 0x0009: // CHARACTER TABULATION (tab)\r\n case 0x000A: // LINE FEED (LF)\r\n case 0x000C: // FORM FEED (FF)\r\n case 0x0020: // SPACE\r\n case 0x002F: // SOLIDUS\r\n case 0x003E: // GREATER-THAN SIGN\r\n case -1: // EOF\r\n reconsume(c, after_attribute_name_state);\r\n break;\r\n case 0x003D: // EQUALS SIGN\r\n tokenizer = before_attribute_value_state;\r\n break;\r\n case 0x0041: // [A-Z]\r\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n attrnamebuf += String.fromCharCode(c + 0x0020);\r\n break;\r\n case 0x0000: // NULL\r\n attrnamebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */);\r\n break;\r\n case 0x0022: // QUOTATION MARK\r\n case 0x0027: // APOSTROPHE\r\n case 0x003C: // LESS-THAN SIGN\r\n /* falls through */\r\n default:\r\n attrnamebuf += getMatchingChars(ATTRNAME);\r\n break;\r\n }\r\n }\r\n\r\n // There is an active attribute in attrnamebuf, but not yet in attrvaluebuf.\r\n function after_attribute_name_state(c) {\r\n switch(c) {\r\n case 0x0009: // CHARACTER TABULATION (tab)\r\n case 0x000A: // LINE FEED (LF)\r\n case 0x000C: // FORM FEED (FF)\r\n case 0x0020: // SPACE\r\n /* Ignore the character. */\r\n break;\r\n case 0x002F: // SOLIDUS\r\n // Keep in sync with before_attribute_name_state.\r\n addAttribute(attrnamebuf);\r\n tokenizer = self_closing_start_tag_state;\r\n break;\r\n case 0x003D: // EQUALS SIGN\r\n tokenizer = before_attribute_value_state;\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n // Keep in sync with before_attribute_name_state.\r\n tokenizer = data_state;\r\n addAttribute(attrnamebuf);\r\n emitTag();\r\n break;\r\n case -1: // EOF\r\n // Keep in sync with before_attribute_name_state.\r\n addAttribute(attrnamebuf);\r\n emitEOF();\r\n break;\r\n default:\r\n addAttribute(attrnamebuf);\r\n beginAttrName();\r\n reconsume(c, attribute_name_state);\r\n break;\r\n }\r\n }\r\n\r\n function before_attribute_value_state(c) {\r\n switch(c) {\r\n case 0x0009: // CHARACTER TABULATION (tab)\r\n case 0x000A: // LINE FEED (LF)\r\n case 0x000C: // FORM FEED (FF)\r\n case 0x0020: // SPACE\r\n /* Ignore the character. */\r\n break;\r\n case 0x0022: // QUOTATION MARK\r\n beginAttrValue();\r\n tokenizer = attribute_value_double_quoted_state;\r\n break;\r\n case 0x0027: // APOSTROPHE\r\n beginAttrValue();\r\n tokenizer = attribute_value_single_quoted_state;\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n /* falls through */\r\n default:\r\n beginAttrValue();\r\n reconsume(c, attribute_value_unquoted_state);\r\n break;\r\n }\r\n }\r\n\r\n function attribute_value_double_quoted_state(c) {\r\n switch(c) {\r\n case 0x0022: // QUOTATION MARK\r\n addAttribute(attrnamebuf, attrvaluebuf);\r\n tokenizer = after_attribute_value_quoted_state;\r\n break;\r\n case 0x0026: // AMPERSAND\r\n return_state = attribute_value_double_quoted_state;\r\n tokenizer = character_reference_state;\r\n break;\r\n case 0x0000: // NULL\r\n attrvaluebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */);\r\n break;\r\n case -1: // EOF\r\n emitEOF();\r\n break;\r\n case 0x000A: // LF\r\n // this could be a converted \\r, so don't use getMatchingChars\r\n attrvaluebuf += String.fromCharCode(c);\r\n break;\r\n default:\r\n attrvaluebuf += getMatchingChars(DBLQUOTEATTRVAL);\r\n break;\r\n }\r\n }\r\n\r\n function attribute_value_single_quoted_state(c) {\r\n switch(c) {\r\n case 0x0027: // APOSTROPHE\r\n addAttribute(attrnamebuf, attrvaluebuf);\r\n tokenizer = after_attribute_value_quoted_state;\r\n break;\r\n case 0x0026: // AMPERSAND\r\n return_state = attribute_value_single_quoted_state;\r\n tokenizer = character_reference_state;\r\n break;\r\n case 0x0000: // NULL\r\n attrvaluebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */);\r\n break;\r\n case -1: // EOF\r\n emitEOF();\r\n break;\r\n case 0x000A: // LF\r\n // this could be a converted \\r, so don't use getMatchingChars\r\n attrvaluebuf += String.fromCharCode(c);\r\n break;\r\n default:\r\n attrvaluebuf += getMatchingChars(SINGLEQUOTEATTRVAL);\r\n break;\r\n }\r\n }\r\n\r\n function attribute_value_unquoted_state(c) {\r\n switch(c) {\r\n case 0x0009: // CHARACTER TABULATION (tab)\r\n case 0x000A: // LINE FEED (LF)\r\n case 0x000C: // FORM FEED (FF)\r\n case 0x0020: // SPACE\r\n addAttribute(attrnamebuf, attrvaluebuf);\r\n tokenizer = before_attribute_name_state;\r\n break;\r\n case 0x0026: // AMPERSAND\r\n return_state = attribute_value_unquoted_state;\r\n tokenizer = character_reference_state;\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n addAttribute(attrnamebuf, attrvaluebuf);\r\n tokenizer = data_state;\r\n emitTag();\r\n break;\r\n case 0x0000: // NULL\r\n attrvaluebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */);\r\n break;\r\n case -1: // EOF\r\n nextchar--; // pushback\r\n tokenizer = data_state;\r\n break;\r\n case 0x0022: // QUOTATION MARK\r\n case 0x0027: // APOSTROPHE\r\n case 0x003C: // LESS-THAN SIGN\r\n case 0x003D: // EQUALS SIGN\r\n case 0x0060: // GRAVE ACCENT\r\n /* falls through */\r\n default:\r\n attrvaluebuf += getMatchingChars(UNQUOTEDATTRVAL);\r\n break;\r\n }\r\n }\r\n\r\n function after_attribute_value_quoted_state(c) {\r\n switch(c) {\r\n case 0x0009: // CHARACTER TABULATION (tab)\r\n case 0x000A: // LINE FEED (LF)\r\n case 0x000C: // FORM FEED (FF)\r\n case 0x0020: // SPACE\r\n tokenizer = before_attribute_name_state;\r\n break;\r\n case 0x002F: // SOLIDUS\r\n tokenizer = self_closing_start_tag_state;\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n tokenizer = data_state;\r\n emitTag();\r\n break;\r\n case -1: // EOF\r\n emitEOF();\r\n break;\r\n default:\r\n reconsume(c, before_attribute_name_state);\r\n break;\r\n }\r\n }\r\n\r\n function self_closing_start_tag_state(c) {\r\n switch(c) {\r\n case 0x003E: // GREATER-THAN SIGN\r\n // Set the <i>self-closing flag</i> of the current tag token.\r\n tokenizer = data_state;\r\n emitSelfClosingTag(true);\r\n break;\r\n case -1: // EOF\r\n emitEOF();\r\n break;\r\n default:\r\n reconsume(c, before_attribute_name_state);\r\n break;\r\n }\r\n }\r\n\r\n function bogus_comment_state(c, lookahead, eof) {\r\n var len = lookahead.length;\r\n\r\n if (eof) {\r\n nextchar += len-1; // don't consume the eof\r\n }\r\n else {\r\n nextchar += len;\r\n }\r\n\r\n var comment = lookahead.substring(0, len-1);\r\n\r\n comment = comment.replace(/\\u0000/g,\"\\uFFFD\");\r\n comment = comment.replace(/\\u000D\\u000A/g,\"\\u000A\");\r\n comment = comment.replace(/\\u000D/g,\"\\u000A\");\r\n\r\n insertToken(COMMENT, comment);\r\n tokenizer = data_state;\r\n }\r\n bogus_comment_state.lookahead = \">\";\r\n\r\n function markup_declaration_open_state(c, lookahead, eof) {\r\n if (lookahead[0] === \"-\" && lookahead[1] === \"-\") {\r\n nextchar += 2;\r\n beginComment();\r\n tokenizer = comment_start_state;\r\n return;\r\n }\r\n\r\n if (lookahead.toUpperCase() === \"DOCTYPE\") {\r\n nextchar += 7;\r\n tokenizer = doctype_state;\r\n }\r\n else if (lookahead === \"[CDATA[\" && cdataAllowed()) {\r\n nextchar += 7;\r\n tokenizer = cdata_section_state;\r\n }\r\n else {\r\n tokenizer = bogus_comment_state;\r\n }\r\n }\r\n markup_declaration_open_state.lookahead = 7;\r\n\r\n function comment_start_state(c) {\r\n beginComment();\r\n switch(c) {\r\n case 0x002D: // HYPHEN-MINUS\r\n tokenizer = comment_start_dash_state;\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n tokenizer = data_state;\r\n insertToken(COMMENT, buf2str(commentbuf));\r\n break; /* see comment in comment end state */\r\n default:\r\n reconsume(c, comment_state);\r\n break;\r\n }\r\n }\r\n\r\n function comment_start_dash_state(c) {\r\n switch(c) {\r\n case 0x002D: // HYPHEN-MINUS\r\n tokenizer = comment_end_state;\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n tokenizer = data_state;\r\n insertToken(COMMENT, buf2str(commentbuf));\r\n break;\r\n case -1: // EOF\r\n insertToken(COMMENT, buf2str(commentbuf));\r\n emitEOF();\r\n break; /* see comment in comment end state */\r\n default:\r\n commentbuf.push(0x002D /* HYPHEN-MINUS */);\r\n reconsume(c, comment_state);\r\n break;\r\n }\r\n }\r\n\r\n function comment_state(c) {\r\n switch(c) {\r\n case 0x003C: // LESS-THAN SIGN\r\n commentbuf.push(c);\r\n tokenizer = comment_less_than_sign_state;\r\n break;\r\n case 0x002D: // HYPHEN-MINUS\r\n tokenizer = comment_end_dash_state;\r\n break;\r\n case 0x0000: // NULL\r\n commentbuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\r\n break;\r\n case -1: // EOF\r\n insertToken(COMMENT, buf2str(commentbuf));\r\n emitEOF();\r\n break; /* see comment in comment end state */\r\n default:\r\n commentbuf.push(c);\r\n break;\r\n }\r\n }\r\n\r\n function comment_less_than_sign_state(c) {\r\n switch(c) {\r\n case 0x0021: // EXCLAMATION MARK\r\n commentbuf.push(c);\r\n tokenizer = comment_less_than_sign_bang_state;\r\n break;\r\n case 0x003C: // LESS-THAN SIGN\r\n commentbuf.push(c);\r\n break;\r\n default:\r\n reconsume(c, comment_state);\r\n break;\r\n }\r\n }\r\n\r\n function comment_less_than_sign_bang_state(c) {\r\n switch(c) {\r\n case 0x002D: // HYPHEN-MINUS\r\n tokenizer = comment_less_than_sign_bang_dash_state;\r\n break;\r\n default:\r\n reconsume(c, comment_state);\r\n break;\r\n }\r\n }\r\n\r\n function comment_less_than_sign_bang_dash_state(c) {\r\n switch(c) {\r\n case 0x002D: // HYPHEN-MINUS\r\n tokenizer = comment_less_than_sign_bang_dash_dash_state;\r\n break;\r\n default:\r\n reconsume(c, comment_end_dash_state);\r\n break;\r\n }\r\n }\r\n\r\n function comment_less_than_sign_bang_dash_dash_state(c) {\r\n switch(c) {\r\n case 0x003E: // GREATER-THAN SIGN\r\n case -1: // EOF\r\n reconsume(c, comment_end_state);\r\n break;\r\n default:\r\n // parse error\r\n reconsume(c, comment_end_state);\r\n break;\r\n }\r\n }\r\n\r\n function comment_end_dash_state(c) {\r\n switch(c) {\r\n case 0x002D: // HYPHEN-MINUS\r\n tokenizer = comment_end_state;\r\n break;\r\n case -1: // EOF\r\n insertToken(COMMENT, buf2str(commentbuf));\r\n emitEOF();\r\n break; /* see comment in comment end state */\r\n default:\r\n commentbuf.push(0x002D /* HYPHEN-MINUS */);\r\n reconsume(c, comment_state);\r\n break;\r\n }\r\n }\r\n\r\n function comment_end_state(c) {\r\n switch(c) {\r\n case 0x003E: // GREATER-THAN SIGN\r\n tokenizer = data_state;\r\n insertToken(COMMENT, buf2str(commentbuf));\r\n break;\r\n case 0x0021: // EXCLAMATION MARK\r\n tokenizer = comment_end_bang_state;\r\n break;\r\n case 0x002D: // HYPHEN-MINUS\r\n commentbuf.push(0x002D);\r\n break;\r\n case -1: // EOF\r\n insertToken(COMMENT, buf2str(commentbuf));\r\n emitEOF();\r\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 */\r\n default:\r\n commentbuf.push(0x002D);\r\n commentbuf.push(0x002D);\r\n reconsume(c, comment_state);\r\n break;\r\n }\r\n }\r\n\r\n function comment_end_bang_state(c) {\r\n switch(c) {\r\n case 0x002D: // HYPHEN-MINUS\r\n commentbuf.push(0x002D);\r\n commentbuf.push(0x002D);\r\n commentbuf.push(0x0021);\r\n tokenizer = comment_end_dash_state;\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n tokenizer = data_state;\r\n insertToken(COMMENT, buf2str(commentbuf));\r\n break;\r\n case -1: // EOF\r\n insertToken(COMMENT, buf2str(commentbuf));\r\n emitEOF();\r\n break; /* see comment in comment end state */\r\n default:\r\n commentbuf.push(0x002D);\r\n commentbuf.push(0x002D);\r\n commentbuf.push(0x0021);\r\n reconsume(c, comment_state);\r\n break;\r\n }\r\n }\r\n\r\n function doctype_state(c) {\r\n switch(c) {\r\n case 0x0009: // CHARACTER TABULATION (tab)\r\n case 0x000A: // LINE FEED (LF)\r\n case 0x000C: // FORM FEED (FF)\r\n case 0x0020: // SPACE\r\n tokenizer = before_doctype_name_state;\r\n break;\r\n case -1: // EOF\r\n beginDoctype();\r\n forcequirks();\r\n emitDoctype();\r\n emitEOF();\r\n break;\r\n default:\r\n reconsume(c, before_doctype_name_state);\r\n break;\r\n }\r\n }\r\n\r\n function before_doctype_name_state(c) {\r\n switch(c) {\r\n case 0x0009: // CHARACTER TABULATION (tab)\r\n case 0x000A: // LINE FEED (LF)\r\n case 0x000C: // FORM FEED (FF)\r\n case 0x0020: // SPACE\r\n /* Ignore the character. */\r\n break;\r\n case 0x0041: // [A-Z]\r\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n beginDoctype();\r\n doctypenamebuf.push(c + 0x0020);\r\n tokenizer = doctype_name_state;\r\n break;\r\n case 0x0000: // NULL\r\n beginDoctype();\r\n doctypenamebuf.push(0xFFFD);\r\n tokenizer = doctype_name_state;\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n beginDoctype();\r\n forcequirks();\r\n tokenizer = data_state;\r\n emitDoctype();\r\n break;\r\n case -1: // EOF\r\n beginDoctype();\r\n forcequirks();\r\n emitDoctype();\r\n emitEOF();\r\n break;\r\n default:\r\n beginDoctype();\r\n doctypenamebuf.push(c);\r\n tokenizer = doctype_name_state;\r\n break;\r\n }\r\n }\r\n\r\n function doctype_name_state(c) {\r\n switch(c) {\r\n case 0x0009: // CHARACTER TABULATION (tab)\r\n case 0x000A: // LINE FEED (LF)\r\n case 0x000C: // FORM FEED (FF)\r\n case 0x0020: // SPACE\r\n tokenizer = after_doctype_name_state;\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n tokenizer = data_state;\r\n emitDoctype();\r\n break;\r\n case 0x0041: // [A-Z]\r\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n doctypenamebuf.push(c + 0x0020);\r\n break;\r\n case 0x0000: // NULL\r\n doctypenamebuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\r\n break;\r\n case -1: // EOF\r\n forcequirks();\r\n emitDoctype();\r\n emitEOF();\r\n break;\r\n default:\r\n doctypenamebuf.push(c);\r\n break;\r\n }\r\n }\r\n\r\n function after_doctype_name_state(c, lookahead, eof) {\r\n switch(c) {\r\n case 0x0009: // CHARACTER TABULATION (tab)\r\n case 0x000A: // LINE FEED (LF)\r\n case 0x000C: // FORM FEED (FF)\r\n case 0x0020: // SPACE\r\n /* Ignore the character. */\r\n nextchar += 1;\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n tokenizer = data_state;\r\n nextchar += 1;\r\n emitDoctype();\r\n break;\r\n case -1: // EOF\r\n forcequirks();\r\n emitDoctype();\r\n emitEOF();\r\n break;\r\n default:\r\n lookahead = lookahead.toUpperCase();\r\n if (lookahead === \"PUBLIC\") {\r\n nextchar += 6;\r\n tokenizer = after_doctype_public_keyword_state;\r\n }\r\n else if (lookahead === \"SYSTEM\") {\r\n nextchar += 6;\r\n tokenizer = after_doctype_system_keyword_state;\r\n }\r\n else {\r\n forcequirks();\r\n tokenizer = bogus_doctype_state;\r\n }\r\n break;\r\n }\r\n }\r\n after_doctype_name_state.lookahead = 6;\r\n\r\n function after_doctype_public_keyword_state(c) {\r\n switch(c) {\r\n case 0x0009: // CHARACTER TABULATION (tab)\r\n case 0x000A: // LINE FEED (LF)\r\n case 0x000C: // FORM FEED (FF)\r\n case 0x0020: // SPACE\r\n tokenizer = before_doctype_public_identifier_state;\r\n break;\r\n case 0x0022: // QUOTATION MARK\r\n beginDoctypePublicId();\r\n tokenizer = doctype_public_identifier_double_quoted_state;\r\n break;\r\n case 0x0027: // APOSTROPHE\r\n beginDoctypePublicId();\r\n tokenizer = doctype_public_identifier_single_quoted_state;\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n forcequirks();\r\n tokenizer = data_state;\r\n emitDoctype();\r\n break;\r\n case -1: // EOF\r\n forcequirks();\r\n emitDoctype();\r\n emitEOF();\r\n break;\r\n default:\r\n forcequirks();\r\n tokenizer = bogus_doctype_state;\r\n break;\r\n }\r\n }\r\n\r\n function before_doctype_public_identifier_state(c) {\r\n switch(c) {\r\n case 0x0009: // CHARACTER TABULATION (tab)\r\n case 0x000A: // LINE FEED (LF)\r\n case 0x000C: // FORM FEED (FF)\r\n case 0x0020: // SPACE\r\n /* Ignore the character. */\r\n break;\r\n case 0x0022: // QUOTATION MARK\r\n beginDoctypePublicId();\r\n tokenizer = doctype_public_identifier_double_quoted_state;\r\n break;\r\n case 0x0027: // APOSTROPHE\r\n beginDoctypePublicId();\r\n tokenizer = doctype_public_identifier_single_quoted_state;\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n forcequirks();\r\n tokenizer = data_state;\r\n emitDoctype();\r\n break;\r\n case -1: // EOF\r\n forcequirks();\r\n emitDoctype();\r\n emitEOF();\r\n break;\r\n default:\r\n forcequirks();\r\n tokenizer = bogus_doctype_state;\r\n break;\r\n }\r\n }\r\n\r\n function doctype_public_identifier_double_quoted_state(c) {\r\n switch(c) {\r\n case 0x0022: // QUOTATION MARK\r\n tokenizer = after_doctype_public_identifier_state;\r\n break;\r\n case 0x0000: // NULL\r\n doctypepublicbuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n forcequirks();\r\n tokenizer = data_state;\r\n emitDoctype();\r\n break;\r\n case -1: // EOF\r\n forcequirks();\r\n emitDoctype();\r\n emitEOF();\r\n break;\r\n default:\r\n doctypepublicbuf.push(c);\r\n break;\r\n }\r\n }\r\n\r\n function doctype_public_identifier_single_quoted_state(c) {\r\n switch(c) {\r\n case 0x0027: // APOSTROPHE\r\n tokenizer = after_doctype_public_identifier_state;\r\n break;\r\n case 0x0000: // NULL\r\n doctypepublicbuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n forcequirks();\r\n tokenizer = data_state;\r\n emitDoctype();\r\n break;\r\n case -1: // EOF\r\n forcequirks();\r\n emitDoctype();\r\n emitEOF();\r\n break;\r\n default:\r\n doctypepublicbuf.push(c);\r\n break;\r\n }\r\n }\r\n\r\n function after_doctype_public_identifier_state(c) {\r\n switch(c) {\r\n case 0x0009: // CHARACTER TABULATION (tab)\r\n case 0x000A: // LINE FEED (LF)\r\n case 0x000C: // FORM FEED (FF)\r\n case 0x0020: // SPACE\r\n tokenizer = between_doctype_public_and_system_identifiers_state;\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n tokenizer = data_state;\r\n emitDoctype();\r\n break;\r\n case 0x0022: // QUOTATION MARK\r\n beginDoctypeSystemId();\r\n tokenizer = doctype_system_identifier_double_quoted_state;\r\n break;\r\n case 0x0027: // APOSTROPHE\r\n beginDoctypeSystemId();\r\n tokenizer = doctype_system_identifier_single_quoted_state;\r\n break;\r\n case -1: // EOF\r\n forcequirks();\r\n emitDoctype();\r\n emitEOF();\r\n break;\r\n default:\r\n forcequirks();\r\n tokenizer = bogus_doctype_state;\r\n break;\r\n }\r\n }\r\n\r\n function between_doctype_public_and_system_identifiers_state(c) {\r\n switch(c) {\r\n case 0x0009: // CHARACTER TABULATION (tab)\r\n case 0x000A: // LINE FEED (LF)\r\n case 0x000C: // FORM FEED (FF)\r\n case 0x0020: // SPACE Ignore the character.\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n tokenizer = data_state;\r\n emitDoctype();\r\n break;\r\n case 0x0022: // QUOTATION MARK\r\n beginDoctypeSystemId();\r\n tokenizer = doctype_system_identifier_double_quoted_state;\r\n break;\r\n case 0x0027: // APOSTROPHE\r\n beginDoctypeSystemId();\r\n tokenizer = doctype_system_identifier_single_quoted_state;\r\n break;\r\n case -1: // EOF\r\n forcequirks();\r\n emitDoctype();\r\n emitEOF();\r\n break;\r\n default:\r\n forcequirks();\r\n tokenizer = bogus_doctype_state;\r\n break;\r\n }\r\n }\r\n\r\n function after_doctype_system_keyword_state(c) {\r\n switch(c) {\r\n case 0x0009: // CHARACTER TABULATION (tab)\r\n case 0x000A: // LINE FEED (LF)\r\n case 0x000C: // FORM FEED (FF)\r\n case 0x0020: // SPACE\r\n tokenizer = before_doctype_system_identifier_state;\r\n break;\r\n case 0x0022: // QUOTATION MARK\r\n beginDoctypeSystemId();\r\n tokenizer = doctype_system_identifier_double_quoted_state;\r\n break;\r\n case 0x0027: // APOSTROPHE\r\n beginDoctypeSystemId();\r\n tokenizer = doctype_system_identifier_single_quoted_state;\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n forcequirks();\r\n tokenizer = data_state;\r\n emitDoctype();\r\n break;\r\n case -1: // EOF\r\n forcequirks();\r\n emitDoctype();\r\n emitEOF();\r\n break;\r\n default:\r\n forcequirks();\r\n tokenizer = bogus_doctype_state;\r\n break;\r\n }\r\n }\r\n\r\n function before_doctype_system_identifier_state(c) {\r\n switch(c) {\r\n case 0x0009: // CHARACTER TABULATION (tab)\r\n case 0x000A: // LINE FEED (LF)\r\n case 0x000C: // FORM FEED (FF)\r\n case 0x0020: // SPACE Ignore the character.\r\n break;\r\n case 0x0022: // QUOTATION MARK\r\n beginDoctypeSystemId();\r\n tokenizer = doctype_system_identifier_double_quoted_state;\r\n break;\r\n case 0x0027: // APOSTROPHE\r\n beginDoctypeSystemId();\r\n tokenizer = doctype_system_identifier_single_quoted_state;\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n forcequirks();\r\n tokenizer = data_state;\r\n emitDoctype();\r\n break;\r\n case -1: // EOF\r\n forcequirks();\r\n emitDoctype();\r\n emitEOF();\r\n break;\r\n default:\r\n forcequirks();\r\n tokenizer = bogus_doctype_state;\r\n break;\r\n }\r\n }\r\n\r\n function doctype_system_identifier_double_quoted_state(c) {\r\n switch(c) {\r\n case 0x0022: // QUOTATION MARK\r\n tokenizer = after_doctype_system_identifier_state;\r\n break;\r\n case 0x0000: // NULL\r\n doctypesystembuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n forcequirks();\r\n tokenizer = data_state;\r\n emitDoctype();\r\n break;\r\n case -1: // EOF\r\n forcequirks();\r\n emitDoctype();\r\n emitEOF();\r\n break;\r\n default:\r\n doctypesystembuf.push(c);\r\n break;\r\n }\r\n }\r\n\r\n function doctype_system_identifier_single_quoted_state(c) {\r\n switch(c) {\r\n case 0x0027: // APOSTROPHE\r\n tokenizer = after_doctype_system_identifier_state;\r\n break;\r\n case 0x0000: // NULL\r\n doctypesystembuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n forcequirks();\r\n tokenizer = data_state;\r\n emitDoctype();\r\n break;\r\n case -1: // EOF\r\n forcequirks();\r\n emitDoctype();\r\n emitEOF();\r\n break;\r\n default:\r\n doctypesystembuf.push(c);\r\n break;\r\n }\r\n }\r\n\r\n function after_doctype_system_identifier_state(c) {\r\n switch(c) {\r\n case 0x0009: // CHARACTER TABULATION (tab)\r\n case 0x000A: // LINE FEED (LF)\r\n case 0x000C: // FORM FEED (FF)\r\n case 0x0020: // SPACE\r\n /* Ignore the character. */\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n tokenizer = data_state;\r\n emitDoctype();\r\n break;\r\n case -1: // EOF\r\n forcequirks();\r\n emitDoctype();\r\n emitEOF();\r\n break;\r\n default:\r\n tokenizer = bogus_doctype_state;\r\n /* This does *not* set the DOCTYPE token's force-quirks flag. */\r\n break;\r\n }\r\n }\r\n\r\n function bogus_doctype_state(c) {\r\n switch(c) {\r\n case 0x003E: // GREATER-THAN SIGN\r\n tokenizer = data_state;\r\n emitDoctype();\r\n break;\r\n case -1: // EOF\r\n emitDoctype();\r\n emitEOF();\r\n break;\r\n default:\r\n /* Ignore the character. */\r\n break;\r\n }\r\n }\r\n\r\n function cdata_section_state(c) {\r\n switch(c) {\r\n case 0x005D: // RIGHT SQUARE BRACKET\r\n tokenizer = cdata_section_bracket_state;\r\n break;\r\n case -1: // EOF\r\n emitEOF();\r\n break;\r\n case 0x0000: // NULL\r\n textIncludesNUL = true;\r\n /* fall through */\r\n default:\r\n // Instead of just pushing a single character and then\r\n // coming back to the very same place, lookahead and\r\n // emit everything we can at once.\r\n /*jshint -W030 */\r\n emitCharsWhile(CDATATEXT) || textrun.push(c);\r\n break;\r\n }\r\n }\r\n\r\n function cdata_section_bracket_state(c) {\r\n switch(c) {\r\n case 0x005D: // RIGHT SQUARE BRACKET\r\n tokenizer = cdata_section_end_state;\r\n break;\r\n default:\r\n textrun.push(0x005D);\r\n reconsume(c, cdata_section_state);\r\n break;\r\n }\r\n }\r\n\r\n function cdata_section_end_state(c) {\r\n switch(c) {\r\n case 0x005D: // RIGHT SQUARE BRACKET\r\n textrun.push(0x005D);\r\n break;\r\n case 0x003E: // GREATER-THAN SIGN\r\n flushText();\r\n tokenizer = data_state;\r\n break;\r\n default:\r\n textrun.push(0x005D);\r\n textrun.push(0x005D);\r\n reconsume(c, cdata_section_state);\r\n break;\r\n }\r\n }\r\n\r\n function character_reference_state(c) {\r\n beginTempBuf();\r\n tempbuf.push(0x0026);\r\n switch(c) {\r\n case 0x0009: // TAB\r\n case 0x000A: // LINE FEED\r\n case 0x000C: // FORM FEED\r\n case 0x0020: // SPACE\r\n case 0x003C: // LESS-THAN SIGN\r\n case 0x0026: // AMPERSAND\r\n case -1: // EOF\r\n reconsume(c, character_reference_end_state);\r\n break;\r\n case 0x0023: // NUMBER SIGN\r\n tempbuf.push(c);\r\n tokenizer = numeric_character_reference_state;\r\n break;\r\n default:\r\n reconsume(c, named_character_reference_state);\r\n break;\r\n }\r\n }\r\n\r\n function named_character_reference_state(c) {\r\n NAMEDCHARREF.lastIndex = nextchar; // w/ lookahead no char has been consumed\r\n var matched = NAMEDCHARREF.exec(chars);\r\n if (!matched) throw new Error(\"should never happen\");\r\n var name = matched[1];\r\n if (!name) {\r\n // If no match can be made, switch to the character reference end state\r\n tokenizer = character_reference_end_state;\r\n return;\r\n }\r\n\r\n // Consume the matched characters and append them to temporary buffer\r\n nextchar += name.length;\r\n pushAll(tempbuf, str2buf(name));\r\n\r\n switch(return_state) {\r\n case attribute_value_double_quoted_state:\r\n case attribute_value_single_quoted_state:\r\n case attribute_value_unquoted_state:\r\n // If the character reference was consumed as part of an attribute...\r\n if (name[name.length-1] !== ';') { // ...and the last char is not ;\r\n if (/[=A-Za-z0-9]/.test(chars[nextchar])) {\r\n tokenizer = character_reference_end_state;\r\n return;\r\n }\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n beginTempBuf();\r\n var rv = namedCharRefs[name];\r\n if (typeof rv === 'number') {\r\n tempbuf.push(rv);\r\n } else {\r\n pushAll(tempbuf, rv);\r\n }\r\n tokenizer = character_reference_end_state;\r\n }\r\n // We might need to pause tokenization until we have enough characters\r\n // in the buffer for longest possible character reference.\r\n named_character_reference_state.lookahead = -NAMEDCHARREF_MAXLEN;\r\n\r\n function numeric_character_reference_state(c) {\r\n character_reference_code = 0;\r\n switch(c) {\r\n case 0x0078: // x\r\n case 0x0058: // X\r\n tempbuf.push(c);\r\n tokenizer = hexadecimal_character_reference_start_state;\r\n break;\r\n default:\r\n reconsume(c, decimal_character_reference_start_state);\r\n break;\r\n }\r\n }\r\n\r\n function hexadecimal_character_reference_start_state(c) {\r\n switch(c) {\r\n case 0x0030: case 0x0031: case 0x0032: case 0x0033: case 0x0034:\r\n case 0x0035: case 0x0036: case 0x0037: case 0x0038: case 0x0039: // [0-9]\r\n case 0x0041: case 0x0042: case 0x0043: case 0x0044: case 0x0045:\r\n case 0x0046: // [A-F]\r\n case 0x0061: case 0x0062: case 0x0063: case 0x0064: case 0x0065:\r\n case 0x0066: // [a-f]\r\n reconsume(c, hexadecimal_character_reference_state);\r\n break;\r\n default:\r\n reconsume(c, character_reference_end_state);\r\n break;\r\n }\r\n }\r\n\r\n function decimal_character_reference_start_state(c) {\r\n switch(c) {\r\n case 0x0030: case 0x0031: case 0x0032: case 0x0033: case 0x0034:\r\n case 0x0035: case 0x0036: case 0x0037: case 0x0038: case 0x0039: // [0-9]\r\n reconsume(c, decimal_character_reference_state);\r\n break;\r\n default:\r\n reconsume(c, character_reference_end_state);\r\n break;\r\n }\r\n }\r\n\r\n function hexadecimal_character_reference_state(c) {\r\n switch(c) {\r\n case 0x0041: case 0x0042: case 0x0043: case 0x0044: case 0x0045:\r\n case 0x0046: // [A-F]\r\n character_reference_code *= 16;\r\n character_reference_code += (c - 0x0037);\r\n break;\r\n case 0x0061: case 0x0062: case 0x0063: case 0x0064: case 0x0065:\r\n case 0x0066: // [a-f]\r\n character_reference_code *= 16;\r\n character_reference_code += (c - 0x0057);\r\n break;\r\n case 0x0030: case 0x0031: case 0x0032: case 0x0033: case 0x0034:\r\n case 0x0035: case 0x0036: case 0x0037: case 0x0038: case 0x0039: // [0-9]\r\n character_reference_code *= 16;\r\n character_reference_code += (c - 0x0030);\r\n break;\r\n case 0x003B: // SEMICOLON\r\n tokenizer = numeric_character_reference_end_state;\r\n break;\r\n default:\r\n reconsume(c, numeric_character_reference_end_state);\r\n break;\r\n }\r\n }\r\n\r\n function decimal_character_reference_state(c) {\r\n switch(c) {\r\n case 0x0030: case 0x0031: case 0x0032: case 0x0033: case 0x0034:\r\n case 0x0035: case 0x0036: case 0x0037: case 0x0038: case 0x0039: // [0-9]\r\n character_reference_code *= 10;\r\n character_reference_code += (c - 0x0030);\r\n break;\r\n case 0x003B: // SEMICOLON\r\n tokenizer = numeric_character_reference_end_state;\r\n break;\r\n default:\r\n reconsume(c, numeric_character_reference_end_state);\r\n break;\r\n }\r\n }\r\n\r\n function numeric_character_reference_end_state(c) {\r\n if (character_reference_code in numericCharRefReplacements) {\r\n character_reference_code = numericCharRefReplacements[character_reference_code];\r\n } else if (character_reference_code > 0x10FFFF || (character_reference_code >= 0xD800 && character_reference_code < 0xE000)) {\r\n character_reference_code = 0xFFFD;\r\n }\r\n\r\n beginTempBuf();\r\n if (character_reference_code <= 0xFFFF) {\r\n tempbuf.push(character_reference_code);\r\n } else {\r\n character_reference_code = character_reference_code - 0x10000;\r\n /* jshint bitwise: false */\r\n tempbuf.push(0xD800 + (character_reference_code >> 10));\r\n tempbuf.push(0xDC00 + (character_reference_code & 0x03FF));\r\n }\r\n reconsume(c, character_reference_end_state);\r\n }\r\n\r\n function character_reference_end_state(c) {\r\n switch(return_state) {\r\n case attribute_value_double_quoted_state:\r\n case attribute_value_single_quoted_state:\r\n case attribute_value_unquoted_state:\r\n // append each character to the current attribute's value\r\n attrvaluebuf += buf2str(tempbuf);\r\n break;\r\n default:\r\n pushAll(textrun, tempbuf);\r\n break;\r\n }\r\n reconsume(c, return_state);\r\n }\r\n\r\n /***\r\n * The tree builder insertion modes\r\n */\r\n\r\n // 11.2.5.4.1 The \"initial\" insertion mode\r\n function initial_mode(t, value, arg3, arg4) {\r\n switch(t) {\r\n case 1: // TEXT\r\n value = value.replace(LEADINGWS, \"\"); // Ignore spaces\r\n if (value.length === 0) return; // Are we done?\r\n break; // Handle anything non-space text below\r\n case 4: // COMMENT\r\n doc._appendChild(doc.createComment(value));\r\n return;\r\n case 5: // DOCTYPE\r\n var name = value;\r\n var publicid = arg3;\r\n var systemid = arg4;\r\n // Use the constructor directly instead of\r\n // implementation.createDocumentType because the create\r\n // function throws errors on invalid characters, and\r\n // we don't want the parser to throw them.\r\n doc.appendChild(new DocumentType(doc, name, publicid, systemid));\r\n\r\n // Note that there is no public API for setting quirks mode We can\r\n // do this here because we have access to implementation details\r\n if (force_quirks ||\r\n name.toLowerCase() !== \"html\" ||\r\n quirkyPublicIds.test(publicid) ||\r\n (systemid && systemid.toLowerCase() === quirkySystemId) ||\r\n (systemid === undefined &&\r\n conditionallyQuirkyPublicIds.test(publicid)))\r\n doc._quirks = true;\r\n else if (limitedQuirkyPublicIds.test(publicid) ||\r\n (systemid !== undefined &&\r\n conditionallyQuirkyPublicIds.test(publicid)))\r\n doc._limitedQuirks = true;\r\n parser = before_html_mode;\r\n return;\r\n }\r\n\r\n // tags or non-whitespace text\r\n doc._quirks = true;\r\n parser = before_html_mode;\r\n parser(t,value,arg3,arg4);\r\n }\r\n\r\n // 11.2.5.4.2 The \"before html\" insertion mode\r\n function before_html_mode(t,value,arg3,arg4) {\r\n var elt;\r\n switch(t) {\r\n case 1: // TEXT\r\n value = value.replace(LEADINGWS, \"\"); // Ignore spaces\r\n if (value.length === 0) return; // Are we done?\r\n break; // Handle anything non-space text below\r\n case 5: // DOCTYPE\r\n /* ignore the token */\r\n return;\r\n case 4: // COMMENT\r\n doc._appendChild(doc.createComment(value));\r\n return;\r\n case 2: // TAG\r\n if (value === \"html\") {\r\n elt = createHTMLElt(doc, value, arg3);\r\n stack.push(elt);\r\n doc.appendChild(elt);\r\n // XXX: handle application cache here\r\n parser = before_head_mode;\r\n return;\r\n }\r\n break;\r\n case 3: // ENDTAG\r\n switch(value) {\r\n case \"html\":\r\n case \"head\":\r\n case \"body\":\r\n case \"br\":\r\n break; // fall through on these\r\n default:\r\n return; // ignore most end tags\r\n }\r\n }\r\n\r\n // Anything that didn't get handled above is handled like this:\r\n elt = createHTMLElt(doc, \"html\", null);\r\n stack.push(elt);\r\n doc.appendChild(elt);\r\n // XXX: handle application cache here\r\n parser = before_head_mode;\r\n parser(t,value,arg3,arg4);\r\n }\r\n\r\n // 11.2.5.4.3 The \"before head\" insertion mode\r\n function before_head_mode(t,value,arg3,arg4) {\r\n switch(t) {\r\n case 1: // TEXT\r\n value = value.replace(LEADINGWS, \"\"); // Ignore spaces\r\n if (value.length === 0) return; // Are we done?\r\n break; // Handle anything non-space text below\r\n case 5: // DOCTYPE\r\n /* ignore the token */\r\n return;\r\n case 4: // COMMENT\r\n insertComment(value);\r\n return;\r\n case 2: // TAG\r\n switch(value) {\r\n case \"html\":\r\n in_body_mode(t,value,arg3,arg4);\r\n return;\r\n case \"head\":\r\n var elt = insertHTMLElement(value, arg3);\r\n head_element_pointer = elt;\r\n parser = in_head_mode;\r\n return;\r\n }\r\n break;\r\n case 3: // ENDTAG\r\n switch(value) {\r\n case \"html\":\r\n case \"head\":\r\n case \"body\":\r\n case \"br\":\r\n break;\r\n default:\r\n return; // ignore most end tags\r\n }\r\n }\r\n\r\n // If not handled explicitly above\r\n before_head_mode(TAG, \"head\", null); // create a head tag\r\n parser(t, value, arg3, arg4); // then try again with this token\r\n }\r\n\r\n function in_head_mode(t, value, arg3, arg4) {\r\n switch(t) {\r\n case 1: // TEXT\r\n var ws = value.match(LEADINGWS);\r\n if (ws) {\r\n insertText(ws[0]);\r\n value = value.substring(ws[0].length);\r\n }\r\n if (value.length === 0) return;\r\n break; // Handle non-whitespace below\r\n case 4: // COMMENT\r\n insertComment(value);\r\n return;\r\n case 5: // DOCTYPE\r\n return;\r\n case 2: // TAG\r\n switch(value) {\r\n case \"html\":\r\n in_body_mode(t, value, arg3, arg4);\r\n return;\r\n case \"meta\":\r\n // XXX:\r\n // May need to change the encoding based on this tag\r\n /* falls through */\r\n case \"base\":\r\n case \"basefont\":\r\n case \"bgsound\":\r\n case \"link\":\r\n insertHTMLElement(value, arg3);\r\n stack.pop();\r\n return;\r\n case \"title\":\r\n parseRCDATA(value, arg3);\r\n return;\r\n case \"noscript\":\r\n if (!scripting_enabled) {\r\n insertHTMLElement(value, arg3);\r\n parser = in_head_noscript_mode;\r\n return;\r\n }\r\n // Otherwise, if scripting is enabled...\r\n /* falls through */\r\n case \"noframes\":\r\n case \"style\":\r\n parseRawText(value,arg3);\r\n return;\r\n case \"script\":\r\n insertElement(function(doc) {\r\n var elt = createHTMLElt(doc, value, arg3);\r\n elt._parser_inserted = true;\r\n elt._force_async = false;\r\n if (fragment) elt._already_started = true;\r\n flushText();\r\n return elt;\r\n });\r\n tokenizer = script_data_state;\r\n originalInsertionMode = parser;\r\n parser = text_mode;\r\n return;\r\n case \"template\":\r\n insertHTMLElement(value, arg3);\r\n afe.insertMarker();\r\n frameset_ok = false;\r\n parser = in_template_mode;\r\n templateInsertionModes.push(parser);\r\n return;\r\n case \"head\":\r\n return; // ignore it\r\n }\r\n break;\r\n case 3: // ENDTAG\r\n switch(value) {\r\n case \"head\":\r\n stack.pop();\r\n parser = after_head_mode;\r\n return;\r\n case \"body\":\r\n case \"html\":\r\n case \"br\":\r\n break; // handle these at the bottom of the function\r\n case \"template\":\r\n if (!stack.contains(\"template\")) {\r\n return;\r\n }\r\n stack.generateImpliedEndTags(null, \"thorough\");\r\n stack.popTag(\"template\");\r\n afe.clearToMarker();\r\n templateInsertionModes.pop();\r\n resetInsertionMode();\r\n return;\r\n default:\r\n // ignore any other end tag\r\n return;\r\n }\r\n break;\r\n }\r\n\r\n // If not handled above\r\n in_head_mode(ENDTAG, \"head\", null); // synthetic </head>\r\n parser(t, value, arg3, arg4); // Then redo this one\r\n }\r\n\r\n // 13.2.5.4.5 The \"in head noscript\" insertion mode\r\n function in_head_noscript_mode(t, value, arg3, arg4) {\r\n switch(t) {\r\n case 5: // DOCTYPE\r\n return;\r\n case 4: // COMMENT\r\n in_head_mode(t, value);\r\n return;\r\n case 1: // TEXT\r\n var ws = value.match(LEADINGWS);\r\n if (ws) {\r\n in_head_mode(t, ws[0]);\r\n value = value.substring(ws[0].length);\r\n }\r\n if (value.length === 0) return; // no more text\r\n break; // Handle non-whitespace below\r\n case 2: // TAG\r\n switch(value) {\r\n case \"html\":\r\n in_body_mode(t, value, arg3, arg4);\r\n return;\r\n case \"basefont\":\r\n case \"bgsound\":\r\n case \"link\":\r\n case \"meta\":\r\n case \"noframes\":\r\n case \"style\":\r\n in_head_mode(t, value, arg3);\r\n return;\r\n case \"head\":\r\n case \"noscript\":\r\n return;\r\n }\r\n break;\r\n case 3: // ENDTAG\r\n switch(value) {\r\n case \"noscript\":\r\n stack.pop();\r\n parser = in_head_mode;\r\n return;\r\n case \"br\":\r\n break; // goes to the outer default\r\n default:\r\n return; // ignore other end tags\r\n }\r\n break;\r\n }\r\n\r\n // If not handled above\r\n in_head_noscript_mode(ENDTAG, \"noscript\", null);\r\n parser(t, value, arg3, arg4);\r\n }\r\n\r\n function after_head_mode(t, value, arg3, arg4) {\r\n switch(t) {\r\n case 1: // TEXT\r\n var ws = value.match(LEADINGWS);\r\n if (ws) {\r\n insertText(ws[0]);\r\n value = value.substring(ws[0].length);\r\n }\r\n if (value.length === 0) return;\r\n break; // Handle non-whitespace below\r\n case 4: // COMMENT\r\n insertComment(value);\r\n return;\r\n case 5: // DOCTYPE\r\n return;\r\n case 2: // TAG\r\n switch(value) {\r\n case \"html\":\r\n in_body_mode(t, value, arg3, arg4);\r\n return;\r\n case \"body\":\r\n insertHTMLElement(value, arg3);\r\n frameset_ok = false;\r\n parser = in_body_mode;\r\n return;\r\n case \"frameset\":\r\n insertHTMLElement(value, arg3);\r\n parser = in_frameset_mode;\r\n return;\r\n case \"base\":\r\n case \"basefont\":\r\n case \"bgsound\":\r\n case \"link\":\r\n case \"meta\":\r\n case \"noframes\":\r\n case \"script\":\r\n case \"style\":\r\n case \"template\":\r\n case \"title\":\r\n stack.push(head_element_pointer);\r\n in_head_mode(TAG, value, arg3);\r\n stack.removeElement(head_element_pointer);\r\n return;\r\n case \"head\":\r\n return;\r\n }\r\n break;\r\n case 3: // ENDTAG\r\n switch(value) {\r\n case \"template\":\r\n return in_head_mode(t, value, arg3, arg4);\r\n case \"body\":\r\n case \"html\":\r\n case \"br\":\r\n break;\r\n default:\r\n return; // ignore any other end tag\r\n }\r\n break;\r\n }\r\n\r\n after_head_mode(TAG, \"body\", null);\r\n frameset_ok = true;\r\n parser(t, value, arg3, arg4);\r\n }\r\n\r\n // 13.2.5.4.7 The \"in body\" insertion mode\r\n function in_body_mode(t,value,arg3,arg4) {\r\n var body, i, node, elt;\r\n switch(t) {\r\n case 1: // TEXT\r\n if (textIncludesNUL) {\r\n value = value.replace(NULCHARS, \"\");\r\n if (value.length === 0) return;\r\n }\r\n // If any non-space characters\r\n if (frameset_ok && NONWS.test(value))\r\n frameset_ok = false;\r\n afereconstruct();\r\n insertText(value);\r\n return;\r\n case 5: // DOCTYPE\r\n return;\r\n case 4: // COMMENT\r\n insertComment(value);\r\n return;\r\n case -1: // EOF\r\n if (templateInsertionModes.length) {\r\n return in_template_mode(t);\r\n }\r\n stopParsing();\r\n return;\r\n case 2: // TAG\r\n switch(value) {\r\n case \"html\":\r\n if (stack.contains(\"template\")) {\r\n return;\r\n }\r\n transferAttributes(arg3, stack.elements[0]);\r\n return;\r\n case \"base\":\r\n case \"basefont\":\r\n case \"bgsound\":\r\n case \"link\":\r\n case \"meta\":\r\n case \"noframes\":\r\n case \"script\":\r\n case \"style\":\r\n case \"template\":\r\n case \"title\":\r\n in_head_mode(TAG, value, arg3);\r\n return;\r\n case \"body\":\r\n body = stack.elements[1];\r\n if (!body || !(body instanceof impl.HTMLBodyElement) ||\r\n stack.contains(\"template\"))\r\n return;\r\n frameset_ok = false;\r\n transferAttributes(arg3, body);\r\n return;\r\n case \"frameset\":\r\n if (!frameset_ok) return;\r\n body = stack.elements[1];\r\n if (!body || !(body instanceof impl.HTMLBodyElement))\r\n return;\r\n if (body.parentNode) body.parentNode.removeChild(body);\r\n while(!(stack.top instanceof impl.HTMLHtmlElement))\r\n stack.pop();\r\n insertHTMLElement(value, arg3);\r\n parser = in_frameset_mode;\r\n return;\r\n\r\n case \"address\":\r\n case \"article\":\r\n case \"aside\":\r\n case \"blockquote\":\r\n case \"center\":\r\n case \"details\":\r\n case \"dialog\":\r\n case \"dir\":\r\n case \"div\":\r\n case \"dl\":\r\n case \"fieldset\":\r\n case \"figcaption\":\r\n case \"figure\":\r\n case \"footer\":\r\n case \"header\":\r\n case \"hgroup\":\r\n case \"main\":\r\n case \"nav\":\r\n case \"ol\":\r\n case \"p\":\r\n case \"section\":\r\n case \"summary\":\r\n case \"ul\":\r\n if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\r\n insertHTMLElement(value, arg3);\r\n return;\r\n\r\n case \"menu\":\r\n if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\r\n if (isA(stack.top, 'menuitem')) {\r\n stack.pop();\r\n }\r\n insertHTMLElement(value, arg3);\r\n return;\r\n\r\n case \"h1\":\r\n case \"h2\":\r\n case \"h3\":\r\n case \"h4\":\r\n case \"h5\":\r\n case \"h6\":\r\n if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\r\n if (stack.top instanceof impl.HTMLHeadingElement)\r\n stack.pop();\r\n insertHTMLElement(value, arg3);\r\n return;\r\n\r\n case \"pre\":\r\n case \"listing\":\r\n if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\r\n insertHTMLElement(value, arg3);\r\n ignore_linefeed = true;\r\n frameset_ok = false;\r\n return;\r\n\r\n case \"form\":\r\n if (form_element_pointer && !stack.contains(\"template\")) return;\r\n if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\r\n elt = insertHTMLElement(value, arg3);\r\n if (!stack.contains(\"template\"))\r\n form_element_pointer = elt;\r\n return;\r\n\r\n case \"li\":\r\n frameset_ok = false;\r\n for(i = stack.elements.length-1; i >= 0; i--) {\r\n node = stack.elements[i];\r\n if (node instanceof impl.HTMLLIElement) {\r\n in_body_mode(ENDTAG, \"li\");\r\n break;\r\n }\r\n if (isA(node, specialSet) && !isA(node, addressdivpSet))\r\n break;\r\n }\r\n if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\r\n insertHTMLElement(value, arg3);\r\n return;\r\n\r\n case \"dd\":\r\n case \"dt\":\r\n frameset_ok = false;\r\n for(i = stack.elements.length-1; i >= 0; i--) {\r\n node = stack.elements[i];\r\n if (isA(node, dddtSet)) {\r\n in_body_mode(ENDTAG, node.localName);\r\n break;\r\n }\r\n if (isA(node, specialSet) && !isA(node, addressdivpSet))\r\n break;\r\n }\r\n if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\r\n insertHTMLElement(value, arg3);\r\n return;\r\n\r\n case \"plaintext\":\r\n if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\r\n insertHTMLElement(value, arg3);\r\n tokenizer = plaintext_state;\r\n return;\r\n\r\n case \"button\":\r\n if (stack.inScope(\"button\")) {\r\n in_body_mode(ENDTAG, \"button\");\r\n parser(t, value, arg3, arg4);\r\n }\r\n else {\r\n afereconstruct();\r\n insertHTMLElement(value, arg3);\r\n frameset_ok = false;\r\n }\r\n return;\r\n\r\n case \"a\":\r\n var activeElement = afe.findElementByTag(\"a\");\r\n if (activeElement) {\r\n in_body_mode(ENDTAG, value);\r\n afe.remove(activeElement);\r\n stack.removeElement(activeElement);\r\n }\r\n /* falls through */\r\n case \"b\":\r\n case \"big\":\r\n case \"code\":\r\n case \"em\":\r\n case \"font\":\r\n case \"i\":\r\n case \"s\":\r\n case \"small\":\r\n case \"strike\":\r\n case \"strong\":\r\n case \"tt\":\r\n case \"u\":\r\n afereconstruct();\r\n afe.push(insertHTMLElement(value,arg3), arg3);\r\n return;\r\n\r\n case \"nobr\":\r\n afereconstruct();\r\n\r\n if (stack.inScope(value)) {\r\n in_body_mode(ENDTAG, value);\r\n afereconstruct();\r\n }\r\n afe.push(insertHTMLElement(value,arg3), arg3);\r\n return;\r\n\r\n case \"applet\":\r\n case \"marquee\":\r\n case \"object\":\r\n afereconstruct();\r\n insertHTMLElement(value,arg3);\r\n afe.insertMarker();\r\n frameset_ok = false;\r\n return;\r\n\r\n case \"table\":\r\n if (!doc._quirks && stack.inButtonScope(\"p\")) {\r\n in_body_mode(ENDTAG, \"p\");\r\n }\r\n insertHTMLElement(value,arg3);\r\n frameset_ok = false;\r\n parser = in_table_mode;\r\n return;\r\n\r\n case \"area\":\r\n case \"br\":\r\n case \"embed\":\r\n case \"img\":\r\n case \"keygen\":\r\n case \"wbr\":\r\n afereconstruct();\r\n insertHTMLElement(value,arg3);\r\n stack.pop();\r\n frameset_ok = false;\r\n return;\r\n\r\n case \"input\":\r\n afereconstruct();\r\n elt = insertHTMLElement(value,arg3);\r\n stack.pop();\r\n var type = elt.getAttribute(\"type\");\r\n if (!type || type.toLowerCase() !== \"hidden\")\r\n frameset_ok = false;\r\n return;\r\n\r\n case \"param\":\r\n case \"source\":\r\n case \"track\":\r\n insertHTMLElement(value,arg3);\r\n stack.pop();\r\n return;\r\n\r\n case \"hr\":\r\n if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\r\n if (isA(stack.top, 'menuitem')) {\r\n stack.pop();\r\n }\r\n insertHTMLElement(value,arg3);\r\n stack.pop();\r\n frameset_ok = false;\r\n return;\r\n\r\n case \"image\":\r\n in_body_mode(TAG, \"img\", arg3, arg4);\r\n return;\r\n\r\n case \"textarea\":\r\n insertHTMLElement(value,arg3);\r\n ignore_linefeed = true;\r\n frameset_ok = false;\r\n tokenizer = rcdata_state;\r\n originalInsertionMode = parser;\r\n parser = text_mode;\r\n return;\r\n\r\n case \"xmp\":\r\n if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\r\n afereconstruct();\r\n frameset_ok = false;\r\n parseRawText(value, arg3);\r\n return;\r\n\r\n case \"iframe\":\r\n frameset_ok = false;\r\n parseRawText(value, arg3);\r\n return;\r\n\r\n case \"noembed\":\r\n parseRawText(value,arg3);\r\n return;\r\n\r\n case \"select\":\r\n afereconstruct();\r\n insertHTMLElement(value,arg3);\r\n frameset_ok = false;\r\n if (parser === in_table_mode ||\r\n parser === in_caption_mode ||\r\n parser === in_table_body_mode ||\r\n parser === in_row_mode ||\r\n parser === in_cell_mode)\r\n parser = in_select_in_table_mode;\r\n else\r\n parser = in_select_mode;\r\n return;\r\n\r\n case \"optgroup\":\r\n case \"option\":\r\n if (stack.top instanceof impl.HTMLOptionElement) {\r\n in_body_mode(ENDTAG, \"option\");\r\n }\r\n afereconstruct();\r\n insertHTMLElement(value,arg3);\r\n return;\r\n\r\n case \"menuitem\":\r\n if (isA(stack.top, 'menuitem')) {\r\n stack.pop();\r\n }\r\n afereconstruct();\r\n insertHTMLElement(value, arg3);\r\n return;\r\n\r\n case \"rb\":\r\n case \"rtc\":\r\n if (stack.inScope(\"ruby\")) {\r\n stack.generateImpliedEndTags();\r\n }\r\n insertHTMLElement(value,arg3);\r\n return;\r\n\r\n case \"rp\":\r\n case \"rt\":\r\n if (stack.inScope(\"ruby\")) {\r\n stack.generateImpliedEndTags(\"rtc\");\r\n }\r\n insertHTMLElement(value,arg3);\r\n return;\r\n\r\n case \"math\":\r\n afereconstruct();\r\n adjustMathMLAttributes(arg3);\r\n adjustForeignAttributes(arg3);\r\n insertForeignElement(value, arg3, NAMESPACE.MATHML);\r\n if (arg4) // self-closing flag\r\n stack.pop();\r\n return;\r\n\r\n case \"svg\":\r\n afereconstruct();\r\n adjustSVGAttributes(arg3);\r\n adjustForeignAttributes(arg3);\r\n insertForeignElement(value, arg3, NAMESPACE.SVG);\r\n if (arg4) // self-closing flag\r\n stack.pop();\r\n return;\r\n\r\n case \"caption\":\r\n case \"col\":\r\n case \"colgroup\":\r\n case \"frame\":\r\n case \"head\":\r\n case \"tbody\":\r\n case \"td\":\r\n case \"tfoot\":\r\n case \"th\":\r\n case \"thead\":\r\n case \"tr\":\r\n // Ignore table tags if we're not in_table mode\r\n return;\r\n }\r\n\r\n // Handle any other start tag here\r\n // (and also noscript tags when scripting is disabled)\r\n afereconstruct();\r\n insertHTMLElement(value,arg3);\r\n return;\r\n\r\n case 3: // ENDTAG\r\n switch(value) {\r\n case \"template\":\r\n in_head_mode(ENDTAG, value, arg3);\r\n return;\r\n case \"body\":\r\n if (!stack.inScope(\"body\")) return;\r\n parser = after_body_mode;\r\n return;\r\n case \"html\":\r\n if (!stack.inScope(\"body\")) return;\r\n parser = after_body_mode;\r\n parser(t, value, arg3);\r\n return;\r\n\r\n case \"address\":\r\n case \"article\":\r\n case \"aside\":\r\n case \"blockquote\":\r\n case \"button\":\r\n case \"center\":\r\n case \"details\":\r\n case \"dialog\":\r\n case \"dir\":\r\n case \"div\":\r\n case \"dl\":\r\n case \"fieldset\":\r\n case \"figcaption\":\r\n case \"figure\":\r\n case \"footer\":\r\n case \"header\":\r\n case \"hgroup\":\r\n case \"listing\":\r\n case \"main\":\r\n case \"menu\":\r\n case \"nav\":\r\n case \"ol\":\r\n case \"pre\":\r\n case \"section\":\r\n case \"summary\":\r\n case \"ul\":\r\n // Ignore if there is not a matching open tag\r\n if (!stack.inScope(value)) return;\r\n stack.generateImpliedEndTags();\r\n stack.popTag(value);\r\n return;\r\n\r\n case \"form\":\r\n if (!stack.contains(\"template\")) {\r\n var openform = form_element_pointer;\r\n form_element_pointer = null;\r\n if (!openform || !stack.elementInScope(openform)) return;\r\n stack.generateImpliedEndTags();\r\n stack.removeElement(openform);\r\n } else {\r\n if (!stack.inScope(\"form\")) return;\r\n stack.generateImpliedEndTags();\r\n stack.popTag(\"form\");\r\n }\r\n return;\r\n\r\n case \"p\":\r\n if (!stack.inButtonScope(value)) {\r\n in_body_mode(TAG, value, null);\r\n parser(t, value, arg3, arg4);\r\n }\r\n else {\r\n stack.generateImpliedEndTags(value);\r\n stack.popTag(value);\r\n }\r\n return;\r\n\r\n case \"li\":\r\n if (!stack.inListItemScope(value)) return;\r\n stack.generateImpliedEndTags(value);\r\n stack.popTag(value);\r\n return;\r\n\r\n case \"dd\":\r\n case \"dt\":\r\n if (!stack.inScope(value)) return;\r\n stack.generateImpliedEndTags(value);\r\n stack.popTag(value);\r\n return;\r\n\r\n case \"h1\":\r\n case \"h2\":\r\n case \"h3\":\r\n case \"h4\":\r\n case \"h5\":\r\n case \"h6\":\r\n if (!stack.elementTypeInScope(impl.HTMLHeadingElement)) return;\r\n stack.generateImpliedEndTags();\r\n stack.popElementType(impl.HTMLHeadingElement);\r\n return;\r\n\r\n case \"sarcasm\":\r\n // Take a deep breath, and then:\r\n break;\r\n\r\n case \"a\":\r\n case \"b\":\r\n case \"big\":\r\n case \"code\":\r\n case \"em\":\r\n case \"font\":\r\n case \"i\":\r\n case \"nobr\":\r\n case \"s\":\r\n case \"small\":\r\n case \"strike\":\r\n case \"strong\":\r\n case \"tt\":\r\n case \"u\":\r\n var result = adoptionAgency(value);\r\n if (result) return; // If we did something we're done\r\n break; // Go to the \"any other end tag\" case\r\n\r\n case \"applet\":\r\n case \"marquee\":\r\n case \"object\":\r\n if (!stack.inScope(value)) return;\r\n stack.generateImpliedEndTags();\r\n stack.popTag(value);\r\n afe.clearToMarker();\r\n return;\r\n\r\n case \"br\":\r\n in_body_mode(TAG, value, null); // Turn </br> into <br>\r\n return;\r\n }\r\n\r\n // Any other end tag goes here\r\n for(i = stack.elements.length-1; i >= 0; i--) {\r\n node = stack.elements[i];\r\n if (isA(node, value)) {\r\n stack.generateImpliedEndTags(value);\r\n stack.popElement(node);\r\n break;\r\n }\r\n else if (isA(node, specialSet)) {\r\n return;\r\n }\r\n }\r\n\r\n return;\r\n }\r\n }\r\n\r\n function text_mode(t, value, arg3, arg4) {\r\n switch(t) {\r\n case 1: // TEXT\r\n insertText(value);\r\n return;\r\n case -1: // EOF\r\n if (stack.top instanceof impl.HTMLScriptElement)\r\n stack.top._already_started = true;\r\n stack.pop();\r\n parser = originalInsertionMode;\r\n parser(t);\r\n return;\r\n case 3: // ENDTAG\r\n if (value === \"script\") {\r\n handleScriptEnd();\r\n }\r\n else {\r\n stack.pop();\r\n parser = originalInsertionMode;\r\n }\r\n return;\r\n default:\r\n // We should never get any other token types\r\n return;\r\n }\r\n }\r\n\r\n function in_table_mode(t, value, arg3, arg4) {\r\n function getTypeAttr(attrs) {\r\n for(var i = 0, n = attrs.length; i < n; i++) {\r\n if (attrs[i][0] === \"type\")\r\n return attrs[i][1].toLowerCase();\r\n }\r\n return null;\r\n }\r\n\r\n switch(t) {\r\n case 1: // TEXT\r\n // XXX the text_integration_mode stuff is\r\n // just a hack I made up\r\n if (text_integration_mode) {\r\n in_body_mode(t, value, arg3, arg4);\r\n return;\r\n }\r\n else if (isA(stack.top, tablesectionrowSet)) {\r\n pending_table_text = [];\r\n originalInsertionMode = parser;\r\n parser = in_table_text_mode;\r\n parser(t, value, arg3, arg4);\r\n return;\r\n }\r\n break;\r\n case 4: // COMMENT\r\n insertComment(value);\r\n return;\r\n case 5: // DOCTYPE\r\n return;\r\n case 2: // TAG\r\n switch(value) {\r\n case \"caption\":\r\n stack.clearToContext(tableContextSet);\r\n afe.insertMarker();\r\n insertHTMLElement(value,arg3);\r\n parser = in_caption_mode;\r\n return;\r\n case \"colgroup\":\r\n stack.clearToContext(tableContextSet);\r\n insertHTMLElement(value,arg3);\r\n parser = in_column_group_mode;\r\n return;\r\n case \"col\":\r\n in_table_mode(TAG, \"colgroup\", null);\r\n parser(t, value, arg3, arg4);\r\n return;\r\n case \"tbody\":\r\n case \"tfoot\":\r\n case \"thead\":\r\n stack.clearToContext(tableContextSet);\r\n insertHTMLElement(value,arg3);\r\n parser = in_table_body_mode;\r\n return;\r\n case \"td\":\r\n case \"th\":\r\n case \"tr\":\r\n in_table_mode(TAG, \"tbody\", null);\r\n parser(t, value, arg3, arg4);\r\n return;\r\n\r\n case \"table\":\r\n if (!stack.inTableScope(value)) {\r\n return; // Ignore the token\r\n }\r\n in_table_mode(ENDTAG, value);\r\n parser(t, value, arg3, arg4);\r\n return;\r\n\r\n case \"style\":\r\n case \"script\":\r\n case \"template\":\r\n in_head_mode(t, value, arg3, arg4);\r\n return;\r\n\r\n case \"input\":\r\n var type = getTypeAttr(arg3);\r\n if (type !== \"hidden\") break; // to the anything else case\r\n insertHTMLElement(value,arg3);\r\n stack.pop();\r\n return;\r\n\r\n case \"form\":\r\n if (form_element_pointer || stack.contains(\"template\")) return;\r\n form_element_pointer = insertHTMLElement(value, arg3);\r\n stack.popElement(form_element_pointer);\r\n return;\r\n }\r\n break;\r\n case 3: // ENDTAG\r\n switch(value) {\r\n case \"table\":\r\n if (!stack.inTableScope(value)) return;\r\n stack.popTag(value);\r\n resetInsertionMode();\r\n return;\r\n case \"body\":\r\n case \"caption\":\r\n case \"col\":\r\n case \"colgroup\":\r\n case \"html\":\r\n case \"tbody\":\r\n case \"td\":\r\n case \"tfoot\":\r\n case \"th\":\r\n case \"thead\":\r\n case \"tr\":\r\n return;\r\n case \"template\":\r\n in_head_mode(t, value, arg3, arg4);\r\n return;\r\n }\r\n\r\n break;\r\n case -1: // EOF\r\n in_body_mode(t, value, arg3, arg4);\r\n return;\r\n }\r\n\r\n // This is the anything else case\r\n foster_parent_mode = true;\r\n in_body_mode(t, value, arg3, arg4);\r\n foster_parent_mode = false;\r\n }\r\n\r\n function in_table_text_mode(t, value, arg3, arg4) {\r\n if (t === TEXT) {\r\n if (textIncludesNUL) {\r\n value = value.replace(NULCHARS, \"\");\r\n if (value.length === 0) return;\r\n }\r\n pending_table_text.push(value);\r\n }\r\n else {\r\n var s = pending_table_text.join(\"\");\r\n pending_table_text.length = 0;\r\n if (NONWS.test(s)) { // If any non-whitespace characters\r\n // This must be the same code as the \"anything else\"\r\n // case of the in_table mode above.\r\n foster_parent_mode = true;\r\n in_body_mode(TEXT, s);\r\n foster_parent_mode = false;\r\n }\r\n else {\r\n insertText(s);\r\n }\r\n parser = originalInsertionMode;\r\n parser(t, value, arg3, arg4);\r\n }\r\n }\r\n\r\n\r\n function in_caption_mode(t, value, arg3, arg4) {\r\n function end_caption() {\r\n if (!stack.inTableScope(\"caption\")) return false;\r\n stack.generateImpliedEndTags();\r\n stack.popTag(\"caption\");\r\n afe.clearToMarker();\r\n parser = in_table_mode;\r\n return true;\r\n }\r\n\r\n switch(t) {\r\n case 2: // TAG\r\n switch(value) {\r\n case \"caption\":\r\n case \"col\":\r\n case \"colgroup\":\r\n case \"tbody\":\r\n case \"td\":\r\n case \"tfoot\":\r\n case \"th\":\r\n case \"thead\":\r\n case \"tr\":\r\n if (end_caption()) parser(t, value, arg3, arg4);\r\n return;\r\n }\r\n break;\r\n case 3: // ENDTAG\r\n switch(value) {\r\n case \"caption\":\r\n end_caption();\r\n return;\r\n case \"table\":\r\n if (end_caption()) parser(t, value, arg3, arg4);\r\n return;\r\n case \"body\":\r\n case \"col\":\r\n case \"colgroup\":\r\n case \"html\":\r\n case \"tbody\":\r\n case \"td\":\r\n case \"tfoot\":\r\n case \"th\":\r\n case \"thead\":\r\n case \"tr\":\r\n return;\r\n }\r\n break;\r\n }\r\n\r\n // The Anything Else case\r\n in_body_mode(t, value, arg3, arg4);\r\n }\r\n\r\n function in_column_group_mode(t, value, arg3, arg4) {\r\n switch(t) {\r\n case 1: // TEXT\r\n var ws = value.match(LEADINGWS);\r\n if (ws) {\r\n insertText(ws[0]);\r\n value = value.substring(ws[0].length);\r\n }\r\n if (value.length === 0) return;\r\n break; // Handle non-whitespace below\r\n\r\n case 4: // COMMENT\r\n insertComment(value);\r\n return;\r\n case 5: // DOCTYPE\r\n return;\r\n case 2: // TAG\r\n switch(value) {\r\n case \"html\":\r\n in_body_mode(t, value, arg3, arg4);\r\n return;\r\n case \"col\":\r\n insertHTMLElement(value, arg3);\r\n stack.pop();\r\n return;\r\n case \"template\":\r\n in_head_mode(t, value, arg3, arg4);\r\n return;\r\n }\r\n break;\r\n case 3: // ENDTAG\r\n switch(value) {\r\n case \"colgroup\":\r\n if (!isA(stack.top, 'colgroup')) {\r\n return; // Ignore the token.\r\n }\r\n stack.pop();\r\n parser = in_table_mode;\r\n return;\r\n case \"col\":\r\n return;\r\n case \"template\":\r\n in_head_mode(t, value, arg3, arg4);\r\n return;\r\n }\r\n break;\r\n case -1: // EOF\r\n in_body_mode(t, value, arg3, arg4);\r\n return;\r\n }\r\n\r\n // Anything else\r\n if (!isA(stack.top, 'colgroup')) {\r\n return; // Ignore the token.\r\n }\r\n in_column_group_mode(ENDTAG, \"colgroup\");\r\n parser(t, value, arg3, arg4);\r\n }\r\n\r\n function in_table_body_mode(t, value, arg3, arg4) {\r\n function endsect() {\r\n if (!stack.inTableScope(\"tbody\") &&\r\n !stack.inTableScope(\"thead\") &&\r\n !stack.inTableScope(\"tfoot\"))\r\n return;\r\n stack.clearToContext(tableBodyContextSet);\r\n in_table_body_mode(ENDTAG, stack.top.localName, null);\r\n parser(t, value, arg3, arg4);\r\n }\r\n\r\n switch(t) {\r\n case 2: // TAG\r\n switch(value) {\r\n case \"tr\":\r\n stack.clearToContext(tableBodyContextSet);\r\n insertHTMLElement(value, arg3);\r\n parser = in_row_mode;\r\n return;\r\n case \"th\":\r\n case \"td\":\r\n in_table_body_mode(TAG, \"tr\", null);\r\n parser(t, value, arg3, arg4);\r\n return;\r\n case \"caption\":\r\n case \"col\":\r\n case \"colgroup\":\r\n case \"tbody\":\r\n case \"tfoot\":\r\n case \"thead\":\r\n endsect();\r\n return;\r\n }\r\n break;\r\n case 3: // ENDTAG\r\n switch(value) {\r\n case \"table\":\r\n endsect();\r\n return;\r\n case \"tbody\":\r\n case \"tfoot\":\r\n case \"thead\":\r\n if (stack.inTableScope(value)) {\r\n stack.clearToContext(tableBodyContextSet);\r\n stack.pop();\r\n parser = in_table_mode;\r\n }\r\n return;\r\n case \"body\":\r\n case \"caption\":\r\n case \"col\":\r\n case \"colgroup\":\r\n case \"html\":\r\n case \"td\":\r\n case \"th\":\r\n case \"tr\":\r\n return;\r\n }\r\n break;\r\n }\r\n\r\n // Anything else:\r\n in_table_mode(t, value, arg3, arg4);\r\n }\r\n\r\n function in_row_mode(t, value, arg3, arg4) {\r\n function endrow() {\r\n if (!stack.inTableScope(\"tr\")) return false;\r\n stack.clearToContext(tableRowContextSet);\r\n stack.pop();\r\n parser = in_table_body_mode;\r\n return true;\r\n }\r\n\r\n switch(t) {\r\n case 2: // TAG\r\n switch(value) {\r\n case \"th\":\r\n case \"td\":\r\n stack.clearToContext(tableRowContextSet);\r\n insertHTMLElement(value, arg3);\r\n parser = in_cell_mode;\r\n afe.insertMarker();\r\n return;\r\n case \"caption\":\r\n case \"col\":\r\n case \"colgroup\":\r\n case \"tbody\":\r\n case \"tfoot\":\r\n case \"thead\":\r\n case \"tr\":\r\n if (endrow()) parser(t, value, arg3, arg4);\r\n return;\r\n }\r\n break;\r\n case 3: // ENDTAG\r\n switch(value) {\r\n case \"tr\":\r\n endrow();\r\n return;\r\n case \"table\":\r\n if (endrow()) parser(t, value, arg3, arg4);\r\n return;\r\n case \"tbody\":\r\n case \"tfoot\":\r\n case \"thead\":\r\n if (stack.inTableScope(value)) {\r\n if (endrow()) parser(t, value, arg3, arg4);\r\n }\r\n return;\r\n case \"body\":\r\n case \"caption\":\r\n case \"col\":\r\n case \"colgroup\":\r\n case \"html\":\r\n case \"td\":\r\n case \"th\":\r\n return;\r\n }\r\n break;\r\n }\r\n\r\n // anything else\r\n in_table_mode(t, value, arg3, arg4);\r\n }\r\n\r\n function in_cell_mode(t, value, arg3, arg4) {\r\n switch(t) {\r\n case 2: // TAG\r\n switch(value) {\r\n case \"caption\":\r\n case \"col\":\r\n case \"colgroup\":\r\n case \"tbody\":\r\n case \"td\":\r\n case \"tfoot\":\r\n case \"th\":\r\n case \"thead\":\r\n case \"tr\":\r\n if (stack.inTableScope(\"td\")) {\r\n in_cell_mode(ENDTAG, \"td\");\r\n parser(t, value, arg3, arg4);\r\n }\r\n else if (stack.inTableScope(\"th\")) {\r\n in_cell_mode(ENDTAG, \"th\");\r\n parser(t, value, arg3, arg4);\r\n }\r\n return;\r\n }\r\n break;\r\n case 3: // ENDTAG\r\n switch(value) {\r\n case \"td\":\r\n case \"th\":\r\n if (!stack.inTableScope(value)) return;\r\n stack.generateImpliedEndTags();\r\n stack.popTag(value);\r\n afe.clearToMarker();\r\n parser = in_row_mode;\r\n return;\r\n\r\n case \"body\":\r\n case \"caption\":\r\n case \"col\":\r\n case \"colgroup\":\r\n case \"html\":\r\n return;\r\n\r\n case \"table\":\r\n case \"tbody\":\r\n case \"tfoot\":\r\n case \"thead\":\r\n case \"tr\":\r\n if (!stack.inTableScope(value)) return;\r\n in_cell_mode(ENDTAG, stack.inTableScope(\"td\") ? \"td\" : \"th\");\r\n parser(t, value, arg3, arg4);\r\n return;\r\n }\r\n break;\r\n }\r\n\r\n // anything else\r\n in_body_mode(t, value, arg3, arg4);\r\n }\r\n\r\n function in_select_mode(t, value, arg3, arg4) {\r\n switch(t) {\r\n case 1: // TEXT\r\n if (textIncludesNUL) {\r\n value = value.replace(NULCHARS, \"\");\r\n if (value.length === 0) return;\r\n }\r\n insertText(value);\r\n return;\r\n case 4: // COMMENT\r\n insertComment(value);\r\n return;\r\n case 5: // DOCTYPE\r\n return;\r\n case -1: // EOF\r\n in_body_mode(t, value, arg3, arg4);\r\n return;\r\n case 2: // TAG\r\n switch(value) {\r\n case \"html\":\r\n in_body_mode(t, value, arg3, arg4);\r\n return;\r\n case \"option\":\r\n if (stack.top instanceof impl.HTMLOptionElement)\r\n in_select_mode(ENDTAG, value);\r\n insertHTMLElement(value, arg3);\r\n return;\r\n case \"optgroup\":\r\n if (stack.top instanceof impl.HTMLOptionElement)\r\n in_select_mode(ENDTAG, \"option\");\r\n if (stack.top instanceof impl.HTMLOptGroupElement)\r\n in_select_mode(ENDTAG, value);\r\n insertHTMLElement(value, arg3);\r\n return;\r\n case \"select\":\r\n in_select_mode(ENDTAG, value); // treat it as a close tag\r\n return;\r\n\r\n case \"input\":\r\n case \"keygen\":\r\n case \"textarea\":\r\n if (!stack.inSelectScope(\"select\")) return;\r\n in_select_mode(ENDTAG, \"select\");\r\n parser(t, value, arg3, arg4);\r\n return;\r\n\r\n case \"script\":\r\n case \"template\":\r\n in_head_mode(t, value, arg3, arg4);\r\n return;\r\n }\r\n break;\r\n case 3: // ENDTAG\r\n switch(value) {\r\n case \"optgroup\":\r\n if (stack.top instanceof impl.HTMLOptionElement &&\r\n stack.elements[stack.elements.length-2] instanceof\r\n impl.HTMLOptGroupElement) {\r\n in_select_mode(ENDTAG, \"option\");\r\n }\r\n if (stack.top instanceof impl.HTMLOptGroupElement)\r\n stack.pop();\r\n\r\n return;\r\n\r\n case \"option\":\r\n if (stack.top instanceof impl.HTMLOptionElement)\r\n stack.pop();\r\n return;\r\n\r\n case \"select\":\r\n if (!stack.inSelectScope(value)) return;\r\n stack.popTag(value);\r\n resetInsertionMode();\r\n return;\r\n\r\n case \"template\":\r\n in_head_mode(t, value, arg3, arg4);\r\n return;\r\n }\r\n\r\n break;\r\n }\r\n\r\n // anything else: just ignore the token\r\n }\r\n\r\n function in_select_in_table_mode(t, value, arg3, arg4) {\r\n switch(value) {\r\n case \"caption\":\r\n case \"table\":\r\n case \"tbody\":\r\n case \"tfoot\":\r\n case \"thead\":\r\n case \"tr\":\r\n case \"td\":\r\n case \"th\":\r\n switch(t) {\r\n case 2: // TAG\r\n in_select_in_table_mode(ENDTAG, \"select\");\r\n parser(t, value, arg3, arg4);\r\n return;\r\n case 3: // ENDTAG\r\n if (stack.inTableScope(value)) {\r\n in_select_in_table_mode(ENDTAG, \"select\");\r\n parser(t, value, arg3, arg4);\r\n }\r\n return;\r\n }\r\n }\r\n\r\n // anything else\r\n in_select_mode(t, value, arg3, arg4);\r\n }\r\n\r\n function in_template_mode(t, value, arg3, arg4) {\r\n function switchModeAndReprocess(mode) {\r\n parser = mode;\r\n templateInsertionModes[templateInsertionModes.length-1] = parser;\r\n parser(t, value, arg3, arg4);\r\n }\r\n switch(t) {\r\n case 1: // TEXT\r\n case 4: // COMMENT\r\n case 5: // DOCTYPE\r\n in_body_mode(t, value, arg3, arg4);\r\n return;\r\n case -1: // EOF\r\n if (!stack.contains(\"template\")) {\r\n stopParsing();\r\n } else {\r\n stack.popTag(\"template\");\r\n afe.clearToMarker();\r\n templateInsertionModes.pop();\r\n resetInsertionMode();\r\n parser(t, value, arg3, arg4);\r\n }\r\n return;\r\n case 2: // TAG\r\n switch(value) {\r\n case \"base\":\r\n case \"basefont\":\r\n case \"bgsound\":\r\n case \"link\":\r\n case \"meta\":\r\n case \"noframes\":\r\n case \"script\":\r\n case \"style\":\r\n case \"template\":\r\n case \"title\":\r\n in_head_mode(t, value, arg3, arg4);\r\n return;\r\n case \"caption\":\r\n case \"colgroup\":\r\n case \"tbody\":\r\n case \"tfoot\":\r\n case \"thead\":\r\n switchModeAndReprocess(in_table_mode);\r\n return;\r\n case \"col\":\r\n switchModeAndReprocess(in_column_group_mode);\r\n return;\r\n case \"tr\":\r\n switchModeAndReprocess(in_table_body_mode);\r\n return;\r\n case \"td\":\r\n case \"th\":\r\n switchModeAndReprocess(in_row_mode);\r\n return;\r\n }\r\n switchModeAndReprocess(in_body_mode);\r\n return;\r\n case 3: // ENDTAG\r\n switch(value) {\r\n case \"template\":\r\n in_head_mode(t, value, arg3, arg4);\r\n return;\r\n default:\r\n return;\r\n }\r\n }\r\n }\r\n\r\n function after_body_mode(t, value, arg3, arg4) {\r\n switch(t) {\r\n case 1: // TEXT\r\n // If any non-space chars, handle below\r\n if (NONWS.test(value)) break;\r\n in_body_mode(t, value);\r\n return;\r\n case 4: // COMMENT\r\n // Append it to the <html> element\r\n stack.elements[0]._appendChild(doc.createComment(value));\r\n return;\r\n case 5: // DOCTYPE\r\n return;\r\n case -1: // EOF\r\n stopParsing();\r\n return;\r\n case 2: // TAG\r\n if (value === \"html\") {\r\n in_body_mode(t, value, arg3, arg4);\r\n return;\r\n }\r\n break; // for any other tags\r\n case 3: // ENDTAG\r\n if (value === \"html\") {\r\n if (fragment) return;\r\n parser = after_after_body_mode;\r\n return;\r\n }\r\n break; // for any other tags\r\n }\r\n\r\n // anything else\r\n parser = in_body_mode;\r\n parser(t, value, arg3, arg4);\r\n }\r\n\r\n function in_frameset_mode(t, value, arg3, arg4) {\r\n switch(t) {\r\n case 1: // TEXT\r\n // Ignore any non-space characters\r\n value = value.replace(ALLNONWS, \"\");\r\n if (value.length > 0) insertText(value);\r\n return;\r\n case 4: // COMMENT\r\n insertComment(value);\r\n return;\r\n case 5: // DOCTYPE\r\n return;\r\n case -1: // EOF\r\n stopParsing();\r\n return;\r\n case 2: // TAG\r\n switch(value) {\r\n case \"html\":\r\n in_body_mode(t, value, arg3, arg4);\r\n return;\r\n case \"frameset\":\r\n insertHTMLElement(value, arg3);\r\n return;\r\n case \"frame\":\r\n insertHTMLElement(value, arg3);\r\n stack.pop();\r\n return;\r\n case \"noframes\":\r\n in_head_mode(t, value, arg3, arg4);\r\n return;\r\n }\r\n break;\r\n case 3: // ENDTAG\r\n if (value === \"frameset\") {\r\n if (fragment && stack.top instanceof impl.HTMLHtmlElement)\r\n return;\r\n stack.pop();\r\n if (!fragment &&\r\n !(stack.top instanceof impl.HTMLFrameSetElement))\r\n parser = after_frameset_mode;\r\n return;\r\n }\r\n break;\r\n }\r\n\r\n // ignore anything else\r\n }\r\n\r\n function after_frameset_mode(t, value, arg3, arg4) {\r\n switch(t) {\r\n case 1: // TEXT\r\n // Ignore any non-space characters\r\n value = value.replace(ALLNONWS, \"\");\r\n if (value.length > 0) insertText(value);\r\n return;\r\n case 4: // COMMENT\r\n insertComment(value);\r\n return;\r\n case 5: // DOCTYPE\r\n return;\r\n case -1: // EOF\r\n stopParsing();\r\n return;\r\n case 2: // TAG\r\n switch(value) {\r\n case \"html\":\r\n in_body_mode(t, value, arg3, arg4);\r\n return;\r\n case \"noframes\":\r\n in_head_mode(t, value, arg3, arg4);\r\n return;\r\n }\r\n break;\r\n case 3: // ENDTAG\r\n if (value === \"html\") {\r\n parser = after_after_frameset_mode;\r\n return;\r\n }\r\n break;\r\n }\r\n\r\n // ignore anything else\r\n }\r\n\r\n function after_after_body_mode(t, value, arg3, arg4) {\r\n switch(t) {\r\n case 1: // TEXT\r\n // If any non-space chars, handle below\r\n if (NONWS.test(value)) break;\r\n in_body_mode(t, value, arg3, arg4);\r\n return;\r\n case 4: // COMMENT\r\n doc._appendChild(doc.createComment(value));\r\n return;\r\n case 5: // DOCTYPE\r\n in_body_mode(t, value, arg3, arg4);\r\n return;\r\n case -1: // EOF\r\n stopParsing();\r\n return;\r\n case 2: // TAG\r\n if (value === \"html\") {\r\n in_body_mode(t, value, arg3, arg4);\r\n return;\r\n }\r\n break;\r\n }\r\n\r\n // anything else\r\n parser = in_body_mode;\r\n parser(t, value, arg3, arg4);\r\n }\r\n\r\n function after_after_frameset_mode(t, value, arg3, arg4) {\r\n switch(t) {\r\n case 1: // TEXT\r\n // Ignore any non-space characters\r\n value = value.replace(ALLNONWS, \"\");\r\n if (value.length > 0)\r\n in_body_mode(t, value, arg3, arg4);\r\n return;\r\n case 4: // COMMENT\r\n doc._appendChild(doc.createComment(value));\r\n return;\r\n case 5: // DOCTYPE\r\n in_body_mode(t, value, arg3, arg4);\r\n return;\r\n case -1: // EOF\r\n stopParsing();\r\n return;\r\n case 2: // TAG\r\n switch(value) {\r\n case \"html\":\r\n in_body_mode(t, value, arg3, arg4);\r\n return;\r\n case \"noframes\":\r\n in_head_mode(t, value, arg3, arg4);\r\n return;\r\n }\r\n break;\r\n }\r\n\r\n // ignore anything else\r\n }\r\n\r\n\r\n // 13.2.5.5 The rules for parsing tokens in foreign content\r\n //\r\n // This is like one of the insertion modes above, but is\r\n // invoked somewhat differently when the current token is not HTML.\r\n // See the insertToken() function.\r\n function insertForeignToken(t, value, arg3, arg4) {\r\n // A <font> tag is an HTML font tag if it has a color, font, or size\r\n // attribute. Otherwise we assume it is foreign content\r\n function isHTMLFont(attrs) {\r\n for(var i = 0, n = attrs.length; i < n; i++) {\r\n switch(attrs[i][0]) {\r\n case \"color\":\r\n case \"face\":\r\n case \"size\":\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n var current;\r\n\r\n switch(t) {\r\n case 1: // TEXT\r\n // If any non-space, non-nul characters\r\n if (frameset_ok && NONWSNONNUL.test(value))\r\n frameset_ok = false;\r\n if (textIncludesNUL) {\r\n value = value.replace(NULCHARS, \"\\uFFFD\");\r\n }\r\n insertText(value);\r\n return;\r\n case 4: // COMMENT\r\n insertComment(value);\r\n return;\r\n case 5: // DOCTYPE\r\n // ignore it\r\n return;\r\n case 2: // TAG\r\n switch(value) {\r\n case \"font\":\r\n if (!isHTMLFont(arg3)) break;\r\n /* falls through */\r\n case \"b\":\r\n case \"big\":\r\n case \"blockquote\":\r\n case \"body\":\r\n case \"br\":\r\n case \"center\":\r\n case \"code\":\r\n case \"dd\":\r\n case \"div\":\r\n case \"dl\":\r\n case \"dt\":\r\n case \"em\":\r\n case \"embed\":\r\n case \"h1\":\r\n case \"h2\":\r\n case \"h3\":\r\n case \"h4\":\r\n case \"h5\":\r\n case \"h6\":\r\n case \"head\":\r\n case \"hr\":\r\n case \"i\":\r\n case \"img\":\r\n case \"li\":\r\n case \"listing\":\r\n case \"menu\":\r\n case \"meta\":\r\n case \"nobr\":\r\n case \"ol\":\r\n case \"p\":\r\n case \"pre\":\r\n case \"ruby\":\r\n case \"s\":\r\n case \"small\":\r\n case \"span\":\r\n case \"strong\":\r\n case \"strike\":\r\n case \"sub\":\r\n case \"sup\":\r\n case \"table\":\r\n case \"tt\":\r\n case \"u\":\r\n case \"ul\":\r\n case \"var\":\r\n if (fragment) {\r\n break;\r\n }\r\n do {\r\n stack.pop();\r\n current = stack.top;\r\n } while(current.namespaceURI !== NAMESPACE.HTML &&\r\n !isMathmlTextIntegrationPoint(current) &&\r\n !isHTMLIntegrationPoint(current));\r\n\r\n insertToken(t, value, arg3, arg4); // reprocess\r\n return;\r\n }\r\n\r\n // Any other start tag case goes here\r\n current = (stack.elements.length===1 && fragment) ? fragmentContext :\r\n stack.top;\r\n if (current.namespaceURI === NAMESPACE.MATHML) {\r\n adjustMathMLAttributes(arg3);\r\n }\r\n else if (current.namespaceURI === NAMESPACE.SVG) {\r\n value = adjustSVGTagName(value);\r\n adjustSVGAttributes(arg3);\r\n }\r\n adjustForeignAttributes(arg3);\r\n\r\n insertForeignElement(value, arg3, current.namespaceURI);\r\n if (arg4) { // the self-closing flag\r\n if (value === 'script' && current.namespaceURI === NAMESPACE.SVG) {\r\n // XXX deal with SVG scripts here\r\n }\r\n stack.pop();\r\n }\r\n return;\r\n\r\n case 3: // ENDTAG\r\n current = stack.top;\r\n if (value === \"script\" &&\r\n current.namespaceURI === NAMESPACE.SVG &&\r\n current.localName === \"script\") {\r\n\r\n stack.pop();\r\n\r\n // XXX\r\n // Deal with SVG scripts here\r\n }\r\n else {\r\n // The any other end tag case\r\n var i = stack.elements.length-1;\r\n var node = stack.elements[i];\r\n for(;;) {\r\n if (node.localName.toLowerCase() === value) {\r\n stack.popElement(node);\r\n break;\r\n }\r\n node = stack.elements[--i];\r\n // If non-html, keep looping\r\n if (node.namespaceURI !== NAMESPACE.HTML)\r\n continue;\r\n // Otherwise process the end tag as html\r\n parser(t, value, arg3, arg4);\r\n break;\r\n }\r\n }\r\n return;\r\n }\r\n }\r\n\r\n /***\r\n * Finally, this is the end of the HTMLParser() factory function.\r\n * It returns the htmlparser object with the append() and end() methods.\r\n */\r\n\r\n // Sneak another method into the htmlparser object to allow us to run\r\n // tokenizer tests. This can be commented out in production code.\r\n // This is a hook for testing the tokenizer. It has to be here\r\n // because the tokenizer details are all hidden away within the closure.\r\n // It should return an array of tokens generated while parsing the\r\n // input string.\r\n htmlparser.testTokenizer = function(input, initialState, lastStartTag, charbychar) {\r\n var tokens = [];\r\n\r\n switch(initialState) {\r\n case \"PCDATA state\":\r\n tokenizer = data_state;\r\n break;\r\n case \"RCDATA state\":\r\n tokenizer = rcdata_state;\r\n break;\r\n case \"RAWTEXT state\":\r\n tokenizer = rawtext_state;\r\n break;\r\n case \"PLAINTEXT state\":\r\n tokenizer = plaintext_state;\r\n break;\r\n }\r\n\r\n if (lastStartTag) {\r\n lasttagname = lastStartTag;\r\n }\r\n\r\n insertToken = function(t, value, arg3, arg4) {\r\n flushText();\r\n switch(t) {\r\n case 1: // TEXT\r\n if (tokens.length > 0 &&\r\n tokens[tokens.length-1][0] === \"Character\") {\r\n tokens[tokens.length-1][1] += value;\r\n }\r\n else tokens.push([\"Character\", value]);\r\n break;\r\n case 4: // COMMENT\r\n tokens.push([\"Comment\", value]);\r\n break;\r\n case 5: // DOCTYPE\r\n tokens.push([\"DOCTYPE\", value,\r\n arg3 === undefined ? null : arg3,\r\n arg4 === undefined ? null : arg4,\r\n !force_quirks]);\r\n break;\r\n case 2: // TAG\r\n var attrs = Object.create(null);\r\n for(var i = 0; i < arg3.length; i++) {\r\n // XXX: does attribute order matter?\r\n var a = arg3[i];\r\n if (a.length === 1) {\r\n attrs[a[0]] = \"\";\r\n }\r\n else {\r\n attrs[a[0]] = a[1];\r\n }\r\n }\r\n var token = [\"StartTag\", value, attrs];\r\n if (arg4) token.push(true);\r\n tokens.push(token);\r\n break;\r\n case 3: // ENDTAG\r\n tokens.push([\"EndTag\", value]);\r\n break;\r\n case -1: // EOF\r\n break;\r\n }\r\n };\r\n\r\n if (!charbychar) {\r\n this.parse(input, true);\r\n }\r\n else {\r\n for(var i = 0; i < input.length; i++) {\r\n this.parse(input[i]);\r\n }\r\n this.parse(\"\", true);\r\n }\r\n return tokens;\r\n };\r\n\r\n // Return the parser object from the HTMLParser() factory function\r\n return htmlparser;\r\n}\r\n","\"use strict\";\r\nmodule.exports = DOMImplementation;\r\n\r\nvar Document = require('./Document');\r\nvar DocumentType = require('./DocumentType');\r\nvar HTMLParser = require('./HTMLParser');\r\nvar utils = require('./utils');\r\nvar xml = require('./xmlnames');\r\n\r\n// Each document must have its own instance of the domimplementation object\r\nfunction DOMImplementation(contextObject) {\r\n this.contextObject = contextObject;\r\n}\r\n\r\n\r\n// Feature/version pairs that DOMImplementation.hasFeature() returns\r\n// true for. It returns false for anything else.\r\nvar supportedFeatures = {\r\n 'xml': { '': true, '1.0': true, '2.0': true }, // DOM Core\r\n 'core': { '': true, '2.0': true }, // DOM Core\r\n 'html': { '': true, '1.0': true, '2.0': true} , // HTML\r\n 'xhtml': { '': true, '1.0': true, '2.0': true} , // HTML\r\n};\r\n\r\nDOMImplementation.prototype = {\r\n hasFeature: function hasFeature(feature, version) {\r\n var f = supportedFeatures[(feature || '').toLowerCase()];\r\n return (f && f[version || '']) || false;\r\n },\r\n\r\n createDocumentType: function createDocumentType(qualifiedName, publicId, systemId) {\r\n if (!xml.isValidQName(qualifiedName)) utils.InvalidCharacterError();\r\n\r\n return new DocumentType(this.contextObject, qualifiedName, publicId, systemId);\r\n },\r\n\r\n createDocument: function createDocument(namespace, qualifiedName, doctype) {\r\n //\r\n // Note that the current DOMCore spec makes it impossible to\r\n // create an HTML document with this function, even if the\r\n // namespace and doctype are propertly set. See this thread:\r\n // http://lists.w3.org/Archives/Public/www-dom/2011AprJun/0132.html\r\n //\r\n var d = new Document(false, null);\r\n var e;\r\n\r\n if (qualifiedName)\r\n e = d.createElementNS(namespace, qualifiedName);\r\n else\r\n e = null;\r\n\r\n if (doctype) {\r\n d.appendChild(doctype);\r\n }\r\n\r\n if (e) d.appendChild(e);\r\n if (namespace === utils.NAMESPACE.HTML) {\r\n d._contentType = 'application/xhtml+xml';\r\n } else if (namespace === utils.NAMESPACE.SVG) {\r\n d._contentType = 'image/svg+xml';\r\n } else {\r\n d._contentType = 'application/xml';\r\n }\r\n\r\n return d;\r\n },\r\n\r\n createHTMLDocument: function createHTMLDocument(titleText) {\r\n var d = new Document(true, null);\r\n d.appendChild(new DocumentType(d, 'html'));\r\n var html = d.createElement('html');\r\n d.appendChild(html);\r\n var head = d.createElement('head');\r\n html.appendChild(head);\r\n if (titleText !== undefined) {\r\n var title = d.createElement('title');\r\n head.appendChild(title);\r\n title.appendChild(d.createTextNode(titleText));\r\n }\r\n html.appendChild(d.createElement('body'));\r\n d.modclock = 1; // Start tracking modifications\r\n return d;\r\n },\r\n\r\n mozSetOutputMutationHandler: function(doc, handler) {\r\n doc.mutationHandler = handler;\r\n },\r\n\r\n mozGetInputMutationHandler: function(doc) {\r\n utils.nyi();\r\n },\r\n\r\n mozHTMLParser: HTMLParser,\r\n};\r\n","\"use strict\";\r\nvar URL = require('./URL');\r\nvar URLUtils = require('./URLUtils');\r\n\r\nmodule.exports = Location;\r\n\r\nfunction Location(window, href) {\r\n this._window = window;\r\n this._href = href;\r\n}\r\n\r\nLocation.prototype = Object.create(URLUtils.prototype, {\r\n constructor: { value: Location },\r\n\r\n // Special behavior when href is set\r\n href: {\r\n get: function() { return this._href; },\r\n set: function(v) { this.assign(v); }\r\n },\r\n\r\n assign: { value: function(url) {\r\n // Resolve the new url against the current one\r\n // XXX:\r\n // This is not actually correct. It should be resolved against\r\n // the URL of the document of the script. For now, though, I only\r\n // support a single window and there is only one base url.\r\n // So this is good enough for now.\r\n var current = new URL(this._href);\r\n var newurl = current.resolve(url);\r\n\r\n // Save the new url\r\n this._href = newurl;\r\n\r\n // Start loading the new document!\r\n // XXX\r\n // This is just something hacked together.\r\n // The real algorithm is: http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#navigate\r\n }},\r\n\r\n replace: { value: function(url) {\r\n // XXX\r\n // Since we aren't tracking history yet, replace is the same as assign\r\n this.assign(url);\r\n }},\r\n\r\n reload: { value: function() {\r\n // XXX:\r\n // Actually, the spec is a lot more complicated than this\r\n this.assign(this.href);\r\n }},\r\n\r\n toString: { value: function() {\r\n return this.href;\r\n }}\r\n\r\n});\r\n","\"use strict\";\r\n\r\n// https://html.spec.whatwg.org/multipage/webappapis.html#navigatorid\r\nvar NavigatorID = Object.create(null, {\r\n appCodeName: { value: \"Mozilla\" },\r\n appName: { value: \"Netscape\" },\r\n appVersion: { value: \"4.0\" },\r\n platform: { value: \"\" },\r\n product: { value: \"Gecko\" },\r\n productSub: { value: \"20100101\" },\r\n userAgent: { value: \"\" },\r\n vendor: { value: \"\" },\r\n vendorSub: { value: \"\" },\r\n taintEnabled: { value: function() { return false; } }\r\n});\r\n\r\nmodule.exports = NavigatorID;\r\n","\"use strict\";\r\n\r\n// https://html.spec.whatwg.org/multipage/webappapis.html#windowtimers\r\nvar WindowTimers = {\r\n setTimeout: setTimeout,\r\n clearTimeout: clearTimeout,\r\n setInterval: setInterval,\r\n clearInterval: clearInterval\r\n};\r\n\r\nmodule.exports = WindowTimers;\r\n","\"use strict\";\r\nvar utils = require('./utils');\r\n\r\nexports = module.exports = {\r\n CSSStyleDeclaration: require('./CSSStyleDeclaration'),\r\n CharacterData: require('./CharacterData'),\r\n Comment: require('./Comment'),\r\n DOMException: require('./DOMException'),\r\n DOMImplementation: require('./DOMImplementation'),\r\n DOMTokenList: require('./DOMTokenList'),\r\n Document: require('./Document'),\r\n DocumentFragment: require('./DocumentFragment'),\r\n DocumentType: require('./DocumentType'),\r\n Element: require('./Element'),\r\n HTMLParser: require('./HTMLParser'),\r\n NamedNodeMap: require('./NamedNodeMap'),\r\n Node: require('./Node'),\r\n NodeList: require('./NodeList'),\r\n NodeFilter: require('./NodeFilter'),\r\n ProcessingInstruction: require('./ProcessingInstruction'),\r\n Text: require('./Text'),\r\n Window: require('./Window')\r\n};\r\n\r\nutils.merge(exports, require('./events'));\r\nutils.merge(exports, require('./htmlelts').elements);\r\nutils.merge(exports, require('./svg').elements);\r\n","\"use strict\";\r\nvar DOMImplementation = require('./DOMImplementation');\r\nvar EventTarget = require('./EventTarget');\r\nvar Location = require('./Location');\r\nvar utils = require('./utils');\r\n\r\nmodule.exports = Window;\r\n\r\nfunction Window(document) {\r\n this.document = document || new DOMImplementation(null).createHTMLDocument(\"\");\r\n this.document._scripting_enabled = true;\r\n this.document.defaultView = this;\r\n this.location = new Location(this, this.document._address || 'about:blank');\r\n}\r\n\r\nWindow.prototype = Object.create(EventTarget.prototype, {\r\n console: { value: console },\r\n history: { value: {\r\n back: utils.nyi,\r\n forward: utils.nyi,\r\n go: utils.nyi\r\n }},\r\n navigator: { value: require(\"./NavigatorID\") },\r\n\r\n // Self-referential properties\r\n window: { get: function() { return this; }},\r\n self: { get: function() { return this; }},\r\n frames: { get: function() { return this; }},\r\n\r\n // Self-referential properties for a top-level window\r\n parent: { get: function() { return this; }},\r\n top: { get: function() { return this; }},\r\n\r\n // We don't support any other windows for now\r\n length: { value: 0 }, // no frames\r\n frameElement: { value: null }, // not part of a frame\r\n opener: { value: null }, // not opened by another window\r\n\r\n // The onload event handler.\r\n // XXX: need to support a bunch of other event types, too,\r\n // and have them interoperate with document.body.\r\n\r\n onload: {\r\n get: function() {\r\n return this._getEventHandler(\"load\");\r\n },\r\n set: function(v) {\r\n this._setEventHandler(\"load\", v);\r\n }\r\n },\r\n\r\n // XXX This is a completely broken implementation\r\n getComputedStyle: { value: function getComputedStyle(elt) {\r\n return elt.style;\r\n }}\r\n\r\n});\r\n\r\nutils.expose(require('./WindowTimers'), Window);\r\nutils.expose(require('./impl'), Window);\r\n","\"use strict\";\r\nvar DOMImplementation = require('./DOMImplementation');\r\nvar HTMLParser = require('./HTMLParser');\r\nvar Window = require('./Window');\r\nvar impl = require('./impl');\r\n\r\nexports.createDOMImplementation = function() {\r\n return new DOMImplementation(null);\r\n};\r\n\r\nexports.createDocument = function(html, force) {\r\n // Previous API couldn't let you pass '' as a document, and that\r\n // yields a slightly different document than createHTMLDocument('')\r\n // does. The new `force` parameter lets you pass '' if you want to.\r\n if (html || force) {\r\n var parser = new HTMLParser();\r\n parser.parse(html || '', true);\r\n return parser.document();\r\n }\r\n return new DOMImplementation(null).createHTMLDocument(\"\");\r\n};\r\n\r\nexports.createIncrementalHTMLParser = function() {\r\n var parser = new HTMLParser();\r\n /** API for incremental parser. */\r\n return {\r\n /** Provide an additional chunk of text to be parsed. */\r\n write: function(s) {\r\n if (s.length > 0) {\r\n parser.parse(s, false, function() { return true; });\r\n }\r\n },\r\n /**\r\n * Signal that we are done providing input text, optionally\r\n * providing one last chunk as a parameter.\r\n */\r\n end: function(s) {\r\n parser.parse(s || '', true, function() { return true; });\r\n },\r\n /**\r\n * Performs a chunk of parsing work, returning at the end of\r\n * the next token as soon as shouldPauseFunc() returns true.\r\n * Returns true iff there is more work to do.\r\n *\r\n * For example:\r\n * ```\r\n * var incrParser = domino.createIncrementalHTMLParser();\r\n * incrParser.end('...long html document...');\r\n * while (true) {\r\n * // Pause every 10ms\r\n * var start = Date.now();\r\n * var pauseIn10 = function() { return (Date.now() - start) >= 10; };\r\n * if (!incrParser.process(pauseIn10)) {\r\n * break;\r\n * }\r\n * ...yield to other tasks, do other housekeeping, etc...\r\n * }\r\n * ```\r\n */\r\n process: function(shouldPauseFunc) {\r\n return parser.parse('', false, shouldPauseFunc);\r\n },\r\n /**\r\n * Returns the result of the incremental parse. Valid after\r\n * `this.end()` has been called and `this.process()` has returned\r\n * false.\r\n */\r\n document: function() {\r\n return parser.document();\r\n },\r\n }; \r\n};\r\n\r\nexports.createWindow = function(html, address) {\r\n var document = exports.createDocument(html);\r\n if (address !== undefined) { document._address = address; }\r\n return new impl.Window(document);\r\n};\r\n\r\nexports.impl = impl;","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","import { randomFillSync } from 'crypto';\nconst rnds8Pool = new Uint8Array(256);\nlet poolPtr = rnds8Pool.length;\nexport default function rng() {\n if (poolPtr > rnds8Pool.length - 16) {\n randomFillSync(rnds8Pool);\n poolPtr = 0;\n }\n return rnds8Pool.slice(poolPtr, (poolPtr += 16));\n}\n","import { randomUUID } from 'crypto';\nexport default { randomUUID };\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n","import { v4 as uuidv4 } from \"uuid\";\nimport {\n type LanguageModel,\n type StreamTextResult,\n ToolLoopAgent,\n type ToolLoopAgentSettings,\n stepCountIs,\n hasToolCall,\n type Tool,\n type ModelMessage,\n type TextPart,\n type ImagePart,\n type ToolCallPart,\n type ToolResultPart,\n} from \"ai\";\nimport type {\n SDKMessage,\n SDKUserMessage,\n SDKSystemMessage,\n SDKAssistantMessage,\n SDKToolResultMessage,\n SDKResultMessage,\n SDKSubmitFinalReminderMessage,\n Query,\n ModelResolver,\n Options,\n NonNullableUsage,\n StreamingOptions,\n AgentDefinition,\n} from \"./sdk-types\";\nimport { MCPManager } from \"./mcp-manager\";\nimport type { ElicitationResponse } from \"./mcp-client\";\nimport { createTools, ToolNames } from \"./tool-creators\";\nimport { getAdditionalInstructions } from \"./instructions\";\nimport { SubmitTool, SubmitToolName } from \"./tools/submit-tool\";\nimport { wrapLegacyTool, wrapLegacyTools } from \"./tool-wrapper\";\nimport { repairJSON } from \"./util/json-repair\";\nimport { DEFAULT_MAX_TURNS } from \"./constants\";\nimport { createStructuredOutputValidator } from \"./util/structured-output-validation\";\nimport {\n hasImages,\n extractImagesFromContent,\n generateImageId,\n} from \"./util/image-utils\";\nimport {\n createVisionToolWithName,\n VISION_TOOL_NAME,\n} from \"./tools/vision-tool\";\n\nconst toJsonSafe = (value: unknown): unknown => {\n try {\n return JSON.parse(JSON.stringify(value));\n } catch {\n return String(value);\n }\n};\n\ntype PromptInput =\n | string\n | SDKUserMessage[\"message\"][\"content\"]\n | AsyncIterable<SDKUserMessage>;\n\n// Session management: in-memory only. Persistence is expected to be supplied\n// by the host app via options.loadSession/saveSession; this map is just the\n// per-process cache.\nconst sessions = new Map<string, SessionData>();\n\n// Convert SDK messages (user/assistant/tool_result) into AI SDK ModelMessage format\n// so that session history can be replayed to the LLM on subsequent turns.\nconst sdkMessageToModelMessage = (message: SDKMessage): ModelMessage | null => {\n const toTextPart = (text: string): TextPart => ({ type: \"text\", text });\n const toImagePart = (image: any): ImagePart =>\n ({ type: \"image\", image } as ImagePart);\n\n if (message.type === \"user\") {\n const content = (message as SDKUserMessage | SDKUserMessageReplay).message\n .content as any;\n\n if (typeof content === \"string\") {\n return { role: \"user\", content };\n }\n\n if (Array.isArray(content)) {\n const converted = content\n .map((part: any) => {\n if (part?.type === \"text\" && typeof part.text === \"string\")\n return toTextPart(part.text);\n if (part?.type === \"image\" && part.image)\n return toImagePart(part.image);\n return null;\n })\n .filter(Boolean) as Array<TextPart | ImagePart>;\n\n if (converted.length > 0) return { role: \"user\", content: converted };\n }\n\n return { role: \"user\", content: String(content ?? \"\") };\n }\n\n if (message.type === \"assistant\") {\n const parts = (message as SDKAssistantMessage).message.content;\n const converted = (parts as any[])\n .map((part) => {\n if (part?.type === \"text\" && typeof part.text === \"string\")\n return toTextPart(part.text);\n if (part?.type === \"tool_use\") {\n const toolPart: ToolCallPart = {\n type: \"tool-call\",\n toolCallId: part.id,\n toolName: part.name,\n input: part.input,\n };\n return toolPart as ToolCallPart;\n }\n return null;\n })\n .filter(Boolean) as Array<TextPart | ToolCallPart>;\n\n if (converted.length === 0) return null;\n\n return { role: \"assistant\", content: converted };\n }\n\n if (message.type === \"tool_result\") {\n const toolMessage = message as SDKToolResultMessage;\n const outputValue = toolMessage.result ?? toolMessage.error ?? null;\n const safeJson = (() => {\n try {\n // Ensure value is JSON-safe\n return JSON.parse(JSON.stringify(outputValue ?? null));\n } catch {\n return String(outputValue ?? \"\");\n }\n })();\n\n const outputPart: ToolResultPart = {\n type: \"tool-result\",\n toolCallId: toolMessage.tool_call_id,\n toolName: toolMessage.tool_name,\n output:\n typeof safeJson === \"string\"\n ? { type: \"text\", value: safeJson }\n : { type: \"json\", value: safeJson },\n };\n\n return { role: \"tool\", content: [outputPart] };\n }\n\n if (message.type === \"system\") {\n const systemMessage = message as\n | SDKSystemMessage\n | SDKSubmitFinalReminderMessage;\n\n if (systemMessage.subtype === \"submit_final_response_reminder\") {\n return {\n role: \"system\",\n content: (systemMessage as SDKSubmitFinalReminderMessage).message,\n };\n }\n }\n\n // Ignore system/init/result messages for prompt reconstruction\n return null;\n};\n\nconst convertSessionToModelMessages = (\n messages: SDKMessage[]\n): ModelMessage[] =>\n messages\n .map((m) => sdkMessageToModelMessage(m))\n .filter((m): m is ModelMessage => Boolean(m));\n\n// Minimal async message queue to emit step-level events without token buffering\nfunction createMessageQueue<T>() {\n const queue: T[] = [];\n let resolver: ((value: T | typeof DONE) => void) | null = null;\n let closed = false;\n const DONE = Symbol(\"done\");\n\n const close = () => {\n if (closed) return;\n closed = true;\n if (resolver) {\n const r = resolver;\n resolver = null;\n r(DONE);\n }\n };\n\n return {\n enqueue(item: T) {\n if (closed) return;\n if (resolver) {\n const r = resolver;\n resolver = null;\n r(item);\n } else {\n queue.push(item);\n }\n },\n close,\n isClosed() {\n return closed;\n },\n async *iterable() {\n while (true) {\n if (queue.length > 0) {\n yield queue.shift() as T;\n continue;\n }\n if (closed) return;\n const next = await new Promise<T | typeof DONE>((resolve) => {\n resolver = resolve;\n });\n if (next === DONE) return;\n yield next as T;\n }\n },\n };\n}\n\n/**\n * Helper function to convert model string to LanguageModel object\n * Supports formats like \"openai/gpt-4\", \"anthropic/claude-3-5-sonnet\", etc.\n */\nconst PROVIDER_MODULES: Record<\n string,\n { moduleName: string; factoryExport: string }\n> = {\n anthropic: { moduleName: \"@ai-sdk/anthropic\", factoryExport: \"anthropic\" },\n claude: { moduleName: \"@ai-sdk/anthropic\", factoryExport: \"anthropic\" },\n openai: { moduleName: \"@ai-sdk/openai\", factoryExport: \"openai\" },\n gpt: { moduleName: \"@ai-sdk/openai\", factoryExport: \"openai\" },\n};\n\ntype DebugLogger = {\n debug: (...args: unknown[]) => void;\n info: (...args: unknown[]) => void;\n warn: (...args: unknown[]) => void;\n error: (...args: unknown[]) => void;\n};\n\nconst createDebugLogger = (\n enabled: boolean,\n prefix = \"agent\"\n): DebugLogger => ({\n debug: (...args: unknown[]) => {\n if (!enabled) return;\n console.debug(`[agent-sdk:${prefix}]`, ...args);\n },\n info: (...args: unknown[]) => {\n if (!enabled) return;\n console.info(`[agent-sdk:${prefix}]`, ...args);\n },\n warn: (...args: unknown[]) => {\n if (!enabled) return;\n console.warn(`[agent-sdk:${prefix}]`, ...args);\n },\n error: (...args: unknown[]) => {\n if (!enabled) return;\n console.error(`[agent-sdk:${prefix}]`, ...args);\n },\n});\n\nclass QueryConfigurationError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"QueryConfigurationError\";\n }\n}\n\nasync function withTimeout<T>(\n promise: Promise<T>,\n ms: number,\n label: string\n): Promise<T> {\n let timeoutHandle: NodeJS.Timeout;\n\n const timeoutPromise = new Promise<never>((_, reject) => {\n timeoutHandle = setTimeout(() => {\n reject(new Error(`${label} timed out after ${ms}ms`));\n }, ms);\n });\n\n try {\n return await Promise.race([promise, timeoutPromise]);\n } finally {\n clearTimeout(timeoutHandle!);\n }\n}\n\nasync function getLanguageModel(\n modelInput: string | LanguageModel | undefined,\n modelResolver?: ModelResolver\n): Promise<LanguageModel> {\n if (!modelInput && !modelResolver) {\n throw new Error(\n \"Model must be provided as a LanguageModel instance or resolved via options.modelResolver.\"\n );\n }\n\n if (modelInput && typeof modelInput === \"object\") {\n return modelInput as LanguageModel;\n }\n\n const modelString = String(modelInput || \"\").trim();\n\n if (!modelString) {\n throw new Error(\n \"Model identifier is empty. Provide a LanguageModel instance or a non-empty model string.\"\n );\n }\n\n if (modelResolver) {\n const resolved = await modelResolver(modelString);\n if (resolved) {\n return resolved;\n }\n }\n\n if (modelString.includes(\"/\")) {\n const [provider, ...modelParts] = modelString.split(\"/\");\n const modelName = modelParts.join(\"/\");\n const providerConfig = PROVIDER_MODULES[provider.toLowerCase()];\n\n if (providerConfig) {\n try {\n const providerModule = await import(providerConfig.moduleName);\n const factory = (providerModule as Record<string, unknown>)[\n providerConfig.factoryExport\n ];\n\n if (typeof factory === \"function\") {\n return (factory as (name: string) => LanguageModel)(modelName);\n }\n } catch (error) {\n throw new Error(\n `Failed to resolve model \"${modelString}\". Install ${providerConfig.moduleName} or supply options.modelResolver to return a LanguageModel instance. Underlying error: ${error}`\n );\n }\n }\n }\n\n throw new Error(\n `Unable to resolve model \"${modelString}\". Pass a LanguageModel instance to options.model or supply options.modelResolver to handle string identifiers.`\n );\n}\n\ninterface SessionData {\n id: string;\n messages: SDKMessage[];\n tools?: Record<string, Tool>;\n createdAt: Date;\n updatedAt: Date;\n mcpManager?: MCPManager;\n workingDirectory?: string;\n environmentVariables?: Record<string, string>;\n}\n\n/**\n * Main query function that creates an async generator to stream messages\n * Compatible with the Claude Agents SDK interface\n */\nexport function query({\n prompt,\n options = {},\n}: {\n prompt: PromptInput;\n options?: Options;\n}): Query {\n const sessionId = options.resume || uuidv4();\n const abortController = options.abortController || new AbortController();\n const debugEnabled = Boolean(options.debug || process.env.DEBUG);\n const logDebug = createDebugLogger(debugEnabled).debug;\n\n // Create the async generator\n async function* messageGenerator(): AsyncGenerator<SDKMessage, void> {\n // Declare session outside try block so it's accessible in finally\n let session: SessionData | undefined;\n\n const storedImageIds: string[] = [];\n const liveQueue = createMessageQueue<SDKMessage>();\n const emittedToolCallIds = new Set<string>();\n const emittedToolResultIds = new Set<string>();\n let textBuffer = \"\";\n let stopResultEmitted = false;\n let sawToolCall = false;\n let sawAssistantText = false;\n\n try {\n logDebug(\"Starting query\", {\n sessionId,\n resume: Boolean(options.resume),\n streaming: Boolean(options.useStreaming),\n });\n\n // Create or retrieve session\n session = sessions.get(sessionId);\n\n // Try loading from external persistence if not in memory\n if (!session && options.resume && options.loadSession) {\n try {\n const loaded = await options.loadSession(sessionId);\n if (loaded) {\n session = {\n id: sessionId,\n messages: loaded.messages,\n createdAt: new Date(),\n updatedAt: new Date(),\n };\n sessions.set(sessionId, session);\n logDebug(\"Loaded session from persistence\", { sessionId });\n }\n } catch (error) {\n console.warn(\n `Failed to load session ${sessionId} from persistence:`,\n error\n );\n }\n }\n\n // Create new session if not found\n if (!session) {\n session = {\n id: sessionId,\n messages: [],\n createdAt: new Date(),\n updatedAt: new Date(),\n };\n sessions.set(sessionId, session);\n logDebug(\"Created new session\", { sessionId });\n }\n\n const transformOutgoingMessage = async <T extends SDKMessage>(\n message: T\n ): Promise<T> => {\n if (!options.transformMessage) {\n return message;\n }\n\n try {\n const transformed = await options.transformMessage(message);\n return (transformed ?? message) as T;\n } catch (error) {\n console.warn(\n \"[Northflare Agent SDK] transformMessage hook failed; using original message\",\n error\n );\n return message;\n }\n };\n\n const recordMessage = async <T extends SDKMessage>(\n message: T\n ): Promise<T> => {\n if (!session) {\n throw new Error(\"Session not initialized while recording message\");\n }\n\n const nextMessage = await transformOutgoingMessage(message);\n session.messages.push(nextMessage);\n return nextMessage;\n };\n\n // Initialize MCP servers if provided\n let mcpServerStatuses: Array<{ name: string; status: string }> = [];\n if (options.mcpServers && Object.keys(options.mcpServers).length > 0) {\n const mcpInitTimeoutMs = options.mcpInitTimeoutMs ?? 20000;\n const mcpInitFailureMode = options.mcpInitFailureMode ?? \"continue\";\n\n // Create MCP manager if not in session\n if (!session.mcpManager) {\n session.mcpManager = new MCPManager(options.mcpServers, {\n onElicitationRequest:\n options.onElicitationRequest ||\n (async (\n serverName: string,\n request: any\n ): Promise<ElicitationResponse> => {\n // Default elicitation handler - declines all requests\n console.log(\n `MCP server ${serverName} requested elicitation:`,\n request\n );\n return {\n action: \"decline\",\n };\n }),\n logger: debugEnabled ? createDebugLogger(true, \"mcp\") : undefined,\n logLevel: debugEnabled ? \"debug\" : undefined,\n toolLoadTimeoutMs: options.mcpToolLoadTimeoutMs,\n toolLoadMode: options.mcpToolLoadMode,\n failOnError: mcpInitFailureMode === \"error\",\n });\n\n logDebug(\"Initializing MCP servers\", {\n servers: Object.keys(options.mcpServers),\n });\n\n // Explicit debug log for runner comparisons (not filtered by logLevel)\n console.log(\"[agent-sdk:mcp] initialize.start\", {\n sessionId,\n servers: Object.keys(options.mcpServers),\n });\n\n // Initialize all MCP servers unless running in a test environment where\n // external processes may not be available. In tests we optimistically\n // treat servers as loaded to avoid long connection attempts.\n if (process.env.NODE_ENV !== \"test\") {\n const mcpStart = Date.now();\n let initError: unknown;\n const initPromise = session.mcpManager.initialize();\n\n try {\n await withTimeout(\n initPromise,\n mcpInitTimeoutMs,\n \"MCP initialization\"\n );\n } catch (error) {\n initError = error;\n console.warn(\"[agent-sdk:mcp] initialize.failed\", {\n sessionId,\n durationMs: Date.now() - mcpStart,\n error: (error as Error)?.message ?? error,\n });\n\n if (mcpInitFailureMode === \"error\") {\n throw error;\n }\n }\n\n // Avoid unhandled rejections if we timed out but the promise later settles.\n initPromise.catch((lateError) => {\n if (!initError) {\n console.warn(\n \"[agent-sdk:mcp] initialize.late-error\",\n lateError\n );\n }\n });\n\n console.log(\"[agent-sdk:mcp] initialize.complete\", {\n sessionId,\n durationMs: Date.now() - mcpStart,\n statuses: session.mcpManager.getServerStatuses(),\n });\n }\n }\n\n // Get server statuses for reporting\n if (process.env.NODE_ENV === \"test\") {\n mcpServerStatuses = Object.keys(options.mcpServers).map((name) => ({\n name,\n status: \"loaded\",\n }));\n } else {\n mcpServerStatuses = session.mcpManager\n .getServerStatuses()\n .map((s) => ({\n name: s.name,\n status:\n s.status === \"connected\"\n ? \"loaded\"\n : s.status === \"error\"\n ? \"error\"\n : \"error\", // connecting/unknown treated as error to avoid silent hangs\n }));\n\n if (mcpInitFailureMode === \"error\") {\n const failed = mcpServerStatuses.filter(\n (s) => s.status === \"error\"\n );\n if (failed.length > 0) {\n const names = failed.map((s) => s.name).join(\", \");\n throw new Error(`MCP initialization failed for: ${names}`);\n }\n }\n }\n }\n\n if (debugEnabled) {\n logDebug(\"MCP server statuses\", mcpServerStatuses);\n }\n\n // Yield system init message first\n const systemMessage: SDKSystemMessage = {\n type: \"system\",\n subtype: \"init\",\n uuid: uuidv4(),\n session_id: sessionId,\n apiKeySource: \"user\", // Default for now\n cwd: options.cwd || process.cwd(),\n tools: options.allowedTools || [],\n mcp_servers: mcpServerStatuses,\n model:\n typeof options.model === \"string\"\n ? options.model\n : options.model\n ? (options.model as any).modelId || \"mock-model\"\n : \"model-not-set\",\n slash_commands: [], // Not implemented yet\n output_style: \"markdown\",\n };\n yield await recordMessage(systemMessage);\n\n // Handle prompt input\n let userMessage: SDKUserMessage;\n if (typeof prompt === \"string\" || Array.isArray(prompt)) {\n const content = typeof prompt === \"string\" ? prompt : prompt;\n userMessage = {\n type: \"user\",\n uuid: uuidv4(),\n session_id: sessionId,\n message: {\n role: \"user\",\n content,\n },\n parent_tool_use_id: null,\n };\n // Don't yield user message - the orchestrator already handles it in the database\n // This prevents duplicate user messages from appearing\n // yield userMessage;\n userMessage = await recordMessage(userMessage);\n } else {\n // Handle async iterable prompt (streaming mode)\n // The ToolLoopAgent only needs the initial user message(s) to begin execution.\n // Previously we waited for the stream to end, which never happens for\n // our openrouter conversations (the runner keeps the queue open for\n // follow-up messages). That left the agent idle and resulted in \"no\n // response\" logs.\n //\n // We drain ALL initially-queued user messages (e.g., ProjectSteps send\n // multiple: step number + objective/status context) and record each one\n // separately to the session. The Vercel AI SDK will receive them as\n // separate messages in the conversation history.\n const promptIterator =\n typeof (prompt as any)?.[Symbol.asyncIterator] === \"function\"\n ? (prompt as any)[Symbol.asyncIterator]()\n : (prompt as any);\n\n // Collect all user messages (recorded separately, not concatenated)\n const collectedUserMessages: SDKUserMessage[] = [];\n\n // Drain all initially-queued messages using __queueHasMore metadata.\n // The runner's createUserMessageStream() attaches this metadata to each\n // yielded message to indicate if more items remain in the queue.\n for await (const msg of promptIterator) {\n logDebug(\"Received message from prompt iterator\", {\n type: msg.type,\n __queueHasMore: (msg as any).__queueHasMore,\n contentPreview:\n typeof msg.message?.content === \"string\"\n ? msg.message.content.slice(0, 100)\n : JSON.stringify(msg.message?.content)?.slice(0, 100),\n });\n\n if (msg.type === \"user\") {\n const content = msg.message?.content;\n const hasToolResult =\n Array.isArray(content) &&\n content.some((item: any) => item?.type === \"tool_result\");\n\n if (hasToolResult) {\n // Tool result messages need to be yielded for processing\n const recordedToolResult = await recordMessage(msg as SDKMessage);\n yield recordedToolResult;\n }\n\n // Record this user message separately\n const recorded = (await recordMessage(\n msg as SDKMessage\n )) as SDKUserMessage;\n collectedUserMessages.push(recorded);\n logDebug(\"Recorded user message\", {\n totalCollected: collectedUserMessages.length,\n hasMore: (msg as any).__queueHasMore,\n });\n\n // Check if there are more messages in the queue using metadata\n // If __queueHasMore is true, continue iterating to get all initial messages\n if (!(msg as any).__queueHasMore) {\n // No more messages in queue - stop draining\n logDebug(\"No more messages in queue, stopping drain\", {\n totalUserMessages: collectedUserMessages.length,\n });\n break;\n }\n // Otherwise, continue the for-await loop to get the next message\n } else {\n // Yield non-user messages (assistant, system, etc.)\n const recorded = await recordMessage(msg as SDKMessage);\n yield recorded;\n\n // Also check __queueHasMore for non-user messages\n if (!(msg as any).__queueHasMore) {\n break;\n }\n }\n }\n\n logDebug(\"Finished collecting initial messages\", {\n totalUserMessages: collectedUserMessages.length,\n });\n\n // Close the iterator so we don't block waiting for more input\n if (typeof promptIterator.return === \"function\") {\n try {\n await promptIterator.return();\n } catch {\n // Best-effort close; ignore failures\n }\n }\n\n // Use the first user message as the canonical userMessage for downstream logic\n // All messages are already recorded in session and will be passed to the agent\n if (collectedUserMessages.length > 0) {\n userMessage = collectedUserMessages[0];\n }\n }\n\n if (!userMessage) {\n throw new QueryConfigurationError(\n \"Prompt stream ended without a user message; cannot start agent\"\n );\n }\n\n // Execute the agent with real AI SDK\n const startTime = Date.now();\n let apiTime = 0;\n let numTurns = 0;\n let totalInputTokens = 0;\n let totalOutputTokens = 0;\n let totalCacheCreationTokens = 0;\n let totalCacheReadTokens = 0;\n let finalText = \"\";\n\n try {\n // Convert prompt to agent format\n const resolvedContent =\n typeof prompt === \"string\" || Array.isArray(prompt)\n ? prompt\n : userMessage!.message.content;\n\n let agentPrompt = resolvedContent;\n\n // Handle vision model options\n const visionModel = options.visionModel;\n const messageContent = resolvedContent;\n\n // Check for images in the content\n const containsImages =\n typeof messageContent !== \"string\" && hasImages(messageContent);\n\n // Process based on vision model configuration\n if (containsImages) {\n if (visionModel === false || visionModel === undefined) {\n // Error: images not supported when vision is disabled\n throw new QueryConfigurationError(\n \"Images are not supported when visionModel is false or undefined. Enable vision by setting visionModel to true or a model string.\"\n );\n } else if (visionModel === true) {\n // Direct vision mode: keep images in the prompt\n // agentPrompt already has the right format\n } else if (typeof visionModel === \"string\") {\n // Tool-based vision mode: extract and store images\n if (!options.saveImage || !options.loadImage) {\n throw new QueryConfigurationError(\n \"saveImage and loadImage functions are required when using tool-based vision mode\"\n );\n }\n\n // Extract images from content\n const images = extractImagesFromContent(messageContent);\n const imageIds: string[] = [];\n\n // Store images and collect IDs\n for (const imageContent of images) {\n const imageId = generateImageId();\n await options.saveImage(imageId, imageContent.image);\n imageIds.push(imageId);\n storedImageIds.push(imageId);\n }\n\n // Replace image content with text references\n if (typeof messageContent !== \"string\") {\n const textParts = messageContent\n .filter((part) => part.type === \"text\")\n .map((part) => (part as any).text)\n .join(\" \");\n const imageRefs =\n imageIds.length > 0\n ? `\\n\\n[User provided ${\n imageIds.length\n } image(s): ${imageIds.join(\", \")}]`\n : \"\";\n agentPrompt = textParts + imageRefs;\n }\n }\n }\n\n // Keep session history aligned with what we actually send to the LLM\n // so that resumed sessions include the real prompt content.\n if (userMessage) {\n userMessage.message.content = agentPrompt;\n }\n\n const agentPromptString =\n typeof agentPrompt === \"string\"\n ? agentPrompt\n : agentPrompt\n .map((part) => (part.type === \"text\" ? part.text : \"\"))\n .join(\"\");\n\n // Store working directory and environment variables in session\n if (!session.workingDirectory) {\n session.workingDirectory = options.cwd || process.cwd();\n }\n if (!session.environmentVariables) {\n session.environmentVariables = options.env;\n }\n\n // Get MCP tools if available\n let mcpTools: Record<string, Tool> = {};\n let effectiveMcpTools: Record<string, Tool> = {};\n\n if (session.mcpManager) {\n mcpTools = session.mcpManager.getTools();\n\n const disallowedMcpTools = new Set(options.disallowedTools ?? []);\n effectiveMcpTools = Object.fromEntries(\n Object.entries(mcpTools).filter(\n ([name]) => !disallowedMcpTools.has(name)\n )\n );\n }\n\n const wantsVisionTool = typeof options.visionModel === \"string\";\n const allToolNames = wantsVisionTool\n ? [...ToolNames, VISION_TOOL_NAME]\n : [...ToolNames];\n\n // Get effective tools list based on allowed/disallowed configuration\n let effectiveTools = options.allowedTools\n ? [...options.allowedTools]\n : [\"*\"];\n\n if (effectiveTools.includes(\"*\")) {\n effectiveTools = allToolNames;\n }\n\n if (options.disallowedTools && options.disallowedTools.length > 0) {\n effectiveTools = effectiveTools.filter(\n (tool) => !options.disallowedTools!.includes(tool)\n );\n }\n\n // Control whether the legacy submit tool is exposed (defaults to true)\n const includeSubmitTool = options.includeSubmitTool !== false;\n\n logDebug(\"Configured tools\", {\n requested: effectiveTools,\n disallowed: options.disallowedTools ?? [],\n mcpTools: Object.keys(effectiveMcpTools),\n visionTool: wantsVisionTool,\n });\n\n // Handle additionalDirectories option\n const additionalDirectories = options.additionalDirectories || [];\n\n // Handle stderr callback\n const stderrCallback = options.stderr;\n\n // Handle outputFormat option for structured outputs\n const structuredOutputSchema =\n options.outputFormat?.type === \"json_schema\"\n ? options.outputFormat.schema\n : undefined;\n\n const structuredOutputValidator = structuredOutputSchema\n ? createStructuredOutputValidator(structuredOutputSchema)\n : undefined;\n\n // Prepare agent configuration\n const maxSteps = options.maxTurns || DEFAULT_MAX_TURNS;\n const workingDirectory =\n session.workingDirectory || options.cwd || process.cwd();\n const environmentVariables =\n session.environmentVariables || options.env;\n\n const externalTools: Record<string, Tool> = {};\n\n // Add vision tool if visionModel is a string and allowed by filters\n if (wantsVisionTool && effectiveTools.includes(VISION_TOOL_NAME)) {\n if (!options.loadImage) {\n throw new QueryConfigurationError(\n \"loadImage function is required when using tool-based vision mode\"\n );\n }\n\n const visionModelInstance = await getLanguageModel(\n options.visionModel,\n options.modelResolver\n );\n Object.assign(\n externalTools,\n createVisionToolWithName(visionModelInstance, options.loadImage)\n );\n }\n\n // Create tools based on the simplified definition\n let tools: Record<string, Tool> = {};\n\n if (effectiveTools.length > 0) {\n const createdTools = createTools(effectiveTools, {\n workingDirectory,\n environmentVariables,\n additionalDirectories,\n stderrCallback,\n agents: options.agents,\n parentOptions: options,\n parentModel:\n typeof options.model === \"string\"\n ? options.model\n : (options.model as any)?.modelId || \"model-not-set\",\n parentTools: effectiveTools,\n externalTools,\n conversationId: options.conversationId as string | undefined,\n conversationObjectId: options.conversationObjectId as string | undefined,\n taskId: options.taskId as string | undefined,\n onTaskProgress: options.onTaskProgress,\n });\n // Wrap legacy tools to v6 format\n const wrappedTools = wrapLegacyTools(createdTools);\n tools = { ...wrappedTools };\n }\n\n if (includeSubmitTool) {\n if (SubmitToolName in tools) {\n throw new Error(\n `Tool name conflict: The Submit tool name \"${SubmitToolName}\" is already used by another tool.`\n );\n }\n tools[SubmitToolName] = wrapLegacyTool(new SubmitTool());\n }\n\n // Note: Tool call messages are now emitted via fullStream events when streaming,\n // so we no longer need to wrap execute() to emit them early.\n\n // Prepare instructions\n const baseInstructions =\n typeof options.systemPrompt === \"string\"\n ? options.systemPrompt\n : options.systemPrompt?.type === \"preset\"\n ? getSystemPrompt(options.systemPrompt.append, options.agents)\n : getSystemPrompt(undefined, options.agents);\n\n const additionalInstructions = getAdditionalInstructions({\n maxSteps,\n allowSubmit: includeSubmitTool,\n tools,\n });\n\n const instructions = baseInstructions\n ? `${baseInstructions.trimEnd()}\\n\\n${additionalInstructions}`\n : additionalInstructions;\n\n // Track whether we've retried a missing-tool error (declared early to avoid TDZ)\n let retriedMissingTool = false;\n let retryReminderAdded = false;\n\n // Reconstruct conversation history so the LLM receives prior turns when resuming\n const modelMessages = convertSessionToModelMessages(session.messages);\n\n logDebug(\"Prepared model messages for agent\", {\n sessionMessagesCount: session.messages.length,\n modelMessagesCount: modelMessages.length,\n modelMessageRoles: modelMessages.map((m) => m.role),\n modelMessagePreviews: modelMessages.map((m) => ({\n role: m.role,\n contentPreview:\n typeof m.content === \"string\"\n ? m.content.slice(0, 80)\n : JSON.stringify(m.content)?.slice(0, 80),\n })),\n });\n\n // Setup stop conditions\n const stopWhen = [\n stepCountIs(maxSteps),\n ...(includeSubmitTool ? [hasToolCall(SubmitToolName)] : []),\n ];\n\n // Create agent settings\n const createAgent = async (instructionsText: string) => {\n const userOnStepFinish = options.onStepFinish;\n\n const agentSettings: ToolLoopAgentSettings<Record<string, Tool>> = {\n model: await getLanguageModel(options.model, options.modelResolver),\n tools,\n instructions: instructionsText,\n stopWhen,\n toolChoice: \"auto\",\n abortSignal: abortController.signal,\n experimental_prepareStep: options.experimental_prepareStep,\n // Note: Message emission is now handled via fullStream events in streaming mode.\n // This callback is kept for user-provided onStepFinish and tracking step counts.\n onStepFinish: async (step) => {\n // Delegate to user callback so they can inspect step data\n if (userOnStepFinish) {\n await userOnStepFinish(step);\n }\n // Track step count for numTurns\n numTurns++;\n },\n experimental_repairToolCall:\n options.experimental_repairToolCall ||\n ((input) => {\n // Default repair strategy using proper JSON repair utility\n const { toolCall, error } = input;\n\n // Log the error for debugging purposes\n if (error) {\n const errorMessage = `Tool call repair needed for ${toolCall.toolName}: ${error.message}`;\n if (options.debug || process.env.DEBUG) {\n console.warn(errorMessage, { toolCall, error });\n }\n }\n\n // Try to fix common JSON parsing issues\n if (\n error?.message?.includes(\"JSON\") ||\n error?.message?.includes(\"parse\")\n ) {\n // Attempt to repair malformed JSON using safe repair utility\n if (typeof toolCall.input === \"string\") {\n const repaired = repairJSON(toolCall.input);\n if (repaired !== null) {\n if (options.debug || process.env.DEBUG) {\n console.log(\n `Successfully repaired JSON for tool ${toolCall.toolName}`\n );\n }\n return { ...toolCall, input: repaired };\n } else {\n // Log failure to repair\n if (options.debug || process.env.DEBUG) {\n console.warn(\n `Failed to repair JSON for tool ${toolCall.toolName}, returning original`\n );\n }\n }\n }\n }\n\n // Return original tool call if repair fails or isn't applicable\n return toolCall;\n }),\n activeTools: options.activeTools\n ? (options.activeTools as string[])\n : undefined,\n };\n\n logDebug(\"Creating agent\", {\n maxSteps,\n activeTools: agentSettings.activeTools,\n toolCount: Object.keys(agentSettings.tools).length,\n });\n\n const newAgent = new ToolLoopAgent(agentSettings);\n\n // Merge MCP tools if available\n if (Object.keys(effectiveMcpTools).length > 0) {\n // Include MCP tools in the agent's tools\n Object.assign(newAgent.tools, effectiveMcpTools);\n }\n\n return newAgent;\n };\n\n let agent = await createAgent(instructions);\n // Choose between streaming and non-streaming based on option\n let result;\n let structuredOutput: unknown = undefined;\n\n const resetRunState = () => {\n result = undefined;\n structuredOutput = undefined;\n finalText = \"\";\n textBuffer = \"\";\n totalInputTokens = 0;\n totalOutputTokens = 0;\n numTurns = 0;\n emittedToolCallIds.clear();\n emittedToolResultIds.clear();\n };\n\n // Configure output for structured results if schema is provided\n const agentOutput = structuredOutputSchema\n ? { schema: structuredOutputSchema }\n : options.output;\n\n const shouldRetryMissingTool = (error: unknown) => {\n const message = (error as any)?.message || String(error);\n\n if (typeof message === \"string\") {\n if (\n message.includes(\"Tool choice is required\") &&\n message.includes(\"did not call a tool\")\n ) {\n return true;\n }\n\n // Newer AI SDK wording for missing tool calls\n if (message.includes(\"Failed to call a function\")) return true;\n }\n\n // Fallback: if the error carries a failed_generation.reason hinting no tools were used\n const failedGen = (error as any)?.failed_generation;\n if (failedGen && typeof failedGen === \"object\") {\n const reason = failedGen.reason || failedGen.message || \"\";\n if (typeof reason === \"string\" && reason.includes(\"tool\"))\n return true;\n }\n\n return false;\n };\n\n // Helper functions for emitting messages from stream events\n const emitToolCall = async (tc: any, modelId: string) => {\n const toolCallId = tc.toolCallId || tc.id || uuidv4();\n if (emittedToolCallIds.has(toolCallId)) return;\n sawToolCall = true;\n\n const assistantMsg: SDKAssistantMessage = {\n type: \"assistant\",\n uuid: uuidv4(),\n session_id: sessionId,\n message: {\n id: uuidv4(),\n type: \"message\",\n role: \"assistant\",\n model: modelId || (typeof options.model === \"string\" ? options.model : \"\"),\n content: [\n {\n type: \"tool_use\" as const,\n id: toolCallId,\n name: tc.toolName || tc.name || \"unknown_tool\",\n input: tc.input ?? tc.args ?? {},\n },\n ],\n stop_reason: \"tool_use\",\n stop_sequence: null,\n },\n parent_tool_use_id: null,\n };\n\n const recorded = await recordMessage(assistantMsg);\n emittedToolCallIds.add(toolCallId);\n liveQueue.enqueue(recorded);\n };\n\n const emitToolResult = async (tr: any) => {\n const toolCallId = tr.toolCallId || tr.id || uuidv4();\n if (emittedToolResultIds.has(toolCallId)) return;\n\n const toolResultMessage: SDKToolResultMessage = {\n type: \"tool_result\",\n uuid: uuidv4(),\n session_id: sessionId,\n tool_call_id: toolCallId,\n tool_name: tr.toolName || tr.name || \"unknown_tool\",\n result: tr.output ?? tr.result ?? null,\n error: tr.error,\n parent_tool_use_id: null,\n };\n\n const recorded = await recordMessage(toolResultMessage);\n emittedToolResultIds.add(toolCallId);\n liveQueue.enqueue(recorded);\n };\n\n const emitBufferedText = async (modelId: string, usage?: any) => {\n if (!textBuffer) return;\n const text = textBuffer;\n textBuffer = \"\";\n sawAssistantText = true;\n\n const assistantMsg: SDKAssistantMessage = {\n type: \"assistant\",\n uuid: uuidv4(),\n session_id: sessionId,\n message: {\n id: uuidv4(),\n type: \"message\",\n role: \"assistant\",\n model: modelId || (typeof options.model === \"string\" ? options.model : \"\"),\n content: [{ type: \"text\" as const, text }],\n stop_reason: \"step\",\n stop_sequence: null,\n usage: usage\n ? {\n input_tokens: usage.inputTokens || 0,\n output_tokens: usage.outputTokens || 0,\n }\n : undefined,\n },\n parent_tool_use_id: null,\n };\n\n const recorded = await recordMessage(assistantMsg);\n liveQueue.enqueue(recorded);\n };\n\n while (true) {\n try {\n logDebug(\"Invoking agent\", {\n streaming: true,\n visionModel: options.visionModel,\n });\n\n // Use streaming to get real-time events\n const streamPayload =\n modelMessages.length > 0\n ? { messages: modelMessages }\n : { prompt: agentPromptString };\n\n let agentError: any = null;\n let streamResult: any = null;\n let currentModelId = typeof options.model === \"string\" ? options.model : \"\";\n\n const agentRun = (async () => {\n streamResult = await agent.stream({\n ...streamPayload,\n ...(agentOutput && { output: agentOutput }),\n });\n\n // Process fullStream events to emit messages immediately\n for await (const event of streamResult.fullStream) {\n if (abortController.signal.aborted) break;\n\n switch (event.type) {\n case \"text-delta\":\n // Buffer text deltas internally\n // AI SDK fullStream uses 'textDelta' property for text-delta events\n textBuffer += (event as any).textDelta || (event as any).text || (event as any).delta || \"\";\n break;\n\n case \"text-end\":\n // Emit buffered text as a complete message\n await emitBufferedText(currentModelId);\n break;\n\n case \"tool-call\":\n // Emit tool call immediately\n await emitToolCall(event, currentModelId);\n break;\n\n case \"tool-result\":\n // Emit tool result immediately\n await emitToolResult(event);\n break;\n\n case \"finish-step\":\n // Emit any remaining buffered text at step end\n if (textBuffer) {\n await emitBufferedText(currentModelId, (event as any).usage);\n }\n break;\n\n case \"finish\":\n // Final finish event - capture usage\n const finishEvent = event as any;\n if (finishEvent.usage) {\n totalInputTokens = finishEvent.usage.inputTokens || 0;\n totalOutputTokens = finishEvent.usage.outputTokens || 0;\n }\n // Emit any remaining buffered text\n if (textBuffer) {\n await emitBufferedText(currentModelId, finishEvent.usage);\n }\n break;\n\n case \"error\":\n // Handle error events\n agentError = (event as any).error || new Error(\"Stream error\");\n break;\n }\n }\n\n // Get the final result for usage and text\n result = await streamResult;\n\n // Close the queue after stream processing completes\n liveQueue.close();\n })().catch((err) => {\n // If we already emitted a stop result, suppress abort errors\n if (stopResultEmitted) {\n liveQueue.close();\n } else {\n agentError = err;\n liveQueue.close();\n }\n });\n\n // Yield messages as they are enqueued by stream event processing\n for await (const emitted of liveQueue.iterable()) {\n yield emitted;\n }\n\n await agentRun;\n if (agentError) throw agentError;\n\n // Ensure the queue is closed so consumers don't hang if nothing else is enqueued\n if (!liveQueue.isClosed()) {\n liveQueue.close();\n }\n\n break;\n } catch (error) {\n if (!retriedMissingTool && shouldRetryMissingTool(error)) {\n retriedMissingTool = true;\n resetRunState();\n\n const retryInstructions =\n `${instructions}\\n\\nRETRY: You must call at least one tool in this turn. ` +\n `If you want to end, call the submit tool with { \"result\": \"<final user message>\" }. ` +\n `Do not reply with plain text without a tool call.`;\n agent = await createAgent(retryInstructions);\n logDebug(\"Retrying after missing tool call from model\");\n continue;\n }\n\n throw error;\n }\n }\n\n // Process and emit results\n const endedWithNonToolMessage =\n !stopResultEmitted &&\n !sawToolCall &&\n (sawAssistantText || Boolean(result?.text?.trim?.()));\n\n if (endedWithNonToolMessage) {\n const reminderMessage: SDKSubmitFinalReminderMessage = {\n type: \"system\",\n subtype: \"submit_final_response_reminder\",\n uuid: uuidv4(),\n session_id: sessionId,\n message:\n \"Reminder: finish by calling the submit_final_response tool with your final answer instead of sending plain text messages.\",\n };\n\n const recordedReminder = await recordMessage(reminderMessage);\n yield recordedReminder;\n }\n\n // Extract structured output if schema was provided\n if (structuredOutputSchema && result?.object) {\n try {\n structuredOutput = result.object;\n if (structuredOutputValidator) {\n const validation =\n structuredOutputValidator.validate(structuredOutput);\n\n if (!validation.valid) {\n const errorDetails = validation.errors.join(\"; \");\n const warningMessage = errorDetails\n ? `Structured output does not match schema: ${errorDetails}`\n : \"Structured output does not match schema\";\n\n console.warn(warningMessage);\n structuredOutput = undefined;\n }\n }\n } catch (error) {\n console.warn(\"Failed to parse structured output:\", error);\n }\n }\n\n if (stopResultEmitted) {\n // Already emitted a success result; avoid sending another\n return;\n }\n\n // numTurns is tracked via onStepFinish callback\n\n // Yield intermediate tool call messages from steps (skip if already streamed)\n // Track usage if available\n if (result.usage) {\n totalInputTokens = result.usage.inputTokens || 0;\n totalOutputTokens = result.usage.outputTokens || 0;\n // Note: Agent result doesn't have latencyMs or separate cache token counts\n }\n\n logDebug(\"Agent completed\", {\n textLength: finalText.length,\n structuredOutput: Boolean(structuredOutput),\n totalInputTokens,\n totalOutputTokens,\n });\n\n // Update final text from result\n if (result.text) {\n finalText = result.text;\n }\n\n // Yield success result message\n const usage: NonNullableUsage = {\n input_tokens: totalInputTokens,\n output_tokens: totalOutputTokens,\n cache_creation_input_tokens: totalCacheCreationTokens,\n cache_read_input_tokens: totalCacheReadTokens,\n };\n\n const reachedMaxTurns =\n options.maxTurns !== undefined && numTurns >= options.maxTurns;\n\n const rawResponse =\n options.returnRawResponse && (result as any)?.response\n ? toJsonSafe((result as any).response)\n : undefined;\n\n const resultMessage: SDKResultMessage = {\n type: \"result\",\n subtype:\n reachedMaxTurns && !finalText ? \"error_max_turns\" : \"success\",\n uuid: uuidv4(),\n session_id: sessionId,\n duration_ms: Date.now() - startTime,\n duration_api_ms: apiTime,\n is_error: false,\n num_turns: numTurns,\n result: finalText,\n ...(structuredOutput && { structured_output: structuredOutput }),\n ...(rawResponse !== undefined ? { raw_response: rawResponse } : {}),\n usage,\n permission_denials: [],\n };\n const recordedResult = await recordMessage(resultMessage);\n // Yield directly since the queue is already closed after stream processing\n yield recordedResult;\n } catch (error) {\n if (error instanceof QueryConfigurationError) {\n throw error;\n }\n\n logDebug(\"Agent execution failed\", error);\n // Yield error result message\n const usage: NonNullableUsage = {\n input_tokens: totalInputTokens,\n output_tokens: totalOutputTokens,\n cache_creation_input_tokens: totalCacheCreationTokens,\n cache_read_input_tokens: totalCacheReadTokens,\n };\n\n // Extract error message\n let errorMsg = \"Unknown error occurred\";\n if (error instanceof Error) {\n errorMsg = error.message;\n } else if (typeof error === \"string\") {\n errorMsg = error;\n } else if (error && typeof error === \"object\" && \"toString\" in error) {\n errorMsg = error.toString();\n }\n\n const errorMessage: SDKResultMessage = {\n type: \"result\",\n subtype: \"error_during_execution\",\n uuid: uuidv4(),\n session_id: sessionId,\n duration_ms: Date.now() - startTime,\n duration_api_ms: apiTime,\n is_error: true,\n num_turns: numTurns,\n usage,\n permission_denials: [],\n ...(options.returnRawResponse && (result as any)?.response\n ? { raw_response: toJsonSafe((result as any).response) }\n : {}),\n error_message: errorMsg, // Include the actual error message\n };\n const recordedError = await recordMessage(errorMessage);\n // Yield directly since the queue may already be closed\n yield recordedError;\n }\n } finally {\n // Best-effort cleanup of stored images for tool-based vision mode\n if (storedImageIds.length > 0 && options.deleteImage) {\n await Promise.all(\n storedImageIds.map(async (id) => {\n try {\n await options.deleteImage!(id);\n } catch (cleanupError) {\n console.warn(\n `Failed to delete stored image ${id}:`,\n cleanupError\n );\n }\n })\n );\n }\n\n // Update session\n if (session) {\n session.updatedAt = new Date();\n\n // Save to external persistence if provided\n if (options.saveSession) {\n try {\n logDebug(\"Saving session to persistence\", { sessionId });\n await options.saveSession(sessionId, session.messages);\n } catch (error) {\n console.warn(\n `Failed to save session ${sessionId} to persistence:`,\n error\n );\n }\n }\n\n // Clean up MCP manager if this is the end of the session\n // (In a real implementation, you might want to keep it alive for session resumption)\n if (session.mcpManager && !options.resume) {\n logDebug(\"Closing MCP manager for session\", { sessionId });\n await session.mcpManager.close();\n }\n }\n }\n }\n\n // Create the Query object with interrupt method\n const generator = messageGenerator();\n\n const query: Query = Object.assign(generator, {\n async interrupt(): Promise<void> {\n abortController.abort();\n },\n });\n\n return query;\n}\n\n/**\n * Helper function to calculate cost based on usage and model\n */\n\n/**\n * Helper function to get system prompt\n */\nfunction getSystemPrompt(\n append?: string,\n agents?: Record<string, AgentDefinition | undefined>\n): string {\n const basePrompt = `You are Northflare Agent, an AI assistant specialized in software development.\n\n## Your Capabilities\n- Read files and explore directory structures\n- Write new files and edit existing ones\n- Run shell commands and execute code\n- Search for patterns using glob and grep\n- Analyze codebases and suggest improvements\n- Debug issues and provide solutions\n- Write tests and documentation\n\n## Best Practices\n- Always read files before editing them to understand the current state\n- Use appropriate tools for each task (e.g., grep for searching, glob for finding files)\n- Provide clear explanations of what you're doing and why\n- Write clean, efficient, and well-documented code\n- Consider security implications and best practices\n- Be proactive in identifying potential issues\n\n## Communication Style\n- Be concise and direct in your responses\n- Use code blocks with appropriate syntax highlighting\n- Explain complex concepts clearly\n- Ask for clarification when requirements are ambiguous`;\n\n const agentEntries = agents\n ? Object.entries(agents)\n .filter(([_, def]) => Boolean(def))\n .map(([name, def]) => ({\n name,\n description:\n (def?.description && def.description.trim()) ||\n `Use agentType \"${name}\" when it best fits the task requirements.`,\n }))\n : [];\n\n const agentSection = agentEntries.length\n ? `\\n\\n## Task Agent Types\\nWhen using the task tool, always set the required \\\"agentType\\\" field to one of the values below:\\n${agentEntries\n .map((entry) => `- ${entry.name}: ${entry.description}`)\n .join(\"\\n\")}`\n : \"\";\n\n const promptWithAgents = agentSection\n ? `${basePrompt}${agentSection}`\n : basePrompt;\n\n return append ? `${promptWithAgents}\\n\\n${append}` : promptWithAgents;\n}\n\n// Exposed for unit tests\nexport const __testGetSystemPrompt = getSystemPrompt;\n\n/**\n * Streaming query function for real-time agent responses\n * Provides enhanced streaming capabilities with the new ToolLoopAgent\n */\nexport async function* streamQuery({\n prompt,\n options = {},\n}: {\n prompt: string | AsyncIterable<SDKUserMessage>;\n options?: StreamingOptions;\n}): AsyncGenerator<SDKMessage, void> {\n // Use the main query function with streaming enabled\n const streamingOptions = {\n ...options,\n useStreaming: true,\n };\n\n const generator = query({ prompt, options: streamingOptions });\n\n // Pass through all messages from the generator\n for await (const message of generator) {\n yield message;\n }\n}\n\n/**\n * Create a UI-compatible stream for agent responses\n * This is useful for integrating with frontend frameworks\n */\nexport async function createAgentUIStream({\n prompt,\n options = {},\n}: {\n prompt: string;\n options?: Options;\n}): Promise<ReadableStream<SDKMessage>> {\n // Note: sessionId is handled internally by the query function when needed\n\n return new ReadableStream({\n async start(controller) {\n try {\n const generator = query({ prompt, options });\n\n for await (const message of generator) {\n controller.enqueue(message);\n }\n\n controller.close();\n } catch (error) {\n controller.error(error);\n }\n },\n });\n}\n","import type { Tool } from \"ai\";\nimport { jsonSchema } from \"ai\";\nimport { z as z4 } from \"zod\";\nimport { z as z3 } from \"zod-v3\";\nimport { Client } from \"@modelcontextprotocol/sdk/client/index.js\";\nimport { StdioClientTransport } from \"@modelcontextprotocol/sdk/client/stdio.js\";\nimport { StreamableHTTPClientTransport } from \"@modelcontextprotocol/sdk/client/streamableHttp.js\";\nimport { SSEClientTransport } from \"@modelcontextprotocol/sdk/client/sse.js\";\nimport type { Transport } from \"@modelcontextprotocol/sdk/shared/transport.js\";\nimport {\n CallToolResultSchema,\n GetPromptResultSchema,\n ListPromptsResultSchema,\n ListResourceTemplatesResultSchema,\n ListResourcesResultSchema,\n ListToolsResultSchema,\n ReadResourceResultSchema,\n type ClientRequest,\n} from \"@modelcontextprotocol/sdk/types.js\";\nimport type {\n McpSdkServerConfigWithInstance,\n McpServerConfig,\n McpStdioServerConfig,\n McpSSEServerConfig,\n} from \"./sdk-types\";\n\nconst isObjectJsonSchema = (schema: any): schema is Record<string, unknown> =>\n !!schema &&\n typeof schema === \"object\" &&\n ((schema as any).type === \"object\" ||\n typeof (schema as any).properties === \"object\");\n\nconst normalizeJsonSchemaObject = (\n schema: unknown\n): Record<string, unknown> => {\n if (isObjectJsonSchema(schema)) {\n // Ensure a type field is present and correct\n return {\n type: \"object\",\n properties: {},\n ...(schema as Record<string, unknown>),\n };\n }\n return { type: \"object\", properties: {} };\n};\n\nexport interface MCPTransport {\n start(): Promise<void>;\n close(): Promise<void>;\n send(message: unknown): Promise<void>;\n onMessage(handler: (message: unknown) => void): void;\n onError(handler: (error: Error) => void): void;\n onClose(handler: () => void): void;\n}\n\n// OAuth provider for authentication\nexport interface OAuthClientProvider {\n getAccessToken(): Promise<string>;\n refreshToken?(): Promise<string>;\n}\n\n// MCP Client configuration\nexport interface MCPClientConfig {\n transport:\n | MCPTransport\n | {\n type: \"http\";\n url: string;\n headers?: Record<string, string>;\n authProvider?: OAuthClientProvider;\n }\n | {\n type: \"sse\";\n url: string;\n headers?: Record<string, string>;\n authProvider?: OAuthClientProvider;\n }\n | {\n type: \"stdio\";\n command: string;\n args?: string[];\n env?: Record<string, string>;\n }\n | {\n type: \"sdk\";\n name?: string;\n server: McpSdkServerConfigWithInstance[\"instance\"];\n };\n capabilities?: {\n elicitation?: {};\n };\n /**\n * Optional timeout for individual MCP RPC calls (in milliseconds).\n */\n requestTimeoutMs?: number;\n}\n\n// MCP Resource types\nexport interface MCPResource {\n uri: string;\n name?: string;\n description?: string;\n mimeType?: string;\n}\n\nexport interface MCPResourceTemplate {\n uriTemplate: string;\n name?: string;\n description?: string;\n mimeType?: string;\n parameters?: Record<string, unknown>;\n}\n\nexport interface MCPResourceContent {\n uri: string;\n mimeType?: string;\n text?: string;\n blob?: string;\n}\n\n// MCP Prompt types\nexport interface MCPPrompt {\n name: string;\n description?: string;\n arguments?: Array<{\n name: string;\n description?: string;\n required?: boolean;\n }>;\n}\n\nexport interface MCPPromptMessage {\n role: \"user\" | \"assistant\" | \"system\";\n content: {\n type: \"text\" | \"image\" | \"resource\";\n text?: string;\n data?: string;\n mimeType?: string;\n };\n}\n\n// Elicitation types (legacy + current)\nexport interface ElicitationRequest {\n id: string;\n method: \"sampling/elicitResponse\" | \"elicitation/create\";\n params: {\n message?: string;\n requestedSchema?: unknown;\n prompt?: string;\n };\n}\n\nexport interface ElicitationResponse {\n action: \"accept\" | \"decline\" | \"cancel\";\n content?: unknown;\n}\n\nexport type ElicitationHandler = (\n request: ElicitationRequest\n) => Promise<ElicitationResponse>;\n\n// MCP Client interface\nexport interface MCPClient {\n start(): Promise<void>;\n close(): Promise<void>;\n isConnected(): boolean;\n\n tools(options?: {\n schemas?: Record<\n string,\n {\n inputSchema: z3.ZodType<unknown>;\n }\n >;\n }): Promise<Record<string, Tool>>;\n\n listResources(options?: { cursor?: string }): Promise<{\n resources: MCPResource[];\n nextCursor?: string;\n }>;\n\n readResource(params: { uri: string }): Promise<MCPResourceContent>;\n\n listResourceTemplates(options?: { cursor?: string }): Promise<{\n resourceTemplates: MCPResourceTemplate[];\n nextCursor?: string;\n }>;\n\n listPrompts(options?: { cursor?: string }): Promise<{\n prompts: MCPPrompt[];\n nextCursor?: string;\n }>;\n\n getPrompt(params: {\n name: string;\n arguments?: Record<string, unknown>;\n }): Promise<{\n messages: MCPPromptMessage[];\n }>;\n\n onElicitationRequest(\n schema: z4.ZodType<ElicitationRequest>,\n handler: ElicitationHandler\n ): void;\n\n getServerInfo(): Promise<{\n name: string;\n version: string;\n protocolVersion: string;\n capabilities?: Record<string, unknown>;\n }>;\n}\n\nconst CLIENT_INFO = {\n name: \"northflare-agent\",\n version: \"0.1.2\",\n};\n\nclass SdkMCPClient implements MCPClient {\n private readonly client: Client;\n private readonly transport: Transport;\n private connected = false;\n private elicitation?: {\n schema: z4.ZodType<ElicitationRequest>;\n handler: ElicitationHandler;\n };\n private readonly requestTimeoutMs: number;\n\n constructor(\n transport: Transport,\n capabilities?: MCPClientConfig[\"capabilities\"],\n requestTimeoutMs?: number\n ) {\n this.transport = transport;\n this.client = new Client(CLIENT_INFO, {\n capabilities,\n });\n this.requestTimeoutMs = requestTimeoutMs ?? 10000;\n\n // Handle server->client requests that we want to support (elicitation).\n this.client.fallbackRequestHandler = async (request) => {\n if (\n request.method === \"sampling/elicitResponse\" ||\n request.method === \"elicitation/create\"\n ) {\n if (!this.elicitation) {\n throw new Error(\"No elicitation handler registered\");\n }\n const parsed = this.elicitation.schema.parse({\n id: String(request.id ?? \"\"),\n method: request.method as ElicitationRequest[\"method\"],\n params: (request as any).params ?? {},\n });\n return await this.elicitation.handler(parsed);\n }\n\n throw new Error(`Unhandled MCP request: ${request.method}`);\n };\n }\n\n async start(): Promise<void> {\n if (this.connected) return;\n await this.client.connect(this.transport, {\n timeout: this.requestTimeoutMs,\n });\n this.connected = true;\n }\n\n async close(): Promise<void> {\n this.connected = false;\n await this.client.close();\n }\n\n isConnected(): boolean {\n return this.connected;\n }\n\n async tools(options?: {\n schemas?: Record<string, { inputSchema: z3.ZodType<unknown> }>;\n }): Promise<Record<string, Tool>> {\n const { tools } = await this.client.request(\n { method: \"tools/list\" } as ClientRequest,\n ListToolsResultSchema,\n { timeout: this.requestTimeoutMs }\n );\n\n const toolRecord: Record<string, Tool> = {};\n for (const tool of tools || []) {\n const parameters = options?.schemas?.[tool.name]?.inputSchema ?? {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n };\n\n toolRecord[tool.name] = {\n description: tool.description ?? \"\",\n parameters,\n // Provide a matching inputSchema for any codepaths that still look for it\n inputSchema: jsonSchema(parameters as Record<string, unknown>),\n execute: async (input) => {\n const response = await this.client.callTool(\n {\n name: tool.name,\n arguments: input,\n },\n CallToolResultSchema,\n { timeout: this.requestTimeoutMs }\n );\n\n if (\n \"structuredContent\" in response &&\n response.structuredContent !== undefined\n ) {\n return response.structuredContent;\n }\n if (\"content\" in response) {\n return response.content;\n }\n return response as unknown;\n },\n };\n }\n\n return toolRecord;\n }\n\n async listResources(options?: { cursor?: string }): Promise<{\n resources: MCPResource[];\n nextCursor?: string;\n }> {\n return this.client.request(\n { method: \"resources/list\", params: options ?? {} } as ClientRequest,\n ListResourcesResultSchema,\n { timeout: this.requestTimeoutMs }\n ) as Promise<any>;\n }\n\n async readResource(params: { uri: string }): Promise<MCPResourceContent> {\n const result = await this.client.request(\n { method: \"resources/read\", params } as ClientRequest,\n ReadResourceResultSchema,\n { timeout: this.requestTimeoutMs }\n );\n\n const first = result.contents?.[0];\n return {\n uri: params.uri,\n mimeType: first?.mimeType,\n text: first?.type === \"text\" ? first.text : undefined,\n blob: first?.type === \"blob\" ? first.data : undefined,\n };\n }\n\n async listResourceTemplates(options?: { cursor?: string }): Promise<{\n resourceTemplates: MCPResourceTemplate[];\n nextCursor?: string;\n }> {\n return this.client.request(\n {\n method: \"resources/templates/list\",\n params: options ?? {},\n } as ClientRequest,\n ListResourceTemplatesResultSchema,\n { timeout: this.requestTimeoutMs }\n ) as Promise<any>;\n }\n\n async listPrompts(options?: { cursor?: string }): Promise<{\n prompts: MCPPrompt[];\n nextCursor?: string;\n }> {\n return this.client.request(\n { method: \"prompts/list\", params: options ?? {} } as ClientRequest,\n ListPromptsResultSchema,\n { timeout: this.requestTimeoutMs }\n ) as Promise<any>;\n }\n\n async getPrompt(params: {\n name: string;\n arguments?: Record<string, unknown>;\n }): Promise<{ messages: MCPPromptMessage[] }> {\n const result = await this.client.getPrompt(\n { name: params.name, arguments: params.arguments },\n { timeout: this.requestTimeoutMs }\n );\n return result as unknown as { messages: MCPPromptMessage[] };\n }\n\n onElicitationRequest(\n schema: z4.ZodType<ElicitationRequest>,\n handler: ElicitationHandler\n ): void {\n this.elicitation = { schema, handler };\n }\n\n async getServerInfo(): Promise<{\n name: string;\n version: string;\n protocolVersion: string;\n capabilities?: Record<string, unknown>;\n }> {\n const version = this.client.getServerVersion();\n const capabilities = this.client.getServerCapabilities() as\n | Record<string, unknown>\n | undefined;\n return {\n name: version?.name ?? \"unknown-server\",\n version: version?.version ?? \"0.0.0\",\n protocolVersion: version?.protocolVersion ?? \"unknown\",\n capabilities,\n };\n }\n}\n\nclass SdkServerMCPClient implements MCPClient {\n private connected = false;\n private elicitation?: {\n schema: z4.ZodType<ElicitationRequest>;\n handler: ElicitationHandler;\n };\n\n constructor(\n private readonly server: McpSdkServerConfigWithInstance[\"instance\"]\n ) {}\n\n async start(): Promise<void> {\n if (this.connected) return;\n if (typeof (this.server as any).onElicitationRequest === \"function\") {\n (this.server as any).onElicitationRequest(async (payload: unknown) => {\n if (!this.elicitation) return;\n const parsed = this.elicitation.schema.parse(payload);\n return await this.elicitation.handler(parsed);\n });\n }\n this.connected = true;\n }\n\n async close(): Promise<void> {\n this.connected = false;\n }\n\n isConnected(): boolean {\n return this.connected;\n }\n\n private assertConnected(): void {\n if (!this.connected) {\n throw new Error(\"MCP client not started\");\n }\n }\n\n async tools(options?: {\n schemas?: Record<string, { inputSchema: z3.ZodType<unknown> }>;\n }): Promise<Record<string, Tool>> {\n this.assertConnected();\n const result = await (this.server as any).request(\"tools/list\");\n const record: Record<string, Tool> = {};\n for (const tool of result?.tools ?? []) {\n const parameters =\n options?.schemas?.[tool.name]?.inputSchema ??\n normalizeJsonSchemaObject(undefined);\n\n record[tool.name] = {\n description: tool.description ?? \"\",\n parameters,\n inputSchema: jsonSchema(parameters as Record<string, unknown>),\n execute: async (input) => {\n const response = await (this.server as any).request(\"tools/call\", {\n name: tool.name,\n arguments: input,\n });\n return response;\n },\n };\n }\n return record;\n }\n\n async listResources(options?: { cursor?: string }): Promise<{\n resources: MCPResource[];\n nextCursor?: string;\n }> {\n this.assertConnected();\n return (this.server as any).request(\"resources/list\", options);\n }\n\n async readResource(params: { uri: string }): Promise<MCPResourceContent> {\n this.assertConnected();\n const result = await (this.server as any).request(\"resources/read\", params);\n const first = result?.contents?.[0];\n return {\n uri: params.uri,\n mimeType: first?.mimeType,\n text: first?.type === \"text\" ? first.text : undefined,\n blob: first?.type === \"blob\" ? first.data : undefined,\n };\n }\n\n async listResourceTemplates(options?: { cursor?: string }): Promise<{\n resourceTemplates: MCPResourceTemplate[];\n nextCursor?: string;\n }> {\n this.assertConnected();\n return (this.server as any).request(\"resources/templates/list\", options);\n }\n\n async listPrompts(options?: { cursor?: string }): Promise<{\n prompts: MCPPrompt[];\n nextCursor?: string;\n }> {\n this.assertConnected();\n return (this.server as any).request(\"prompts/list\", options);\n }\n\n async getPrompt(params: {\n name: string;\n arguments?: Record<string, unknown>;\n }): Promise<{ messages: MCPPromptMessage[] }> {\n this.assertConnected();\n return (this.server as any).request(\"prompts/get\", params);\n }\n\n onElicitationRequest(\n schema: z4.ZodType<ElicitationRequest>,\n handler: ElicitationHandler\n ): void {\n this.elicitation = { schema, handler };\n }\n\n async getServerInfo(): Promise<{\n name: string;\n version: string;\n protocolVersion: string;\n capabilities?: Record<string, unknown>;\n }> {\n this.assertConnected();\n if (typeof (this.server as any).getServerInfo === \"function\") {\n return (this.server as any).getServerInfo();\n }\n return {\n name: \"sdk-server\",\n version: \"0.0.0\",\n protocolVersion: \"unknown\",\n };\n }\n}\n\n/**\n * Creates an MCP client based on the provided transport configuration.\n * Supports stdio, HTTP (streamable), SSE, and custom transport instances.\n */\nexport async function experimental_createMCPClient(\n config: MCPClientConfig\n): Promise<MCPClient> {\n if ((config.transport as { type?: string }).type === \"sdk\") {\n return new SdkServerMCPClient(\n (config.transport as Extract<MCPClientConfig[\"transport\"], { type: \"sdk\" }>)\n .server\n );\n }\n\n const transport = createTransport(config.transport);\n return new SdkMCPClient(\n transport,\n config.capabilities,\n config.requestTimeoutMs\n );\n}\n\n/**\n * Converts an MCP server configuration to a client configuration.\n */\nexport function mcpServerConfigToClientConfig(\n serverConfig: McpServerConfig\n): MCPClientConfig {\n if (serverConfig.type === \"sse\") {\n const sseConfig = serverConfig as McpSSEServerConfig;\n return {\n transport: {\n type: \"sse\",\n url: sseConfig.url,\n headers: sseConfig.headers,\n },\n };\n }\n\n if (serverConfig.type === \"http\") {\n return {\n transport: {\n type: \"http\",\n url: serverConfig.url,\n headers: serverConfig.headers,\n },\n };\n }\n\n if (serverConfig.type === \"sdk\") {\n const sdkConfig = serverConfig as McpSdkServerConfigWithInstance;\n return {\n transport: {\n type: \"sdk\",\n name: sdkConfig.name,\n server: sdkConfig.instance,\n },\n };\n }\n\n const stdioConfig = serverConfig as McpStdioServerConfig;\n return {\n transport: {\n type: \"stdio\",\n command: stdioConfig.command,\n args: stdioConfig.args,\n env: stdioConfig.env,\n },\n };\n}\n\n// Legacy-compatible elicitation schema\nexport const ElicitationRequestSchema = z4.object({\n id: z4.string(),\n method: z4.union([\n z4.literal(\"sampling/elicitResponse\"),\n z4.literal(\"elicitation/create\"),\n ]),\n params: z4.object({\n message: z4.string().optional(),\n requestedSchema: z4.unknown().optional(),\n prompt: z4.string().optional(),\n }),\n});\n\nfunction createTransport(\n transportConfig: MCPClientConfig[\"transport\"]\n): Transport {\n // If a concrete transport instance was provided, wrap it directly.\n if (\n typeof (transportConfig as MCPTransport).start === \"function\" &&\n !(transportConfig as { type?: string }).type\n ) {\n return adaptLegacyTransport(transportConfig as MCPTransport);\n }\n\n const cfg = transportConfig as { type: string };\n switch (cfg.type) {\n case \"stdio\": {\n const { command, args, env } = transportConfig as Extract<\n MCPClientConfig[\"transport\"],\n { type: \"stdio\" }\n >;\n return new StdioClientTransport({\n command,\n args,\n env: {\n ...process.env,\n ...env,\n } as Record<string, string>,\n stderr: \"pipe\", // keep stderr from flooding UI\n });\n }\n case \"http\": {\n const { url, headers, authProvider } = transportConfig as Extract<\n MCPClientConfig[\"transport\"],\n { type: \"http\" }\n >;\n return new StreamableHTTPClientTransport(new URL(url), {\n requestInit: { headers },\n authProvider,\n });\n }\n case \"sse\": {\n const { url, headers, authProvider } = transportConfig as Extract<\n MCPClientConfig[\"transport\"],\n { type: \"sse\" }\n >;\n return new SSEClientTransport(new URL(url), {\n headers,\n authProvider,\n });\n }\n case \"sdk\": {\n throw new Error(\n \"SDK transports are handled directly in experimental_createMCPClient\"\n );\n }\n default:\n throw new Error(\n `Unsupported MCP transport configuration: ${(transportConfig as any).type ?? \"custom\"}`\n );\n }\n}\n\n/**\n * Adapter to let legacy MCPTransport implementations satisfy the SDK Transport interface.\n */\nfunction adaptLegacyTransport(transport: MCPTransport): Transport {\n const adapted: Transport = {\n async start() {\n await transport.start();\n },\n async close() {\n await transport.close();\n },\n async send(message: any) {\n await transport.send(message);\n },\n onclose: undefined,\n onerror: undefined,\n onmessage: undefined,\n };\n\n transport.onMessage((message) => {\n adapted.onmessage?.(message as any);\n });\n\n transport.onError((error) => {\n adapted.onerror?.(error);\n });\n\n transport.onClose(() => {\n adapted.onclose?.();\n });\n\n return adapted;\n}\n","import type { Tool } from 'ai';\nimport {\n experimental_createMCPClient,\n mcpServerConfigToClientConfig,\n ElicitationRequestSchema,\n} from './mcp-client';\nimport type {\n MCPClient,\n ElicitationResponse,\n} from './mcp-client';\nimport type { McpServerConfig } from './sdk-types';\n\nexport interface MCPServerStatus {\n name: string;\n status: 'connecting' | 'connected' | 'error' | 'closed' | 'retrying';\n error?: string;\n client?: MCPClient;\n retryCount?: number;\n lastRetryTime?: Date;\n}\n\ntype LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'none';\n\ntype Logger = {\n debug?: (...args: unknown[]) => void;\n info?: (...args: unknown[]) => void;\n warn?: (...args: unknown[]) => void;\n error?: (...args: unknown[]) => void;\n};\n\ninterface RetryConfig {\n maxRetries?: number;\n initialDelayMs?: number;\n maxDelayMs?: number;\n backoffMultiplier?: number;\n}\n\nexport class MCPManager {\n private servers: Map<string, MCPServerStatus> = new Map();\n private allTools: Record<string, Tool> = {};\n private toolToServerMap: Map<string, string> = new Map();\n private retryTimeouts: Map<string, NodeJS.Timeout> = new Map();\n private healthCheckInterval?: NodeJS.Timeout;\n\n // Default retry configuration\n private readonly defaultRetryConfig: Required<RetryConfig> = {\n maxRetries: 3,\n initialDelayMs: 1000,\n maxDelayMs: 30000,\n backoffMultiplier: 2,\n };\n\n constructor(\n private mcpServers: Record<string, McpServerConfig> = {},\n private options: {\n onElicitationRequest?: (\n serverName: string,\n request: any\n ) => Promise<ElicitationResponse>;\n retryConfig?: RetryConfig;\n healthCheckIntervalMs?: number;\n logger?: Logger;\n logLevel?: LogLevel;\n /**\n * How long to wait for tools() before retrying/failing (ms).\n */\n toolLoadTimeoutMs?: number;\n /**\n * Request-level timeout for MCP JSON-RPC calls (ms).\n */\n requestTimeoutMs?: number;\n /**\n * Whether tool loading should block initialization or run in the background.\n * 'blocking' (default) preserves existing behavior; 'background' avoids gating stream startup.\n */\n toolLoadMode?: 'blocking' | 'background';\n /**\n * If true, propagate MCP init failures to the caller; otherwise, log and continue.\n */\n failOnError?: boolean;\n } = {}\n ) {\n // Merge user retry config with defaults\n this.retryConfig = { ...this.defaultRetryConfig, ...options.retryConfig };\n\n const defaultLogger: Logger = {\n debug: (...args: unknown[]) => console.debug?.(...args),\n info: (...args: unknown[]) => console.info?.(...args),\n warn: (...args: unknown[]) => console.warn?.(...args),\n error: (...args: unknown[]) => console.error?.(...args),\n };\n\n this.logger = options.logger ?? defaultLogger;\n this.logLevel = options.logLevel ?? 'warn';\n this.toolLoadTimeoutMs = options.toolLoadTimeoutMs ?? 20000;\n this.toolLoadMode = options.toolLoadMode ?? 'blocking';\n this.failOnError = options.failOnError ?? false;\n this.requestTimeoutMs = options.requestTimeoutMs ?? 20000;\n }\n\n private retryConfig: Required<RetryConfig>;\n private readonly logger: Logger;\n private readonly logLevel: LogLevel;\n private readonly toolLoadTimeoutMs: number;\n private readonly toolLoadMode: 'blocking' | 'background';\n private readonly failOnError: boolean;\n private readonly requestTimeoutMs: number;\n\n private log(level: LogLevel, ...args: unknown[]): void {\n if (this.logLevel === 'none' || level === 'none') {\n return;\n }\n\n const levelPriority: Record<Exclude<LogLevel, 'none'>, number> = {\n debug: 10,\n info: 20,\n warn: 30,\n error: 40,\n };\n\n const current = levelPriority[this.logLevel as Exclude<LogLevel, 'none'>];\n const incoming = levelPriority[level as Exclude<LogLevel, 'none'>];\n\n if (incoming < current) {\n return;\n }\n\n const writer = this.logger[level];\n if (writer) {\n writer(...args);\n }\n }\n\n /**\n * Initialize all MCP servers with retry logic\n */\n async initialize(): Promise<void> {\n const initPromises = Object.entries(this.mcpServers).map(\n async ([name, config]) => {\n await this.initializeServerWithRetry(name, config);\n }\n );\n\n const results = await Promise.allSettled(initPromises);\n\n // Log any initialization failures\n results.forEach((result, index) => {\n if (result.status === 'rejected') {\n const serverName = Object.keys(this.mcpServers)[index];\n this.log('error', `Failed to initialize MCP server ${serverName}:`, result.reason);\n }\n });\n\n // Start health monitoring if configured\n if (this.options.healthCheckIntervalMs) {\n this.startHealthMonitoring();\n }\n\n if (this.failOnError) {\n const failed = this.getServerStatuses().filter((s) => s.status === 'error');\n if (failed.length > 0) {\n const detail = failed.map((s) => `${s.name}${s.error ? `: ${s.error}` : ''}`).join(', ');\n throw new Error(`Failed to initialize MCP server(s): ${detail}`);\n }\n }\n }\n\n /**\n * Initialize server with retry logic\n */\n private async initializeServerWithRetry(\n name: string,\n config: McpServerConfig,\n retryCount = 0\n ): Promise<void> {\n try {\n await this.initializeServer(name, config);\n } catch (error) {\n const serverStatus = this.servers.get(name);\n\n if (retryCount < this.retryConfig.maxRetries) {\n // Calculate backoff delay\n const delay = Math.min(\n this.retryConfig.initialDelayMs * Math.pow(this.retryConfig.backoffMultiplier, retryCount),\n this.retryConfig.maxDelayMs\n );\n\n // Update status\n this.servers.set(name, {\n ...serverStatus,\n name,\n status: 'retrying',\n retryCount: retryCount + 1,\n lastRetryTime: new Date(),\n error: error instanceof Error ? error.message : String(error),\n });\n\n this.log('info', `Retrying MCP server ${name} in ${delay}ms (attempt ${retryCount + 1}/${this.retryConfig.maxRetries})`);\n\n // Schedule retry\n const timeoutId = setTimeout(() => {\n this.retryTimeouts.delete(name);\n this.initializeServerWithRetry(name, config, retryCount + 1);\n }, delay);\n\n this.retryTimeouts.set(name, timeoutId);\n } else {\n // Max retries exceeded\n this.log('error', `Failed to initialize MCP server ${name} after ${this.retryConfig.maxRetries} retries`);\n this.servers.set(name, {\n name,\n status: 'error',\n error: error instanceof Error ? error.message : String(error),\n retryCount,\n });\n }\n }\n }\n\n /**\n * Initialize a single MCP server\n */\n private async initializeServer(\n name: string,\n config: McpServerConfig\n ): Promise<void> {\n try {\n this.log('info', `[agent-sdk:mcp] server.init.start ${name}`);\n // Mark as connecting\n this.servers.set(name, {\n name,\n status: 'connecting',\n });\n\n // Create client config\n const clientConfig = {\n ...mcpServerConfigToClientConfig(config),\n requestTimeoutMs: this.requestTimeoutMs,\n };\n\n // Create MCP client\n const client = await experimental_createMCPClient(clientConfig);\n\n this.log('info', `[agent-sdk:mcp] server.client.created ${name}`);\n\n // Set up elicitation handler if provided\n if (this.options.onElicitationRequest) {\n client.onElicitationRequest(\n ElicitationRequestSchema,\n async (request) => {\n return await this.options.onElicitationRequest!(name, request);\n }\n );\n }\n\n // Start the client\n await client.start();\n this.log('info', `[agent-sdk:mcp] server.client.started ${name}`);\n\n // Mark as connected\n this.servers.set(name, {\n name,\n status: 'connected',\n client,\n });\n\n // Load tools from the server (don't fail initialization if tools fail to load)\n const loadPromise = this.loadServerTools(name, client);\n\n if (this.toolLoadMode === 'background') {\n loadPromise\n .then(() => {\n this.log('info', `[agent-sdk:mcp] server.tools.loaded ${name}`);\n })\n .catch((error) => {\n this.log('warn', `Failed to load tools from MCP server ${name} (background load); server remains connected:`, error);\n });\n } else {\n try {\n await loadPromise;\n this.log('info', `[agent-sdk:mcp] server.tools.loaded ${name}`);\n } catch (error) {\n this.log('warn', `Failed to load tools from MCP server ${name}, but server remains connected:`, error);\n // Server stays connected even if tools fail to load\n }\n }\n } catch (error) {\n // Mark as error\n this.servers.set(name, {\n name,\n status: 'error',\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n\n /**\n * Load tools from an MCP server with retry logic\n */\n private async loadServerTools(\n serverName: string,\n client: MCPClient,\n retryCount = 0\n ): Promise<void> {\n const start = Date.now();\n const timeoutMs = this.toolLoadTimeoutMs;\n this.log('debug', `[agent-sdk:mcp] tools.load.start ${serverName}`, {\n retryCount,\n timeoutMs,\n });\n try {\n const tools = await Promise.race([\n client.tools(),\n new Promise((_, reject) =>\n setTimeout(\n () => reject(new Error(`tools() timed out after ${timeoutMs}ms`)),\n timeoutMs,\n ),\n ),\n ]);\n\n // Add tools with MCP prefix to avoid conflicts\n for (const [toolName, tool] of Object.entries(tools)) {\n const prefixedName = `mcp__${serverName}__${toolName}`;\n this.log('debug', `[agent-sdk:mcp] tool.register ${prefixedName}`, {\n parameters: tool.parameters,\n });\n this.allTools[prefixedName] = tool;\n this.toolToServerMap.set(prefixedName, serverName);\n }\n this.log(\n 'debug',\n `[agent-sdk:mcp] tools.load.success ${serverName} count=${Object.keys(tools).length} durationMs=${Date.now() - start}`\n );\n } catch (error) {\n if (retryCount < 2) {\n // Retry tool loading with shorter retry limit\n const delay = 500 * Math.pow(2, retryCount);\n this.log(\n 'warn',\n `[agent-sdk:mcp] tools.load.retry ${serverName} in ${delay}ms`,\n error\n );\n\n await new Promise(resolve => setTimeout(resolve, delay));\n return this.loadServerTools(serverName, client, retryCount + 1);\n } else {\n this.log(\n 'error',\n `[agent-sdk:mcp] tools.load.failed ${serverName} durationMs=${Date.now() - start}`,\n error\n );\n throw error; // Re-throw to be handled by the caller\n }\n }\n }\n\n /**\n * Get all loaded tools\n */\n getTools(): Record<string, Tool> {\n return { ...this.allTools };\n }\n\n /**\n * Get server statuses for reporting\n */\n getServerStatuses(): MCPServerStatus[] {\n return Array.from(this.servers.values()).map((status) => ({\n name: status.name,\n status: status.status,\n error: status.error,\n retryCount: status.retryCount,\n lastRetryTime: status.lastRetryTime,\n // Don't include the client in the status report\n }));\n }\n\n /**\n * Get detailed health status of all servers\n */\n getHealthStatus(): {\n servers: Array<{\n name: string;\n status: MCPServerStatus['status'];\n connected: boolean;\n toolCount: number;\n lastError?: string;\n retryInfo?: {\n count: number;\n lastAttempt: Date;\n };\n }>;\n totalTools: number;\n healthCheckEnabled: boolean;\n } {\n const servers = Array.from(this.servers.entries()).map(([name, status]) => {\n const toolCount = Object.keys(this.allTools).filter(\n toolName => this.toolToServerMap.get(toolName) === name\n ).length;\n\n return {\n name,\n status: status.status,\n connected: status.status === 'connected',\n toolCount,\n lastError: status.error,\n retryInfo: status.retryCount ? {\n count: status.retryCount,\n lastAttempt: status.lastRetryTime || new Date(),\n } : undefined,\n };\n });\n\n return {\n servers,\n totalTools: Object.keys(this.allTools).length,\n healthCheckEnabled: !!this.healthCheckInterval,\n };\n }\n\n /**\n * Enable or disable health monitoring\n */\n setHealthMonitoring(enabled: boolean, intervalMs?: number): void {\n if (enabled) {\n this.options.healthCheckIntervalMs = intervalMs || this.options.healthCheckIntervalMs || 30000;\n this.startHealthMonitoring();\n } else {\n if (this.healthCheckInterval) {\n clearInterval(this.healthCheckInterval);\n this.healthCheckInterval = undefined;\n this.log('info', 'Stopped MCP health monitoring');\n }\n }\n }\n\n /**\n * Get a specific server client\n */\n getServerClient(serverName: string): MCPClient | undefined {\n return this.servers.get(serverName)?.client;\n }\n\n /**\n * Start health monitoring for all connected servers\n */\n private startHealthMonitoring(): void {\n if (this.healthCheckInterval) {\n clearInterval(this.healthCheckInterval);\n }\n\n const intervalMs = this.options.healthCheckIntervalMs || 30000; // Default 30 seconds\n\n this.healthCheckInterval = setInterval(() => {\n this.checkServerHealth();\n }, intervalMs);\n\n this.log('info', `Started MCP health monitoring with ${intervalMs}ms interval`);\n }\n\n /**\n * Check health of all servers and reconnect if necessary\n */\n private async checkServerHealth(): Promise<void> {\n const healthChecks = Array.from(this.servers.entries()).map(\n async ([name, status]) => {\n if (status.status === 'connected' && status.client) {\n try {\n // Simple ping by trying to list tools\n await status.client.tools();\n } catch (error) {\n this.log('warn', `Health check failed for MCP server ${name}:`, error);\n\n // Mark as error and attempt reconnection\n this.servers.set(name, {\n ...status,\n status: 'error',\n error: 'Health check failed',\n });\n\n // Attempt to reconnect\n const config = this.mcpServers[name];\n if (config) {\n this.log('info', `Attempting to reconnect MCP server ${name}`);\n await this.initializeServerWithRetry(name, config);\n }\n }\n } else if (status.status === 'error' && !this.retryTimeouts.has(name)) {\n // Attempt to reconnect errored servers that aren't already retrying\n const config = this.mcpServers[name];\n if (config) {\n this.log('info', `Attempting to reconnect errored MCP server ${name}`);\n await this.initializeServerWithRetry(name, config);\n }\n }\n }\n );\n\n await Promise.allSettled(healthChecks);\n }\n\n /**\n * Manually reconnect a specific server\n */\n async reconnectServer(serverName: string): Promise<void> {\n const config = this.mcpServers[serverName];\n if (!config) {\n throw new Error(`No configuration found for server ${serverName}`);\n }\n\n // Close existing connection if any\n const currentStatus = this.servers.get(serverName);\n if (currentStatus?.client) {\n try {\n await currentStatus.client.close();\n } catch (error) {\n this.log('warn', `Error closing existing connection for ${serverName}:`, error);\n }\n }\n\n // Clear any pending retry\n const timeout = this.retryTimeouts.get(serverName);\n if (timeout) {\n clearTimeout(timeout);\n this.retryTimeouts.delete(serverName);\n }\n\n // Reinitialize with retry\n await this.initializeServerWithRetry(serverName, config);\n }\n\n /**\n * Close all MCP servers\n */\n async close(): Promise<void> {\n // Stop health monitoring\n if (this.healthCheckInterval) {\n clearInterval(this.healthCheckInterval);\n this.healthCheckInterval = undefined;\n }\n\n // Clear all retry timeouts\n for (const timeout of this.retryTimeouts.values()) {\n clearTimeout(timeout);\n }\n this.retryTimeouts.clear();\n\n // Close all server connections\n const closePromises = Array.from(this.servers.values()).map(\n async (server) => {\n if (server.client && (server.status === 'connected' || server.status === 'retrying')) {\n try {\n await server.client.close();\n server.status = 'closed';\n } catch (error) {\n this.log(\n 'warn',\n `Failed to close MCP server ${server.name}:`,\n error\n );\n }\n }\n }\n );\n\n await Promise.allSettled(closePromises);\n this.servers.clear();\n this.allTools = {};\n this.toolToServerMap.clear();\n }\n\n /**\n * Check if a tool belongs to an MCP server\n */\n isToolFromMCP(toolName: string): boolean {\n return this.toolToServerMap.has(toolName);\n }\n\n /**\n * Get the server name for a tool\n */\n getServerForTool(toolName: string): string | undefined {\n return this.toolToServerMap.get(toolName);\n }\n\n /**\n * List resources from all connected servers\n */\n async listAllResources(): Promise<\n Array<{\n server: string;\n resources: any[];\n }>\n > {\n const results: Array<{ server: string; resources: any[] }> = [];\n\n for (const [name, status] of this.servers.entries()) {\n if (status.client && status.status === 'connected') {\n try {\n const { resources } = await status.client.listResources();\n results.push({ server: name, resources });\n } catch (error) {\n this.log('warn', `Failed to list resources from ${name}:`, error);\n }\n }\n }\n\n return results;\n }\n\n /**\n * Read a resource from a specific server\n */\n async readResource(\n serverName: string,\n uri: string\n ): Promise<any | undefined> {\n const server = this.servers.get(serverName);\n if (!server?.client || server.status !== 'connected') {\n throw new Error(`MCP server ${serverName} is not connected`);\n }\n\n return await server.client.readResource({ uri });\n }\n\n /**\n * List prompts from all connected servers\n */\n async listAllPrompts(): Promise<\n Array<{\n server: string;\n prompts: any[];\n }>\n > {\n const results: Array<{ server: string; prompts: any[] }> = [];\n\n for (const [name, status] of this.servers.entries()) {\n if (status.client && status.status === 'connected') {\n try {\n const { prompts } = await status.client.listPrompts();\n results.push({ server: name, prompts });\n } catch (error) {\n this.log('warn', `Failed to list prompts from ${name}:`, error);\n }\n }\n }\n\n return results;\n }\n\n /**\n * Get a prompt from a specific server\n */\n async getPrompt(\n serverName: string,\n promptName: string,\n args?: Record<string, unknown>\n ): Promise<any | undefined> {\n const server = this.servers.get(serverName);\n if (!server?.client || server.status !== 'connected') {\n throw new Error(`MCP server ${serverName} is not connected`);\n }\n\n return await server.client.getPrompt({\n name: promptName,\n arguments: args,\n });\n }\n}\n","import * as fs from 'fs/promises';\nimport * as path from 'path';\nimport { exec } from 'child_process';\nimport { promisify } from 'util';\nimport type {\n CommandLineEnvironmentInterface,\n ReadFileResult,\n WriteFileResult,\n DeleteFileResult,\n MoveFileResult,\n CopyFileResult,\n RunCommandResult,\n} from './types';\nimport { validateAndNormalizePath } from './util/path-validation';\nimport { createFileOperationError, createCommandExecutionError } from './util/error-handling';\nimport { DEFAULT_COMMAND_TIMEOUT_MS } from './constants';\n\nconst execAsync = promisify(exec);\n\n/**\n * Configuration for the LocalEnvironment\n */\nexport interface LocalEnvironmentConfig {\n workingDirectory?: string;\n environmentVariables?: Record<string, string>;\n additionalDirectories?: string[];\n stderrCallback?: (stderr: string) => void;\n name?: string;\n}\n\n/**\n * Local filesystem and command execution environment implementation.\n * Provides proper abstraction for file operations and command execution\n * that tools can use instead of direct filesystem access.\n */\nexport class LocalEnvironment implements CommandLineEnvironmentInterface {\n private readonly _name: string;\n private readonly workingDirectory: string;\n private readonly environmentVariables: Record<string, string>;\n private readonly additionalDirectories: string[];\n private readonly stderrCallback?: (stderr: string) => void;\n\n constructor(config: LocalEnvironmentConfig = {}) {\n this._name = config.name || 'local';\n this.workingDirectory = config.workingDirectory || process.cwd();\n this.environmentVariables = config.environmentVariables || {};\n this.additionalDirectories = config.additionalDirectories || [];\n this.stderrCallback = config.stderrCallback;\n }\n\n get name(): string {\n return this._name;\n }\n\n /**\n * Gets the additional directories accessible to tools\n */\n getAdditionalDirectories(): string[] {\n return [...this.additionalDirectories];\n }\n\n /**\n * Gets the full environment variables\n */\n getEnvironmentVariables(): Record<string, string> {\n return { ...process.env, ...this.environmentVariables };\n }\n\n /**\n * Gets the working directory\n */\n getWorkingDirectory(): string {\n return this.workingDirectory;\n }\n\n /**\n * Validates and resolves a path relative to the working directory\n */\n private validateAndResolvePath(filePath: string): string {\n return validateAndNormalizePath(\n filePath,\n this.workingDirectory,\n this.additionalDirectories\n );\n }\n\n async readFile(filePath: string): Promise<ReadFileResult> {\n try {\n const fullPath = this.validateAndResolvePath(filePath);\n const content = await fs.readFile(fullPath, 'utf-8');\n return {\n path: filePath,\n content,\n };\n } catch (error) {\n throw createFileOperationError('read', filePath, error);\n }\n }\n\n async writeFile(filePath: string, content: string): Promise<WriteFileResult> {\n try {\n const fullPath = this.validateAndResolvePath(filePath);\n\n // Ensure the directory exists\n const dir = path.dirname(fullPath);\n await fs.mkdir(dir, { recursive: true });\n\n await fs.writeFile(fullPath, content, 'utf-8');\n return {\n path: filePath,\n message: `Successfully wrote file: ${filePath}`,\n };\n } catch (error) {\n throw createFileOperationError('write', filePath, error);\n }\n }\n\n async deleteFile(filePath: string): Promise<DeleteFileResult> {\n try {\n const fullPath = this.validateAndResolvePath(filePath);\n await fs.unlink(fullPath);\n return {\n path: filePath,\n message: `Successfully deleted file: ${filePath}`,\n };\n } catch (error) {\n throw createFileOperationError('delete', filePath, error);\n }\n }\n\n async moveFile(sourcePath: string, destinationPath: string): Promise<MoveFileResult> {\n try {\n const fromPath = this.validateAndResolvePath(sourcePath);\n const toPath = this.validateAndResolvePath(destinationPath);\n\n // Ensure the destination directory exists\n const destDir = path.dirname(toPath);\n await fs.mkdir(destDir, { recursive: true });\n\n await fs.rename(fromPath, toPath);\n return {\n sourcePath,\n destinationPath,\n message: `Successfully moved file from ${sourcePath} to ${destinationPath}`,\n };\n } catch (error) {\n throw createFileOperationError('move', `from ${sourcePath} to ${destinationPath}`, error);\n }\n }\n\n async copyFile(sourcePath: string, destinationPath: string): Promise<CopyFileResult> {\n try {\n const fromPath = this.validateAndResolvePath(sourcePath);\n const toPath = this.validateAndResolvePath(destinationPath);\n\n // Ensure the destination directory exists\n const destDir = path.dirname(toPath);\n await fs.mkdir(destDir, { recursive: true });\n\n await fs.copyFile(fromPath, toPath);\n return {\n sourcePath,\n destinationPath,\n message: `Successfully copied file from ${sourcePath} to ${destinationPath}`,\n };\n } catch (error) {\n throw createFileOperationError('copy', `from ${sourcePath} to ${destinationPath}`, error);\n }\n }\n\n async runCommand(command: string, timeout?: number): Promise<RunCommandResult> {\n try {\n const result = await execAsync(command, {\n cwd: this.workingDirectory,\n env: { ...process.env, ...this.environmentVariables },\n timeout: timeout || DEFAULT_COMMAND_TIMEOUT_MS,\n });\n\n // Call stderr callback if there's stderr output\n if (result.stderr && this.stderrCallback) {\n this.stderrCallback(result.stderr);\n }\n\n return {\n command,\n exitCode: 0,\n stdout: result.stdout,\n stderr: result.stderr,\n };\n } catch (error) {\n // Type-safe error handling\n if (error && typeof error === 'object' && 'code' in error) {\n const execError = error as { code?: number; stdout?: string; stderr?: string; message?: string };\n const stderr = execError.stderr || execError.message || 'Unknown error';\n\n // Call stderr callback for error output\n if (stderr && this.stderrCallback) {\n this.stderrCallback(stderr);\n }\n\n return {\n command,\n exitCode: execError.code || 1,\n stdout: execError.stdout || '',\n stderr: stderr,\n };\n }\n\n // Handle non-exec errors\n throw createCommandExecutionError(command, error);\n }\n }\n\n /**\n * Additional helper methods that tools might need\n */\n async listDirectory(dirPath: string): Promise<string[]> {\n try {\n const fullPath = this.validateAndResolvePath(dirPath);\n return await fs.readdir(fullPath);\n } catch (error) {\n throw createFileOperationError('list directory', dirPath, error);\n }\n }\n\n async isDirectory(filePath: string): Promise<boolean> {\n try {\n const fullPath = this.validateAndResolvePath(filePath);\n const stats = await fs.stat(fullPath);\n return stats.isDirectory();\n } catch {\n return false;\n }\n }\n\n async exists(filePath: string): Promise<boolean> {\n try {\n const fullPath = this.validateAndResolvePath(filePath);\n await fs.access(fullPath);\n return true;\n } catch {\n return false;\n }\n }\n}","import * as path from 'path';\nimport { FORBIDDEN_PATH_PATTERNS, ErrorCategory } from '../constants';\n\n/**\n * Custom error class for path validation errors\n */\nexport class PathValidationError extends Error {\n constructor(\n message: string,\n public readonly category: ErrorCategory = ErrorCategory.PATH_TRAVERSAL_ATTEMPT,\n public readonly attemptedPath: string = '',\n ) {\n super(message);\n this.name = 'PathValidationError';\n }\n}\n\n/**\n * Validates and normalizes a file path to ensure it stays within allowed directories\n * @param filePath - The path to validate\n * @param workingDirectory - The base working directory\n * @param additionalDirectories - Additional allowed directories\n * @returns The resolved, normalized path\n * @throws PathValidationError if the path is invalid or attempts traversal\n */\nexport function validateAndNormalizePath(\n filePath: string,\n workingDirectory: string,\n additionalDirectories: string[] = []\n): string {\n if (!filePath) {\n throw new PathValidationError(\n 'File path cannot be empty',\n ErrorCategory.INVALID_INPUT,\n filePath\n );\n }\n\n // Normalize the working directory and additional directories\n const normalizedWorkingDir = path.resolve(workingDirectory);\n const normalizedAdditionalDirs = additionalDirectories.map(dir => path.resolve(dir));\n const allowedDirs = [normalizedWorkingDir, ...normalizedAdditionalDirs];\n\n // Resolve the file path\n const resolvedPath = path.resolve(normalizedWorkingDir, filePath);\n const normalizedPath = path.normalize(resolvedPath);\n\n // Check against forbidden patterns\n for (const pattern of FORBIDDEN_PATH_PATTERNS) {\n if (pattern.test(normalizedPath)) {\n throw new PathValidationError(\n `Access to path is forbidden: ${filePath}`,\n ErrorCategory.PATH_TRAVERSAL_ATTEMPT,\n filePath\n );\n }\n }\n\n // Check if the resolved path is within allowed directories\n const isInAllowedDir = allowedDirs.some(dir => {\n const relative = path.relative(dir, normalizedPath);\n // If relative path doesn't start with '..' and isn't absolute, it's within the directory\n return !relative.startsWith('..') && !path.isAbsolute(relative);\n });\n\n if (!isInAllowedDir) {\n throw new PathValidationError(\n `Path is outside allowed directories: ${filePath}`,\n ErrorCategory.PATH_TRAVERSAL_ATTEMPT,\n filePath\n );\n }\n\n return normalizedPath;\n}\n\n/**\n * Checks if a path is safe (no traversal attempts)\n * @param filePath - The path to check\n * @returns true if the path is safe, false otherwise\n */\nexport function isSafePath(filePath: string): boolean {\n if (!filePath) {\n return false;\n }\n\n // Check for obvious traversal patterns\n if (filePath.includes('..')) {\n return false;\n }\n\n // Check against forbidden patterns\n for (const pattern of FORBIDDEN_PATH_PATTERNS) {\n if (pattern.test(filePath)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Gets the relative path from the working directory\n * @param absolutePath - The absolute path\n * @param workingDirectory - The working directory\n * @returns The relative path\n */\nexport function getRelativePath(absolutePath: string, workingDirectory: string): string {\n return path.relative(workingDirectory, absolutePath);\n}\n\n/**\n * Validates multiple paths at once\n * @param paths - Array of paths to validate\n * @param workingDirectory - The base working directory\n * @param additionalDirectories - Additional allowed directories\n * @returns Array of validated paths\n * @throws PathValidationError if any path is invalid\n */\nexport function validateMultiplePaths(\n paths: string[],\n workingDirectory: string,\n additionalDirectories: string[] = []\n): string[] {\n return paths.map(p => validateAndNormalizePath(p, workingDirectory, additionalDirectories));\n}","/**\n * Constants used throughout the AI Code Agents SDK\n */\n\n// Timeout and retry constants\nexport const DEFAULT_COMMAND_TIMEOUT_MS = 30000; // 30 seconds\n\n// Agent execution limits\nexport const DEFAULT_MAX_TURNS = 25;\n\n// Path validation\nexport const FORBIDDEN_PATH_PATTERNS = [\n /\\.\\.\\//, // Parent directory traversal\n /^\\/etc/, // System configuration\n /^\\/sys/, // System files\n /^\\/proc/, // Process information\n /^~\\/\\.ssh/, // SSH keys\n /\\.git\\/objects/, // Git internals\n /node_modules\\/\\.bin/, // Executable files\n];\n\n// Error categories\nexport enum ErrorCategory {\n PERMISSION_DENIED = \"PERMISSION_DENIED\",\n FILE_NOT_FOUND = \"FILE_NOT_FOUND\",\n INVALID_INPUT = \"INVALID_INPUT\",\n NETWORK_ERROR = \"NETWORK_ERROR\",\n TIMEOUT_ERROR = \"TIMEOUT_ERROR\",\n JSON_PARSE_ERROR = \"JSON_PARSE_ERROR\",\n TOOL_EXECUTION_ERROR = \"TOOL_EXECUTION_ERROR\",\n MCP_CONNECTION_ERROR = \"MCP_CONNECTION_ERROR\",\n PATH_TRAVERSAL_ATTEMPT = \"PATH_TRAVERSAL_ATTEMPT\",\n UNKNOWN_ERROR = \"UNKNOWN_ERROR\",\n}\n","import { ErrorCategory } from '../constants';\n\n/**\n * Enhanced error class that preserves context and stack traces\n */\nexport class EnhancedError extends Error {\n public readonly category: ErrorCategory;\n public readonly originalError?: Error;\n public readonly context?: Record<string, unknown>;\n public readonly timestamp: Date;\n\n constructor(\n message: string,\n category: ErrorCategory = ErrorCategory.UNKNOWN_ERROR,\n originalError?: Error | unknown,\n context?: Record<string, unknown>\n ) {\n super(message);\n this.name = 'EnhancedError';\n this.category = category;\n this.context = context;\n this.timestamp = new Date();\n\n // Preserve original error if it's an Error instance\n if (originalError instanceof Error) {\n this.originalError = originalError;\n // Preserve the original stack trace\n if (originalError.stack) {\n this.stack = `${this.stack}\\nCaused by: ${originalError.stack}`;\n }\n } else if (originalError) {\n // Handle non-Error thrown values\n this.context = {\n ...context,\n originalError: String(originalError),\n };\n }\n\n // Ensure the name of this error is set\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n /**\n * Creates a formatted error message with context\n */\n toDetailedString(): string {\n let details = `${this.name}: ${this.message}\\n`;\n details += `Category: ${this.category}\\n`;\n details += `Timestamp: ${this.timestamp.toISOString()}\\n`;\n\n if (this.context && Object.keys(this.context).length > 0) {\n details += `Context: ${JSON.stringify(this.context, null, 2)}\\n`;\n }\n\n if (this.originalError) {\n details += `Original Error: ${this.originalError.message}\\n`;\n }\n\n if (this.stack) {\n details += `Stack: ${this.stack}\\n`;\n }\n\n return details;\n }\n}\n\n/**\n * Categorizes an error based on its message and type\n */\nexport function categorizeError(error: Error | unknown): ErrorCategory {\n if (!(error instanceof Error)) {\n return ErrorCategory.UNKNOWN_ERROR;\n }\n\n const message = error.message.toLowerCase();\n const name = error.name?.toLowerCase() || '';\n\n // Check for specific error patterns\n if (message.includes('permission') || message.includes('access denied') || name.includes('permission')) {\n return ErrorCategory.PERMISSION_DENIED;\n }\n\n if (message.includes('not found') || message.includes('no such file') || name.includes('notfound')) {\n return ErrorCategory.FILE_NOT_FOUND;\n }\n\n if (message.includes('timeout') || name.includes('timeout')) {\n return ErrorCategory.TIMEOUT_ERROR;\n }\n\n if (message.includes('network') || message.includes('fetch') || name.includes('network')) {\n return ErrorCategory.NETWORK_ERROR;\n }\n\n if (message.includes('json') || message.includes('parse') || name.includes('syntax')) {\n return ErrorCategory.JSON_PARSE_ERROR;\n }\n\n if (message.includes('invalid') || message.includes('validation')) {\n return ErrorCategory.INVALID_INPUT;\n }\n\n if (message.includes('tool') || message.includes('execution')) {\n return ErrorCategory.TOOL_EXECUTION_ERROR;\n }\n\n if (message.includes('mcp') || message.includes('connection')) {\n return ErrorCategory.MCP_CONNECTION_ERROR;\n }\n\n return ErrorCategory.UNKNOWN_ERROR;\n}\n\n/**\n * Wraps an error with additional context while preserving the original\n */\nexport function wrapError(\n error: Error | unknown,\n message: string,\n context?: Record<string, unknown>\n): EnhancedError {\n const category = categorizeError(error);\n return new EnhancedError(message, category, error, context);\n}\n\n/**\n * Creates a standardized error for file operations\n */\nexport function createFileOperationError(\n operation: string,\n path: string,\n error: Error | unknown\n): EnhancedError {\n const category = categorizeError(error);\n // Check if this is a directory operation\n const isDirectoryOperation = operation.includes('directory');\n const message = isDirectoryOperation\n ? `Failed to ${operation} ${path}`\n : `Failed to ${operation} file ${path}`;\n\n return new EnhancedError(message, category, error, {\n operation,\n path,\n errorMessage: error instanceof Error ? error.message : String(error),\n });\n}\n\n/**\n * Creates a standardized error for command execution\n */\nexport function createCommandExecutionError(\n command: string,\n error: Error | unknown,\n stderr?: string\n): EnhancedError {\n const message = `Command execution failed: ${command}`;\n\n return new EnhancedError(\n message,\n ErrorCategory.TOOL_EXECUTION_ERROR,\n error,\n {\n command,\n stderr,\n errorMessage: error instanceof Error ? error.message : String(error),\n }\n );\n}\n\n/**\n * Type guard to check if an error is an EnhancedError\n */\nexport function isEnhancedError(error: unknown): error is EnhancedError {\n return error instanceof EnhancedError;\n}\n\n/**\n * Safely extracts error message from unknown thrown value\n */\nexport function getErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n if (typeof error === 'string') {\n return error;\n }\n if (error && typeof error === 'object' && 'message' in error) {\n return String(error.message);\n }\n return 'Unknown error occurred';\n}","import { z } from 'zod';\nimport {\n ReadFileResult,\n type FilesystemEnvironmentInterface,\n type ToolConfig,\n type ToolExample,\n type ModelFormattedToolResult,\n} from '../types';\nimport { getLanguageIdentifierFromFilePath } from '../util/get-language-identifier-from-file-path';\nimport {\n EnvironmentToolBase,\n type EnvironmentToolMetadata,\n} from './environment-tool-base';\n\nexport const ReadFileToolName = 'read_file';\n\nexport type ReadFileToolConfig = ToolConfig;\n\nexport const ReadFileToolInput = z.object({\n path: z.string().meta({\n description:\n 'The path to the file to read, relative to the project directory.',\n }),\n});\n\nexport type ReadFileToolInput = z.infer<typeof ReadFileToolInput>;\n\nexport const ReadFileToolOutput = ReadFileResult;\n\nexport type ReadFileToolOutput = z.infer<typeof ReadFileToolOutput>;\n\nconst formatModelResponse = (output: ReadFileToolOutput) => {\n const language = getLanguageIdentifierFromFilePath(output.path);\n return `File: \\`${output.path}\\`\nContent:\n\\`\\`\\`${language}\n${output.content}\n\\`\\`\\`\n`;\n};\n\n/**\n * Class for the ReadFile tool.\n */\nexport class ReadFileTool extends EnvironmentToolBase<\n ReadFileToolConfig,\n ReadFileToolInput,\n ReadFileToolOutput,\n FilesystemEnvironmentInterface\n> {\n /**\n * Returns the metadata for the tool.\n *\n * The name, description, and needsApproval properties are defaults which can be overridden in the constructor.\n *\n * @returns The tool metadata.\n */\n protected getMetadata(): EnvironmentToolMetadata<\n ReadFileToolInput,\n ReadFileToolOutput\n > {\n return {\n name: ReadFileToolName,\n description: `Reads a file from the local filesystem. You can access any file directly by using this tool.\n- The path parameter must be relative to the project directory\n- Results are returned with file content formatted in code blocks\n- This tool can read text files, images (PNG, JPG, etc), PDFs, and Jupyter notebooks (.ipynb)\n- For images, contents are presented visually\n- For PDFs, content is extracted page by page including text and visual content\n- For notebooks, returns all cells with outputs combining code, text, and visualizations\n- Cannot read directories - use list_directory instead\n- It's recommended to read multiple potentially useful files in parallel when needed`,\n inputSchema: ReadFileToolInput,\n outputSchema: ReadFileToolOutput,\n needsApproval: false,\n };\n }\n\n /**\n * Executes the tool in the given execution environment with the given input.\n *\n * @param env - The execution environment to use.\n * @param input - The input for the tool.\n * @returns A promise that resolves to the tool execution result.\n */\n protected executeForEnvironment(\n env: FilesystemEnvironmentInterface,\n input: ReadFileToolInput,\n ): Promise<ReadFileToolOutput> {\n return env.readFile(input.path);\n }\n\n /**\n * Converts the tool output to a format suitable for model consumption.\n *\n * @param output - The output from the tool execution.\n * @returns The formatted tool result.\n */\n toModelOutput(output: ReadFileToolOutput): ModelFormattedToolResult {\n return {\n type: 'text',\n value: formatModelResponse(output),\n };\n }\n\n /**\n * Gets the examples for the tool.\n *\n * @returns The tool examples.\n */\n get examples(): Array<ToolExample<ReadFileToolInput, ReadFileToolOutput>> {\n const exampleContent = `import clsx from 'clsx';\n\ntype LoaderProps = {\n className?: string;\n};\n\nexport function Loader(props: LoaderProps) {\n const { className } = props;\n\n return (\n <div className={clsx('loader', className)}>\n Loading…\n </div>\n );\n}\n`;\n\n return [\n {\n input: {\n path: 'src/components/Loader.tsx',\n },\n output: formatModelResponse({\n path: 'src/components/Loader.tsx',\n content: exampleContent,\n }),\n },\n ];\n }\n}\n","import type { FlexibleSchema, ToolCallOptions } from 'ai';\nimport * as z from 'zod';\n\nexport const ReadFileResult = z.object({\n path: z.string().meta({\n description: 'The path to the file that was read.',\n }),\n content: z.string().meta({\n description: 'The content of the file that was read.',\n }),\n});\n\nexport type ReadFileResult = z.infer<typeof ReadFileResult>;\n\nexport const WriteFileResult = z.object({\n path: z.string().meta({\n description: 'The path to the file that was written.',\n }),\n message: z.string().meta({\n description: 'A message indicating the result of the write operation.',\n }),\n});\n\nexport type WriteFileResult = z.infer<typeof WriteFileResult>;\n\nexport const DeleteFileResult = z.object({\n path: z.string().meta({\n description: 'The path to the file that was deleted.',\n }),\n message: z.string().meta({\n description: 'A message indicating the result of the delete operation.',\n }),\n});\n\nexport type DeleteFileResult = z.infer<typeof DeleteFileResult>;\n\nexport const MoveFileResult = z.object({\n sourcePath: z.string().meta({\n description: 'The original path of the file that was moved.',\n }),\n destinationPath: z.string().meta({\n description: 'The new path of the file that was moved to.',\n }),\n message: z.string().meta({\n description: 'A message indicating the result of the move operation.',\n }),\n});\n\nexport type MoveFileResult = z.infer<typeof MoveFileResult>;\n\nexport const CopyFileResult = z.object({\n sourcePath: z.string().meta({\n description: 'The original path of the file that was copied.',\n }),\n destinationPath: z.string().meta({\n description: 'The new path of the file that was copied to.',\n }),\n message: z.string().meta({\n description: 'A message indicating the result of the copy operation.',\n }),\n});\n\nexport type CopyFileResult = z.infer<typeof CopyFileResult>;\n\nexport const RunCommandResult = z.object({\n command: z.string().meta({\n description: 'The command that was executed.',\n }),\n exitCode: z.number().meta({\n description: 'The exit code of the command.',\n }),\n stdout: z.string().meta({\n description: 'The standard output of the command.',\n }),\n stderr: z.string().meta({\n description: 'The standard error output of the command.',\n }),\n maxBytes: z\n .number()\n .int()\n .positive()\n .optional()\n .meta({\n description:\n 'Optional byte limit applied when presenting stdout/stderr to the model.',\n }),\n});\n\nexport type RunCommandResult = z.infer<typeof RunCommandResult>;\n\nexport interface FilesystemEnvironmentInterface {\n get name(): string;\n readFile(path: string): Promise<ReadFileResult>;\n writeFile(path: string, content: string): Promise<WriteFileResult>;\n deleteFile(path: string): Promise<DeleteFileResult>;\n moveFile(\n sourcePath: string,\n destinationPath: string,\n ): Promise<MoveFileResult>;\n copyFile(\n sourcePath: string,\n destinationPath: string,\n ): Promise<CopyFileResult>;\n}\n\nexport interface CommandLineEnvironmentInterface\n extends FilesystemEnvironmentInterface {\n runCommand(command: string): Promise<RunCommandResult>;\n}\n\nexport type Environment =\n | FilesystemEnvironmentInterface\n | CommandLineEnvironmentInterface;\n\n// These types must be compatible with or subtypes of the LanguageModelV3ToolResultOutput type from '@ai-sdk/provider'.\ntype ModelTextResult = { type: 'text'; value: string };\ntype ModelTextPart = { type: 'text'; text: string };\ntype ModelMediaPart = { type: 'media'; data: string; mediaType: string };\nexport type ModelFormattedToolResult =\n | ModelTextResult\n | {\n type: 'content';\n value: Array<ModelTextPart | ModelMediaPart>;\n };\n\nexport type ToolExample<ToolInputType, ToolOutputType> = {\n input: ToolInputType;\n output: ToolOutputType | string;\n};\n\n// This interface must be compatible with the Tool interface from 'ai'.\nexport interface ToolInterface<ToolInputType, ToolOutputType> {\n get name(): string;\n get description(): string;\n get inputSchema(): FlexibleSchema<ToolInputType>;\n get outputSchema(): FlexibleSchema<ToolOutputType>;\n execute(\n input: ToolInputType,\n options: ToolCallOptions,\n ): Promise<ToolOutputType>;\n toModelOutput(output: ToolOutputType): ModelFormattedToolResult;\n get examples(): Array<ToolExample<ToolInputType, ToolOutputType>>;\n get needsApproval(): boolean;\n}\n\nexport interface EnvironmentToolInterface<\n ToolInputType,\n ToolOutputType,\n EnvironmentType,\n> extends ToolInterface<ToolInputType, ToolOutputType> {\n get environment(): EnvironmentType;\n}\n\n// Optional constructor parameter for tools.\nexport type ToolConfig = {\n name?: string;\n description?: string;\n needsApproval?: boolean;\n};\n","/**\n * External dependencies\n */\nimport path from 'node:path';\n\nexport type ProgrammingLanguage = {\n identifier: string;\n name: string;\n fileExtensions: string[];\n};\n\nconst jsLanguage: ProgrammingLanguage = {\n identifier: 'javascript',\n name: 'JavaScript',\n fileExtensions: ['js', 'jsx'],\n};\n\nconst tsLanguage: ProgrammingLanguage = {\n identifier: 'typescript',\n name: 'TypeScript',\n fileExtensions: ['ts', 'tsx'],\n};\n\nconst ymlLanguage: ProgrammingLanguage = {\n identifier: 'yaml',\n name: 'YAML',\n fileExtensions: ['yml', 'yaml'],\n};\n\n/**\n * Language detection by file extension.\n */\nconst EXTENSION_TO_LANGUAGE: Record<string, ProgrammingLanguage> = {\n ts: tsLanguage,\n tsx: tsLanguage,\n js: jsLanguage,\n jsx: jsLanguage,\n py: {\n identifier: 'python',\n name: 'Python',\n fileExtensions: ['py'],\n },\n java: {\n identifier: 'java',\n name: 'Java',\n fileExtensions: ['java'],\n },\n c: {\n identifier: 'c',\n name: 'C',\n fileExtensions: ['c'],\n },\n cpp: {\n identifier: 'cpp',\n name: 'C++',\n fileExtensions: ['cpp'],\n },\n cs: {\n identifier: 'chsarp',\n name: 'C#',\n fileExtensions: ['cs'],\n },\n go: {\n identifier: 'go',\n name: 'Go',\n fileExtensions: ['go'],\n },\n rs: {\n identifier: 'rust',\n name: 'Rust',\n fileExtensions: ['rs'],\n },\n php: {\n identifier: 'php',\n name: 'PHP',\n fileExtensions: ['php'],\n },\n rb: {\n identifier: 'ruby',\n name: 'Ruby',\n fileExtensions: ['rb'],\n },\n swift: {\n identifier: 'swift',\n name: 'Swift',\n fileExtensions: ['swift'],\n },\n kt: {\n identifier: 'kotlin',\n name: 'Kotlin',\n fileExtensions: ['kt'],\n },\n scala: {\n identifier: 'scala',\n name: 'Scala',\n fileExtensions: ['scala'],\n },\n html: {\n identifier: 'html',\n name: 'HTML',\n fileExtensions: ['html'],\n },\n css: {\n identifier: 'css',\n name: 'CSS',\n fileExtensions: ['css'],\n },\n sass: {\n identifier: 'sass',\n name: 'Sass',\n fileExtensions: ['sass'],\n },\n scss: {\n identifier: 'scss',\n name: 'SCSS',\n fileExtensions: ['scss'],\n },\n less: {\n identifier: 'less',\n name: 'Less',\n fileExtensions: ['less'],\n },\n json: {\n identifier: 'json',\n name: 'JSON',\n fileExtensions: ['json'],\n },\n md: {\n identifier: 'markdown',\n name: 'Markdown',\n fileExtensions: ['md'],\n },\n toml: {\n identifier: 'toml',\n name: 'TOML',\n fileExtensions: ['toml'],\n },\n yml: ymlLanguage,\n yaml: ymlLanguage,\n xml: {\n identifier: 'xml',\n name: 'XML',\n fileExtensions: ['xml'],\n },\n sql: {\n identifier: 'sql',\n name: 'SQL',\n fileExtensions: ['sql'],\n },\n graphql: {\n identifier: 'graphql',\n name: 'GraphQL',\n fileExtensions: ['graphql'],\n },\n sh: {\n identifier: 'bash',\n name: 'Shell',\n fileExtensions: ['sh'],\n },\n ps1: {\n identifier: 'bash',\n name: 'PowerShell',\n fileExtensions: ['ps1'],\n },\n};\n\n/**\n * Returns programming language information for a file path.\n *\n * @param filePath - File path.\n * @returns Programming language information, or null if none could be identified.\n */\nfunction getLanguageFromFilePath(\n filePath: string,\n): ProgrammingLanguage | undefined {\n const extension = path.extname(filePath).slice(1).toLowerCase() || '';\n return EXTENSION_TO_LANGUAGE[extension];\n}\n\n/**\n * Returns the programming language identifier for a file path.\n *\n * @param filePath - File path.\n * @returns Programming language identifier, or empty string if none could be identified.\n */\nexport function getLanguageIdentifierFromFilePath(filePath: string): string {\n const language = getLanguageFromFilePath(filePath);\n return language ? language.identifier : '';\n}\n","import type { ToolCallOptions } from 'ai';\nimport type {\n ToolInterface,\n ToolConfig as ToolBaseConfig,\n ToolExample,\n ModelFormattedToolResult,\n} from '../types';\n\ntype FlexibleInputSchema<T> = ToolInterface<T, unknown>['inputSchema'];\ntype FlexibleOutputSchema<T> = ToolInterface<unknown, T>['outputSchema'];\n\nexport type ToolMetadata<ToolInputType, ToolOutputType> = {\n name: string;\n description: string;\n inputSchema: FlexibleInputSchema<ToolInputType>;\n outputSchema: FlexibleOutputSchema<ToolOutputType>;\n needsApproval: boolean;\n};\n\n/**\n * Base class for a tool.\n */\nexport abstract class ToolBase<\n ToolConfig extends ToolBaseConfig,\n ToolInputType,\n ToolOutputType,\n> implements ToolInterface<ToolInputType, ToolOutputType>\n{\n readonly _toolConfig!: ToolConfig;\n protected readonly _name: string;\n protected readonly _description: string;\n protected readonly _inputSchema: FlexibleInputSchema<ToolInputType>;\n protected readonly _outputSchema: FlexibleOutputSchema<ToolOutputType>;\n protected readonly _needsApproval: boolean;\n\n /**\n * Constructs a new tool instance.\n *\n * @param toolConfig - Optional tool config, can be used to override some defaults.\n */\n constructor(toolConfig?: ToolConfig) {\n const {\n name: defaultName,\n description: defaultDescription,\n inputSchema,\n outputSchema,\n needsApproval: defaultNeedsApproval,\n } = this.getMetadata();\n\n this._name = toolConfig?.name || defaultName;\n this._description = toolConfig?.description || defaultDescription;\n this._inputSchema = inputSchema;\n this._outputSchema = outputSchema;\n this._needsApproval =\n toolConfig?.needsApproval !== undefined\n ? toolConfig.needsApproval\n : defaultNeedsApproval;\n }\n\n /**\n * Gets the tool name.\n *\n * @returns The tool name.\n */\n get name(): string {\n return this._name;\n }\n\n /**\n * Gets the tool description.\n *\n * @returns The tool description.\n */\n get description(): string {\n return this._description;\n }\n\n /**\n * Gets the input schema for the tool.\n *\n * @returns The input schema.\n */\n get inputSchema(): FlexibleInputSchema<ToolInputType> {\n return this._inputSchema;\n }\n\n /**\n * Gets the input schema for the tool.\n *\n * @returns The input schema.\n */\n get outputSchema(): FlexibleInputSchema<ToolOutputType> {\n return this._outputSchema;\n }\n\n /**\n * Gets whether the tool needs approval before use.\n *\n * @returns True if the tool needs approval, false otherwise.\n */\n get needsApproval(): boolean {\n return this._needsApproval;\n }\n\n /**\n * Gets the examples for the tool.\n *\n * @returns The tool examples.\n */\n abstract get examples(): Array<ToolExample<ToolInputType, ToolOutputType>>;\n\n /**\n * Executes the tool with the given input.\n *\n * @param input - The input for the tool.\n * @param options - Options from the tool call.\n * @returns A promise that resolves to the tool execution result.\n */\n abstract execute(\n input: ToolInputType,\n options: ToolCallOptions,\n ): Promise<ToolOutputType>;\n\n /**\n * Converts the tool output to a format suitable for model consumption.\n *\n * @param output - The output from the tool execution.\n * @returns The formatted tool result.\n */\n abstract toModelOutput(output: ToolOutputType): ModelFormattedToolResult;\n\n /**\n * Returns the metadata for the tool.\n *\n * The name, description, and needsApproval properties are defaults which can be overridden in the constructor.\n *\n * @returns The tool metadata.\n */\n protected abstract getMetadata(): ToolMetadata<ToolInputType, ToolOutputType>;\n}\n","import type { ToolCallOptions } from 'ai';\nimport type {\n EnvironmentToolInterface,\n ToolConfig as ToolBaseConfig,\n} from '../types';\nimport { ToolBase, type ToolMetadata } from './tool-base';\n\nexport type EnvironmentToolMetadata<ToolInputType, ToolOutputType> =\n ToolMetadata<ToolInputType, ToolOutputType>;\n\n/**\n * Base class for an execution environment tool.\n */\nexport abstract class EnvironmentToolBase<\n ToolConfig extends ToolBaseConfig,\n ToolInputType,\n ToolOutputType,\n EnvironmentType,\n >\n extends ToolBase<ToolConfig, ToolInputType, ToolOutputType>\n implements\n EnvironmentToolInterface<ToolInputType, ToolOutputType, EnvironmentType>\n{\n protected readonly _environment: EnvironmentType;\n\n /**\n * Constructs a new `EnvironmentToolBase` instance.\n *\n * @param environment - The execution environment to apply the tool in.\n * @param toolConfig - Optional tool config, can be used to override some defaults.\n */\n constructor(environment: EnvironmentType, toolConfig?: ToolConfig) {\n super(toolConfig);\n\n this._environment = environment;\n }\n\n /**\n * Gets the current execution environment for the tool.\n *\n * @returns The current execution environment.\n */\n get environment(): EnvironmentType {\n return this._environment;\n }\n\n /**\n * Executes the tool with the given input.\n *\n * @param input - The input for the tool.\n * @param _options - Options from the tool call.\n * @returns A promise that resolves to the tool execution result.\n */\n override execute(\n input: ToolInputType,\n _options: ToolCallOptions,\n ): Promise<ToolOutputType> {\n return this.executeForEnvironment(this._environment, input);\n }\n\n /**\n * Returns the metadata for the tool.\n *\n * The name, description, and needsApproval properties are defaults which can be overridden in the constructor.\n *\n * @returns The tool metadata.\n */\n protected abstract override getMetadata(): EnvironmentToolMetadata<\n ToolInputType,\n ToolOutputType\n >;\n\n /**\n * Executes the tool in the given execution environment with the given input.\n *\n * @param env - The execution environment to use.\n * @param input - The input for the tool.\n * @returns A promise that resolves to the tool execution result.\n */\n protected abstract executeForEnvironment(\n env: EnvironmentType,\n input: ToolInputType,\n ): Promise<ToolOutputType>;\n}\n","import { z } from 'zod';\nimport {\n WriteFileResult,\n type FilesystemEnvironmentInterface,\n type ToolConfig,\n type ToolExample,\n type ModelFormattedToolResult,\n} from '../types';\nimport {\n EnvironmentToolBase,\n type EnvironmentToolMetadata,\n} from './environment-tool-base';\n\nexport const WriteFileToolName = 'write_file';\n\nexport type WriteFileToolConfig = ToolConfig;\n\nexport const WriteFileToolInput = z.object({\n path: z.string().meta({\n description:\n 'The path to the file to write, relative to the project directory.',\n }),\n content: z.string().meta({\n description:\n 'The content to write to the file. If the file already exists, the content will replace existing content.',\n }),\n});\n\nexport type WriteFileToolInput = z.infer<typeof WriteFileToolInput>;\n\nexport const WriteFileToolOutput = WriteFileResult;\n\nexport type WriteFileToolOutput = z.infer<typeof WriteFileToolOutput>;\n\n/**\n * Class for the WriteFile tool.\n */\nexport class WriteFileTool extends EnvironmentToolBase<\n WriteFileToolConfig,\n WriteFileToolInput,\n WriteFileToolOutput,\n FilesystemEnvironmentInterface\n> {\n /**\n * Returns the metadata for the tool.\n *\n * The name, description, and needsApproval properties are defaults which can be overridden in the constructor.\n *\n * @returns The tool metadata.\n */\n protected getMetadata(): EnvironmentToolMetadata<\n WriteFileToolInput,\n WriteFileToolOutput\n > {\n return {\n name: WriteFileToolName,\n description: `Writes a file to the local filesystem.\n- This tool will overwrite the existing file if there is one at the provided path\n- If this is an existing file, you MUST use the read_file tool first to read the file's contents\n- ALWAYS prefer editing existing files in the codebase - NEVER write new files unless explicitly required\n- NEVER proactively create documentation files (*.md) or README files unless explicitly requested\n- Only use emojis if the user explicitly requests it - avoid writing emojis to files unless asked`,\n inputSchema: WriteFileToolInput,\n outputSchema: WriteFileToolOutput,\n needsApproval: false,\n };\n }\n\n /**\n * Executes the tool in the given execution environment with the given input.\n *\n * @param env - The execution environment to use.\n * @param input - The input for the tool.\n * @returns A promise that resolves to the tool execution result.\n */\n protected executeForEnvironment(\n env: FilesystemEnvironmentInterface,\n input: WriteFileToolInput,\n ): Promise<WriteFileToolOutput> {\n return env.writeFile(input.path, input.content);\n }\n\n /**\n * Converts the tool output to a format suitable for model consumption.\n *\n * @param output - The output from the tool execution.\n * @returns The formatted tool result.\n */\n toModelOutput(output: WriteFileToolOutput): ModelFormattedToolResult {\n return {\n type: 'text',\n value: `File \\`${output.path}\\` written successfully.`,\n };\n }\n\n /**\n * Gets the examples for the tool.\n *\n * @returns The tool examples.\n */\n get examples(): Array<ToolExample<WriteFileToolInput, WriteFileToolOutput>> {\n const exampleContent = `export function snakeCaseToCamelCase(snakeCase: string): string {\n return snakeCase.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n}\n`;\n\n return [\n {\n input: {\n path: 'src/util/snake-case-to-camel-case.ts',\n content: exampleContent,\n },\n output:\n 'File `src/util/snake-case-to-camel-case.ts` written successfully.',\n },\n ];\n }\n}\n","import { z } from 'zod';\nimport {\n DeleteFileResult,\n type FilesystemEnvironmentInterface,\n type ToolConfig,\n type ToolExample,\n type ModelFormattedToolResult,\n} from '../types';\nimport {\n EnvironmentToolBase,\n type EnvironmentToolMetadata,\n} from './environment-tool-base';\n\nexport const DeleteFileToolName = 'delete_file';\n\nexport type DeleteFileToolConfig = ToolConfig;\n\nexport const DeleteFileToolInput = z.object({\n path: z.string().meta({\n description:\n 'The path to the file to delete, relative to the project directory.',\n }),\n});\n\nexport type DeleteFileToolInput = z.infer<typeof DeleteFileToolInput>;\n\nexport const DeleteFileToolOutput = DeleteFileResult;\n\nexport type DeleteFileToolOutput = z.infer<typeof DeleteFileToolOutput>;\n\n/**\n * Class for the DeleteFile tool.\n */\nexport class DeleteFileTool extends EnvironmentToolBase<\n DeleteFileToolConfig,\n DeleteFileToolInput,\n DeleteFileToolOutput,\n FilesystemEnvironmentInterface\n> {\n /**\n * Returns the metadata for the tool.\n *\n * The name, description, and needsApproval properties are defaults which can be overridden in the constructor.\n *\n * @returns The tool metadata.\n */\n protected getMetadata(): EnvironmentToolMetadata<\n DeleteFileToolInput,\n DeleteFileToolOutput\n > {\n return {\n name: DeleteFileToolName,\n description: 'Deletes the file at the specified path.',\n inputSchema: DeleteFileToolInput,\n outputSchema: DeleteFileToolOutput,\n needsApproval: true,\n };\n }\n\n /**\n * Executes the tool in the given execution environment with the given input.\n *\n * @param env - The execution environment to use.\n * @param input - The input for the tool.\n * @returns A promise that resolves to the tool execution result.\n */\n protected executeForEnvironment(\n env: FilesystemEnvironmentInterface,\n input: DeleteFileToolInput,\n ): Promise<DeleteFileToolOutput> {\n return env.deleteFile(input.path);\n }\n\n /**\n * Converts the tool output to a format suitable for model consumption.\n *\n * @param output - The output from the tool execution.\n * @returns The formatted tool result.\n */\n toModelOutput(output: DeleteFileToolOutput): ModelFormattedToolResult {\n return {\n type: 'text',\n value: `File \\`${output.path}\\` deleted successfully.`,\n };\n }\n\n /**\n * Gets the examples for the tool.\n *\n * @returns The tool examples.\n */\n get examples(): Array<\n ToolExample<DeleteFileToolInput, DeleteFileToolOutput>\n > {\n return [\n {\n input: {\n path: 'src/components/Chart.tsx',\n },\n output: 'File `src/components/Chart.tsx` deleted successfully.',\n },\n ];\n }\n}\n","import { z } from 'zod';\nimport {\n type FilesystemEnvironmentInterface,\n type ToolConfig,\n type ToolExample,\n type ModelFormattedToolResult,\n} from '../types';\nimport {\n EnvironmentToolBase,\n type EnvironmentToolMetadata,\n} from './environment-tool-base';\n\nexport const EditFileToolName = 'edit_file';\n\nexport type EditFileToolConfig = ToolConfig;\n\nexport const EditFileToolInput = z.object({\n path: z.string().meta({\n description:\n 'The path to the file to edit, relative to the project directory.',\n }),\n oldString: z.string().meta({\n description: 'The exact string to replace in the file.',\n }),\n newString: z.string().meta({\n description: 'The string to replace the old string with.',\n }),\n replaceAll: z.boolean().optional().meta({\n description:\n 'Whether to replace all occurrences of the old string. Defaults to false.',\n }),\n validateUniqueness: z.boolean().optional().meta({\n description:\n 'Whether to validate that oldString is unique in the file (when replaceAll is false). Defaults to true.',\n }),\n});\n\nexport type EditFileToolInput = z.infer<typeof EditFileToolInput>;\n\nexport const EditFileToolOutput = z.object({\n path: z.string().meta({\n description: 'The path to the file that was edited.',\n }),\n oldString: z.string().meta({\n description: 'The old string that was replaced.',\n }),\n newString: z.string().meta({\n description: 'The new string that replaced the old string.',\n }),\n replacements: z.number().meta({\n description: 'The number of replacements made.',\n }),\n message: z.string().meta({\n description: 'A message indicating the result of the edit operation.',\n }),\n lineEnding: z.enum(['LF', 'CRLF']).optional().meta({\n description: 'The line ending type detected in the file.',\n }),\n wasNewFile: z.boolean().optional().meta({\n description: 'Whether this was a new file creation.',\n }),\n});\n\nexport type EditFileToolOutput = z.infer<typeof EditFileToolOutput>;\n\n/**\n * Escapes special regex characters in a string for literal matching.\n *\n * @param string - The string to escape.\n * @returns The escaped string.\n */\nfunction escapeRegExp(string: string): string {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\n/**\n * Class for the EditFile tool.\n */\nexport class EditFileTool extends EnvironmentToolBase<\n EditFileToolConfig,\n EditFileToolInput,\n EditFileToolOutput,\n FilesystemEnvironmentInterface\n> {\n /**\n * Returns the metadata for the tool.\n *\n * The name, description, and needsApproval properties are defaults which can be overridden in the constructor.\n *\n * @returns The tool metadata.\n */\n protected getMetadata(): EnvironmentToolMetadata<\n EditFileToolInput,\n EditFileToolOutput\n > {\n return {\n name: EditFileToolName,\n description: `Performs exact string replacements in files.\n- You must read the file first before editing - this tool will error if you attempt an edit without reading the file\n- When editing text from read output, preserve exact indentation (tabs/spaces) after the line number prefix\n- ALWAYS prefer editing existing files in the codebase - NEVER write new files unless explicitly required\n- The edit will FAIL if oldString is not unique in the file - provide more context or use replaceAll\n- Use replaceAll for replacing and renaming strings across the file (e.g., renaming a variable)\n- Avoid adding emojis to files unless explicitly requested`,\n inputSchema: EditFileToolInput,\n outputSchema: EditFileToolOutput,\n needsApproval: true,\n };\n }\n\n /**\n * Executes the tool in the given execution environment with the given input.\n *\n * @param env - The execution environment to use.\n * @param input - The input for the tool.\n * @returns A promise that resolves to the tool execution result.\n */\n protected async executeForEnvironment(\n env: FilesystemEnvironmentInterface,\n input: EditFileToolInput,\n ): Promise<EditFileToolOutput> {\n const {\n path,\n oldString,\n newString,\n replaceAll = false,\n validateUniqueness = true\n } = input;\n\n // Check if file exists first\n let fileExists = true;\n let content = '';\n let wasNewFile = false;\n\n try {\n const readResult = await env.readFile(path);\n content = readResult.content;\n } catch (error: any) {\n // Handle new file creation\n if (error?.code === 'ENOENT' || error?.message?.includes('not found')) {\n if (oldString !== '') {\n throw new Error(`Cannot edit non-existent file. To create a new file, oldString must be empty.`);\n }\n fileExists = false;\n wasNewFile = true;\n content = '';\n } else {\n throw error;\n }\n }\n\n // Detect line ending type\n const lineEnding = content.includes('\\r\\n') ? 'CRLF' : 'LF';\n\n // Check if content appears to be binary\n if (content.includes('\\0') || !/^[\\x09\\x0A\\x0D\\x20-\\x7E\\x80-\\uFFFF]*$/.test(content.substring(0, 1000))) {\n throw new Error('Cannot edit binary files');\n }\n\n let replacements = 0;\n\n // Handle new file creation\n if (!fileExists && oldString === '') {\n content = newString;\n replacements = 1;\n } else if (replaceAll) {\n const escapedOldString = escapeRegExp(oldString);\n const regex = new RegExp(escapedOldString, 'g');\n const matches = content.match(regex);\n replacements = matches ? matches.length : 0;\n\n if (replacements === 0) {\n throw new Error(`String not found: \"${oldString.substring(0, 100)}${oldString.length > 100 ? '...' : ''}\"`);\n }\n\n content = content.replace(regex, newString);\n } else {\n // Single replacement mode\n const occurrences = this.countOccurrences(content, oldString);\n\n if (occurrences === 0) {\n throw new Error(`String not found: \"${oldString.substring(0, 100)}${oldString.length > 100 ? '...' : ''}\"`);\n }\n\n // Validate uniqueness if requested\n if (validateUniqueness && occurrences > 1) {\n throw new Error(\n `The string \"${oldString.substring(0, 50)}${oldString.length > 50 ? '...' : ''}\" ` +\n `occurs ${occurrences} times in the file. ` +\n `Either use replaceAll: true to replace all occurrences, ` +\n `or provide more context to make the string unique.`\n );\n }\n\n const index = content.indexOf(oldString);\n content =\n content.substring(0, index) +\n newString +\n content.substring(index + oldString.length);\n replacements = 1;\n }\n\n await env.writeFile(path, content);\n\n const message =\n wasNewFile\n ? `Successfully created new file with content.`\n : `Successfully made ${replacements} replacement(s) in file.`;\n\n return {\n path,\n oldString,\n newString,\n replacements,\n message,\n lineEnding: lineEnding as 'LF' | 'CRLF',\n wasNewFile,\n };\n }\n\n /**\n * Count occurrences of a string in content\n */\n private countOccurrences(content: string, searchString: string): number {\n if (searchString === '') return 0;\n let count = 0;\n let index = 0;\n while ((index = content.indexOf(searchString, index)) !== -1) {\n count++;\n index += searchString.length;\n }\n return count;\n }\n\n /**\n * Converts the tool output to a format suitable for model consumption.\n *\n * @param output - The output from the tool execution.\n * @returns The formatted tool result.\n */\n toModelOutput(output: EditFileToolOutput): ModelFormattedToolResult {\n return {\n type: 'text',\n value: `Edited file \\`${output.path}\\` with ${output.replacements} replacement(s).`,\n };\n }\n\n /**\n * Gets the examples for the tool.\n *\n * @returns The tool examples.\n */\n get examples(): Array<ToolExample<EditFileToolInput, EditFileToolOutput>> {\n return [\n {\n input: {\n path: 'src/example.ts',\n oldString: 'console.log(\"hello\");',\n newString: 'console.log(\"world\");',\n replaceAll: false,\n },\n output: {\n path: 'src/example.ts',\n oldString: 'console.log(\"hello\");',\n newString: 'console.log(\"world\");',\n replacements: 1,\n message: 'Successfully made 1 replacement(s) in file.',\n },\n },\n {\n input: {\n path: 'src/example.ts',\n oldString: 'var',\n newString: 'let',\n replaceAll: true,\n },\n output: {\n path: 'src/example.ts',\n oldString: 'var',\n newString: 'let',\n replacements: 3,\n message: 'Successfully made 3 replacement(s) in file.',\n },\n },\n ];\n }\n}\n","import { z } from 'zod';\nimport {\n type FilesystemEnvironmentInterface,\n type ToolConfig,\n type ToolExample,\n type ModelFormattedToolResult,\n} from '../types';\nimport {\n EnvironmentToolBase,\n type EnvironmentToolMetadata,\n} from './environment-tool-base';\n\nexport const MultiEditFileToolName = 'multi_edit_file';\n\nexport type MultiEditFileToolConfig = ToolConfig;\n\nexport const MultiEditFileToolInput = z.object({\n path: z.string().meta({\n description: 'The path to the file to edit, relative to the project directory.',\n }),\n edits: z.array(z.object({\n oldString: z.string().meta({\n description: 'The exact string to search for and replace.',\n }),\n newString: z.string().meta({\n description: 'The string to replace the old string with.',\n }),\n replaceAll: z.boolean().optional().meta({\n description: 'Whether to replace all occurrences or just the first. Defaults to false.',\n }),\n })).meta({\n description: 'Array of edits to apply to the file atomically.',\n }),\n});\n\nexport type MultiEditFileToolInput = z.infer<typeof MultiEditFileToolInput>;\n\nexport const MultiEditFileToolOutput = z.object({\n path: z.string().meta({\n description: 'The path to the file that was edited.',\n }),\n editsApplied: z.array(z.object({\n editIndex: z.number(),\n oldString: z.string(),\n newString: z.string(),\n occurrences: z.number(),\n success: z.boolean(),\n })).meta({\n description: 'Details of each edit that was applied.',\n }),\n totalEdits: z.number().meta({\n description: 'Total number of edits attempted.',\n }),\n message: z.string().meta({\n description: 'A message indicating the result of the multi-edit operation.',\n }),\n wasNewFile: z.boolean().optional().meta({\n description: 'Whether this was a new file creation.',\n }),\n});\n\nexport type MultiEditFileToolOutput = z.infer<typeof MultiEditFileToolOutput>;\n\n/**\n * Escapes special regex characters in a string for literal matching.\n */\nfunction escapeRegExp(string: string): string {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\n/**\n * Class for the MultiEditFile tool.\n */\nexport class MultiEditFileTool extends EnvironmentToolBase<\n MultiEditFileToolConfig,\n MultiEditFileToolInput,\n MultiEditFileToolOutput,\n FilesystemEnvironmentInterface\n> {\n /**\n * Returns the metadata for the tool.\n */\n protected getMetadata(): EnvironmentToolMetadata<\n MultiEditFileToolInput,\n MultiEditFileToolOutput\n > {\n return {\n name: MultiEditFileToolName,\n description: `Apply multiple edits to a file atomically. All edits must succeed or none are applied.\n- All edits are validated before any are applied\n- Edits are applied sequentially, with later edits seeing the results of earlier ones\n- For new files, the first edit must have an empty oldString\n- Detects and preserves line endings (LF/CRLF)\n- Rejects binary files automatically`,\n inputSchema: MultiEditFileToolInput,\n outputSchema: MultiEditFileToolOutput,\n needsApproval: true,\n };\n }\n\n /**\n * Executes the tool in the given execution environment with the given input.\n */\n protected async executeForEnvironment(\n env: FilesystemEnvironmentInterface,\n input: MultiEditFileToolInput,\n ): Promise<MultiEditFileToolOutput> {\n const { path, edits } = input;\n\n let content: string;\n let wasNewFile = false;\n\n try {\n const readResult = await env.readFile(path);\n content = readResult.content;\n } catch (error: any) {\n // Handle new file creation\n if (error?.code === 'ENOENT' || error?.message?.includes('not found')) {\n if (edits.length === 0 || edits[0].oldString !== '') {\n throw new Error('For new files, the first edit must have an empty oldString');\n }\n wasNewFile = true;\n content = '';\n } else {\n throw error;\n }\n }\n\n // Check if content appears to be binary\n if (this.isBinary(content)) {\n throw new Error('Cannot edit binary files');\n }\n\n // Validate all edits before applying any\n const validationResults = this.validateEdits(edits, content);\n const failedValidation = validationResults.find(r => !r.success);\n if (failedValidation) {\n throw new Error(\n `Edit validation failed at index ${failedValidation.editIndex}: ${failedValidation.error}`\n );\n }\n\n // Apply all edits sequentially\n const editResults: any[] = [];\n for (let i = 0; i < edits.length; i++) {\n const edit = edits[i];\n const result = this.applyEdit(content, edit, i);\n\n if (!result.success) {\n throw new Error(`Failed to apply edit at index ${i}: ${result.error}`);\n }\n\n content = result.newContent!;\n editResults.push({\n editIndex: i,\n oldString: edit.oldString,\n newString: edit.newString,\n occurrences: result.occurrences,\n success: true,\n });\n }\n\n // Write the final content\n await env.writeFile(path, content);\n\n const message = wasNewFile\n ? `Successfully created new file with ${editResults.length} edit(s)`\n : `Successfully applied ${editResults.length} edit(s) to file`;\n\n return {\n path,\n editsApplied: editResults,\n totalEdits: editResults.length,\n message,\n wasNewFile,\n };\n }\n\n private isBinary(content: string): boolean {\n return content.includes('\\0') ||\n !/^[\\x09\\x0A\\x0D\\x20-\\x7E\\x80-\\uFFFF]*$/.test(content.substring(0, 1000));\n }\n\n private validateEdits(edits: MultiEditFileToolInput['edits'], content: string): any[] {\n const results: any[] = [];\n let currentContent = content;\n\n for (let i = 0; i < edits.length; i++) {\n const edit = edits[i];\n\n // Special case for new file creation\n if (i === 0 && content === '' && edit.oldString === '') {\n results.push({\n editIndex: i,\n success: true,\n occurrences: 1,\n });\n currentContent = edit.newString;\n continue;\n }\n\n const occurrences = this.countOccurrences(currentContent, edit.oldString);\n\n if (occurrences === 0) {\n results.push({\n editIndex: i,\n success: false,\n error: `String not found: \"${edit.oldString.substring(0, 100)}${edit.oldString.length > 100 ? '...' : ''}\"`\n });\n return results;\n }\n\n // Simulate the edit for next validation\n const result = this.applyEdit(currentContent, edit, i);\n if (result.success) {\n currentContent = result.newContent!;\n results.push({\n editIndex: i,\n success: true,\n occurrences: result.occurrences,\n });\n } else {\n results.push({\n editIndex: i,\n success: false,\n error: result.error,\n });\n return results;\n }\n }\n\n return results;\n }\n\n private applyEdit(\n content: string,\n edit: MultiEditFileToolInput['edits'][0],\n editIndex: number\n ): { success: boolean; newContent?: string; occurrences: number; error?: string } {\n // Special case for new file creation\n if (content === '' && edit.oldString === '') {\n return {\n success: true,\n newContent: edit.newString,\n occurrences: 1,\n };\n }\n\n if (edit.replaceAll) {\n const escapedOldString = escapeRegExp(edit.oldString);\n const regex = new RegExp(escapedOldString, 'g');\n const occurrences = this.countOccurrences(content, edit.oldString);\n const newContent = content.replace(regex, edit.newString);\n\n return {\n success: true,\n newContent,\n occurrences,\n };\n } else {\n const index = content.indexOf(edit.oldString);\n if (index === -1) {\n return {\n success: false,\n occurrences: 0,\n error: 'String not found',\n };\n }\n\n const newContent =\n content.substring(0, index) +\n edit.newString +\n content.substring(index + edit.oldString.length);\n\n return {\n success: true,\n newContent,\n occurrences: 1,\n };\n }\n }\n\n private countOccurrences(content: string, searchString: string): number {\n if (searchString === '') return 0;\n let count = 0;\n let index = 0;\n while ((index = content.indexOf(searchString, index)) !== -1) {\n count++;\n index += searchString.length;\n }\n return count;\n }\n\n /**\n * Converts the tool output to a format suitable for model consumption.\n */\n toModelOutput(output: MultiEditFileToolOutput): ModelFormattedToolResult {\n return {\n type: 'text',\n value: `Applied ${output.totalEdits} edit(s) to \\`${output.path}\\`. ${output.message}`,\n };\n }\n\n /**\n * Gets the examples for the tool.\n */\n get examples(): Array<ToolExample<MultiEditFileToolInput, MultiEditFileToolOutput>> {\n return [\n {\n input: {\n path: 'src/example.ts',\n edits: [\n {\n oldString: 'const',\n newString: 'let',\n replaceAll: false,\n },\n {\n oldString: 'let x',\n newString: 'let myVar',\n replaceAll: false,\n },\n ],\n },\n output: {\n path: 'src/example.ts',\n editsApplied: [\n {\n editIndex: 0,\n oldString: 'const',\n newString: 'let',\n occurrences: 1,\n success: true,\n },\n {\n editIndex: 1,\n oldString: 'let x',\n newString: 'let myVar',\n occurrences: 1,\n success: true,\n },\n ],\n totalEdits: 2,\n message: 'Successfully applied 2 edit(s) to file',\n },\n },\n ];\n }\n}\n","import { z } from 'zod';\nimport {\n MoveFileResult,\n type FilesystemEnvironmentInterface,\n type ToolConfig,\n type ToolExample,\n type ModelFormattedToolResult,\n} from '../types';\nimport {\n EnvironmentToolBase,\n type EnvironmentToolMetadata,\n} from './environment-tool-base';\n\nexport const MoveFileToolName = 'move_file';\n\nexport type MoveFileToolConfig = ToolConfig;\n\nexport const MoveFileToolInput = z.object({\n sourcePath: z.string().meta({\n description:\n 'The path to the file to move, relative to the project directory.',\n }),\n destinationPath: z.string().meta({\n description:\n 'The path to the destination where the file should be moved, relative to the project directory. If the file already exists, it will be overwritten.',\n }),\n});\n\nexport type MoveFileToolInput = z.infer<typeof MoveFileToolInput>;\n\nexport const MoveFileToolOutput = MoveFileResult;\n\nexport type MoveFileToolOutput = z.infer<typeof MoveFileToolOutput>;\n\n/**\n * Class for the MoveFile tool.\n */\nexport class MoveFileTool extends EnvironmentToolBase<\n MoveFileToolConfig,\n MoveFileToolInput,\n MoveFileToolOutput,\n FilesystemEnvironmentInterface\n> {\n /**\n * Returns the metadata for the tool.\n *\n * The name, description, and needsApproval properties are defaults which can be overridden in the constructor.\n *\n * @returns The tool metadata.\n */\n protected getMetadata(): EnvironmentToolMetadata<\n MoveFileToolInput,\n MoveFileToolOutput\n > {\n return {\n name: MoveFileToolName,\n description: 'Moves a file from a source path to a destination path.',\n inputSchema: MoveFileToolInput,\n outputSchema: MoveFileToolOutput,\n needsApproval: false,\n };\n }\n\n /**\n * Executes the tool in the given execution environment with the given input.\n *\n * @param env - The execution environment to use.\n * @param input - The input for the tool.\n * @returns A promise that resolves to the tool execution result.\n */\n protected executeForEnvironment(\n env: FilesystemEnvironmentInterface,\n input: MoveFileToolInput,\n ): Promise<MoveFileToolOutput> {\n return env.moveFile(input.sourcePath, input.destinationPath);\n }\n\n /**\n * Converts the tool output to a format suitable for model consumption.\n *\n * @param output - The output from the tool execution.\n * @returns The formatted tool result.\n */\n toModelOutput(output: MoveFileToolOutput): ModelFormattedToolResult {\n return {\n type: 'text',\n value: `File \\`${output.sourcePath}\\` moved successfully to \\`${output.destinationPath}\\`.`,\n };\n }\n\n /**\n * Gets the examples for the tool.\n *\n * @returns The tool examples.\n */\n get examples(): Array<ToolExample<MoveFileToolInput, MoveFileToolOutput>> {\n return [\n {\n input: {\n sourcePath: 'src/lib/types.ts',\n destinationPath: 'lib/index.ts',\n },\n output: 'File `src/lib/types.ts` moved successfully to `lib/index.ts`.',\n },\n ];\n }\n}\n","import { z } from 'zod';\nimport {\n CopyFileResult,\n type FilesystemEnvironmentInterface,\n type ToolConfig,\n type ToolExample,\n type ModelFormattedToolResult,\n} from '../types';\nimport {\n EnvironmentToolBase,\n type EnvironmentToolMetadata,\n} from './environment-tool-base';\n\nexport const CopyFileToolName = 'copy_file';\n\nexport type CopyFileToolConfig = ToolConfig;\n\nexport const CopyFileToolInput = z.object({\n sourcePath: z.string().meta({\n description:\n 'The path to the file to copy, relative to the project directory.',\n }),\n destinationPath: z.string().meta({\n description:\n 'The path to the destination where the file should be copied, relative to the project directory. If the file already exists, it will be overwritten.',\n }),\n});\n\nexport type CopyFileToolInput = z.infer<typeof CopyFileToolInput>;\n\nexport const CopyFileToolOutput = CopyFileResult;\n\nexport type CopyFileToolOutput = z.infer<typeof CopyFileToolOutput>;\n\n/**\n * Class for the CopyFile tool.\n */\nexport class CopyFileTool extends EnvironmentToolBase<\n CopyFileToolConfig,\n CopyFileToolInput,\n CopyFileToolOutput,\n FilesystemEnvironmentInterface\n> {\n /**\n * Returns the metadata for the tool.\n *\n * The name, description, and needsApproval properties are defaults which can be overridden in the constructor.\n *\n * @returns The tool metadata.\n */\n protected getMetadata(): EnvironmentToolMetadata<\n CopyFileToolInput,\n CopyFileToolOutput\n > {\n return {\n name: CopyFileToolName,\n description: 'Copies a file from a source path to a destination path.',\n inputSchema: CopyFileToolInput,\n outputSchema: CopyFileToolOutput,\n needsApproval: false,\n };\n }\n\n /**\n * Executes the tool in the given execution environment with the given input.\n *\n * @param env - The execution environment to use.\n * @param input - The input for the tool.\n * @returns A promise that resolves to the tool execution result.\n */\n protected executeForEnvironment(\n env: FilesystemEnvironmentInterface,\n input: CopyFileToolInput,\n ): Promise<CopyFileToolOutput> {\n return env.copyFile(input.sourcePath, input.destinationPath);\n }\n\n /**\n * Converts the tool output to a format suitable for model consumption.\n *\n * @param output - The output from the tool execution.\n * @returns The formatted tool result.\n */\n toModelOutput(output: CopyFileToolOutput): ModelFormattedToolResult {\n return {\n type: 'text',\n value: `File \\`${output.sourcePath}\\` copied successfully to \\`${output.destinationPath}\\`.`,\n };\n }\n\n /**\n * Gets the examples for the tool.\n *\n * @returns The tool examples.\n */\n get examples(): Array<ToolExample<CopyFileToolInput, CopyFileToolOutput>> {\n return [\n {\n input: {\n sourcePath: 'src/index.ts',\n destinationPath: 'index.ts',\n },\n output: 'File `src/index.ts` copied successfully to `index.ts`.',\n },\n ];\n }\n}\n","import { z } from 'zod';\nimport {\n ReadFileResult,\n type FilesystemEnvironmentInterface,\n type ToolConfig,\n type ToolExample,\n type ModelFormattedToolResult,\n} from '../types';\nimport { getLanguageIdentifierFromFilePath } from '../util/get-language-identifier-from-file-path';\nimport {\n EnvironmentToolBase,\n type EnvironmentToolMetadata,\n} from './environment-tool-base';\n\nexport const ReadManyFilesToolName = 'read_many_files';\n\nexport type ReadManyFilesToolConfig = ToolConfig;\n\nexport const ReadManyFilesToolInput = z.object({\n paths: z.array(z.string()).meta({\n description:\n 'The paths to the files to read, relative to the project directory.',\n }),\n});\n\nexport type ReadManyFilesToolInput = z.infer<typeof ReadManyFilesToolInput>;\n\nexport const ReadManyFilesToolOutput = z.record(z.string(), ReadFileResult);\n\nexport type ReadManyFilesToolOutput = z.infer<typeof ReadManyFilesToolOutput>;\n\nconst formatModelResponse = (output: ReadManyFilesToolOutput[string]) => {\n const language = getLanguageIdentifierFromFilePath(output.path);\n return `File: \\`${output.path}\\`\nContent:\n\\`\\`\\`${language}\n${output.content}\n\\`\\`\\`\n`;\n};\n\n/**\n * Class for the ReadManyFiles tool.\n */\nexport class ReadManyFilesTool extends EnvironmentToolBase<\n ReadManyFilesToolConfig,\n ReadManyFilesToolInput,\n ReadManyFilesToolOutput,\n FilesystemEnvironmentInterface\n> {\n /**\n * Returns the metadata for the tool.\n *\n * The name, description, and needsApproval properties are defaults which can be overridden in the constructor.\n *\n * @returns The tool metadata.\n */\n protected getMetadata(): EnvironmentToolMetadata<\n ReadManyFilesToolInput,\n ReadManyFilesToolOutput\n > {\n return {\n name: ReadManyFilesToolName,\n description: 'Reads the contents of the files at the specified paths.',\n inputSchema: ReadManyFilesToolInput,\n outputSchema: ReadManyFilesToolOutput,\n needsApproval: false,\n };\n }\n\n /**\n * Executes the tool in the given execution environment with the given input.\n *\n * @param env - The execution environment to use.\n * @param input - The input for the tool.\n * @returns A promise that resolves to the tool execution result.\n */\n protected async executeForEnvironment(\n env: FilesystemEnvironmentInterface,\n input: ReadManyFilesToolInput,\n ): Promise<ReadManyFilesToolOutput> {\n const results: ReadFileResult[] = await Promise.all(\n input.paths.map((path) => env.readFile(path)),\n );\n\n return results.reduce((acc, result) => {\n acc[result.path] = result;\n return acc;\n }, {} as ReadManyFilesToolOutput);\n }\n\n /**\n * Converts the tool output to a format suitable for model consumption.\n *\n * @param output - The output from the tool execution.\n * @returns The formatted tool result.\n */\n toModelOutput(output: ReadManyFilesToolOutput): ModelFormattedToolResult {\n const fileContentResponses = Object.values(output).map((fileResult) =>\n formatModelResponse(fileResult),\n );\n\n return {\n type: 'text',\n value: fileContentResponses.join('\\n'),\n };\n }\n\n /**\n * Gets the examples for the tool.\n *\n * @returns The tool examples.\n */\n get examples(): Array<\n ToolExample<ReadManyFilesToolInput, ReadManyFilesToolOutput>\n > {\n const exampleContent1 = `import clsx from 'clsx';\n\ntype LoaderProps = {\n className?: string;\n};\n\nexport function Loader(props: LoaderProps) {\n const { className } = props;\n\n return (\n <div className={clsx('loader', className)}>\n Loading…\n </div>\n );\n}\n`;\n const exampleContent2 = `export function snakeCaseToCamelCase(snakeCase: string): string {\n return snakeCase.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n}\n`;\n\n return [\n {\n input: {\n paths: [\n 'src/components/Loader.tsx',\n 'src/util/snake-case-to-camel-case.ts',\n ],\n },\n output:\n formatModelResponse({\n path: 'src/components/Loader.tsx',\n content: exampleContent1,\n }) +\n '\\n' +\n formatModelResponse({\n path: 'src/util/snake-case-to-camel-case.ts',\n content: exampleContent2,\n }),\n },\n ];\n }\n}\n","import { z } from 'zod';\nimport {\n type CommandLineEnvironmentInterface,\n type ToolConfig,\n type ToolExample,\n type ModelFormattedToolResult,\n} from '../types';\nimport { escapeCommandArg } from '../util/escape-command-arg';\nimport { buildTreeFromFiles } from '../util/build-tree-from-files';\nimport {\n EnvironmentToolBase,\n type EnvironmentToolMetadata,\n} from './environment-tool-base';\n\nexport const GetProjectFileStructureToolName = 'get_project_file_structure';\n\nexport type GetProjectFileStructureToolConfig = ToolConfig;\n\nexport const GetProjectFileStructureToolInput = z.object({\n path: z.string().optional().meta({\n description:\n 'Root path to list files from, relative to the project directory. Defaults to \".\".',\n }),\n excludeGitIgnored: z.boolean().optional().meta({\n description: 'Whether to exclude files ignored by Git. Defaults to true.',\n }),\n});\n\nexport type GetProjectFileStructureToolInput = z.infer<\n typeof GetProjectFileStructureToolInput\n>;\n\nexport const GetProjectFileStructureToolOutput = z.object({\n files: z.array(z.string()).meta({\n description: 'List of all file paths found, relative to the root path.',\n }),\n excludeGitIgnored: z.boolean().meta({\n description: 'Whether files ignored by Git were excluded.',\n }),\n});\n\nexport type GetProjectFileStructureToolOutput = z.infer<\n typeof GetProjectFileStructureToolOutput\n>;\n\n/**\n * Class for the GetProjectFileStructure tool.\n */\nexport class GetProjectFileStructureTool extends EnvironmentToolBase<\n GetProjectFileStructureToolConfig,\n GetProjectFileStructureToolInput,\n GetProjectFileStructureToolOutput,\n CommandLineEnvironmentInterface\n> {\n /**\n * Returns the metadata for the tool.\n *\n * The name, description, and needsApproval properties are defaults which can be overridden in the constructor.\n *\n * @returns The tool metadata.\n */\n protected getMetadata(): EnvironmentToolMetadata<\n GetProjectFileStructureToolInput,\n GetProjectFileStructureToolOutput\n > {\n return {\n name: GetProjectFileStructureToolName,\n description:\n 'Recursively lists all files in the project directory and formats them as a tree structure.',\n inputSchema: GetProjectFileStructureToolInput,\n outputSchema: GetProjectFileStructureToolOutput,\n needsApproval: false,\n };\n }\n\n /**\n * Executes the tool in the given execution environment with the given input.\n *\n * @param env - The execution environment to use.\n * @param input - The input for the tool.\n * @returns A promise that resolves to the tool execution result.\n */\n protected async executeForEnvironment(\n env: CommandLineEnvironmentInterface,\n input: GetProjectFileStructureToolInput,\n ): Promise<GetProjectFileStructureToolOutput> {\n const { path = '.', excludeGitIgnored = true } = input;\n const escapedPath = escapeCommandArg(path);\n\n // The `find` command needs to be executed from the project root to ensure\n // paths are relative to the project root.\n // Always exclude the .git directory as it contains repository metadata, not project files\n let command = `find ${escapedPath} -type f -not -path '*/.git/*'`;\n\n // Exclude .gitignore patterns if requested.\n if (excludeGitIgnored) {\n let gitIgnoredPaths: string[] = [];\n try {\n const { content: gitignoreContent } = await env.readFile('.gitignore');\n gitIgnoredPaths = gitignoreContent\n .split('\\n')\n .map((line) => line.trim())\n .filter((line) => line && !line.startsWith('#')); // Ignore empty lines and comments.\n } catch (_error) {\n // Ignore errors, e.g. if .gitignore does not exist.\n }\n\n for (const gitIgnoredPath of gitIgnoredPaths) {\n // If the path doesn't end in a slash, it could be a file or a directory. Otherwise, it's a directory.\n if (!gitIgnoredPath.endsWith('/')) {\n const escapedPath = escapeCommandArg(`*/${gitIgnoredPath}/*`);\n command += ` -not -name ${escapeCommandArg(gitIgnoredPath)} -not -path ${escapedPath}`;\n } else {\n const escapedPath = escapeCommandArg(`*/${gitIgnoredPath}*`);\n command += ` -not -path ${escapedPath}`;\n }\n }\n }\n\n command += ' | sort';\n\n const { stdout, stderr, exitCode } = await env.runCommand(command);\n\n if (exitCode !== 0) {\n throw new Error(\n `Failed to get project file structure with command \"${command}\": ${stderr}`,\n );\n }\n\n const files = stdout\n .split('\\n')\n .map((path) => path.trim())\n .filter(Boolean); // Filter out empty strings.\n\n const trimInitialDotSlash = (path: string) =>\n path.startsWith('./') ? path.slice(2) : path;\n\n return {\n files: files.map(trimInitialDotSlash),\n excludeGitIgnored,\n };\n }\n\n /**\n * Converts the tool output to a format suitable for model consumption.\n *\n * @param output - The output from the tool execution.\n * @returns The formatted tool result.\n */\n toModelOutput(\n output: GetProjectFileStructureToolOutput,\n ): ModelFormattedToolResult {\n const tree = buildTreeFromFiles(output.files);\n\n if (!tree) {\n return {\n type: 'text',\n value: 'No files found.',\n };\n }\n\n return {\n type: 'text',\n value: tree,\n };\n }\n\n /**\n * Gets the examples for the tool.\n *\n * @returns The tool examples.\n */\n get examples(): Array<\n ToolExample<\n GetProjectFileStructureToolInput,\n GetProjectFileStructureToolOutput\n >\n > {\n return [\n {\n input: {},\n output: `├── **src/**\n│ ├── **components/**\n│ │ ├── **Button.js**\n│ │ └── **Header.js**\n│ └── **index.js**\n├── **tests/**\n│ └── **test_runner.py**\n├── .gitignore\n├── README.md\n└── package.json`,\n },\n ];\n }\n}\n","/**\n * Escapes a string to be used as a single command-line argument in a POSIX-compliant shell.\n *\n * The string is wrapped in single quotes, and any existing single quotes are\n * safely escaped. This prevents the shell from interpreting special\n * characters or expanding variables.\n *\n * @param arg - The argument string to escape.\n * @returns The escaped and quoted argument string.\n */\nexport function escapeCommandArg(arg: string): string {\n if ('' === arg) {\n return \"''\";\n }\n // 1. Replace all single quotes with '\\''\n // 2. Wrap the entire string in single quotes.\n // e.g., \"it's a test\" -> \"'it'\\\\''s a test'\"\n return `'${arg.replace(/'/g, \"'\\\\''\")}'`;\n}\n","interface TreeNode {\n [key: string]: TreeNode;\n}\n\n/**\n * Renders the tree structure as a string.\n *\n * @param node - The current tree node to render.\n * @param prefix - The prefix string for indentation.\n * @returns The rendered tree string.\n */\nfunction renderTree(node: TreeNode, prefix = ''): string {\n const entries = Object.keys(node).sort();\n let result = '';\n\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n const isLast = i === entries.length - 1;\n const connector = isLast ? '└── ' : '├── ';\n const nextPrefix = prefix + (isLast ? ' ' : '│ ');\n\n result += prefix + connector + '**' + entry + '**' + '\\n';\n\n if (Object.keys(node[entry]).length > 0) {\n result += renderTree(node[entry], nextPrefix);\n }\n }\n\n return result;\n}\n\n/**\n * Builds a tree-like string representation from a list of file paths.\n *\n * @param files - Array of file paths relative to the root.\n * @returns A string representing the file structure as a tree.\n */\nexport function buildTreeFromFiles(files: string[]): string {\n if (files.length === 0) {\n return '';\n }\n\n // Sort files to ensure consistent ordering\n const sortedFiles = [...files].sort();\n\n // Build a tree structure\n const tree: TreeNode = {};\n\n for (const file of sortedFiles) {\n const parts = file.split('/');\n let current = tree;\n for (const part of parts) {\n if (!current[part]) {\n current[part] = {};\n }\n current = current[part];\n }\n }\n\n return renderTree(tree).trim();\n}\n","import { z } from 'zod';\nimport {\n type CommandLineEnvironmentInterface,\n type ToolConfig,\n type ToolExample,\n type ModelFormattedToolResult,\n} from '../types';\nimport { escapeCommandArg } from '../util/escape-command-arg';\nimport { globToRegExp } from '../util/glob-to-reg-exp';\nimport { validateRelativePath } from '../util/validate-relative-path';\nimport {\n EnvironmentToolBase,\n type EnvironmentToolMetadata,\n} from './environment-tool-base';\n\nexport const GlobToolName = 'glob';\n\nexport type GlobToolConfig = ToolConfig;\n\nexport const GlobToolInput = z.object({\n searchPattern: z.string().meta({\n description:\n 'The glob pattern to search for, relative to the search path / project directory (e.g. \"**/*.ts\", \"docs/*.md\").',\n }),\n searchPath: z.string().optional().meta({\n description:\n 'The path to search within, relative to the project directory. Defaults to the project directory.',\n }),\n excludeGitIgnored: z.boolean().optional().meta({\n description: 'Whether to exclude files ignored by Git. Defaults to true.',\n }),\n});\n\nexport type GlobToolInput = z.infer<typeof GlobToolInput>;\n\nexport const GlobToolOutput = z.object({\n searchPattern: z.string().meta({\n description: 'The glob pattern that was searched for.',\n }),\n searchPath: z.string().meta({\n description: 'The path that was searched within.',\n }),\n excludeGitIgnored: z.boolean().meta({\n description: 'Whether files ignored by Git were excluded.',\n }),\n matchingPaths: z.array(z.string()).meta({\n description:\n 'The list of file paths that matched the glob search, relative to the project directory.',\n }),\n});\n\nexport type GlobToolOutput = z.infer<typeof GlobToolOutput>;\n\n/**\n * Class for the Glob tool.\n */\nexport class GlobTool extends EnvironmentToolBase<\n GlobToolConfig,\n GlobToolInput,\n GlobToolOutput,\n CommandLineEnvironmentInterface\n> {\n /**\n * Returns the metadata for the tool.\n *\n * The name, description, and needsApproval properties are defaults which can be overridden in the constructor.\n *\n * @returns The tool metadata.\n */\n protected getMetadata(): EnvironmentToolMetadata<\n GlobToolInput,\n GlobToolOutput\n > {\n return {\n name: GlobToolName,\n description: `Fast file pattern matching tool that works with any codebase size.\n- Supports glob patterns like \"**/*.js\" or \"src/**/*.ts\"\n- Returns matching file paths sorted by modification time\n- Use this tool when you need to find files by name patterns\n- When doing open-ended searches requiring multiple rounds, consider using higher-level search tools\n- Speculatively perform multiple searches in parallel when they are potentially useful\n- By default excludes files ignored by Git`,\n inputSchema: GlobToolInput,\n outputSchema: GlobToolOutput,\n needsApproval: false,\n };\n }\n\n /**\n * Executes the tool in the given execution environment with the given input.\n *\n * @param env - The execution environment to use.\n * @param input - The input for the tool.\n * @returns A promise that resolves to the tool execution result.\n */\n protected async executeForEnvironment(\n env: CommandLineEnvironmentInterface,\n input: GlobToolInput,\n ): Promise<GlobToolOutput> {\n const { searchPattern, searchPath = '', excludeGitIgnored = true } = input;\n\n if (searchPattern.startsWith('/')) {\n throw new Error(\n 'The search pattern must not start with a forward slash.',\n );\n }\n\n if (searchPath) {\n validateRelativePath(searchPath);\n }\n\n const untrailingslashedSearchPath =\n searchPath === '' ? '.' : searchPath.replace(/\\/+$/, '');\n\n const escapedSearchPath = escapeCommandArg(untrailingslashedSearchPath);\n\n const vcsExcludedPaths = ['.git', '.hg', '.svn'];\n const performanceExcludedPaths = [\n '.next',\n '.turbo',\n 'node_modules',\n '.cache',\n 'dist',\n 'build',\n 'coverage',\n ];\n\n const excludedPaths = [\n ...vcsExcludedPaths,\n ...(excludeGitIgnored ? performanceExcludedPaths : []),\n ];\n\n // The `find` command needs to be executed from the project root to ensure\n // paths are relative to the project root.\n let command = `find ${escapedSearchPath} -type f`;\n\n for (const excludedPath of excludedPaths) {\n const escapedPath = escapeCommandArg(`*/${excludedPath}/*`);\n command += ` -not -path ${escapedPath}`;\n }\n\n // Exclude .gitignore patterns if requested.\n if (excludeGitIgnored) {\n let gitIgnoredPaths: string[] = [];\n try {\n const { content: gitignoreContent } = await env.readFile('.gitignore');\n gitIgnoredPaths = gitignoreContent\n .split('\\n')\n .map((line) => line.trim())\n .filter((line) => line && !line.startsWith('#')); // Ignore empty lines and comments.\n } catch (_error) {\n // Ignore errors, e.g. if .gitignore does not exist.\n }\n\n for (const gitIgnoredPath of gitIgnoredPaths) {\n // If the path doesn't end in a slash, it could be a file or a directory. Otherwise, it's a directory.\n if (!gitIgnoredPath.endsWith('/')) {\n const escapedPath = escapeCommandArg(`*/${gitIgnoredPath}/*`);\n command += ` -not -name ${escapeCommandArg(gitIgnoredPath)} -not -path ${escapedPath}`;\n } else {\n const escapedPath = escapeCommandArg(`*/${gitIgnoredPath}*`);\n command += ` -not -path ${escapedPath}`;\n }\n }\n }\n\n const { stdout, stderr, exitCode } = await env.runCommand(command);\n\n if (exitCode !== 0) {\n throw new Error(\n `Failed to glob files with command \"${command}\": ${stderr}`,\n );\n }\n\n const matchingPaths = stdout\n .split('\\n')\n .map((path) => path.trim())\n .filter(Boolean); // Filter out empty strings.\n\n const trimInitialDotSlash = (path: string) =>\n path.startsWith('./') ? path.slice(2) : path;\n\n if (searchPattern !== '' && searchPattern !== '**') {\n const combinedPattern = `${untrailingslashedSearchPath}/${searchPattern}`;\n\n const regExp = globToRegExp(combinedPattern);\n const filteredMatchingPaths = matchingPaths.filter((path) =>\n regExp.test(path),\n );\n\n return {\n searchPattern,\n searchPath,\n excludeGitIgnored,\n matchingPaths: filteredMatchingPaths.map(trimInitialDotSlash),\n };\n }\n\n return {\n searchPattern,\n searchPath,\n excludeGitIgnored,\n matchingPaths: matchingPaths.map(trimInitialDotSlash),\n };\n }\n\n /**\n * Converts the tool output to a format suitable for model consumption.\n *\n * @param output - The output from the tool execution.\n * @returns The formatted tool result.\n */\n toModelOutput(output: GlobToolOutput): ModelFormattedToolResult {\n if (output.matchingPaths.length === 0) {\n return {\n type: 'text',\n value: 'No matching files found.',\n };\n }\n\n const bulletPoints = output.matchingPaths\n .map((path) => `- \\`${path}\\``)\n .join('\\n');\n\n return {\n type: 'text',\n value: `Matching files:\n${bulletPoints}\n`,\n };\n }\n\n /**\n * Gets the examples for the tool.\n *\n * @returns The tool examples.\n */\n get examples(): Array<ToolExample<GlobToolInput, GlobToolOutput>> {\n return [\n {\n input: {\n searchPattern: 'src/**/*.tsx',\n },\n output: `Matching files:\n- \\`src/app/page.tsx\\`\n- \\`src/components/chart.tsx\\`\n- \\`src/components/footer.tsx\\`\n- \\`src/components/header.tsx\\`\n`,\n },\n {\n input: {\n searchPattern: '*',\n searchPath: 'packages/my-project',\n },\n output: `Matching files:\n- \\`packages/my-project/package.json\\`\n- \\`packages/my-project/README.md\\`\n- \\`packages/my-project/tsconfig.json\\`\n- \\`packages/my-project/vitest.config.ts\\`\n`,\n },\n ];\n }\n}\n","/**\n * Converts a glob pattern to a regular expression.\n *\n * This is a best-effort implementation and may not cover all edge cases of\n * glob patterns. It supports `*`, `**`, and `?`.\n *\n * @param glob - The glob pattern to convert.\n * @returns A regular expression that matches the glob pattern.\n */\nexport function globToRegExp(glob: string): RegExp {\n let reStr = '';\n for (let i = 0; i < glob.length; i++) {\n const char = glob[i];\n switch (char) {\n case '*':\n if (glob[i + 1] === '*') {\n // Handle '**/' pattern\n if (glob[i + 2] === '/') {\n reStr += '(?:.*\\\\/)?';\n i += 2; // Consume '**/'\n } else {\n reStr += '.*';\n i++; // Consume the second '*'\n }\n } else {\n reStr += '[^/]*';\n }\n break;\n case '?':\n reStr += '[^/]';\n break;\n // Escape characters with special meaning in regex.\n case '.':\n case '(':\n case ')':\n case '[':\n case ']':\n case '{':\n case '}':\n case '+':\n case '^':\n case '$':\n case '|':\n case '\\\\':\n reStr += `\\\\${char}`;\n break;\n default:\n reStr += char;\n }\n }\n return new RegExp(`^${reStr}$`);\n}\n","import * as path from 'node:path';\n\n/**\n * Validates that the given path is a relative path and does not contain path traversal.\n *\n * @param filePath - The file path to validate.\n */\nexport function validateRelativePath(filePath: string): void {\n if (path.isAbsolute(filePath)) {\n throw new Error('Absolute paths are not allowed.');\n }\n if (filePath.startsWith('~')) {\n throw new Error('Paths starting with \"~\" are not allowed.');\n }\n if (filePath.includes('\\0')) {\n throw new Error('Paths must not contain null bytes.');\n }\n\n const normalizedPath = path.normalize(filePath);\n if (normalizedPath.startsWith('..')) {\n throw new Error('Path traversal is not allowed.');\n }\n}\n","import { z } from 'zod';\nimport {\n type CommandLineEnvironmentInterface,\n type ToolConfig,\n type ToolExample,\n type ModelFormattedToolResult,\n} from '../types';\nimport { escapeCommandArg } from '../util/escape-command-arg';\nimport { validateRelativePath } from '../util/validate-relative-path';\nimport {\n EnvironmentToolBase,\n type EnvironmentToolMetadata,\n} from './environment-tool-base';\nimport { GlobTool } from './glob-tool';\n\nexport const GrepToolName = 'grep';\n\nexport type GrepToolConfig = ToolConfig;\n\nexport const GrepToolInput = z.object({\n regexpPattern: z.string().meta({\n description:\n 'The regular expression pattern to search for in file contents.',\n }),\n searchPattern: z.string().optional().meta({\n description:\n 'The glob pattern to filter which files are searched (e.g. \"**/*.ts\"). If omitted, searches all files.',\n }),\n searchPath: z.string().optional().meta({\n description:\n 'The path to search within, relative to the project directory. Defaults to the project directory.',\n }),\n contextLines: z.number().int().nonnegative().optional().meta({\n description:\n 'The number of context lines to include before and after each match.',\n }),\n});\n\nexport type GrepToolInput = z.infer<typeof GrepToolInput>;\n\nconst GrepMatch = z.object({\n path: z.string().meta({\n description:\n 'The path to the file containing the match, relative to the project directory.',\n }),\n lineNumber: z.number().int().meta({\n description: 'The line number of the match (1-based).',\n }),\n line: z.string().meta({\n description: 'The content of the matching line.',\n }),\n beforeContext: z.array(z.string()).optional().meta({\n description: 'Lines of context before the match.',\n }),\n afterContext: z.array(z.string()).optional().meta({\n description: 'Lines of context after the match.',\n }),\n});\n\nexport type GrepMatch = z.infer<typeof GrepMatch>;\n\nexport const GrepToolOutput = z.object({\n regexpPattern: z.string().meta({\n description: 'The regular expression pattern that was searched for.',\n }),\n searchPattern: z.string().optional().meta({\n description: 'The glob pattern used to filter files.',\n }),\n searchPath: z.string().optional().meta({\n description: 'The path that was searched within.',\n }),\n contextLines: z.number().optional().meta({\n description: 'The number of context lines included.',\n }),\n matches: z.array(GrepMatch).meta({\n description: 'The list of matches found.',\n }),\n});\n\nexport type GrepToolOutput = z.infer<typeof GrepToolOutput>;\n\n/**\n * Class for the Grep tool.\n */\nexport class GrepTool extends EnvironmentToolBase<\n GrepToolConfig,\n GrepToolInput,\n GrepToolOutput,\n CommandLineEnvironmentInterface\n> {\n /**\n * Returns the metadata for the tool.\n *\n * The name, description, and needsApproval properties are defaults which can be overridden in the constructor.\n *\n * @returns The tool metadata.\n */\n protected getMetadata(): EnvironmentToolMetadata<\n GrepToolInput,\n GrepToolOutput\n > {\n return {\n name: GrepToolName,\n description: `A powerful search tool for finding patterns in file contents.\n- ALWAYS use grep for search tasks - NEVER invoke grep or rg as bash commands\n- Supports full regex syntax (e.g., \"log.*Error\", \"function\\\\\\\\s+\\\\\\\\w+\")\n- Filter files with searchPattern glob (e.g., \"*.js\", \"**/*.tsx\")\n- Use contextLines to include surrounding lines for each match\n- Pattern syntax uses standard regex - literal braces need escaping\n- For multiline patterns, consider that patterns match within single lines only by default\n- For open-ended searches requiring multiple rounds, consider using a higher-level search tool`,\n inputSchema: GrepToolInput,\n outputSchema: GrepToolOutput,\n needsApproval: false,\n };\n }\n\n /**\n * Executes the tool in the given execution environment with the given input.\n *\n * @param env - The execution environment to use.\n * @param input - The input for the tool.\n * @returns A promise that resolves to the tool execution result.\n */\n protected async executeForEnvironment(\n env: CommandLineEnvironmentInterface,\n input: GrepToolInput,\n ): Promise<GrepToolOutput> {\n const {\n regexpPattern,\n searchPattern,\n searchPath = '',\n contextLines = 0,\n } = input;\n\n if (searchPath) {\n validateRelativePath(searchPath);\n }\n\n // Use GlobTool to find files to search.\n const globTool = new GlobTool(env);\n const globResult = await globTool.execute(\n {\n searchPattern: searchPattern || '**/*',\n searchPath,\n },\n {} as never,\n );\n\n const filesToSearch = globResult.matchingPaths;\n\n if (filesToSearch.length === 0) {\n return {\n regexpPattern,\n searchPattern,\n searchPath,\n contextLines,\n matches: [],\n };\n }\n\n // Batch files to avoid command line length limits.\n const BATCH_SIZE = 50;\n const matches: GrepMatch[] = [];\n\n for (let i = 0; i < filesToSearch.length; i += BATCH_SIZE) {\n const batch = filesToSearch.slice(i, i + BATCH_SIZE);\n const escapedFilePaths = batch.map(escapeCommandArg).join(' ');\n\n // grep options:\n // -n: print line number\n // -H: print file name\n // -I: ignore binary files\n // -E: extended regex\n const command = `grep -n -H -I -E ${escapeCommandArg(regexpPattern)} ${escapedFilePaths}`;\n\n const { stdout, exitCode } = await env.runCommand(command);\n\n // exitCode 0 means matches found.\n // exitCode 1 means no matches found.\n // exitCode > 1 means error.\n if (exitCode > 1) {\n throw new Error(`Failed to execute grep command \"${command}\".`);\n }\n\n if (stdout) {\n const lines = stdout.split('\\n');\n for (const line of lines) {\n if (!line.trim()) continue;\n\n // Parse grep output: filename:lineNumber:content\n // Note: filename or content might contain colons.\n // Since we use -H, it always starts with filename.\n // We know the filenames we passed in, but grep might output them relative to CWD.\n // However, since we passed relative paths to grep, it should output relative paths.\n\n const firstColonIndex = line.indexOf(':');\n if (firstColonIndex === -1) continue;\n\n const secondColonIndex = line.indexOf(':', firstColonIndex + 1);\n if (secondColonIndex === -1) continue;\n\n const filePath = line.substring(0, firstColonIndex);\n const lineNumberStr = line.substring(\n firstColonIndex + 1,\n secondColonIndex,\n );\n const content = line.substring(secondColonIndex + 1);\n\n const lineNumber = parseInt(lineNumberStr, 10);\n if (isNaN(lineNumber)) continue;\n\n matches.push({\n path: filePath,\n lineNumber,\n line: content,\n });\n }\n }\n }\n\n // If context is requested, we need to read the files.\n if (contextLines > 0 && matches.length > 0) {\n // Group matches by file to minimize file reads.\n const matchesByFile = new Map<string, GrepMatch[]>();\n for (const match of matches) {\n if (!matchesByFile.has(match.path)) {\n matchesByFile.set(match.path, []);\n }\n matchesByFile.get(match.path)!.push(match);\n }\n\n for (const [filePath, fileMatches] of matchesByFile) {\n try {\n const { content } = await env.readFile(filePath);\n const lines = content.split('\\n');\n\n for (const match of fileMatches) {\n const lineIndex = match.lineNumber - 1;\n const start = Math.max(0, lineIndex - contextLines);\n const end = Math.min(lines.length, lineIndex + contextLines + 1);\n\n match.beforeContext = lines.slice(start, lineIndex);\n match.afterContext = lines.slice(lineIndex + 1, end);\n }\n } catch (_error) {\n // Ignore errors reading file for context.\n }\n }\n }\n\n return {\n regexpPattern,\n searchPattern,\n searchPath,\n contextLines,\n matches,\n };\n }\n\n /**\n * Converts the tool output to a format suitable for model consumption.\n *\n * @param output - The output from the tool execution.\n * @returns The formatted tool result.\n */\n toModelOutput(output: GrepToolOutput): ModelFormattedToolResult {\n if (output.matches.length === 0) {\n return {\n type: 'text',\n value: 'No matches found.',\n };\n }\n\n let result = `Found ${output.matches.length} matches:\\n`;\n\n // Group by file for display\n const matchesByFile = new Map<string, GrepMatch[]>();\n for (const match of output.matches) {\n if (!matchesByFile.has(match.path)) {\n matchesByFile.set(match.path, []);\n }\n matchesByFile.get(match.path)!.push(match);\n }\n\n for (const [filePath, matches] of matchesByFile) {\n result += `\\nFile: ${filePath}\\n`;\n for (const match of matches) {\n if (match.beforeContext && match.beforeContext.length > 0) {\n match.beforeContext.forEach((line, idx) => {\n result += ` ${match.lineNumber - match.beforeContext!.length + idx}: ${line}\\n`;\n });\n }\n result += `> ${match.lineNumber}: ${match.line}\\n`;\n if (match.afterContext && match.afterContext.length > 0) {\n match.afterContext.forEach((line, idx) => {\n result += ` ${match.lineNumber + 1 + idx}: ${line}\\n`;\n });\n }\n if (output.contextLines && output.contextLines > 0) {\n result += '---\\n';\n }\n }\n }\n\n return {\n type: 'text',\n value: result,\n };\n }\n\n /**\n * Gets the examples for the tool.\n *\n * @returns The tool examples.\n */\n get examples(): Array<ToolExample<GrepToolInput, GrepToolOutput>> {\n return [\n {\n input: {\n regexpPattern: 'interface.*Tool',\n searchPattern: 'src/**/*.ts',\n },\n output: `Found 2 matches:\n\nFile: src/types.ts\n> 120: export interface ToolInterface<ToolInputType, ToolOutputType> {\n> 135: export interface EnvironmentToolInterface<\n\nFile: src/tools/tool-base.ts\n> 10: export abstract class ToolBase<\n`,\n },\n {\n input: {\n regexpPattern: 'TODO',\n contextLines: 1,\n },\n output: `Found 1 matches:\n\nFile: src/index.ts\n 10: // Some code before\n> 11: // TODO: Implement feature X\n 12: // Some code after\n`,\n },\n ];\n }\n}\n","import { z } from 'zod';\nimport {\n type CommandLineEnvironmentInterface,\n type ToolConfig,\n type ToolExample,\n type ModelFormattedToolResult,\n} from '../types';\nimport { escapeCommandArg } from '../util/escape-command-arg';\nimport {\n EnvironmentToolBase,\n type EnvironmentToolMetadata,\n} from './environment-tool-base';\n\nexport const ListDirectoryToolName = 'list_directory';\n\nexport type ListDirectoryToolConfig = ToolConfig;\n\nexport const ListDirectoryToolInput = z.object({\n path: z.string().meta({\n description:\n 'The directory path to list, relative to the project directory.',\n }),\n});\n\nexport type ListDirectoryToolInput = z.infer<typeof ListDirectoryToolInput>;\n\nexport const ListDirectoryToolOutput = z.object({\n path: z.string().meta({\n description: 'The directory path that was listed.',\n }),\n files: z.array(z.string()).meta({\n description: 'List of files in the directory.',\n }),\n directories: z.array(z.string()).meta({\n description: 'List of subdirectories in the directory.',\n }),\n});\n\nexport type ListDirectoryToolOutput = z.infer<typeof ListDirectoryToolOutput>;\n\n/**\n * Class for the ListDirectory tool.\n */\nexport class ListDirectoryTool extends EnvironmentToolBase<\n ListDirectoryToolConfig,\n ListDirectoryToolInput,\n ListDirectoryToolOutput,\n CommandLineEnvironmentInterface\n> {\n /**\n * Returns the metadata for the tool.\n *\n * The name, description, and needsApproval properties are defaults which can be overridden in the constructor.\n *\n * @returns The tool metadata.\n */\n protected getMetadata(): EnvironmentToolMetadata<\n ListDirectoryToolInput,\n ListDirectoryToolOutput\n > {\n return {\n name: ListDirectoryToolName,\n description:\n 'Lists all files and directories in the specified directory, differentiating between files and directories. Non-recursive.',\n inputSchema: ListDirectoryToolInput,\n outputSchema: ListDirectoryToolOutput,\n needsApproval: false,\n };\n }\n\n /**\n * Executes the tool in the given execution environment with the given input.\n *\n * @param env - The execution environment to use.\n * @param input - The input for the tool.\n * @returns A promise that resolves to the tool execution result.\n */\n protected async executeForEnvironment(\n env: CommandLineEnvironmentInterface,\n input: ListDirectoryToolInput,\n ): Promise<ListDirectoryToolOutput> {\n const escapedPath = escapeCommandArg(input.path);\n const command = `ls -la ${escapedPath}`;\n\n const { stdout, stderr, exitCode } = await env.runCommand(command);\n\n if (exitCode !== 0) {\n throw new Error(\n `Failed to list directory \"${input.path}\" with command \"${command}\": ${stderr}`,\n );\n }\n\n const lines = stdout.split('\\n').filter((line) => line.trim() !== '');\n const files: string[] = [];\n const directories: string[] = [];\n\n // Skip the first line (total) and process each entry\n for (let i = 1; i < lines.length; i++) {\n const line = lines[i].trim();\n if (!line) continue;\n\n // ls -la format: permissions links owner group size month day time name\n // First character indicates type: d=directory, -=file, l=symlink, etc.\n const typeChar = line.charAt(0);\n const parts = line.split(/\\s+/);\n const name = parts[parts.length - 1];\n\n // Skip . and .. entries\n if (name === '.' || name === '..') continue;\n\n if (typeChar === 'd') {\n directories.push(name);\n } else if (typeChar === '-') {\n files.push(name);\n }\n // Ignore other types (symlinks, etc.) for now\n }\n\n return {\n path: input.path,\n files,\n directories,\n };\n }\n\n /**\n * Converts the tool output to a format suitable for model consumption.\n *\n * @param output - The output from the tool execution.\n * @returns The formatted tool result.\n */\n toModelOutput(output: ListDirectoryToolOutput): ModelFormattedToolResult {\n const formatEntries = (entries: string[], type: string) => {\n if (entries.length === 0) {\n return `No ${type} found.`;\n }\n const bulletPoints = entries.map((name) => `- \\`${name}\\``).join('\\n');\n return `${type.charAt(0).toUpperCase() + type.slice(1)}:\\n${bulletPoints}`;\n };\n\n const filesSection = formatEntries(output.files, 'files');\n const directoriesSection = formatEntries(output.directories, 'directories');\n\n return {\n type: 'text',\n value: `Directory listing for \\`${output.path}\\`:\\n\\n${filesSection}\\n\\n${directoriesSection}`,\n };\n }\n\n /**\n * Gets the examples for the tool.\n *\n * @returns The tool examples.\n */\n get examples(): Array<\n ToolExample<ListDirectoryToolInput, ListDirectoryToolOutput>\n > {\n return [\n {\n input: {\n path: 'src',\n },\n output: `Directory listing for \\`src\\`:\n\nFiles:\n- \\`index.ts\\`\n- \\`utils.ts\\`\n\nDirectories:\n- \\`components\\`\n- \\`hooks\\``,\n },\n ];\n }\n}\n","import { z } from 'zod';\nimport {\n RunCommandResult,\n type CommandLineEnvironmentInterface,\n type ToolConfig,\n type ToolExample,\n type ModelFormattedToolResult,\n} from '../types';\nimport {\n EnvironmentToolBase,\n type EnvironmentToolMetadata,\n} from './environment-tool-base';\n\nexport const RunCommandToolName = 'run_command';\n\nexport type RunCommandToolConfig = ToolConfig;\n\nexport const RunCommandToolInput = z.object({\n command: z\n .string()\n .meta({ description: 'The CLI command to run, including all arguments.' }),\n maxBytes: z\n .number()\n .int()\n .positive()\n .optional()\n .meta({\n description:\n 'Optional byte limit (per stream) applied to stdout/stderr before returning to the model. Defaults to ~16KB.',\n }),\n});\n\nexport type RunCommandToolInput = z.infer<typeof RunCommandToolInput>;\n\nexport const RunCommandToolOutput = RunCommandResult;\n\nexport type RunCommandToolOutput = z.infer<typeof RunCommandToolOutput>;\n\nconst DEFAULT_MAX_OUTPUT_BYTES = 16 * 1024;\n\nconst truncateForDisplay = (\n text: string,\n maxBytes: number = DEFAULT_MAX_OUTPUT_BYTES,\n) => {\n const buffer = Buffer.from(text, 'utf8');\n\n if (buffer.byteLength <= maxBytes) {\n return {\n text,\n truncated: false,\n originalBytes: buffer.byteLength,\n };\n }\n\n const truncatedBuffer = buffer.subarray(0, maxBytes);\n const truncatedText = truncatedBuffer.toString('utf8');\n const suffix = `\\n… [truncated to ${maxBytes} bytes of ${buffer.byteLength}]`;\n\n // Ensure the suffix itself doesn't push us past the limit.\n let displayText = truncatedText;\n while (Buffer.byteLength(displayText + suffix, 'utf8') > maxBytes) {\n displayText = displayText.slice(0, -1);\n }\n\n return {\n text: `${displayText}${suffix}`,\n truncated: true,\n originalBytes: buffer.byteLength,\n };\n};\n\n/**\n * Formats the command result into a model-friendly response string.\n *\n * @param output - The command result output.\n * @returns The formatted string for model consumption.\n */\nfunction formatCommandResultToModelResponse(output: RunCommandResult) {\n const maxBytes = output.maxBytes ?? DEFAULT_MAX_OUTPUT_BYTES;\n\n const stdoutResult = truncateForDisplay(output.stdout, maxBytes);\n const stderrResult = truncateForDisplay(output.stderr, maxBytes);\n\n const stdout = !output.stdout.trim()\n ? '(none)'\n : `\n\\`\\`\\`\n${stdoutResult.text}\n\\`\\`\\``;\n const stderr = !output.stderr.trim()\n ? '(none)'\n : `\n\\`\\`\\`\n${stderrResult.text}\n\\`\\`\\``;\n\n return `Command: \\`${output.command}\\`\nExit Code: ${output.exitCode}\nOutput (stdout): ${stdout}\nError Output (stderr): ${stderr}\n`;\n}\n\n/**\n * Class for the RunCommand tool.\n *\n * WARNING: This tool can be dangerous if misused. It allows executing arbitrary commands in the environment.\n * Only allow using this tool in sandboxed environments where the potential risks are understood and mitigated.\n */\nexport class RunCommandTool extends EnvironmentToolBase<\n RunCommandToolConfig,\n RunCommandToolInput,\n RunCommandToolOutput,\n CommandLineEnvironmentInterface\n> {\n /**\n * Returns the metadata for the tool.\n *\n * The name, description, and needsApproval properties are defaults which can be overridden in the constructor.\n *\n * @returns The tool metadata.\n */\n protected getMetadata(): EnvironmentToolMetadata<\n RunCommandToolInput,\n RunCommandToolOutput\n > {\n return {\n name: RunCommandToolName,\n description: `Executes a given bash command in a persistent shell session.\n- This tool is for terminal operations like git, npm, docker, etc.\n- DO NOT use for file operations - use specialized tools (read_file, write_file, edit_file, glob, grep) instead\n- Always quote file paths containing spaces with double quotes\n- Before creating directories/files, verify parent directory exists with ls\n- Provide a clear 5-10 word description of what the command does\n- Avoid using find, grep, cat, head, tail, sed, awk, echo unless truly necessary\n- Stdout/stderr shown to the model are truncated to ~16KB each to avoid context bloat`,\n inputSchema: RunCommandToolInput,\n outputSchema: RunCommandToolOutput,\n needsApproval: true,\n };\n }\n\n /**\n * Executes the tool in the given execution environment with the given input.\n *\n * @param env - The execution environment to use.\n * @param input - The input for the tool.\n * @returns A promise that resolves to the tool execution result.\n */\n protected executeForEnvironment(\n env: CommandLineEnvironmentInterface,\n input: RunCommandToolInput,\n ): Promise<RunCommandToolOutput> {\n const maxBytes = input.maxBytes ?? DEFAULT_MAX_OUTPUT_BYTES;\n\n return env.runCommand(input.command).then((result) => ({\n ...result,\n maxBytes,\n }));\n }\n\n /**\n * Converts the tool output to a format suitable for model consumption.\n *\n * @param output - The output from the tool execution.\n * @returns The formatted tool result.\n */\n toModelOutput(output: RunCommandToolOutput): ModelFormattedToolResult {\n return {\n type: 'text',\n value: formatCommandResultToModelResponse(output),\n };\n }\n\n /**\n * Gets the examples for the tool.\n *\n * @returns The tool examples.\n */\n get examples(): Array<\n ToolExample<RunCommandToolInput, RunCommandToolOutput>\n > {\n const exampleGitOutput = `diff --git a/src/util/string-utils.ts b/src/util/string-utils.ts\nindex 1836072..b13adef 100644\n--- a/src/util/string-utils.ts\n+++ b/src/util/string-utils.ts\n@@ -1,3 +1,7 @@\n export function snakeCaseToCamelCase(str: string): string {\n return str.replace(/_([a-z])/g, (match, p1) => p1.toUpperCase());\n }\n+\n+export function camelCaseToSnakeCase(str: string): string {\n+ return str.replace(/([A-Z])/g, (match) => \\`_\\${match.toLowerCase()}\\`);\n+}\n`;\n\n const exampleNpmOutput = `\nadded 1 package, and changed 1 package in 2s\n\n156 packages are looking for funding\n run \\`npm fund\\` for details`;\n\n const exampleMkdirError = `mkdir: src/lib: No such file or directory\n`;\n\n return [\n {\n input: {\n command: 'git --no-pager diff',\n },\n output: formatCommandResultToModelResponse({\n command: 'git --no-pager diff',\n exitCode: 0,\n stdout: exampleGitOutput,\n stderr: '',\n }),\n },\n {\n input: {\n command: 'npm install zod',\n },\n output: formatCommandResultToModelResponse({\n command: 'npm install zod',\n exitCode: 0,\n stdout: exampleNpmOutput,\n stderr: '',\n }),\n },\n {\n input: {\n command: 'mkdir src/lib/api',\n },\n output: formatCommandResultToModelResponse({\n command: 'mkdir src/lib/api',\n exitCode: 1,\n stdout: '',\n stderr: exampleMkdirError,\n }),\n },\n ];\n }\n}\n","import { z } from 'zod';\nimport type {\n ModelFormattedToolResult,\n ToolConfig,\n ToolExample,\n} from '../types';\nimport {\n TodoItemSchema,\n type TodoItem,\n type TodoPriority,\n} from './todo-shared-base';\nimport { getTodoStore, normalizeEnvironment } from './todo-store-base';\nimport {\n EnvironmentToolBase,\n type EnvironmentToolMetadata,\n} from './environment-tool-base';\n\nconst TodoReadToolParametersSchema = z.object({\n filter: z\n .enum(['all', 'pending', 'in_progress', 'completed', 'high_priority'])\n .optional()\n .default('all')\n .describe('Filter todos by status or priority'),\n});\n\nconst TodoReadResultSchema = z.object({\n todos: z.array(TodoItemSchema),\n statistics: z.object({\n total: z.number(),\n pending: z.number(),\n inProgress: z.number(),\n completed: z.number(),\n highPriority: z.number(),\n mediumPriority: z.number(),\n lowPriority: z.number(),\n completionRate: z.number(),\n }),\n currentTask: TodoItemSchema.optional(),\n nextTasks: z.array(TodoItemSchema),\n});\n\nexport const TodoReadToolName = 'todo_read';\n\nexport type TodoReadToolParameters = z.infer<typeof TodoReadToolParametersSchema>;\nexport type TodoReadResult = z.infer<typeof TodoReadResultSchema>;\nexport type TodoReadToolConfig = ToolConfig;\nexport type { TodoItem } from './todo-shared-base';\n\n// AI SDK compatible type exports\nexport type TodoReadToolInput = TodoReadToolParameters;\nexport type TodoReadToolOutput = TodoReadResult;\n\n/**\n * Reads and summarizes todos stored in the shared todo store.\n */\nexport class TodoReadTool extends EnvironmentToolBase<\n TodoReadToolConfig,\n TodoReadToolInput,\n TodoReadToolOutput,\n unknown\n> {\n constructor(environment: unknown, config?: TodoReadToolConfig) {\n super(environment, config);\n }\n\n /**\n * Returns the tool metadata.\n *\n * @returns The metadata describing this tool.\n */\n protected getMetadata(): EnvironmentToolMetadata<\n TodoReadToolInput,\n TodoReadToolOutput\n > {\n return {\n name: TodoReadToolName,\n description:\n 'Read and analyze the current todo list with filtering and statistics',\n inputSchema: TodoReadToolParametersSchema,\n outputSchema: TodoReadResultSchema,\n needsApproval: false,\n };\n }\n\n /**\n * Executes the tool using the provided environment.\n *\n * @param env - The execution environment reference.\n * @param parameters - The input parameters.\n * @returns The aggregated todo data.\n */\n protected async executeForEnvironment(\n env: unknown,\n parameters: TodoReadToolInput,\n ): Promise<TodoReadToolOutput> {\n const store = getTodoStore(normalizeEnvironment(env));\n const todoItems = await store.readTodos();\n\n // Filter todos based on the requested filter\n let filteredTodos = [...todoItems];\n\n switch (parameters.filter) {\n case 'pending':\n filteredTodos = todoItems.filter(todo => todo.status === 'pending');\n break;\n case 'in_progress':\n filteredTodos = todoItems.filter(todo => todo.status === 'in_progress');\n break;\n case 'completed':\n filteredTodos = todoItems.filter(todo => todo.status === 'completed');\n break;\n case 'high_priority':\n filteredTodos = todoItems.filter(todo => todo.priority === 'high');\n break;\n // 'all' returns everything\n }\n\n // Calculate statistics\n const stats = {\n total: todoItems.length,\n pending: todoItems.filter(todo => todo.status === 'pending').length,\n inProgress: todoItems.filter(todo => todo.status === 'in_progress').length,\n completed: todoItems.filter(todo => todo.status === 'completed').length,\n highPriority: todoItems.filter(todo => todo.priority === 'high').length,\n mediumPriority: todoItems.filter(todo => todo.priority === 'medium').length,\n lowPriority: todoItems.filter(todo => todo.priority === 'low').length,\n completionRate:\n todoItems.length > 0\n ? Math.round(\n (todoItems.filter(todo => todo.status === 'completed').length /\n todoItems.length) *\n 100,\n )\n : 0,\n };\n\n // Find current task (first in_progress item)\n const currentTask = todoItems.find(todo => todo.status === 'in_progress');\n\n // Find next tasks (high priority pending, then other pending)\n const nextTasks = todoItems\n .filter(todo => todo.status === 'pending')\n .sort((a, b) => {\n const priorityOrder: Record<TodoPriority, number> = {\n high: 0,\n medium: 1,\n low: 2,\n };\n const aPriority = priorityOrder[a.priority || 'low'];\n const bPriority = priorityOrder[b.priority || 'low'];\n return aPriority - bPriority;\n })\n .slice(0, 3);\n\n return {\n todos: filteredTodos,\n statistics: stats,\n currentTask,\n nextTasks,\n };\n }\n\n /**\n * Formats output for model consumption.\n *\n * @param output - The todo read result.\n * @returns A formatted model result.\n */\n toModelOutput(output: TodoReadToolOutput): ModelFormattedToolResult {\n const nextTitles = output.nextTasks.map(todo => `- ${todo.content}`).join('\\n');\n return {\n type: 'text',\n value: `Todos: ${output.statistics.total} (pending ${output.statistics.pending}, in progress ${output.statistics.inProgress}, completed ${output.statistics.completed})\nCurrent task: ${output.currentTask ? output.currentTask.content : 'none'}\nNext tasks:\n${nextTitles || '- none'}`,\n };\n }\n\n /**\n * Example invocations for the tool.\n */\n get examples(): Array<ToolExample<TodoReadToolInput, TodoReadToolOutput>> {\n const sampleTodo: TodoItem = {\n id: '1',\n content: 'Review pull request',\n status: 'in_progress',\n priority: 'high',\n };\n\n const pendingTodo: TodoItem = {\n id: '2',\n content: 'Write release notes',\n status: 'pending',\n priority: 'medium',\n };\n\n return [\n {\n input: { filter: 'all' },\n output: {\n todos: [sampleTodo, pendingTodo],\n statistics: {\n total: 2,\n pending: 1,\n inProgress: 1,\n completed: 0,\n highPriority: 1,\n mediumPriority: 1,\n lowPriority: 0,\n completionRate: 0,\n },\n currentTask: sampleTodo,\n nextTasks: [pendingTodo],\n },\n },\n ];\n }\n}\n","import { z } from 'zod';\n\nexport const TodoStatusSchema = z.enum(['pending', 'in_progress', 'completed']);\n\nexport const TodoPrioritySchema = z.enum(['high', 'medium', 'low']);\n\nexport const TodoItemSchema = z.object({\n id: z.string().describe('Unique identifier for the todo item'),\n content: z\n .string()\n .min(1)\n .describe('Description of the task to be done'),\n status: TodoStatusSchema.describe('Current status of the todo item'),\n priority: TodoPrioritySchema.optional()\n .default('medium')\n .describe('Priority level of the todo item'),\n});\n\nexport type TodoStatus = z.infer<typeof TodoStatusSchema>;\nexport type TodoPriority = z.infer<typeof TodoPrioritySchema>;\nexport type TodoItem = z.infer<typeof TodoItemSchema>;\n","import type { TodoItem } from './todo-shared-base';\n\nconst todoStoreRegistry = new WeakMap<object, TodoStore>();\n\n/**\n * Represents a concurrency-safe todo store that is scoped to an environment.\n */\nexport interface TodoStore {\n /**\n * Reads the current todos.\n *\n * @returns A promise that resolves with a snapshot of the todos.\n */\n readTodos(): Promise<TodoItem[]>;\n\n /**\n * Writes todos, replacing the current snapshot.\n *\n * @param todos - The todos to persist.\n * @returns A promise that resolves with the persisted todos.\n */\n writeTodos(todos: TodoItem[]): Promise<TodoItem[]>;\n\n /**\n * Clears all todos from the store.\n *\n * @returns A promise that resolves when the store is cleared.\n */\n clear(): Promise<void>;\n}\n\n/**\n * Normalizes any environment input into an object reference for scoping.\n *\n * @param environment - The raw environment value provided to a tool.\n * @returns An object reference suitable for WeakMap keys.\n */\nexport function normalizeEnvironment(environment: unknown): object {\n if (environment && typeof environment === 'object') {\n return environment;\n }\n\n return { __todoEnvironment: true };\n}\n\n/**\n * Retrieves or creates a todo store scoped to the provided environment.\n *\n * @param environment - The environment reference used for scoping.\n * @returns A concurrency-safe todo store for the environment.\n */\nexport function getTodoStore(environment: object): TodoStore {\n const existingStore = todoStoreRegistry.get(environment);\n if (existingStore) {\n return existingStore;\n }\n\n const store = new EnvironmentTodoStore();\n todoStoreRegistry.set(environment, store);\n return store;\n}\n\nclass EnvironmentTodoStore implements TodoStore {\n private todos: TodoItem[] = [];\n private mutex: Promise<void> = Promise.resolve();\n\n async readTodos(): Promise<TodoItem[]> {\n return this.runExclusive(() => [...this.todos]);\n }\n\n async writeTodos(todos: TodoItem[]): Promise<TodoItem[]> {\n return this.runExclusive(() => {\n this.todos = [...todos];\n return [...this.todos];\n });\n }\n\n async clear(): Promise<void> {\n await this.runExclusive(() => {\n this.todos = [];\n });\n }\n\n private async runExclusive<T>(fn: () => T | Promise<T>): Promise<T> {\n const execution = this.mutex.then(() => fn());\n this.mutex = execution.then(\n () => undefined,\n () => undefined,\n );\n return execution;\n }\n}\n","import { z } from 'zod';\nimport type {\n ModelFormattedToolResult,\n ToolConfig,\n ToolExample,\n} from '../types';\nimport { TodoItemSchema, type TodoItem } from './todo-shared-base';\nimport { getTodoStore, normalizeEnvironment, type TodoStore } from './todo-store-base';\nimport {\n EnvironmentToolBase,\n type EnvironmentToolMetadata,\n} from './environment-tool-base';\n\nconst TodoWriteToolParametersSchema = z.object({\n todos: z.array(TodoItemSchema).describe('Array of todo items to write/update'),\n});\n\nconst TodoWriteToolOutputSchema = z.object({\n todos: z.array(TodoItemSchema),\n statistics: z.object({\n total: z.number(),\n pending: z.number(),\n inProgress: z.number(),\n completed: z.number(),\n highPriority: z.number(),\n mediumPriority: z.number(),\n lowPriority: z.number(),\n }),\n summary: z.string(),\n});\n\nexport const TodoWriteToolName = 'todo_write';\n\n// Re-export TodoItem for external consumers\nexport type { TodoItem } from './todo-shared-base';\nexport type TodoWriteToolParameters = z.infer<typeof TodoWriteToolParametersSchema>;\nexport type TodoWriteToolOutput = z.infer<typeof TodoWriteToolOutputSchema>;\nexport type TodoWriteToolConfig = ToolConfig;\n\n// AI SDK compatible type exports\nexport type TodoWriteToolInput = TodoWriteToolParameters;\n\ninterface TodoStatistics {\n total: number;\n pending: number;\n inProgress: number;\n completed: number;\n highPriority: number;\n mediumPriority: number;\n lowPriority: number;\n}\n\n/**\n * Writes or updates todos in the shared todo store.\n */\nexport class TodoWriteTool extends EnvironmentToolBase<\n TodoWriteToolConfig,\n TodoWriteToolInput,\n TodoWriteToolOutput,\n unknown\n> {\n private readonly store: TodoStore;\n\n constructor(environment: unknown, config?: TodoWriteToolConfig) {\n super(environment, config);\n this.store = getTodoStore(normalizeEnvironment(environment));\n }\n\n /**\n * Returns the tool metadata.\n *\n * @returns The metadata describing this tool.\n */\n protected getMetadata(): EnvironmentToolMetadata<\n TodoWriteToolInput,\n TodoWriteToolOutput\n > {\n return {\n name: TodoWriteToolName,\n description:\n 'Write or update todo items with status and priority tracking.',\n inputSchema: TodoWriteToolParametersSchema,\n outputSchema: TodoWriteToolOutputSchema,\n needsApproval: false,\n };\n }\n\n /**\n * Executes the tool using the provided environment.\n *\n * @param _env - The execution environment reference (unused).\n * @param parameters - The todo items to persist.\n * @returns The persisted todos with summary statistics.\n */\n protected async executeForEnvironment(\n _env: unknown,\n parameters: TodoWriteToolInput,\n ): Promise<TodoWriteToolOutput> {\n // Apply default priority if not set\n const todosWithDefaults = parameters.todos.map(todo => ({\n ...todo,\n priority: todo.priority || 'medium'\n }));\n\n // Update the todos\n const persistedTodos = await this.store.writeTodos(todosWithDefaults);\n\n // Calculate statistics\n const stats: TodoStatistics = {\n total: persistedTodos.length,\n pending: persistedTodos.filter(todo => todo.status === 'pending').length,\n inProgress: persistedTodos.filter(todo => todo.status === 'in_progress').length,\n completed: persistedTodos.filter(todo => todo.status === 'completed').length,\n highPriority: persistedTodos.filter(todo => todo.priority === 'high').length,\n mediumPriority: persistedTodos.filter(todo => todo.priority === 'medium').length,\n lowPriority: persistedTodos.filter(todo => todo.priority === 'low').length,\n };\n\n // Generate summary\n const summary = this.generateSummary(stats);\n\n return {\n todos: persistedTodos,\n statistics: stats,\n summary,\n };\n }\n\n private generateSummary(stats: TodoStatistics): string {\n const parts: string[] = [];\n\n parts.push(`Total todos: ${stats.total}`);\n\n if (stats.inProgress > 0) {\n parts.push(`${stats.inProgress} task(s) in progress`);\n }\n\n if (stats.pending > 0) {\n parts.push(`${stats.pending} task(s) pending`);\n }\n\n if (stats.completed > 0) {\n const completionRate = Math.round((stats.completed / stats.total) * 100);\n parts.push(`${stats.completed} task(s) completed (${completionRate}%)`);\n }\n\n if (stats.highPriority > 0) {\n parts.push(`${stats.highPriority} high priority task(s)`);\n }\n\n return parts.join(', ');\n }\n\n /**\n * Formats output for model consumption.\n *\n * @param output - The persisted todo data.\n * @returns A formatted model result.\n */\n toModelOutput(output: TodoWriteToolOutput): ModelFormattedToolResult {\n return {\n type: 'text',\n value: `${output.summary}\\nTotal: ${output.statistics.total} | Pending: ${output.statistics.pending} | In progress: ${output.statistics.inProgress} | Completed: ${output.statistics.completed}`,\n };\n }\n\n /**\n * Example invocations for the tool.\n */\n get examples(): Array<ToolExample<TodoWriteToolInput, TodoWriteToolOutput>> {\n const todo: TodoItem = {\n id: '1',\n content: 'Document API usage',\n status: 'pending',\n priority: 'high',\n };\n\n return [\n {\n input: {\n todos: [todo],\n },\n output: {\n todos: [todo],\n statistics: {\n total: 1,\n pending: 1,\n inProgress: 0,\n completed: 0,\n highPriority: 1,\n mediumPriority: 0,\n lowPriority: 0,\n },\n summary: 'Total todos: 1, 0 task(s) in progress, 1 task(s) pending, 0 task(s) completed (0%), 1 high priority task(s)',\n },\n },\n ];\n }\n}\n","import TurndownService from 'turndown';\nimport { z } from 'zod';\nimport {\n EnvironmentToolBase,\n type EnvironmentToolMetadata,\n} from './environment-tool-base';\nimport type {\n ModelFormattedToolResult,\n ToolConfig,\n ToolExample,\n} from '../types';\n\nconst DEFAULT_TIMEOUT_MS = 30_000;\nconst DEFAULT_MAX_BYTES = 24_000;\n\nconst UrlFetcherToolParametersSchema = z.object({\n url: z.string().url().describe('The URL to fetch content from.'),\n prompt: z\n .string()\n .describe('Optional context about how the fetched content will be used.'),\n convertToMarkdown: z\n .boolean()\n .default(true)\n .describe('Convert HTML responses to markdown when true.'),\n maxBytes: z\n .number()\n .int()\n .positive()\n .nullable()\n .optional()\n .default(DEFAULT_MAX_BYTES)\n .describe(\n 'Maximum bytes of the *final* tool output (post-processing) to return; set null to disable.',\n ),\n timeout: z\n .number()\n .int()\n .positive()\n .default(DEFAULT_TIMEOUT_MS)\n .describe('Timeout in milliseconds before aborting the request.'),\n userAgent: z.string().optional().describe('Custom user agent string.'),\n});\n\nconst UrlFetcherToolOutputSchema = z.object({\n url: z.string(),\n finalUrl: z.string().optional(),\n fromCache: z.literal(false),\n contentType: z.string().optional(),\n statusCode: z.number().optional(),\n content: z.string(),\n contentLength: z.number(),\n truncated: z.boolean().optional(),\n message: z.string().optional(),\n});\n\nexport const UrlFetcherToolName = 'url_fetcher';\n\nexport type UrlFetcherToolParameters = z.infer<\n typeof UrlFetcherToolParametersSchema\n>;\nexport type UrlFetcherToolOutput = z.infer<typeof UrlFetcherToolOutputSchema>;\nexport type UrlFetcherToolConfig = ToolConfig;\n\nexport type UrlFetcherToolInput = UrlFetcherToolParameters;\n\n/**\n * Fetches remote URLs with optional HTML-to-markdown conversion and size\n * limiting. Designed to always return fresh content with no caching.\n */\n// NOTE: This tool currently ignores the environment parameter and relies on\n// global fetch. Future work should make fetch environment-aware so it can be\n// sandboxed.\nexport class UrlFetcherTool extends EnvironmentToolBase<\n UrlFetcherToolConfig,\n UrlFetcherToolParameters,\n UrlFetcherToolOutput,\n unknown\n> {\n private static readonly turndown = UrlFetcherTool.createTurndown();\n\n constructor(environment: unknown, toolConfig?: UrlFetcherToolConfig) {\n super(environment, toolConfig);\n }\n\n protected getMetadata(): EnvironmentToolMetadata<\n UrlFetcherToolParameters,\n UrlFetcherToolOutput\n > {\n return {\n name: UrlFetcherToolName,\n description: 'Fetch web content with optional markdown conversion.',\n inputSchema: UrlFetcherToolParametersSchema,\n outputSchema: UrlFetcherToolOutputSchema,\n needsApproval: false,\n };\n }\n\n protected async executeForEnvironment(\n env: unknown,\n params: UrlFetcherToolParameters,\n ): Promise<UrlFetcherToolOutput> {\n const normalizedUrl = this.normalizeUrl(params.url);\n const response = await this.fetchContent(normalizedUrl, params);\n\n const contentTypeHeader =\n response.headers.get('content-type') || 'application/octet-stream';\n const mediaType = contentTypeHeader.split(';')[0]?.trim() ?? contentTypeHeader;\n\n this.assertSupportedContentType(mediaType);\n\n const effectiveMaxBytes = this.resolveMaxBytes(params.maxBytes);\n\n const { content: rawContent, byteLength, truncated: rawTruncated } =\n await this.readAndDecodeBody(\n response,\n mediaType,\n this.resolveReadLimit(effectiveMaxBytes),\n );\n\n const processedContent = await this.processContent(\n rawContent,\n mediaType,\n params.convertToMarkdown ?? true,\n );\n\n const contentWithNotice =\n rawTruncated && effectiveMaxBytes !== null\n ? this.appendTruncationNotice(processedContent, effectiveMaxBytes)\n : processedContent;\n\n const {\n content,\n byteLength: finalByteLength,\n truncated: outputTruncated,\n } = this.applyOutputLimit(contentWithNotice, effectiveMaxBytes);\n\n const truncated = rawTruncated || outputTruncated;\n\n const message = (() => {\n if (outputTruncated && effectiveMaxBytes !== null) {\n return `Output truncated at ${effectiveMaxBytes} bytes after processing.`;\n }\n if (rawTruncated && effectiveMaxBytes !== null) {\n return `Response truncated at ${effectiveMaxBytes} bytes while reading.`;\n }\n return undefined;\n })();\n\n return {\n url: normalizedUrl,\n finalUrl: response.url,\n fromCache: false as const,\n contentType: mediaType,\n statusCode: response.status,\n content,\n contentLength: finalByteLength,\n truncated: truncated || undefined,\n message,\n };\n }\n\n private normalizeUrl(url: string): string {\n if (url.startsWith('http://')) {\n return url.replace('http://', 'https://');\n }\n return url;\n }\n\n private async fetchContent(\n url: string,\n params: UrlFetcherToolParameters,\n ): Promise<Response> {\n const controller = new AbortController();\n const timeoutMs = params.timeout ?? DEFAULT_TIMEOUT_MS;\n const timeout = setTimeout(() => controller.abort(), timeoutMs);\n\n try {\n const response = await fetch(url, {\n signal: controller.signal,\n headers: {\n 'User-Agent': params.userAgent || 'AI-Code-Agent/1.0 (URLFetcherTool)',\n },\n });\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n }\n\n return response;\n } catch (error) {\n if (error instanceof Error) {\n throw error;\n }\n throw new Error('Unknown error while fetching URL.');\n } finally {\n clearTimeout(timeout);\n }\n }\n\n private assertSupportedContentType(contentType: string): void {\n if (\n contentType.startsWith('text/') ||\n contentType.startsWith('application/')\n ) {\n return;\n }\n\n throw new Error(\n `Unsupported content type: ${contentType}. Only text/* and application/* are supported.`,\n );\n }\n\n private resolveMaxBytes(maxBytes: number | null | undefined): number | null {\n if (maxBytes === null) {\n return null;\n }\n if (maxBytes === undefined) {\n return DEFAULT_MAX_BYTES;\n }\n return maxBytes;\n }\n\n private resolveReadLimit(maxBytes: number | null): number | null {\n if (maxBytes === null) return null;\n // Allow some headroom for markdown/JSON expansion while still bounding fetch size\n return Math.max(maxBytes * 4, DEFAULT_MAX_BYTES);\n }\n\n private async readAndDecodeBody(\n response: Response,\n contentType: string,\n maxBytes: number | null,\n ): Promise<{ content: string; byteLength: number; truncated: boolean }> {\n if (!response.body) {\n const fallback = await this.readViaFallback(response, maxBytes);\n return {\n content: this.decodeBuffer(fallback.buffer, contentType),\n byteLength: fallback.buffer.byteLength,\n truncated: fallback.truncated,\n };\n }\n\n const reader = response.body.getReader();\n const limit = maxBytes ?? Number.POSITIVE_INFINITY;\n const chunks: Uint8Array[] = [];\n let total = 0;\n let truncated = false;\n\n while (true) {\n const { done, value } = await reader.read();\n if (done || !value) {\n break;\n }\n\n const nextTotal = total + value.byteLength;\n if (nextTotal > limit) {\n const allowed = Math.max(0, Math.floor(limit - total));\n if (allowed > 0) {\n chunks.push(value.subarray(0, allowed));\n total += allowed;\n }\n truncated = maxBytes !== null;\n if (reader.cancel) {\n await reader.cancel();\n }\n break;\n }\n\n chunks.push(value);\n total = nextTotal;\n }\n\n const buffer = this.concatChunks(chunks, total);\n\n return {\n content: this.decodeBuffer(buffer, contentType),\n byteLength: buffer.byteLength,\n truncated,\n };\n }\n\n private async readViaFallback(\n response: Response,\n maxBytes: number | null,\n ): Promise<{ buffer: Uint8Array; truncated: boolean }> {\n if (typeof response.arrayBuffer === 'function') {\n const arrayBuffer = await response.arrayBuffer();\n return this.applyLimit(new Uint8Array(arrayBuffer), maxBytes);\n }\n\n if (typeof response.text === 'function') {\n const text = await response.text();\n return this.applyLimit(new TextEncoder().encode(text), maxBytes);\n }\n\n return { buffer: new Uint8Array(), truncated: false };\n }\n\n private applyLimit(\n buffer: Uint8Array,\n maxBytes: number | null,\n ): { buffer: Uint8Array; truncated: boolean } {\n if (maxBytes === null || buffer.byteLength <= maxBytes) {\n return { buffer, truncated: false };\n }\n\n return {\n buffer: buffer.slice(0, maxBytes),\n truncated: true,\n };\n }\n\n private concatChunks(chunks: Uint8Array[], total: number): Uint8Array {\n const merged = new Uint8Array(total);\n let offset = 0;\n for (const chunk of chunks) {\n merged.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return merged;\n }\n\n private decodeBuffer(buffer: Uint8Array, contentType: string): string {\n if (this.isLikelyText(contentType)) {\n const charset = this.getCharset(contentType) || 'utf-8';\n const decoder = new TextDecoder(charset, { fatal: false });\n return decoder.decode(buffer);\n }\n\n const base64 = Buffer.from(buffer).toString('base64');\n return `data:${contentType};base64,${base64}`;\n }\n\n private getCharset(contentType: string): string | null {\n const match = /charset=([^;]+)/i.exec(contentType);\n return match ? match[1].trim() : null;\n }\n\n private isHtmlContent(contentType: string): boolean {\n return contentType.includes('text/html');\n }\n\n private isJsonContent(contentType: string): boolean {\n return (\n contentType.includes('application/json') || contentType.endsWith('+json')\n );\n }\n\n private isTextualContent(contentType: string): boolean {\n return (\n contentType.startsWith('text/') ||\n contentType.includes('application/xml') ||\n contentType.includes('application/xhtml') ||\n contentType.includes('application/javascript')\n );\n }\n\n private isLikelyText(contentType: string): boolean {\n return (\n this.isTextualContent(contentType) ||\n this.isJsonContent(contentType) ||\n this.isHtmlContent(contentType)\n );\n }\n\n private async processContent(\n content: string,\n contentType: string,\n convertToMarkdown: boolean,\n ): Promise<string> {\n if (convertToMarkdown && this.isHtmlContent(contentType)) {\n return this.htmlToMarkdown(content);\n }\n\n if (this.isJsonContent(contentType)) {\n return this.prettyPrintJson(content);\n }\n\n return content;\n }\n\n private htmlToMarkdown(html: string): string {\n return UrlFetcherTool.turndown.turndown(html);\n }\n\n private prettyPrintJson(content: string): string {\n try {\n const parsed = JSON.parse(content);\n return JSON.stringify(parsed, null, 2);\n } catch {\n return content;\n }\n }\n\n private appendTruncationNotice(content: string, limit: number): string {\n return `${content}\\n\\n[truncated after ${limit} bytes]`;\n }\n\n private applyOutputLimit(\n content: string,\n maxBytes: number | null,\n ): { content: string; byteLength: number; truncated: boolean } {\n if (maxBytes === null) {\n return {\n content,\n byteLength: Buffer.byteLength(content, 'utf8'),\n truncated: false,\n };\n }\n\n const encoder = new TextEncoder();\n const buffer = encoder.encode(content);\n\n if (buffer.byteLength <= maxBytes) {\n return { content, byteLength: buffer.byteLength, truncated: false };\n }\n\n const truncatedBuffer = buffer.slice(0, maxBytes);\n const truncatedContent = new TextDecoder('utf-8', { fatal: false }).decode(\n truncatedBuffer,\n );\n\n return {\n content: this.appendTruncationNotice(truncatedContent, maxBytes),\n byteLength: maxBytes,\n truncated: true,\n };\n }\n\n private static createTurndown(): TurndownService {\n const turndown = new TurndownService({ headingStyle: 'atx' });\n turndown.remove(['script', 'style']);\n return turndown;\n }\n\n /**\n * Gets the examples for the tool.\n */\n get examples(): Array<\n ToolExample<UrlFetcherToolParameters, UrlFetcherToolOutput>\n > {\n return [\n {\n input: {\n url: 'https://example.com',\n prompt: 'Describe the main content of this page.',\n timeout: DEFAULT_TIMEOUT_MS,\n convertToMarkdown: true,\n },\n output: {\n url: 'https://example.com',\n finalUrl: 'https://example.com',\n fromCache: false,\n contentType: 'text/html',\n statusCode: 200,\n content: '# Example page',\n contentLength: 15,\n },\n },\n ];\n }\n\n /**\n * Converts the tool output to a format suitable for model consumption.\n */\n toModelOutput(output: UrlFetcherToolOutput): ModelFormattedToolResult {\n const lines = [\n `Fetched: ${output.finalUrl ?? output.url}`,\n `Status: ${output.statusCode ?? 'unknown'}`,\n `Content-Type: ${output.contentType ?? 'unknown'}`,\n `Length: ${output.contentLength} bytes`,\n `Truncated: ${output.truncated ? 'yes' : 'no'}`,\n ];\n\n if (output.message) {\n lines.push(`Message: ${output.message}`);\n }\n\n lines.push('', 'Content:', output.content);\n\n return {\n type: 'text',\n value: lines.join('\\n'),\n };\n }\n}\n","import type { ToolCallOptions } from 'ai';\nimport { z } from 'zod';\nimport { simulateReadableStream } from 'ai/test';\nimport type {\n ToolConfig,\n ToolExample,\n ModelFormattedToolResult,\n} from '../types';\nimport { ToolBase, type ToolMetadata } from './tool-base';\nimport type { AgentDefinition, Options } from '../sdk-types';\nimport { SubmitToolName } from './submit-tool';\nimport { v4 as uuidv4 } from 'uuid';\nimport type { LanguageModel } from '@ai-sdk/provider';\nimport type { MockLanguageModelV3 } from 'ai/test';\n\n// Some test models (e.g., MockLanguageModelV3) ship with a `doStream` that throws\n// \"Not implemented\". The agent runtime always uses streaming, so provide a\n// lightweight fallback that replays `doGenerate` output as a stream of events.\nconst ensureStreamCapableModel = (model: LanguageModel | MockLanguageModelV3 | undefined) => {\n if (!model || typeof model !== 'object') return model;\n\n const isMockModel = Array.isArray((model as any).doGenerateCalls) && Array.isArray((model as any).doStreamCalls);\n\n const doStream = (model as any).doStream;\n if (!isMockModel && typeof doStream === 'function') {\n return model;\n }\n\n if (typeof (model as any).doGenerate !== 'function') return model;\n\n (model as any).doStream = async (options: any) => {\n const genResult = await (model as any).doGenerate(options);\n const content = Array.isArray(genResult?.content) ? genResult.content : [];\n const events: any[] = [];\n let textId = 0;\n\n for (const part of content) {\n if (part?.type === 'text' && typeof part.text === 'string') {\n const id = `text-${++textId}`;\n events.push({ type: 'text-start', id });\n events.push({ type: 'text-delta', id, delta: part.text, textDelta: part.text, text: part.text });\n events.push({ type: 'text-end', id, text: part.text });\n } else if (part?.type === 'tool-call' || part?.type === 'tool_use') {\n const id =\n part.toolCallId || part.id || part.tool_call_id || `tool-${events.length + 1}`;\n const args = part.args ?? part.input ?? {};\n events.push({\n type: 'tool-call',\n id,\n toolCallId: id,\n toolName: part.toolName || part.name,\n args,\n input: args,\n });\n }\n }\n\n events.push({\n type: 'finish',\n finishReason: genResult?.finishReason ?? 'stop',\n usage: genResult?.usage,\n });\n\n return {\n stream: simulateReadableStream({\n chunks: events,\n initialDelayInMs: 0,\n chunkDelayInMs: 0,\n }),\n };\n };\n\n return model;\n};\n\nexport const TaskToolName = 'task';\n\nexport interface TaskToolConfig extends ToolConfig {\n agents?: Record<string, AgentDefinition>;\n parentOptions?: Options;\n parentModel?: string;\n parentTools?: string[];\n conversationId?: string;\n conversationObjectId?: string;\n taskId?: string;\n onTaskProgress?: (update: {\n progressPercent: number;\n toolCallId?: string;\n conversationId?: string;\n taskId?: string;\n raw?: unknown;\n }) => void | Promise<void>;\n}\n\nexport const TaskToolInput = z.object({\n description: z.string().describe('Short task description (3-5 words)'),\n summary: z\n .string()\n .describe('Required 5-8 word summary of the task (recommended max 48 characters)'),\n prompt: z.string().describe('Detailed task for agent'),\n agentType: z\n .string()\n .describe('Agent type to run the task with (inherit or one of the configured sub-agents)')\n .optional()\n .default('inherit'),\n});\n\nexport type TaskToolInput = z.infer<typeof TaskToolInput>;\n\nexport const TaskToolOutput = z.object({\n result: z.string().describe('Result from the sub-agent'),\n usage: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n }).optional(),\n error: z.string().optional(),\n});\n\nexport type TaskToolOutput = z.infer<typeof TaskToolOutput>;\n\n/**\n * Class for the Task tool that enables sub-agent invocation.\n * Sub-agents run with isolated context and potentially restricted tools.\n */\nexport class TaskTool extends ToolBase<\n TaskToolConfig,\n TaskToolInput,\n TaskToolOutput\n> {\n private agents: Record<string, AgentDefinition>;\n private parentOptions: Options;\n private parentModel: string;\n private parentTools?: string[];\n private onTaskProgress?: TaskToolConfig[\"onTaskProgress\"];\n private conversationId?: string;\n private conversationObjectId?: string;\n private taskId?: string;\n\n constructor(toolConfig?: TaskToolConfig) {\n super(toolConfig);\n this.agents = toolConfig?.agents || {};\n this.parentOptions = toolConfig?.parentOptions || {};\n this.parentModel = this.extractModelString(\n toolConfig?.parentModel || toolConfig?.parentOptions?.model,\n );\n // Capture the effective parent tool list (already filtered by allow/disallow)\n this.parentTools = toolConfig?.parentTools;\n this.onTaskProgress = toolConfig?.onTaskProgress;\n this.conversationId = toolConfig?.conversationId;\n this.conversationObjectId = toolConfig?.conversationObjectId;\n this.taskId = toolConfig?.taskId;\n }\n\n /**\n * Extract model string from model option (could be string or LanguageModel)\n */\n private extractModelString(model: string | any): string {\n if (typeof model === 'string') {\n return model;\n }\n\n // LanguageModel objects in AI SDK typically expose modelId\n if (model && typeof model === 'object' && 'modelId' in model) {\n const modelId = (model as { modelId?: unknown }).modelId;\n if (typeof modelId === 'string') {\n return modelId;\n }\n }\n\n return '';\n }\n\n /**\n * Returns the metadata for the tool.\n */\n protected getMetadata(): ToolMetadata<TaskToolInput, TaskToolOutput> {\n return {\n name: TaskToolName,\n description: 'Launch a new agent to handle complex, multi-step tasks autonomously. The Task tool launches specialized agents (subprocesses) that autonomously handle complex tasks.',\n inputSchema: TaskToolInput,\n outputSchema: TaskToolOutput,\n needsApproval: false,\n };\n }\n\n /**\n * Remove any <control>...</control> tags from model text.\n */\n private stripControlTags(text: string): string {\n if (typeof text !== 'string') return '';\n return text.replace(/<control>.*?<\\/control>/gis, '').trim();\n }\n\n /**\n * Parse any <control>{...}</control> blocks and extract progress percentages.\n */\n private extractProgressValues(\n text: string\n ): Array<{ value: number; raw: string }> {\n if (typeof text !== 'string') return [];\n const matches = text.matchAll(/<control>(.*?)<\\/control>/gis);\n const results: Array<{ value: number; raw: string }> = [];\n\n for (const match of matches) {\n const raw = match[1]?.trim();\n if (!raw) continue;\n try {\n const parsed = JSON.parse(raw);\n const candidate = (parsed as any)?.progressPercent;\n if (typeof candidate === 'number' && Number.isFinite(candidate)) {\n results.push({ value: candidate, raw });\n }\n } catch {\n // ignore malformed control payloads\n }\n }\n\n return results;\n }\n\n private async reportProgress(\n progressPercent: number,\n toolCallId?: string,\n raw?: unknown\n ): Promise<void> {\n if (!this.onTaskProgress) return;\n const pct = Math.max(0, Math.min(100, progressPercent));\n try {\n await this.onTaskProgress({\n progressPercent: pct,\n toolCallId,\n conversationId: this.conversationId,\n taskId: this.taskId,\n raw,\n });\n } catch (err) {\n // Swallow to avoid interrupting the task tool\n console.warn('[TaskTool] onTaskProgress callback failed', err);\n }\n }\n\n /**\n * Resolves the model for the sub-agent based on agent definition and parent model\n */\n private resolveModel(agentDef: AgentDefinition | undefined): string | LanguageModel {\n if (agentDef?.model && agentDef.model !== 'inherit') {\n return agentDef.model as any;\n }\n\n return this.parentModel;\n }\n\n /**\n * Filter tools based on agent definition\n */\n private filterTools(agentDef: AgentDefinition | undefined): string[] | undefined {\n const ensureFinalSubmit = (tools: string[]): string[] => {\n const filtered = tools.filter((t) => t !== TaskToolName);\n if (!filtered.includes(SubmitToolName)) {\n return [...filtered, SubmitToolName];\n }\n return filtered;\n };\n\n if (!agentDef?.tools) {\n // Prefer explicit parent tool list (already filtered by parent SDK setup)\n const allTools = this.parentTools || this.parentOptions.allowedTools;\n\n if (allTools && allTools.length > 0) {\n return ensureFinalSubmit(allTools);\n }\n\n // Fallback: only require final submit if no parent tools were provided\n return [SubmitToolName];\n }\n\n // Filter out Task tool from the specified tools to prevent recursion\n return ensureFinalSubmit(agentDef.tools);\n }\n\n /**\n * Executes the tool with the given input.\n */\n async execute(\n input: TaskToolInput,\n options: ToolCallOptions,\n ): Promise<TaskToolOutput> {\n const toolCallId =\n (options as any)?.toolCallId ||\n (options as any)?.tool_call_id ||\n (options as any)?.toolUseId;\n const isSubmitToolName = (name?: string) => name === SubmitToolName;\n\n const extractResultString = (raw: any): string => {\n if (!raw) return '';\n if (typeof raw === 'string') return this.stripControlTags(raw);\n\n if (typeof raw === 'object') {\n if ('result' in raw && typeof (raw as any).result === 'string') {\n return this.stripControlTags((raw as any).result);\n }\n if ('value' in raw && typeof (raw as any).value === 'string') {\n return this.stripControlTags((raw as any).value);\n }\n if ('output' in raw) {\n return extractResultString((raw as any).output);\n }\n }\n\n try {\n return this.stripControlTags(JSON.stringify(raw));\n } catch {\n return this.stripControlTags(String(raw));\n }\n };\n\n const { query } = await import('../sdk-query');\n const tapEnabled = process.env.NF_SUBAGENT_TAP === '1';\n const requireSubmit =\n process.env.NF_SUBAGENT_REQUIRE_SUBMIT === '0' ||\n process.env.NF_SUBAGENT_REQUIRE_SUBMIT === 'false'\n ? false\n : true; // default: require submit\n const maxSubmitRemindersEnv = Number(process.env.NF_SUBAGENT_SUBMIT_REMINDERS ?? '3');\n const maxSubmitReminders = Number.isFinite(maxSubmitRemindersEnv) && maxSubmitRemindersEnv >= 0\n ? maxSubmitRemindersEnv\n : 3;\n const tap = (event: string, detail?: unknown) => {\n if (!tapEnabled) return;\n const prefix = `[subagent:${input.agentType || 'inherit'}]`;\n const payload =\n typeof detail === 'string'\n ? detail\n : detail\n ? (() => {\n try {\n return JSON.stringify(detail);\n } catch {\n return String(detail);\n }\n })()\n : '';\n // stderr to avoid mingling with structured stdout in host apps\n // eslint-disable-next-line no-console\n console.error(`${prefix} ${event}${payload ? ` ${payload}` : ''}`);\n };\n const clip = (text: string, len = 240) =>\n text.length > len ? `${text.slice(0, len)}…` : text;\n const streamTextBuffers = new Map<string, string>();\n const flushText = (id: string) => {\n const val = streamTextBuffers.get(id) || '';\n streamTextBuffers.delete(id);\n return val;\n };\n\n try {\n // Get the agent definition if specified\n const agentType = input.agentType || 'inherit';\n const agentDef = agentType ? this.agents[agentType] : undefined;\n\n if (agentType && !agentDef && agentType !== 'inherit') {\n return {\n result: '',\n error: `Unknown agent type: ${agentType}. Available agents: ${Object.keys(this.agents).join(', ')}`,\n };\n }\n\n // Prepare the sub-agent prompt\n const mustSubmitInstruction = [\n `Important: Finish by calling the ${SubmitToolName} tool exactly once with your final result.`,\n `Do NOT end the conversation without calling ${SubmitToolName}, and do NOT call it more than once.`,\n `After calling ${SubmitToolName}, stop all further tool calls or messages.`,\n ].join(' ');\n const progressInstruction = [\n 'Each time you send a message start with the text:',\n '`<control>{\"progressPercent\":<percentage>}</control>`',\n 'e.g.',\n '`<control>{\"progressPercent\": 45}</control>`',\n \"This number should represent your best current guess at how far you are through completing the user's task, starting from their last message.\",\n ].join('\\n');\n\n const systemPrompt = agentDef?.prompt\n ? `${agentDef.prompt.trim()}\\n\\n${mustSubmitInstruction}\\n\\n${progressInstruction}`\n : `${mustSubmitInstruction}\\n\\n${progressInstruction}`;\n const userPrompt = input.prompt;\n const combinedPrompt = systemPrompt ? `${systemPrompt}\\n\\n${userPrompt}` : userPrompt;\n\n // Resolve model and tools for the sub-agent\n const subAgentModel = this.resolveModel(agentDef);\n const subAgentTools = this.filterTools(agentDef);\n\n const streamSafeResolver = this.parentOptions.modelResolver\n ? async (modelId: string) => {\n const resolved = await this.parentOptions.modelResolver!(modelId);\n return ensureStreamCapableModel(resolved as any) as any;\n }\n : undefined;\n\n // Prepare options for the sub-agent query\n const subAgentOptions: Options = {\n ...this.parentOptions,\n model: typeof subAgentModel === 'object'\n ? (ensureStreamCapableModel(subAgentModel as any) as any)\n : subAgentModel,\n modelResolver: streamSafeResolver ?? this.parentOptions.modelResolver,\n allowedTools: subAgentTools,\n // Sub-agents should expose the unified submit tool\n includeSubmitTool: true,\n // Don't pass agents to sub-agent to prevent deep nesting\n agents: undefined,\n // Allow sub-agents to run without an aggressive turn cap; parent still limits\n // the overall session. If desired, set NF_SUBAGENT_MAX_TURNS to a number.\n maxTurns:\n process.env.NF_SUBAGENT_MAX_TURNS !== undefined\n ? Number(process.env.NF_SUBAGENT_MAX_TURNS)\n : undefined,\n // Disable session management for sub-agents\n loadSession: undefined,\n saveSession: undefined,\n resume: undefined,\n };\n\n // Execute the sub-agent query.\n // We require the sub-agent to finish by calling the submit tool; plain text\n // responses should ideally call submit; we can optionally allow fallback.\n const subAgentSessionId = `subagent-${uuidv4()}`;\n let attempts = 0;\n let aggregateUsage = { input_tokens: 0, output_tokens: 0 };\n let lastAssistantText = '';\n\n while (attempts <= maxSubmitReminders) {\n let submitResultText = '';\n let runUsage = { input_tokens: 0, output_tokens: 0 };\n let runError: string | undefined;\n let submitCalled = false;\n\n const onStreamEvent = (ev: any) => {\n const t = ev?.type;\n switch (t) {\n case 'text-delta': {\n const id = ev.id || 'text';\n const prev = streamTextBuffers.get(id) || '';\n const delta = typeof ev.text === 'string' ? ev.text : ev.delta || '';\n streamTextBuffers.set(id, prev + (delta || ''));\n break;\n }\n case 'text-end': {\n const id = ev.id || 'text';\n const full = flushText(id) || ev.text || '';\n tap('assistant', clip(String(full || '')));\n break;\n }\n case 'reasoning-delta': {\n const id = ev.id || 'reasoning';\n const prev = streamTextBuffers.get(id) || '';\n const delta = ev.delta || ev.text || '';\n streamTextBuffers.set(id, prev + (delta || ''));\n break;\n }\n case 'reasoning-end': {\n const id = ev.id || 'reasoning';\n const full = flushText(id) || ev.text || '';\n tap('reasoning', clip(String(full || '')));\n break;\n }\n case 'tool-call': {\n const name = ev.toolName || ev.name;\n tap('tool-call', {\n id: ev.toolCallId || ev.id,\n name,\n input: ev.input,\n });\n\n if (isSubmitToolName(name)) {\n submitCalled = true;\n const candidate = ev.input?.result;\n if (typeof candidate === 'string') {\n submitResultText = candidate;\n }\n tap('submit-trace', `SUBMIT_TRACE tool-call name=${name} id=${ev.toolCallId || ev.id}`);\n }\n break;\n }\n case 'tool-result': {\n const name = ev.toolName || ev.name;\n tap('tool-result', {\n id: ev.toolCallId || ev.id,\n name,\n output: ev.output,\n });\n\n if (isSubmitToolName(name)) {\n submitCalled = true;\n const extracted = extractResultString(\n ev.output ?? ev.result ?? ev.data ?? ev,\n );\n if (extracted) {\n submitResultText = extracted;\n }\n tap('submit-trace', `SUBMIT_TRACE tool-result name=${name} id=${ev.toolCallId || ev.id} extracted=${clip(submitResultText)}`);\n }\n break;\n }\n case 'tool-input-delta': {\n break;\n }\n default: {\n // keep stream noise minimal; ignore plumbing\n break;\n }\n }\n };\n\n const subQuery = query({\n prompt:\n attempts === 0\n ? combinedPrompt\n : `You ended the last turn without calling the ${SubmitToolName} tool. Continue your work and finish by calling ${SubmitToolName} with your final result. ${lastAssistantText ? `Previous response: ${lastAssistantText}` : ''}`,\n options: {\n ...subAgentOptions,\n // Reuse the same session so the agent keeps its context across reminders.\n resume: subAgentSessionId,\n },\n });\n\n for await (const message of subQuery) {\n // Break immediately if submit was already detected (e.g., from stream events)\n if (submitCalled) {\n tap('submit-trace', 'SUBMIT_TRACE breaking early - submitCalled already true');\n break;\n }\n\n if (message.type === 'stream_event') {\n onStreamEvent((message as any).event);\n // Check if stream event set submitCalled and break if so\n if (submitCalled) {\n tap('submit-trace', 'SUBMIT_TRACE breaking after stream_event');\n break;\n }\n continue;\n }\n\n tap('event', { type: message.type });\n\n if (message.type === 'assistant') {\n // Capture the last assistant text to include in follow-up prompts.\n const textPart = message.message.content.find(\n (part: any) => part?.type === 'text' && typeof part.text === 'string',\n );\n if (textPart) {\n const progressValues = this.extractProgressValues(textPart.text);\n for (const p of progressValues) {\n await this.reportProgress(p.value, toolCallId, p.raw);\n }\n const cleaned = this.stripControlTags(textPart.text);\n lastAssistantText = cleaned;\n }\n if (textPart?.text) {\n tap('assistant', this.stripControlTags(textPart.text).slice(0, 240));\n }\n\n // Detect submit tool calls even if stopWhen halts before tool_result is emitted\n for (const part of message.message.content) {\n const toolName = (part as any)?.name;\n if (\n part?.type === 'tool_use' &&\n isSubmitToolName(toolName)\n ) {\n submitCalled = true;\n const candidateResult = (part.input as any)?.result;\n if (typeof candidateResult === 'string') {\n submitResultText = this.stripControlTags(candidateResult);\n }\n tap('submit-trace', `SUBMIT_TRACE tool-use name=${toolName} id=${(part as any)?.id || 'n/a'}`);\n break; // Stop checking more parts\n }\n }\n // Break the message loop if submit was detected in assistant message\n if (submitCalled) {\n tap('submit-trace', 'SUBMIT_TRACE breaking after assistant tool_use');\n break;\n }\n }\n\n if (\n message.type === 'tool_result' &&\n isSubmitToolName((message as any).tool_name)\n ) {\n submitCalled = true;\n const raw =\n (message as any).result ??\n (message as any).output ??\n (message as any).output?.result ??\n '';\n submitResultText = extractResultString(raw);\n tap('submit', submitResultText.slice(0, 240));\n tap('submit-trace', `SUBMIT_TRACE tool-result message tool_name=${(message as any).tool_name} tool_call_id=${(message as any).tool_call_id}`);\n // Break immediately after detecting submit tool result\n tap('submit-trace', 'SUBMIT_TRACE breaking after tool_result');\n break;\n }\n\n if (message.type === 'result') {\n if ('error_message' in message && message.error_message) {\n runError = message.error_message;\n tap('error', runError);\n }\n if ((message as any).subtype === 'error_max_turns') {\n tap('error', 'subagent hit maxTurns');\n }\n if (message.usage) {\n runUsage = {\n input_tokens: message.usage.input_tokens,\n output_tokens: message.usage.output_tokens,\n };\n }\n // If the model returned plain text as the \"result\" without submitting,\n // keep it so we can show it in the follow-up reminder.\n if (!submitCalled && 'result' in message && message.result) {\n const progressValues = this.extractProgressValues(\n message.result as any\n );\n for (const p of progressValues) {\n await this.reportProgress(p.value, toolCallId, p.raw);\n }\n lastAssistantText = this.stripControlTags(message.result as any);\n }\n }\n }\n\n // Aggregate usage across reminder loops\n aggregateUsage = {\n input_tokens: aggregateUsage.input_tokens + runUsage.input_tokens,\n output_tokens: aggregateUsage.output_tokens + runUsage.output_tokens,\n };\n\n if (runError) {\n return {\n result: submitResultText || lastAssistantText || String(runError),\n usage: aggregateUsage,\n error: runError,\n };\n }\n\n if (submitCalled || !requireSubmit) {\n // Stop immediately on first submit\n return {\n result: submitResultText || lastAssistantText,\n usage: aggregateUsage,\n };\n }\n\n attempts += 1;\n }\n\n return {\n result: lastAssistantText || '',\n usage: aggregateUsage,\n error: `Sub-agent ended without calling the submit tool after ${maxSubmitReminders + 1} attempts.`,\n };\n } catch (error) {\n return {\n result:\n (error instanceof Error ? error.message : String(error)) || 'Sub-agent failed',\n error: error instanceof Error ? error.message : String(error),\n };\n }\n }\n\n /**\n * Converts the tool output to a format suitable for model consumption.\n */\n toModelOutput(output: TaskToolOutput): ModelFormattedToolResult {\n if (output.error) {\n return {\n type: 'text',\n value: `Sub-agent task failed: ${output.error}`,\n };\n }\n\n let result = `Sub-agent completed task successfully.\\n\\n`;\n if (output.result) {\n result += `Result:\\n${output.result}`;\n }\n if (output.usage) {\n result += `\\n\\nToken usage: ${output.usage.input_tokens} input, ${output.usage.output_tokens} output`;\n }\n\n return {\n type: 'text',\n value: result,\n };\n }\n\n /**\n * Gets the examples for the tool.\n */\n get examples(): Array<ToolExample<TaskToolInput, TaskToolOutput>> {\n return [\n {\n input: {\n description: 'Code review',\n summary: 'Review auth module for security issues',\n prompt: 'Review the recent changes to the authentication module for security vulnerabilities and code quality issues.',\n agentType: 'code-reviewer',\n },\n output: {\n result: 'I reviewed the authentication module changes and found 2 issues:\\n1. Password is logged in plain text at line 45\\n2. Missing input validation on username field',\n usage: { input_tokens: 1200, output_tokens: 350 },\n },\n description: 'Launch a code reviewer sub-agent',\n },\n {\n input: {\n description: 'Research API',\n summary: 'Research Stripe API for subscription billing',\n prompt: 'Research the Stripe API documentation to understand how to implement subscription billing.',\n agentType: 'inherit',\n },\n output: {\n result: 'Based on the Stripe API documentation, subscription billing involves:\\n1. Creating products and prices\\n2. Creating customers\\n3. Creating subscriptions with payment methods',\n usage: { input_tokens: 800, output_tokens: 200 },\n },\n description: 'Launch a research agent with a specific model',\n },\n ];\n }\n}\n","import type { ToolCallOptions } from \"ai\";\nimport { z } from \"zod\";\nimport type {\n ToolConfig,\n ToolExample,\n ModelFormattedToolResult,\n} from \"../types\";\nimport { ToolBase, type ToolMetadata } from \"./tool-base\";\n\nexport const SubmitToolName = \"submit\";\n\nexport type SubmitToolConfig = ToolConfig;\n\nexport const SubmitToolInput = z.object({\n result: z.string().min(1, \"result must not be empty\"),\n});\n\nexport type SubmitToolInput = z.infer<typeof SubmitToolInput>;\n\nexport const SubmitToolOutput = z.object({\n result: z.string(),\n});\n\nexport type SubmitToolOutput = z.infer<typeof SubmitToolOutput>;\n\n/**\n * Class for the Submit tool.\n */\nexport class SubmitTool extends ToolBase<\n SubmitToolConfig,\n SubmitToolInput,\n SubmitToolOutput\n> {\n /**\n * Returns the metadata for the tool.\n *\n * The name, description, and needsApproval properties are defaults which can be overridden in the constructor.\n *\n * @returns The tool metadata.\n */\n protected getMetadata(): ToolMetadata<SubmitToolInput, SubmitToolOutput> {\n return {\n name: SubmitToolName,\n description:\n \"Submit your final user-facing message in `result` AFTER using other tools to complete the task. The `result` text is what will be returned to the user (used for quasi-reasoning), so include the final answer only. Do not call this tool without first taking action to solve the user's request.\",\n inputSchema: SubmitToolInput,\n outputSchema: SubmitToolOutput,\n needsApproval: false,\n };\n }\n\n /**\n * Executes the tool with the given input.\n *\n * @param _ - The input for the tool. Unused.\n * @param __ - Options from the tool call. Unused.\n * @returns A promise that resolves to the tool execution result.\n */\n async execute(\n input: SubmitToolInput,\n __: ToolCallOptions\n ): Promise<SubmitToolOutput> {\n return { result: input.result };\n }\n\n /**\n * Converts the tool output to a format suitable for model consumption.\n *\n * @param _ - The output from the tool execution. Unused.\n * @returns The formatted tool result.\n */\n toModelOutput(output: SubmitToolOutput): ModelFormattedToolResult {\n return {\n type: \"text\",\n value: output.result,\n };\n }\n\n /**\n * Gets the examples for the tool.\n *\n * @returns The tool examples.\n */\n get examples(): Array<ToolExample<SubmitToolInput, SubmitToolOutput>> {\n return [\n {\n description: \"Submit the final task result\",\n input: { result: \"Implemented feature X and all tests pass.\" },\n output: { result: \"Implemented feature X and all tests pass.\" },\n },\n ];\n }\n}\n","import type { ToolCallOptions } from \"ai\";\nimport { z } from \"zod\";\nimport type {\n ToolConfig,\n ToolExample,\n ModelFormattedToolResult,\n} from \"../types\";\nimport { ToolBase, type ToolMetadata } from \"./tool-base\";\n\nexport const SubmitFinalResultToolName = \"submit_final_result\";\n\nexport type SubmitFinalResultToolConfig = ToolConfig;\n\nexport const SubmitFinalResultToolInput = z.object({\n result: z.string().min(1, \"result must not be empty\"),\n});\n\nexport type SubmitFinalResultToolInput = z.infer<\n typeof SubmitFinalResultToolInput\n>;\n\nexport const SubmitFinalResultToolOutput = z.object({\n result: z.string(),\n});\n\nexport type SubmitFinalResultToolOutput = z.infer<\n typeof SubmitFinalResultToolOutput\n>;\n\n/**\n * Sub-agent-only final submission tool.\n */\nexport class SubmitFinalResultTool extends ToolBase<\n SubmitFinalResultToolConfig,\n SubmitFinalResultToolInput,\n SubmitFinalResultToolOutput\n> {\n protected getMetadata(): ToolMetadata<\n SubmitFinalResultToolInput,\n SubmitFinalResultToolOutput\n > {\n return {\n name: SubmitFinalResultToolName,\n description:\n \"Submit the final result of the sub-agent. Call exactly once when the subtask is fully complete.\",\n inputSchema: SubmitFinalResultToolInput,\n outputSchema: SubmitFinalResultToolOutput,\n needsApproval: false,\n };\n }\n\n async execute(\n input: SubmitFinalResultToolInput,\n __: ToolCallOptions\n ): Promise<SubmitFinalResultToolOutput> {\n return { result: input.result };\n }\n\n toModelOutput(\n output: SubmitFinalResultToolOutput\n ): ModelFormattedToolResult {\n return {\n type: \"text\",\n value: output.result,\n };\n }\n\n get examples(): Array<\n ToolExample<SubmitFinalResultToolInput, SubmitFinalResultToolOutput>\n > {\n return [\n {\n description: \"Submit the completed subtask result\",\n input: { result: \"Wrote README and verified links.\" },\n output: { result: \"Wrote README and verified links.\" },\n },\n ];\n }\n}\n","import type { Tool } from 'ai';\nimport { LocalEnvironment } from './local-environment';\nimport { ReadFileTool, ReadFileToolName } from './tools/read-file-tool';\nimport { WriteFileTool, WriteFileToolName } from './tools/write-file-tool';\nimport { DeleteFileTool, DeleteFileToolName } from './tools/delete-file-tool';\nimport { EditFileTool, EditFileToolName } from './tools/edit-file-tool';\nimport { MultiEditFileTool, MultiEditFileToolName } from './tools/multi-edit-file-tool';\nimport { MoveFileTool, MoveFileToolName } from './tools/move-file-tool';\nimport { CopyFileTool, CopyFileToolName } from './tools/copy-file-tool';\nimport {\n ReadManyFilesTool,\n ReadManyFilesToolName,\n} from './tools/read-many-files-tool';\nimport {\n GetProjectFileStructureTool,\n GetProjectFileStructureToolName,\n} from './tools/get-project-file-structure-tool';\nimport { GlobTool, GlobToolName } from './tools/glob-tool';\nimport { GrepTool, GrepToolName } from './tools/grep-tool';\nimport {\n ListDirectoryTool,\n ListDirectoryToolName,\n} from './tools/list-directory-tool';\nimport { RunCommandTool, RunCommandToolName } from './tools/run-command-tool';\nimport { TodoReadTool, TodoReadToolName } from './tools/todo-read-tool';\nimport { TodoWriteTool, TodoWriteToolName } from './tools/todo-write-tool';\nimport { UrlFetcherTool, UrlFetcherToolName } from './tools/url-fetcher-tool';\nimport { TaskTool, TaskToolName } from './tools/task-tool';\nimport {\n SubmitFinalResultTool,\n SubmitFinalResultToolName,\n} from './tools/submit-final-result-tool';\nimport type { AgentDefinition } from './sdk-types';\n\n// Map of all available tools\nexport const availableTools = {\n [ReadFileToolName]: ReadFileTool,\n [WriteFileToolName]: WriteFileTool,\n [DeleteFileToolName]: DeleteFileTool,\n [EditFileToolName]: EditFileTool,\n [MultiEditFileToolName]: MultiEditFileTool,\n [MoveFileToolName]: MoveFileTool,\n [CopyFileToolName]: CopyFileTool,\n [ReadManyFilesToolName]: ReadManyFilesTool,\n [GetProjectFileStructureToolName]: GetProjectFileStructureTool,\n [GlobToolName]: GlobTool,\n [GrepToolName]: GrepTool,\n [ListDirectoryToolName]: ListDirectoryTool,\n [RunCommandToolName]: RunCommandTool,\n [TodoReadToolName]: TodoReadTool,\n [TodoWriteToolName]: TodoWriteTool,\n [UrlFetcherToolName]: UrlFetcherTool,\n [TaskToolName]: TaskTool,\n [SubmitFinalResultToolName]: SubmitFinalResultTool,\n} as const;\n\nexport type ToolName = keyof typeof availableTools;\nexport const ToolNames = Object.keys(availableTools) as ToolName[];\n\n/**\n * Creates tools for the SDK, using local filesystem and command execution.\n *\n * @param toolsDefinition - Array of tool names to create, or '*' for all tools\n * @param config - Optional configuration for the tools\n * @returns A record mapping tool names to their corresponding Tool instances\n */\nexport function createTools(\n toolsDefinition: string[] = ['*'],\n config?: {\n workingDirectory?: string;\n environmentVariables?: Record<string, string>;\n additionalDirectories?: string[];\n stderrCallback?: (stderr: string) => void;\n agents?: Record<string, AgentDefinition>;\n parentOptions?: Record<string, unknown>;\n parentModel?: string;\n parentTools?: string[];\n externalTools?: Record<string, Tool>;\n conversationId?: string;\n conversationObjectId?: string;\n taskId?: string;\n onTaskProgress?: (update: {\n progressPercent: number;\n toolCallId?: string;\n conversationId?: string;\n taskId?: string;\n raw?: unknown;\n }) => void | Promise<void>;\n }\n): Record<string, Tool> {\n const tools: Record<string, Tool> = {};\n\n const externalTools = config?.externalTools ?? {};\n const externalToolNames = Object.keys(externalTools);\n const allToolNames = [...ToolNames, ...externalToolNames];\n\n // Determine which tools to create\n const toolsToCreate = toolsDefinition.includes('*')\n ? allToolNames\n : toolsDefinition.filter(name => allToolNames.includes(name));\n\n // NOTE: Only LocalEnvironment is supported here today. When environment\n // pluggability lands, this factory should accept an injected environment\n // instead of constructing LocalEnvironment directly.\n if ((config as Record<string, unknown> | undefined)?.environment) {\n throw new Error('Custom environments are not supported yet; LocalEnvironment is used by default.');\n }\n\n const environment = new LocalEnvironment({\n workingDirectory: config?.workingDirectory,\n environmentVariables: config?.environmentVariables,\n additionalDirectories: config?.additionalDirectories,\n stderrCallback: config?.stderrCallback,\n name: 'local',\n });\n\n for (const toolName of toolsToCreate) {\n // Use externally provided tool instances when supplied\n if (toolName in externalTools) {\n tools[toolName] = externalTools[toolName];\n continue;\n }\n\n const ToolClass = availableTools[toolName as ToolName];\n\n // Special handling for TaskTool\n if (toolName === TaskToolName) {\n tools[toolName] = new TaskTool({\n name: toolName,\n agents: config?.agents,\n parentOptions: config?.parentOptions,\n parentModel: config?.parentModel,\n parentTools: config?.parentTools ?? toolsToCreate,\n conversationId: config?.conversationId,\n conversationObjectId: config?.conversationObjectId,\n taskId: config?.taskId,\n onTaskProgress: config?.onTaskProgress,\n });\n continue;\n }\n\n // Non-environment tool: does not require filesystem access\n if (toolName === SubmitFinalResultToolName) {\n tools[toolName] = new SubmitFinalResultTool({ name: toolName });\n continue;\n }\n\n // Type-safe tool construction\n // All remaining tools extend EnvironmentToolBase which expects (environment, config)\n const ToolConstructor = ToolClass as new (\n environment: LocalEnvironment,\n config?: { name?: string }\n ) => Tool;\n tools[toolName] = new ToolConstructor(environment, { name: toolName });\n }\n\n return tools;\n}\n\n// Export individual tool names for backward compatibility\nexport {\n ReadFileToolName,\n WriteFileToolName,\n DeleteFileToolName,\n EditFileToolName,\n MultiEditFileToolName,\n MoveFileToolName,\n CopyFileToolName,\n ReadManyFilesToolName,\n GetProjectFileStructureToolName,\n GlobToolName,\n GrepToolName,\n ListDirectoryToolName,\n RunCommandToolName,\n TodoReadToolName,\n TodoWriteToolName,\n UrlFetcherToolName,\n TaskToolName,\n SubmitFinalResultToolName,\n};\n","import type { Tool } from \"ai\";\nimport type { ToolExample } from \"./types\";\nimport { SubmitToolName } from \"./tools/submit-tool\";\n\n// See https://github.com/galfrevn/promptsmith.\ntype ConstraintType = \"must\" | \"must_not\" | \"should\" | \"should_not\";\ntype ConstraintsByType = {\n [key in ConstraintType]?: string[];\n};\n\ntype ConstraintsConfig = {\n maxSteps: number;\n allowSubmit?: boolean;\n};\n\ntype AdditionalInstructionsConfig = ConstraintsConfig & {\n tools: Record<string, Tool>;\n};\n\n/**\n * Generates additional system instructions for the code agent based on the provided configuration.\n *\n * @param config - Configuration object containing maxSteps and tools.\n * @returns A string containing the additional instructions, to append to the system prompt.\n */\nexport function getAdditionalInstructions(\n config: AdditionalInstructionsConfig\n): string {\n const { maxSteps, allowSubmit, tools } = config;\n\n // Core instructions sections\n const coreSections: string[] = [];\n\n // Add tone and style guidelines\n coreSections.push(`# Tone and Style\n\n- Only use emojis if the user explicitly requests it. Avoid using emojis in all communication unless asked.\n- Your output should be short and concise. You can use Github-flavored markdown for formatting.\n- Output text to communicate with the user; all text you output outside of tool use is displayed to the user.\n- NEVER create files unless they're absolutely necessary for achieving your goal. ALWAYS prefer editing an existing file to creating a new one.`);\n\n // Add professional objectivity section\n coreSections.push(`# Professional Objectivity\n\nPrioritize technical accuracy and truthfulness over validating the user's beliefs. Focus on facts and problem-solving, providing direct, objective technical info without any unnecessary superlatives, praise, or emotional validation. Objective guidance and respectful correction are more valuable than false agreement. Whenever there is uncertainty, it's best to investigate to find the truth first.`);\n\n // Tool examples section\n const exampleSections: string[] = [\n \"# Tool Examples\",\n \"You have access to several tools to assist you in completing your task. Here are some examples of how to use them:\",\n ];\n for (const [toolName, tool] of Object.entries(tools)) {\n if (\n \"examples\" in tool &&\n Array.isArray(tool.examples) &&\n tool.examples.length > 0\n ) {\n let toolSection = `## Tool: \\`${toolName}\\`\\n\\n`;\n for (const example of tool.examples) {\n toolSection += formatExampleForInstructions(toolName, example);\n }\n exampleSections.push(toolSection.trim());\n }\n }\n\n /*\n- You can call multiple tools in a single response. If you intend to call multiple tools and there are no dependencies between them, make all independent tool calls in parallel.\n- Maximize use of parallel tool calls where possible to increase efficiency.\n- However, if some tool calls depend on previous calls, call them sequentially.\n*/\n\n // Tool usage policy section\n const toolUsagePolicySections: string[] = [\n `# Tool Usage Policy\n\n${allowSubmit !== false ? `- You can use the \"${SubmitToolName}\" tool with a \"result\" string to send the user a final message.\n` : \"\"}- Never use placeholders or guess missing parameters in tool calls.\n- Use specialized tools instead of bash commands when possible for a better user experience.`,\n ];\n\n // Behavioral guidelines with constraints\n const constraintSections: string[] = [\"# Behavioral Guidelines\"];\n const constraintsByType = getCodeAgentConstraints({ maxSteps, allowSubmit });\n if (constraintsByType.must && constraintsByType.must.length > 0) {\n let constraintSection = \"## You MUST:\\n\\n\";\n for (const constraint of constraintsByType.must) {\n constraintSection += `- ${constraint}\\n`;\n }\n constraintSections.push(constraintSection.trim());\n }\n if (constraintsByType.must_not && constraintsByType.must_not.length > 0) {\n let constraintSection = \"## You MUST NOT:\\n\\n\";\n for (const constraint of constraintsByType.must_not) {\n constraintSection += `- ${constraint}\\n`;\n }\n constraintSections.push(constraintSection.trim());\n }\n if (constraintsByType.should && constraintsByType.should.length > 0) {\n let constraintSection = \"## You SHOULD:\\n\\n\";\n for (const constraint of constraintsByType.should) {\n constraintSection += `- ${constraint}\\n`;\n }\n constraintSections.push(constraintSection.trim());\n }\n if (constraintsByType.should_not && constraintsByType.should_not.length > 0) {\n let constraintSection = \"## You SHOULD NOT:\\n\\n\";\n for (const constraint of constraintsByType.should_not) {\n constraintSection += `- ${constraint}\\n`;\n }\n constraintSections.push(constraintSection.trim());\n }\n\n return [\n ...coreSections,\n ...exampleSections,\n ...toolUsagePolicySections,\n ...constraintSections,\n ].join(\"\\n\\n\");\n}\n\n/**\n * Formats a tool example for inclusion in the code agent system instructions.\n *\n * @param toolName - The name of the tool.\n * @param example - The tool example to format.\n * @returns The formatted tool example string.\n */\nexport function formatExampleForInstructions<ToolInputType, ToolOutputType>(\n toolName: string,\n example: ToolExample<ToolInputType, ToolOutputType>\n): string {\n const input = formatValueForExample(example.input);\n const output = formatValueForExample(example.output);\n\n if (output === \"\") {\n return `<example>\n<tool_call>\n${toolName}(${input})\n</tool_call>\n</example>`;\n }\n\n return `<example>\n<tool_call>\n${toolName}(${input})\n</tool_call>\n<tool_response>\n${output}\n</tool_response>\n</example>`;\n}\n\n/**\n * Formats a value for inclusion in a tool example.\n *\n * @param value - The value to format.\n * @returns The formatted value as a string.\n */\nfunction formatValueForExample(value: unknown): string {\n if (typeof value === \"undefined\") {\n return \"\";\n }\n if (typeof value === \"string\") {\n return `\"${value}\"`;\n }\n if (typeof value === \"number\") {\n return value.toString();\n }\n if (typeof value === \"boolean\") {\n return value ? \"true\" : \"false\";\n }\n return JSON.stringify(value, null, 2);\n}\n\n/**\n * Generates constraints for the code agent system instructions based on the provided configuration.\n *\n * The constraints are formatted in accordance with the PromptSmith framework.\n * You can pass them to the prompt builder's `withConstraints` method.\n *\n * @param config - Configuration object containing maxSteps and allowSubmit.\n * @returns An object containing constraints to include in the system prompt, categorized by type.\n */\nexport function getCodeAgentConstraints(\n config: ConstraintsConfig\n): ConstraintsByType {\n const { maxSteps, allowSubmit } = config;\n\n return {\n must: [\n \"Issue tool calls to complete your task when appropriate\",\n \"Read and understand existing code before suggesting modifications\",\n ...(allowSubmit\n ? [\n `Call the \\`${SubmitToolName}\\` tool ONLY after you have actually completed the task using other tools and have concrete results to show`,\n ]\n : []),\n `Complete your task within ${maxSteps} steps`,\n ],\n must_not: [\n \"Generate or guess URLs unless confident they help with programming\",\n \"Introduce security vulnerabilities (command injection, XSS, SQL injection, etc.)\",\n \"Create files unless absolutely necessary - prefer editing existing files\",\n \"Use placeholders or guess missing parameters in tool calls\",\n ],\n should: [\n \"Use specialized tools instead of bash commands when possible\",\n \"Make independent tool calls in parallel to maximize efficiency\",\n \"Be careful about security and fix any insecure code immediately\",\n \"Keep solutions simple and focused - avoid over-engineering\",\n ],\n should_not: [\n \"Add features, refactor code, or make improvements beyond what was asked\",\n \"Add error handling for scenarios that cannot happen\",\n \"Create helpers or abstractions for one-time operations\",\n \"Use backwards-compatibility hacks when code can just be changed\",\n ],\n };\n}\n","import type { Tool } from 'ai';\nimport type { ZodSchema } from 'zod';\nimport { zodToJsonSchema } from 'zod-to-json-schema';\n\n/**\n * Interface for legacy tool format\n */\ninterface LegacyTool {\n name: string;\n description?: string;\n parameters?: ZodSchema;\n inputSchema?: ZodSchema;\n execute: (input: any, options: any) => Promise<any>;\n}\n\n/**\n * Type guard to check if a tool already exposes a schema the AI SDK understands\n * (either `inputSchema` from our legacy tools or `parameters` from tool()).\n */\nfunction isV6Tool(tool: any): tool is Tool {\n return (\n typeof tool === 'object' &&\n tool !== null &&\n typeof tool.execute === 'function' &&\n 'parameters' in tool\n );\n}\n\n/**\n * Type guard to check if an object is a legacy tool\n */\nfunction isLegacyTool(tool: any): tool is LegacyTool {\n return (\n typeof tool === 'object' &&\n tool !== null &&\n typeof tool.name === 'string' &&\n typeof tool.execute === 'function' &&\n ('parameters' in tool || 'inputSchema' in tool)\n );\n}\n\n/**\n * Safely get a property value from an object, handling getters\n */\nfunction getPropertyValue<T>(obj: any, propertyName: string): T | undefined {\n try {\n // First try direct property access\n if (propertyName in obj) {\n return obj[propertyName];\n }\n\n // Check the prototype chain for getters\n let proto = Object.getPrototypeOf(obj);\n while (proto && proto !== Object.prototype) {\n const descriptor = Object.getOwnPropertyDescriptor(proto, propertyName);\n if (descriptor) {\n if (descriptor.get) {\n // It's a getter\n return descriptor.get.call(obj);\n } else if (descriptor.value !== undefined) {\n // It's a regular property\n return descriptor.value;\n }\n }\n proto = Object.getPrototypeOf(proto);\n }\n\n return undefined;\n } catch (error) {\n console.warn(`Failed to get property ${propertyName}:`, error);\n return undefined;\n }\n}\n\nfunction isZodSchema(schema: unknown): schema is ZodSchema {\n return (\n !!schema &&\n typeof schema === 'object' &&\n 'parse' in (schema as Record<string, unknown>) &&\n '_def' in (schema as Record<string, unknown>)\n );\n}\n\n/**\n * Wraps a legacy tool class to make it compatible with AI SDK v6\n *\n * Legacy tools have:\n * - name: string\n * - description: string (might be a getter)\n * - parameters: ZodSchema (might be a getter, should be inputSchema)\n * - execute: function\n *\n * v6 tools need:\n * - description: string\n * - inputSchema: ZodSchema (called 'parameters' in the tool() function)\n * - execute: function\n */\nexport function wrapLegacyTool(legacyTool: any): Tool {\n // Check if it's already a v6 tool\n if (isV6Tool(legacyTool)) {\n return legacyTool;\n }\n\n // Validate that it's a legacy tool\n if (!isLegacyTool(legacyTool)) {\n throw new Error(`Invalid tool: missing required properties (name, execute, and either parameters or inputSchema)`);\n }\n\n // Get the description\n const description = getPropertyValue<string>(legacyTool, 'description') ||\n `Tool: ${legacyTool.name}`;\n\n // Get the schema - legacy tools use 'parameters', v6 uses 'inputSchema'\n let schema: ZodSchema | undefined;\n\n // First check for inputSchema\n schema = getPropertyValue<ZodSchema>(legacyTool, 'inputSchema');\n\n // If not found, check for parameters\n if (!schema) {\n schema = getPropertyValue<ZodSchema>(legacyTool, 'parameters');\n }\n\n if (!schema) {\n throw new Error(`Tool ${legacyTool.name} has no schema (parameters or inputSchema)`);\n }\n\n // Normalize schema to plain JSON Schema for providers like OpenAI that\n // require a concrete object (not a Zod instance).\n let parameters: Record<string, unknown>;\n\n if (isZodSchema(schema)) {\n try {\n parameters = zodToJsonSchema(schema, { $refStrategy: 'none' }) as Record<string, unknown>;\n } catch (conversionError) {\n console.warn(`Failed to convert schema for ${legacyTool.name}:`, conversionError);\n parameters = {};\n }\n } else {\n parameters = schema as Record<string, unknown>;\n }\n\n if (!parameters || typeof parameters !== 'object' || !('type' in parameters)) {\n parameters = { type: 'object', properties: {}, additionalProperties: true };\n }\n\n const v6Tool: Tool = {\n name: legacyTool.name,\n description,\n parameters,\n // Preserve original schema for callers that rely on Zod parsing\n inputSchema: schema as any,\n execute: async (input: any, options: any) => {\n return await legacyTool.execute(input, options);\n },\n } as Tool;\n\n return v6Tool;\n}\n\n/**\n * Wraps multiple legacy tools\n */\nexport function wrapLegacyTools(tools: Record<string, any>): Record<string, Tool> {\n const wrappedTools: Record<string, Tool> = {};\n\n for (const [name, toolInstance] of Object.entries(tools)) {\n try {\n wrappedTools[name] = wrapLegacyTool(toolInstance);\n } catch (error) {\n console.warn(`Failed to wrap tool ${name}:`, error);\n // Keep the original if wrapping fails\n wrappedTools[name] = toolInstance;\n }\n }\n\n return wrappedTools;\n}\n","/**\n * Safe JSON repair utility for handling malformed JSON\n */\n\n/**\n * Attempts to repair common JSON issues\n * @param input - The potentially malformed JSON string\n * @returns The repaired JSON object or null if unrepairable\n */\nexport function repairJSON(input: string): unknown | null {\n if (!input || typeof input !== 'string') {\n return null;\n }\n\n // Try parsing as-is first\n try {\n return JSON.parse(input);\n } catch {\n // Continue with repair attempts\n }\n\n let repaired = input.trim();\n\n // Fix common issues\n try {\n // Replace Python-style booleans and None\n repaired = repaired\n .replace(/\\bTrue\\b/g, 'true')\n .replace(/\\bFalse\\b/g, 'false')\n .replace(/\\bNone\\b/g, 'null');\n\n // Fix single quotes in property names and string values\n // This is more complex than simple replacement to avoid breaking apostrophes in strings\n repaired = fixSingleQuotes(repaired);\n\n // Remove trailing commas\n repaired = repaired.replace(/,(\\s*[}\\]])/g, '$1');\n\n // Add missing quotes around unquoted keys\n repaired = repaired.replace(/([{,]\\s*)([a-zA-Z_][a-zA-Z0-9_]*)\\s*:/g, '$1\"$2\":');\n\n // Try parsing the repaired JSON\n return JSON.parse(repaired);\n } catch {\n // If all repair attempts fail, return null\n return null;\n }\n}\n\n/**\n * Safely fix single quotes in JSON without breaking apostrophes in strings\n */\nfunction fixSingleQuotes(input: string): string {\n let result = '';\n let inString = false;\n let stringDelimiter = '';\n let escaped = false;\n\n for (let i = 0; i < input.length; i++) {\n const char = input[i];\n const prevChar = i > 0 ? input[i - 1] : '';\n\n if (escaped) {\n result += char;\n escaped = false;\n continue;\n }\n\n if (char === '\\\\') {\n escaped = true;\n result += char;\n continue;\n }\n\n if (!inString) {\n if (char === '\"') {\n inString = true;\n stringDelimiter = '\"';\n result += char;\n } else if (char === \"'\") {\n // Replace single quote with double quote for JSON\n inString = true;\n stringDelimiter = \"'\";\n result += '\"';\n } else {\n result += char;\n }\n } else {\n // We're inside a string\n if (char === stringDelimiter) {\n // End of string\n inString = false;\n result += '\"';\n stringDelimiter = '';\n } else if (char === '\"' && stringDelimiter === \"'\") {\n // Escape double quotes inside what was a single-quoted string\n result += '\\\\\"';\n } else {\n result += char;\n }\n }\n }\n\n return result;\n}\n\n/**\n * Validates if a string is valid JSON\n */\nexport function isValidJSON(input: string): boolean {\n try {\n JSON.parse(input);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Safely stringify an object, handling circular references\n */\nexport function safeStringify(obj: unknown, space?: string | number): string {\n const seen = new WeakSet();\n return JSON.stringify(\n obj,\n (_, value) => {\n if (typeof value === 'object' && value !== null) {\n if (seen.has(value)) {\n return '[Circular]';\n }\n seen.add(value);\n }\n return value;\n },\n space\n );\n}","import Ajv, { type ErrorObject, type ValidateFunction } from 'ajv';\n\ntype JsonSchema = Record<string, unknown>;\n\ntype ZodSafeParseResult = {\n success: boolean;\n error?: { issues: Array<{ path: Array<string | number>; message: string }> };\n};\n\ntype ZodSchemaLike = {\n safeParse: (data: unknown) => ZodSafeParseResult;\n};\n\nexport type SchemaValidationResult = {\n valid: boolean;\n errors: string[];\n};\n\nexport type SchemaValidator = {\n validate: (data: unknown) => SchemaValidationResult;\n};\n\nconst ajv = new Ajv({ allErrors: true, strict: false });\n\n/**\n * Determines whether the provided schema is a Zod schema.\n * @param schema - Candidate schema to inspect.\n * @returns True when the schema exposes a Zod-compatible safeParse API.\n */\nfunction isZodSchema(schema: unknown): schema is ZodSchemaLike {\n return Boolean(schema)\n && typeof (schema as ZodSchemaLike).safeParse === 'function';\n}\n\n/**\n * Formats Ajv validation errors into readable strings.\n * @param errors - Ajv error objects.\n * @returns Array of human-friendly error messages.\n */\nfunction formatAjvErrors(errors?: ErrorObject[] | null): string[] {\n if (!errors || errors.length === 0) {\n return [];\n }\n\n return errors.map((error) => {\n const instancePath = error.instancePath || '/';\n const message = error.message ?? 'Validation error';\n return `${instancePath}: ${message}`;\n });\n}\n\n/**\n * Creates a validator backed by Ajv for JSON Schema validation.\n * @param schema - JSON Schema to compile.\n * @returns Compiled schema validator.\n */\nfunction createAjvValidator(schema: JsonSchema): SchemaValidator {\n let compiled: ValidateFunction<unknown>;\n compiled = ajv.compile(schema);\n\n return {\n validate: (data: unknown) => {\n const valid = Boolean(compiled(data));\n const errors = formatAjvErrors(compiled.errors);\n return { valid, errors };\n },\n };\n}\n\n/**\n * Creates a validator backed by Zod when a Zod schema is supplied.\n * @param schema - Zod schema with safeParse implementation.\n * @returns Compiled schema validator.\n */\nfunction createZodValidator(schema: ZodSchemaLike): SchemaValidator {\n return {\n validate: (data: unknown) => {\n const result = schema.safeParse(data);\n if (result.success) {\n return { valid: true, errors: [] };\n }\n\n const issues = result.error?.issues ?? [];\n const errors = issues.map((issue) => {\n const path = issue.path?.length ? issue.path.join('.') : '(root)';\n return `${path}: ${issue.message}`;\n });\n\n return { valid: false, errors };\n },\n };\n}\n\n/**\n * Creates a structured output validator using Ajv for JSON Schema and\n * falling back to Zod when a Zod schema is provided.\n * @param schema - JSON Schema object or Zod schema to validate against.\n * @returns Schema validator that reports validity and detailed errors.\n */\nexport function createStructuredOutputValidator(\n schema: JsonSchema | ZodSchemaLike,\n): SchemaValidator {\n if (isZodSchema(schema)) {\n return createZodValidator(schema);\n }\n\n try {\n return createAjvValidator(schema);\n } catch (error) {\n console.warn('Failed to compile structured output schema:', error);\n return {\n validate: () => ({\n valid: false,\n errors: ['Schema compilation failed'],\n }),\n };\n }\n}\n","/**\n * Utilities for image handling and validation\n */\n\n/**\n * Generates a UUID v4 string for identifying stored images.\n * @returns UUID v4 string.\n */\nexport function generateImageId(): string {\n // Simple UUID v4 generation\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n const r = Math.random() * 16 | 0;\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n}\n\n/**\n * Determines whether the provided string looks like base64-encoded image data.\n * @param data - The candidate image string.\n * @returns True if the string appears to contain base64 image data.\n */\nexport function isBase64Image(data: string): boolean {\n // Check for data URL format\n if (data.startsWith('data:image/')) {\n return true;\n }\n\n // Check if it looks like base64 (simplified check)\n const base64Regex = /^[A-Za-z0-9+/]+=*$/;\n // Only check first part to avoid performance issues with large strings\n const sample = data.substring(0, 100);\n return base64Regex.test(sample);\n}\n\n/**\n * Validates that the supplied value conforms to the expected image content shape.\n * @param content - The value to validate.\n * @returns True when the value represents image content.\n */\nexport function isValidImageContent(content: unknown): boolean {\n if (!content || typeof content !== 'object') {\n return false;\n }\n\n const obj = content as any;\n if (obj.type !== 'image') {\n return false;\n }\n\n if (!obj.image) {\n return false;\n }\n\n // Check if it's a URL or string (base64)\n if (typeof obj.image === 'string') {\n return true;\n }\n\n // Check if it's a URL object\n if (obj.image instanceof URL) {\n return true;\n }\n\n // Check if it looks like a URL object (has href property)\n if (typeof obj.image === 'object' && typeof obj.image.href === 'string') {\n return true;\n }\n\n return false;\n}\n\n/**\n * Extracts image content objects from mixed user message content.\n * @param content - User message content (string or structured array).\n * @returns Array of image content entries.\n */\nexport function extractImagesFromContent(\n content: string | Array<{ type: string; text?: string; image?: URL | string }>\n): Array<{ type: 'image'; image: URL | string }> {\n if (typeof content === 'string') {\n return [];\n }\n\n return content.filter(item => item.type === 'image' && item.image !== undefined) as Array<{ type: 'image'; image: URL | string }>;\n}\n\n/**\n * Detects whether message content includes at least one image.\n * @param content - User message content to scan.\n * @returns True when one or more images are present.\n */\nexport function hasImages(\n content: string | Array<{ type: string; text?: string; image?: URL | string }>\n): boolean {\n if (typeof content === 'string') {\n return false;\n }\n\n return content.some(item => item.type === 'image');\n}\n\n/**\n * Sanitizes an image identifier so it can be safely used in file paths.\n * @param id - The unsanitized image identifier.\n * @returns Safe identifier containing only alphanumeric, dash, and underscore characters.\n */\nexport function sanitizeImageId(id: string): string {\n // Remove any path separators and special characters\n return id.replace(/[^a-zA-Z0-9-_]/g, '');\n}\n","import { generateText, LanguageModel } from 'ai';\nimport { z } from 'zod';\nimport type { CoreTool } from 'ai';\nimport type { ImageStorageAdapter } from '../image-storage/types';\n\n// Tool parameter schema\nconst visionToolSchema = z.object({\n prompt: z.string().describe('The prompt or question about the images'),\n imageIds: z.array(z.string()).describe('Array of image IDs to analyze')\n});\n\n/**\n * Creates a CoreTool that routes image analysis to a vision-capable model.\n * @param visionModel - Vision model identifier or LanguageModel instance.\n * @param loadImage - Function that retrieves stored image payloads by ID.\n * @returns Tool definition suitable for agent registration.\n */\nexport function createVisionTool(\n visionModel: string | LanguageModel,\n loadImage: ImageStorageAdapter['loadImage']\n): CoreTool {\n return {\n description: 'Analyze images using vision capabilities',\n parameters: visionToolSchema,\n execute: async (input) => {\n const { prompt, imageIds } = visionToolSchema.parse(input);\n try {\n // Load all images from storage\n const imagePromises = imageIds.map(id => loadImage(id));\n const images = await Promise.all(imagePromises);\n\n // Convert images to the format expected by the vision model\n const messages = [\n {\n role: 'user' as const,\n content: [\n { type: 'text' as const, text: prompt },\n ...images.map(image => ({\n type: 'image' as const,\n image: image\n }))\n ]\n }\n ];\n\n // Call the vision model\n const response = await generateText({\n model: visionModel,\n messages,\n maxTokens: 1024\n });\n\n return {\n analysis: response.text,\n imageIds: imageIds,\n success: true\n };\n } catch (error) {\n console.error('Vision tool error:', error);\n return {\n analysis: `Failed to analyze images: ${error instanceof Error ? error.message : 'Unknown error'}`,\n imageIds: imageIds,\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error'\n };\n }\n }\n };\n}\n\n/**\n * Exported alias to align with tool naming conventions in index exports.\n */\nexport const VisionTool = createVisionTool;\n\n/**\n * Stable tool name for the vision analysis tool.\n */\nexport const VISION_TOOL_NAME = 'analyze_image';\nexport const VisionToolName = VISION_TOOL_NAME;\n\n/**\n * Creates a named vision tool mapping for easy registration.\n * @param visionModel - Vision model identifier or LanguageModel instance.\n * @param loadImage - Function that retrieves stored image payloads by ID.\n * @returns Object keyed by the vision tool name containing the tool definition.\n */\nexport function createVisionToolWithName(\n visionModel: string | LanguageModel,\n loadImage: ImageStorageAdapter['loadImage']\n) {\n return {\n [VISION_TOOL_NAME]: createVisionTool(visionModel, loadImage)\n };\n}\n","export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n","import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n","import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n","import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n","export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _ZodEnum_cache, _ZodNativeEnum_cache;\nimport { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n constructor() {\n super(...arguments);\n _ZodEnum_cache.set(this, void 0);\n }\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodEnum_cache, new Set(this._def.values), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\").has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\n_ZodEnum_cache = new WeakMap();\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n constructor() {\n super(...arguments);\n _ZodNativeEnum_cache.set(this, void 0);\n }\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodNativeEnum_cache, new Set(util.getValidEnumValues(this._def.values)), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\").has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\n_ZodNativeEnum_cache = new WeakMap();\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return base;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return base;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n",null,null,null,"export const ignoreOverride = Symbol(\"Let zodToJsonSchema decide on which parser to use\");\nexport const jsonDescription = (jsonSchema, def) => {\n if (def.description) {\n try {\n return {\n ...jsonSchema,\n ...JSON.parse(def.description),\n };\n }\n catch { }\n }\n return jsonSchema;\n};\nexport const defaultOptions = {\n name: undefined,\n $refStrategy: \"root\",\n basePath: [\"#\"],\n effectStrategy: \"input\",\n pipeStrategy: \"all\",\n dateStrategy: \"format:date-time\",\n mapStrategy: \"entries\",\n removeAdditionalStrategy: \"passthrough\",\n allowedAdditionalProperties: true,\n rejectedAdditionalProperties: false,\n definitionPath: \"definitions\",\n target: \"jsonSchema7\",\n strictUnions: false,\n definitions: {},\n errorMessages: false,\n markdownDescription: false,\n patternStrategy: \"escape\",\n applyRegexFlags: false,\n emailStrategy: \"format:email\",\n base64Strategy: \"contentEncoding:base64\",\n nameStrategy: \"ref\",\n openAiAnyTypeName: \"OpenAiAnyType\"\n};\nexport const getDefaultOptions = (options) => (typeof options === \"string\"\n ? {\n ...defaultOptions,\n name: options,\n }\n : {\n ...defaultOptions,\n ...options,\n });\n","import { getDefaultOptions } from \"./Options.js\";\nexport const getRefs = (options) => {\n const _options = getDefaultOptions(options);\n const currentPath = _options.name !== undefined\n ? [..._options.basePath, _options.definitionPath, _options.name]\n : _options.basePath;\n return {\n ..._options,\n flags: { hasReferencedOpenAiAnyType: false },\n currentPath: currentPath,\n propertyPath: undefined,\n seen: new Map(Object.entries(_options.definitions).map(([name, def]) => [\n def._def,\n {\n def: def._def,\n path: [..._options.basePath, _options.definitionPath, name],\n // Resolution of references will be forced even though seen, so it's ok that the schema is undefined here for now.\n jsonSchema: undefined,\n },\n ])),\n };\n};\n","export function addErrorMessage(res, key, errorMessage, refs) {\n if (!refs?.errorMessages)\n return;\n if (errorMessage) {\n res.errorMessage = {\n ...res.errorMessage,\n [key]: errorMessage,\n };\n }\n}\nexport function setResponseValueAndErrors(res, key, value, errorMessage, refs) {\n res[key] = value;\n addErrorMessage(res, key, errorMessage, refs);\n}\n","export const getRelativePath = (pathA, pathB) => {\n let i = 0;\n for (; i < pathA.length && i < pathB.length; i++) {\n if (pathA[i] !== pathB[i])\n break;\n }\n return [(pathA.length - i).toString(), ...pathB.slice(i)].join(\"/\");\n};\n","import { ZodFirstPartyTypeKind } from \"zod/v3\";\nimport { parseAnyDef } from \"./parsers/any.js\";\nimport { parseArrayDef } from \"./parsers/array.js\";\nimport { parseBigintDef } from \"./parsers/bigint.js\";\nimport { parseBooleanDef } from \"./parsers/boolean.js\";\nimport { parseBrandedDef } from \"./parsers/branded.js\";\nimport { parseCatchDef } from \"./parsers/catch.js\";\nimport { parseDateDef } from \"./parsers/date.js\";\nimport { parseDefaultDef } from \"./parsers/default.js\";\nimport { parseEffectsDef } from \"./parsers/effects.js\";\nimport { parseEnumDef } from \"./parsers/enum.js\";\nimport { parseIntersectionDef } from \"./parsers/intersection.js\";\nimport { parseLiteralDef } from \"./parsers/literal.js\";\nimport { parseMapDef } from \"./parsers/map.js\";\nimport { parseNativeEnumDef } from \"./parsers/nativeEnum.js\";\nimport { parseNeverDef } from \"./parsers/never.js\";\nimport { parseNullDef } from \"./parsers/null.js\";\nimport { parseNullableDef } from \"./parsers/nullable.js\";\nimport { parseNumberDef } from \"./parsers/number.js\";\nimport { parseObjectDef } from \"./parsers/object.js\";\nimport { parseOptionalDef } from \"./parsers/optional.js\";\nimport { parsePipelineDef } from \"./parsers/pipeline.js\";\nimport { parsePromiseDef } from \"./parsers/promise.js\";\nimport { parseRecordDef } from \"./parsers/record.js\";\nimport { parseSetDef } from \"./parsers/set.js\";\nimport { parseStringDef } from \"./parsers/string.js\";\nimport { parseTupleDef } from \"./parsers/tuple.js\";\nimport { parseUndefinedDef } from \"./parsers/undefined.js\";\nimport { parseUnionDef } from \"./parsers/union.js\";\nimport { parseUnknownDef } from \"./parsers/unknown.js\";\nimport { parseReadonlyDef } from \"./parsers/readonly.js\";\nexport const selectParser = (def, typeName, refs) => {\n switch (typeName) {\n case ZodFirstPartyTypeKind.ZodString:\n return parseStringDef(def, refs);\n case ZodFirstPartyTypeKind.ZodNumber:\n return parseNumberDef(def, refs);\n case ZodFirstPartyTypeKind.ZodObject:\n return parseObjectDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBigInt:\n return parseBigintDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBoolean:\n return parseBooleanDef();\n case ZodFirstPartyTypeKind.ZodDate:\n return parseDateDef(def, refs);\n case ZodFirstPartyTypeKind.ZodUndefined:\n return parseUndefinedDef(refs);\n case ZodFirstPartyTypeKind.ZodNull:\n return parseNullDef(refs);\n case ZodFirstPartyTypeKind.ZodArray:\n return parseArrayDef(def, refs);\n case ZodFirstPartyTypeKind.ZodUnion:\n case ZodFirstPartyTypeKind.ZodDiscriminatedUnion:\n return parseUnionDef(def, refs);\n case ZodFirstPartyTypeKind.ZodIntersection:\n return parseIntersectionDef(def, refs);\n case ZodFirstPartyTypeKind.ZodTuple:\n return parseTupleDef(def, refs);\n case ZodFirstPartyTypeKind.ZodRecord:\n return parseRecordDef(def, refs);\n case ZodFirstPartyTypeKind.ZodLiteral:\n return parseLiteralDef(def, refs);\n case ZodFirstPartyTypeKind.ZodEnum:\n return parseEnumDef(def);\n case ZodFirstPartyTypeKind.ZodNativeEnum:\n return parseNativeEnumDef(def);\n case ZodFirstPartyTypeKind.ZodNullable:\n return parseNullableDef(def, refs);\n case ZodFirstPartyTypeKind.ZodOptional:\n return parseOptionalDef(def, refs);\n case ZodFirstPartyTypeKind.ZodMap:\n return parseMapDef(def, refs);\n case ZodFirstPartyTypeKind.ZodSet:\n return parseSetDef(def, refs);\n case ZodFirstPartyTypeKind.ZodLazy:\n return () => def.getter()._def;\n case ZodFirstPartyTypeKind.ZodPromise:\n return parsePromiseDef(def, refs);\n case ZodFirstPartyTypeKind.ZodNaN:\n case ZodFirstPartyTypeKind.ZodNever:\n return parseNeverDef(refs);\n case ZodFirstPartyTypeKind.ZodEffects:\n return parseEffectsDef(def, refs);\n case ZodFirstPartyTypeKind.ZodAny:\n return parseAnyDef(refs);\n case ZodFirstPartyTypeKind.ZodUnknown:\n return parseUnknownDef(refs);\n case ZodFirstPartyTypeKind.ZodDefault:\n return parseDefaultDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBranded:\n return parseBrandedDef(def, refs);\n case ZodFirstPartyTypeKind.ZodReadonly:\n return parseReadonlyDef(def, refs);\n case ZodFirstPartyTypeKind.ZodCatch:\n return parseCatchDef(def, refs);\n case ZodFirstPartyTypeKind.ZodPipeline:\n return parsePipelineDef(def, refs);\n case ZodFirstPartyTypeKind.ZodFunction:\n case ZodFirstPartyTypeKind.ZodVoid:\n case ZodFirstPartyTypeKind.ZodSymbol:\n return undefined;\n default:\n return ((_) => undefined)(typeName);\n }\n};\n","import { getRelativePath } from \"../getRelativePath.js\";\nexport function parseAnyDef(refs) {\n if (refs.target !== \"openAi\") {\n return {};\n }\n const anyDefinitionPath = [\n ...refs.basePath,\n refs.definitionPath,\n refs.openAiAnyTypeName,\n ];\n refs.flags.hasReferencedOpenAiAnyType = true;\n return {\n $ref: refs.$refStrategy === \"relative\"\n ? getRelativePath(anyDefinitionPath, refs.currentPath)\n : anyDefinitionPath.join(\"/\"),\n };\n}\n","import { ZodFirstPartyTypeKind } from \"zod/v3\";\nimport { setResponseValueAndErrors } from \"../errorMessages.js\";\nimport { parseDef } from \"../parseDef.js\";\nexport function parseArrayDef(def, refs) {\n const res = {\n type: \"array\",\n };\n if (def.type?._def &&\n def.type?._def?.typeName !== ZodFirstPartyTypeKind.ZodAny) {\n res.items = parseDef(def.type._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\"],\n });\n }\n if (def.minLength) {\n setResponseValueAndErrors(res, \"minItems\", def.minLength.value, def.minLength.message, refs);\n }\n if (def.maxLength) {\n setResponseValueAndErrors(res, \"maxItems\", def.maxLength.value, def.maxLength.message, refs);\n }\n if (def.exactLength) {\n setResponseValueAndErrors(res, \"minItems\", def.exactLength.value, def.exactLength.message, refs);\n setResponseValueAndErrors(res, \"maxItems\", def.exactLength.value, def.exactLength.message, refs);\n }\n return res;\n}\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nexport function parseBigintDef(def, refs) {\n const res = {\n type: \"integer\",\n format: \"int64\",\n };\n if (!def.checks)\n return res;\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n }\n else {\n setResponseValueAndErrors(res, \"exclusiveMinimum\", check.value, check.message, refs);\n }\n }\n else {\n if (!check.inclusive) {\n res.exclusiveMinimum = true;\n }\n setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n }\n break;\n case \"max\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n }\n else {\n setResponseValueAndErrors(res, \"exclusiveMaximum\", check.value, check.message, refs);\n }\n }\n else {\n if (!check.inclusive) {\n res.exclusiveMaximum = true;\n }\n setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n }\n break;\n case \"multipleOf\":\n setResponseValueAndErrors(res, \"multipleOf\", check.value, check.message, refs);\n break;\n }\n }\n return res;\n}\n","export function parseBooleanDef() {\n return {\n type: \"boolean\",\n };\n}\n","import { parseDef } from \"../parseDef.js\";\nexport function parseBrandedDef(_def, refs) {\n return parseDef(_def.type._def, refs);\n}\n","import { parseDef } from \"../parseDef.js\";\nexport const parseCatchDef = (def, refs) => {\n return parseDef(def.innerType._def, refs);\n};\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nexport function parseDateDef(def, refs, overrideDateStrategy) {\n const strategy = overrideDateStrategy ?? refs.dateStrategy;\n if (Array.isArray(strategy)) {\n return {\n anyOf: strategy.map((item, i) => parseDateDef(def, refs, item)),\n };\n }\n switch (strategy) {\n case \"string\":\n case \"format:date-time\":\n return {\n type: \"string\",\n format: \"date-time\",\n };\n case \"format:date\":\n return {\n type: \"string\",\n format: \"date\",\n };\n case \"integer\":\n return integerDateParser(def, refs);\n }\n}\nconst integerDateParser = (def, refs) => {\n const res = {\n type: \"integer\",\n format: \"unix-time\",\n };\n if (refs.target === \"openApi3\") {\n return res;\n }\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n setResponseValueAndErrors(res, \"minimum\", check.value, // This is in milliseconds\n check.message, refs);\n break;\n case \"max\":\n setResponseValueAndErrors(res, \"maximum\", check.value, // This is in milliseconds\n check.message, refs);\n break;\n }\n }\n return res;\n};\n","import { parseDef } from \"../parseDef.js\";\nexport function parseDefaultDef(_def, refs) {\n return {\n ...parseDef(_def.innerType._def, refs),\n default: _def.defaultValue(),\n };\n}\n","import { parseDef } from \"../parseDef.js\";\nimport { parseAnyDef } from \"./any.js\";\nexport function parseEffectsDef(_def, refs) {\n return refs.effectStrategy === \"input\"\n ? parseDef(_def.schema._def, refs)\n : parseAnyDef(refs);\n}\n","export function parseEnumDef(def) {\n return {\n type: \"string\",\n enum: Array.from(def.values),\n };\n}\n","import { parseDef } from \"../parseDef.js\";\nconst isJsonSchema7AllOfType = (type) => {\n if (\"type\" in type && type.type === \"string\")\n return false;\n return \"allOf\" in type;\n};\nexport function parseIntersectionDef(def, refs) {\n const allOf = [\n parseDef(def.left._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", \"0\"],\n }),\n parseDef(def.right._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", \"1\"],\n }),\n ].filter((x) => !!x);\n let unevaluatedProperties = refs.target === \"jsonSchema2019-09\"\n ? { unevaluatedProperties: false }\n : undefined;\n const mergedAllOf = [];\n // If either of the schemas is an allOf, merge them into a single allOf\n allOf.forEach((schema) => {\n if (isJsonSchema7AllOfType(schema)) {\n mergedAllOf.push(...schema.allOf);\n if (schema.unevaluatedProperties === undefined) {\n // If one of the schemas has no unevaluatedProperties set,\n // the merged schema should also have no unevaluatedProperties set\n unevaluatedProperties = undefined;\n }\n }\n else {\n let nestedSchema = schema;\n if (\"additionalProperties\" in schema &&\n schema.additionalProperties === false) {\n const { additionalProperties, ...rest } = schema;\n nestedSchema = rest;\n }\n else {\n // As soon as one of the schemas has additionalProperties set not to false, we allow unevaluatedProperties\n unevaluatedProperties = undefined;\n }\n mergedAllOf.push(nestedSchema);\n }\n });\n return mergedAllOf.length\n ? {\n allOf: mergedAllOf,\n ...unevaluatedProperties,\n }\n : undefined;\n}\n","export function parseLiteralDef(def, refs) {\n const parsedType = typeof def.value;\n if (parsedType !== \"bigint\" &&\n parsedType !== \"number\" &&\n parsedType !== \"boolean\" &&\n parsedType !== \"string\") {\n return {\n type: Array.isArray(def.value) ? \"array\" : \"object\",\n };\n }\n if (refs.target === \"openApi3\") {\n return {\n type: parsedType === \"bigint\" ? \"integer\" : parsedType,\n enum: [def.value],\n };\n }\n return {\n type: parsedType === \"bigint\" ? \"integer\" : parsedType,\n const: def.value,\n };\n}\n","import { ZodFirstPartyTypeKind, } from \"zod/v3\";\nimport { parseDef } from \"../parseDef.js\";\nimport { parseStringDef } from \"./string.js\";\nimport { parseBrandedDef } from \"./branded.js\";\nimport { parseAnyDef } from \"./any.js\";\nexport function parseRecordDef(def, refs) {\n if (refs.target === \"openAi\") {\n console.warn(\"Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead.\");\n }\n if (refs.target === \"openApi3\" &&\n def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n return {\n type: \"object\",\n required: def.keyType._def.values,\n properties: def.keyType._def.values.reduce((acc, key) => ({\n ...acc,\n [key]: parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"properties\", key],\n }) ?? parseAnyDef(refs),\n }), {}),\n additionalProperties: refs.rejectedAdditionalProperties,\n };\n }\n const schema = {\n type: \"object\",\n additionalProperties: parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"additionalProperties\"],\n }) ?? refs.allowedAdditionalProperties,\n };\n if (refs.target === \"openApi3\") {\n return schema;\n }\n if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n def.keyType._def.checks?.length) {\n const { type, ...keyType } = parseStringDef(def.keyType._def, refs);\n return {\n ...schema,\n propertyNames: keyType,\n };\n }\n else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n return {\n ...schema,\n propertyNames: {\n enum: def.keyType._def.values,\n },\n };\n }\n else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodBranded &&\n def.keyType._def.type._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n def.keyType._def.type._def.checks?.length) {\n const { type, ...keyType } = parseBrandedDef(def.keyType._def, refs);\n return {\n ...schema,\n propertyNames: keyType,\n };\n }\n return schema;\n}\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nlet emojiRegex = undefined;\n/**\n * Generated from the regular expressions found here as of 2024-05-22:\n * https://github.com/colinhacks/zod/blob/master/src/types.ts.\n *\n * Expressions with /i flag have been changed accordingly.\n */\nexport const zodPatterns = {\n /**\n * `c` was changed to `[cC]` to replicate /i flag\n */\n cuid: /^[cC][^\\s-]{8,}$/,\n cuid2: /^[0-9a-z]+$/,\n ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/,\n /**\n * `a-z` was added to replicate /i flag\n */\n email: /^(?!\\.)(?!.*\\.\\.)([a-zA-Z0-9_'+\\-\\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+[a-zA-Z]{2,}$/,\n /**\n * Constructed a valid Unicode RegExp\n *\n * Lazily instantiate since this type of regex isn't supported\n * in all envs (e.g. React Native).\n *\n * See:\n * https://github.com/colinhacks/zod/issues/2433\n * Fix in Zod:\n * https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b\n */\n emoji: () => {\n if (emojiRegex === undefined) {\n emojiRegex = RegExp(\"^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$\", \"u\");\n }\n return emojiRegex;\n },\n /**\n * Unused\n */\n uuid: /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/,\n /**\n * Unused\n */\n ipv4: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,\n ipv4Cidr: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/,\n /**\n * Unused\n */\n ipv6: /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,\n ipv6Cidr: /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,\n base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,\n base64url: /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,\n nanoid: /^[a-zA-Z0-9_-]{21}$/,\n jwt: /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/,\n};\nexport function parseStringDef(def, refs) {\n const res = {\n type: \"string\",\n };\n if (def.checks) {\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n setResponseValueAndErrors(res, \"minLength\", typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"max\":\n setResponseValueAndErrors(res, \"maxLength\", typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"email\":\n switch (refs.emailStrategy) {\n case \"format:email\":\n addFormat(res, \"email\", check.message, refs);\n break;\n case \"format:idn-email\":\n addFormat(res, \"idn-email\", check.message, refs);\n break;\n case \"pattern:zod\":\n addPattern(res, zodPatterns.email, check.message, refs);\n break;\n }\n break;\n case \"url\":\n addFormat(res, \"uri\", check.message, refs);\n break;\n case \"uuid\":\n addFormat(res, \"uuid\", check.message, refs);\n break;\n case \"regex\":\n addPattern(res, check.regex, check.message, refs);\n break;\n case \"cuid\":\n addPattern(res, zodPatterns.cuid, check.message, refs);\n break;\n case \"cuid2\":\n addPattern(res, zodPatterns.cuid2, check.message, refs);\n break;\n case \"startsWith\":\n addPattern(res, RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`), check.message, refs);\n break;\n case \"endsWith\":\n addPattern(res, RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`), check.message, refs);\n break;\n case \"datetime\":\n addFormat(res, \"date-time\", check.message, refs);\n break;\n case \"date\":\n addFormat(res, \"date\", check.message, refs);\n break;\n case \"time\":\n addFormat(res, \"time\", check.message, refs);\n break;\n case \"duration\":\n addFormat(res, \"duration\", check.message, refs);\n break;\n case \"length\":\n setResponseValueAndErrors(res, \"minLength\", typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value, check.message, refs);\n setResponseValueAndErrors(res, \"maxLength\", typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"includes\": {\n addPattern(res, RegExp(escapeLiteralCheckValue(check.value, refs)), check.message, refs);\n break;\n }\n case \"ip\": {\n if (check.version !== \"v6\") {\n addFormat(res, \"ipv4\", check.message, refs);\n }\n if (check.version !== \"v4\") {\n addFormat(res, \"ipv6\", check.message, refs);\n }\n break;\n }\n case \"base64url\":\n addPattern(res, zodPatterns.base64url, check.message, refs);\n break;\n case \"jwt\":\n addPattern(res, zodPatterns.jwt, check.message, refs);\n break;\n case \"cidr\": {\n if (check.version !== \"v6\") {\n addPattern(res, zodPatterns.ipv4Cidr, check.message, refs);\n }\n if (check.version !== \"v4\") {\n addPattern(res, zodPatterns.ipv6Cidr, check.message, refs);\n }\n break;\n }\n case \"emoji\":\n addPattern(res, zodPatterns.emoji(), check.message, refs);\n break;\n case \"ulid\": {\n addPattern(res, zodPatterns.ulid, check.message, refs);\n break;\n }\n case \"base64\": {\n switch (refs.base64Strategy) {\n case \"format:binary\": {\n addFormat(res, \"binary\", check.message, refs);\n break;\n }\n case \"contentEncoding:base64\": {\n setResponseValueAndErrors(res, \"contentEncoding\", \"base64\", check.message, refs);\n break;\n }\n case \"pattern:zod\": {\n addPattern(res, zodPatterns.base64, check.message, refs);\n break;\n }\n }\n break;\n }\n case \"nanoid\": {\n addPattern(res, zodPatterns.nanoid, check.message, refs);\n }\n case \"toLowerCase\":\n case \"toUpperCase\":\n case \"trim\":\n break;\n default:\n ((_) => { })(check);\n }\n }\n }\n return res;\n}\nfunction escapeLiteralCheckValue(literal, refs) {\n return refs.patternStrategy === \"escape\"\n ? escapeNonAlphaNumeric(literal)\n : literal;\n}\nconst ALPHA_NUMERIC = new Set(\"ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789\");\nfunction escapeNonAlphaNumeric(source) {\n let result = \"\";\n for (let i = 0; i < source.length; i++) {\n if (!ALPHA_NUMERIC.has(source[i])) {\n result += \"\\\\\";\n }\n result += source[i];\n }\n return result;\n}\n// Adds a \"format\" keyword to the schema. If a format exists, both formats will be joined in an allOf-node, along with subsequent ones.\nfunction addFormat(schema, value, message, refs) {\n if (schema.format || schema.anyOf?.some((x) => x.format)) {\n if (!schema.anyOf) {\n schema.anyOf = [];\n }\n if (schema.format) {\n schema.anyOf.push({\n format: schema.format,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { format: schema.errorMessage.format },\n }),\n });\n delete schema.format;\n if (schema.errorMessage) {\n delete schema.errorMessage.format;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n schema.anyOf.push({\n format: value,\n ...(message &&\n refs.errorMessages && { errorMessage: { format: message } }),\n });\n }\n else {\n setResponseValueAndErrors(schema, \"format\", value, message, refs);\n }\n}\n// Adds a \"pattern\" keyword to the schema. If a pattern exists, both patterns will be joined in an allOf-node, along with subsequent ones.\nfunction addPattern(schema, regex, message, refs) {\n if (schema.pattern || schema.allOf?.some((x) => x.pattern)) {\n if (!schema.allOf) {\n schema.allOf = [];\n }\n if (schema.pattern) {\n schema.allOf.push({\n pattern: schema.pattern,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { pattern: schema.errorMessage.pattern },\n }),\n });\n delete schema.pattern;\n if (schema.errorMessage) {\n delete schema.errorMessage.pattern;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n schema.allOf.push({\n pattern: stringifyRegExpWithFlags(regex, refs),\n ...(message &&\n refs.errorMessages && { errorMessage: { pattern: message } }),\n });\n }\n else {\n setResponseValueAndErrors(schema, \"pattern\", stringifyRegExpWithFlags(regex, refs), message, refs);\n }\n}\n// Mutate z.string.regex() in a best attempt to accommodate for regex flags when applyRegexFlags is true\nfunction stringifyRegExpWithFlags(regex, refs) {\n if (!refs.applyRegexFlags || !regex.flags) {\n return regex.source;\n }\n // Currently handled flags\n const flags = {\n i: regex.flags.includes(\"i\"),\n m: regex.flags.includes(\"m\"),\n s: regex.flags.includes(\"s\"), // `.` matches newlines\n };\n // The general principle here is to step through each character, one at a time, applying mutations as flags require. We keep track when the current character is escaped, and when it's inside a group /like [this]/ or (also) a range like /[a-z]/. The following is fairly brittle imperative code; edit at your peril!\n const source = flags.i ? regex.source.toLowerCase() : regex.source;\n let pattern = \"\";\n let isEscaped = false;\n let inCharGroup = false;\n let inCharRange = false;\n for (let i = 0; i < source.length; i++) {\n if (isEscaped) {\n pattern += source[i];\n isEscaped = false;\n continue;\n }\n if (flags.i) {\n if (inCharGroup) {\n if (source[i].match(/[a-z]/)) {\n if (inCharRange) {\n pattern += source[i];\n pattern += `${source[i - 2]}-${source[i]}`.toUpperCase();\n inCharRange = false;\n }\n else if (source[i + 1] === \"-\" && source[i + 2]?.match(/[a-z]/)) {\n pattern += source[i];\n inCharRange = true;\n }\n else {\n pattern += `${source[i]}${source[i].toUpperCase()}`;\n }\n continue;\n }\n }\n else if (source[i].match(/[a-z]/)) {\n pattern += `[${source[i]}${source[i].toUpperCase()}]`;\n continue;\n }\n }\n if (flags.m) {\n if (source[i] === \"^\") {\n pattern += `(^|(?<=[\\r\\n]))`;\n continue;\n }\n else if (source[i] === \"$\") {\n pattern += `($|(?=[\\r\\n]))`;\n continue;\n }\n }\n if (flags.s && source[i] === \".\") {\n pattern += inCharGroup ? `${source[i]}\\r\\n` : `[${source[i]}\\r\\n]`;\n continue;\n }\n pattern += source[i];\n if (source[i] === \"\\\\\") {\n isEscaped = true;\n }\n else if (inCharGroup && source[i] === \"]\") {\n inCharGroup = false;\n }\n else if (!inCharGroup && source[i] === \"[\") {\n inCharGroup = true;\n }\n }\n try {\n new RegExp(pattern);\n }\n catch {\n console.warn(`Could not convert regex pattern at ${refs.currentPath.join(\"/\")} to a flag-independent form! Falling back to the flag-ignorant source`);\n return regex.source;\n }\n return pattern;\n}\n","import { parseDef } from \"../parseDef.js\";\nimport { parseRecordDef } from \"./record.js\";\nimport { parseAnyDef } from \"./any.js\";\nexport function parseMapDef(def, refs) {\n if (refs.mapStrategy === \"record\") {\n return parseRecordDef(def, refs);\n }\n const keys = parseDef(def.keyType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", \"items\", \"0\"],\n }) || parseAnyDef(refs);\n const values = parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", \"items\", \"1\"],\n }) || parseAnyDef(refs);\n return {\n type: \"array\",\n maxItems: 125,\n items: {\n type: \"array\",\n items: [keys, values],\n minItems: 2,\n maxItems: 2,\n },\n };\n}\n","export function parseNativeEnumDef(def) {\n const object = def.values;\n const actualKeys = Object.keys(def.values).filter((key) => {\n return typeof object[object[key]] !== \"number\";\n });\n const actualValues = actualKeys.map((key) => object[key]);\n const parsedTypes = Array.from(new Set(actualValues.map((values) => typeof values)));\n return {\n type: parsedTypes.length === 1\n ? parsedTypes[0] === \"string\"\n ? \"string\"\n : \"number\"\n : [\"string\", \"number\"],\n enum: actualValues,\n };\n}\n","import { parseAnyDef } from \"./any.js\";\nexport function parseNeverDef(refs) {\n return refs.target === \"openAi\"\n ? undefined\n : {\n not: parseAnyDef({\n ...refs,\n currentPath: [...refs.currentPath, \"not\"],\n }),\n };\n}\n","export function parseNullDef(refs) {\n return refs.target === \"openApi3\"\n ? {\n enum: [\"null\"],\n nullable: true,\n }\n : {\n type: \"null\",\n };\n}\n","import { parseDef } from \"../parseDef.js\";\nexport const primitiveMappings = {\n ZodString: \"string\",\n ZodNumber: \"number\",\n ZodBigInt: \"integer\",\n ZodBoolean: \"boolean\",\n ZodNull: \"null\",\n};\nexport function parseUnionDef(def, refs) {\n if (refs.target === \"openApi3\")\n return asAnyOf(def, refs);\n const options = def.options instanceof Map ? Array.from(def.options.values()) : def.options;\n // This blocks tries to look ahead a bit to produce nicer looking schemas with type array instead of anyOf.\n if (options.every((x) => x._def.typeName in primitiveMappings &&\n (!x._def.checks || !x._def.checks.length))) {\n // all types in union are primitive and lack checks, so might as well squash into {type: [...]}\n const types = options.reduce((types, x) => {\n const type = primitiveMappings[x._def.typeName]; //Can be safely casted due to row 43\n return type && !types.includes(type) ? [...types, type] : types;\n }, []);\n return {\n type: types.length > 1 ? types : types[0],\n };\n }\n else if (options.every((x) => x._def.typeName === \"ZodLiteral\" && !x.description)) {\n // all options literals\n const types = options.reduce((acc, x) => {\n const type = typeof x._def.value;\n switch (type) {\n case \"string\":\n case \"number\":\n case \"boolean\":\n return [...acc, type];\n case \"bigint\":\n return [...acc, \"integer\"];\n case \"object\":\n if (x._def.value === null)\n return [...acc, \"null\"];\n case \"symbol\":\n case \"undefined\":\n case \"function\":\n default:\n return acc;\n }\n }, []);\n if (types.length === options.length) {\n // all the literals are primitive, as far as null can be considered primitive\n const uniqueTypes = types.filter((x, i, a) => a.indexOf(x) === i);\n return {\n type: uniqueTypes.length > 1 ? uniqueTypes : uniqueTypes[0],\n enum: options.reduce((acc, x) => {\n return acc.includes(x._def.value) ? acc : [...acc, x._def.value];\n }, []),\n };\n }\n }\n else if (options.every((x) => x._def.typeName === \"ZodEnum\")) {\n return {\n type: \"string\",\n enum: options.reduce((acc, x) => [\n ...acc,\n ...x._def.values.filter((x) => !acc.includes(x)),\n ], []),\n };\n }\n return asAnyOf(def, refs);\n}\nconst asAnyOf = (def, refs) => {\n const anyOf = (def.options instanceof Map\n ? Array.from(def.options.values())\n : def.options)\n .map((x, i) => parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"anyOf\", `${i}`],\n }))\n .filter((x) => !!x &&\n (!refs.strictUnions ||\n (typeof x === \"object\" && Object.keys(x).length > 0)));\n return anyOf.length ? { anyOf } : undefined;\n};\n","import { parseDef } from \"../parseDef.js\";\nimport { primitiveMappings } from \"./union.js\";\nexport function parseNullableDef(def, refs) {\n if ([\"ZodString\", \"ZodNumber\", \"ZodBigInt\", \"ZodBoolean\", \"ZodNull\"].includes(def.innerType._def.typeName) &&\n (!def.innerType._def.checks || !def.innerType._def.checks.length)) {\n if (refs.target === \"openApi3\") {\n return {\n type: primitiveMappings[def.innerType._def.typeName],\n nullable: true,\n };\n }\n return {\n type: [\n primitiveMappings[def.innerType._def.typeName],\n \"null\",\n ],\n };\n }\n if (refs.target === \"openApi3\") {\n const base = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath],\n });\n if (base && \"$ref\" in base)\n return { allOf: [base], nullable: true };\n return base && { ...base, nullable: true };\n }\n const base = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"anyOf\", \"0\"],\n });\n return base && { anyOf: [base, { type: \"null\" }] };\n}\n","import { addErrorMessage, setResponseValueAndErrors, } from \"../errorMessages.js\";\nexport function parseNumberDef(def, refs) {\n const res = {\n type: \"number\",\n };\n if (!def.checks)\n return res;\n for (const check of def.checks) {\n switch (check.kind) {\n case \"int\":\n res.type = \"integer\";\n addErrorMessage(res, \"type\", check.message, refs);\n break;\n case \"min\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n }\n else {\n setResponseValueAndErrors(res, \"exclusiveMinimum\", check.value, check.message, refs);\n }\n }\n else {\n if (!check.inclusive) {\n res.exclusiveMinimum = true;\n }\n setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n }\n break;\n case \"max\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n }\n else {\n setResponseValueAndErrors(res, \"exclusiveMaximum\", check.value, check.message, refs);\n }\n }\n else {\n if (!check.inclusive) {\n res.exclusiveMaximum = true;\n }\n setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n }\n break;\n case \"multipleOf\":\n setResponseValueAndErrors(res, \"multipleOf\", check.value, check.message, refs);\n break;\n }\n }\n return res;\n}\n","import { parseDef } from \"../parseDef.js\";\nexport function parseObjectDef(def, refs) {\n const forceOptionalIntoNullable = refs.target === \"openAi\";\n const result = {\n type: \"object\",\n properties: {},\n };\n const required = [];\n const shape = def.shape();\n for (const propName in shape) {\n let propDef = shape[propName];\n if (propDef === undefined || propDef._def === undefined) {\n continue;\n }\n let propOptional = safeIsOptional(propDef);\n if (propOptional && forceOptionalIntoNullable) {\n if (propDef._def.typeName === \"ZodOptional\") {\n propDef = propDef._def.innerType;\n }\n if (!propDef.isNullable()) {\n propDef = propDef.nullable();\n }\n propOptional = false;\n }\n const parsedDef = parseDef(propDef._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"properties\", propName],\n propertyPath: [...refs.currentPath, \"properties\", propName],\n });\n if (parsedDef === undefined) {\n continue;\n }\n result.properties[propName] = parsedDef;\n if (!propOptional) {\n required.push(propName);\n }\n }\n if (required.length) {\n result.required = required;\n }\n const additionalProperties = decideAdditionalProperties(def, refs);\n if (additionalProperties !== undefined) {\n result.additionalProperties = additionalProperties;\n }\n return result;\n}\nfunction decideAdditionalProperties(def, refs) {\n if (def.catchall._def.typeName !== \"ZodNever\") {\n return parseDef(def.catchall._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"additionalProperties\"],\n });\n }\n switch (def.unknownKeys) {\n case \"passthrough\":\n return refs.allowedAdditionalProperties;\n case \"strict\":\n return refs.rejectedAdditionalProperties;\n case \"strip\":\n return refs.removeAdditionalStrategy === \"strict\"\n ? refs.allowedAdditionalProperties\n : refs.rejectedAdditionalProperties;\n }\n}\nfunction safeIsOptional(schema) {\n try {\n return schema.isOptional();\n }\n catch {\n return true;\n }\n}\n","import { parseDef } from \"../parseDef.js\";\nimport { parseAnyDef } from \"./any.js\";\nexport const parseOptionalDef = (def, refs) => {\n if (refs.currentPath.toString() === refs.propertyPath?.toString()) {\n return parseDef(def.innerType._def, refs);\n }\n const innerSchema = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"anyOf\", \"1\"],\n });\n return innerSchema\n ? {\n anyOf: [\n {\n not: parseAnyDef(refs),\n },\n innerSchema,\n ],\n }\n : parseAnyDef(refs);\n};\n","import { parseDef } from \"../parseDef.js\";\nexport const parsePipelineDef = (def, refs) => {\n if (refs.pipeStrategy === \"input\") {\n return parseDef(def.in._def, refs);\n }\n else if (refs.pipeStrategy === \"output\") {\n return parseDef(def.out._def, refs);\n }\n const a = parseDef(def.in._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", \"0\"],\n });\n const b = parseDef(def.out._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", a ? \"1\" : \"0\"],\n });\n return {\n allOf: [a, b].filter((x) => x !== undefined),\n };\n};\n","import { parseDef } from \"../parseDef.js\";\nexport function parsePromiseDef(def, refs) {\n return parseDef(def.type._def, refs);\n}\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nimport { parseDef } from \"../parseDef.js\";\nexport function parseSetDef(def, refs) {\n const items = parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\"],\n });\n const schema = {\n type: \"array\",\n uniqueItems: true,\n items,\n };\n if (def.minSize) {\n setResponseValueAndErrors(schema, \"minItems\", def.minSize.value, def.minSize.message, refs);\n }\n if (def.maxSize) {\n setResponseValueAndErrors(schema, \"maxItems\", def.maxSize.value, def.maxSize.message, refs);\n }\n return schema;\n}\n","import { parseDef } from \"../parseDef.js\";\nexport function parseTupleDef(def, refs) {\n if (def.rest) {\n return {\n type: \"array\",\n minItems: def.items.length,\n items: def.items\n .map((x, i) => parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", `${i}`],\n }))\n .reduce((acc, x) => (x === undefined ? acc : [...acc, x]), []),\n additionalItems: parseDef(def.rest._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"additionalItems\"],\n }),\n };\n }\n else {\n return {\n type: \"array\",\n minItems: def.items.length,\n maxItems: def.items.length,\n items: def.items\n .map((x, i) => parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", `${i}`],\n }))\n .reduce((acc, x) => (x === undefined ? acc : [...acc, x]), []),\n };\n }\n}\n","import { parseAnyDef } from \"./any.js\";\nexport function parseUndefinedDef(refs) {\n return {\n not: parseAnyDef(refs),\n };\n}\n","import { parseAnyDef } from \"./any.js\";\nexport function parseUnknownDef(refs) {\n return parseAnyDef(refs);\n}\n","import { parseDef } from \"../parseDef.js\";\nexport const parseReadonlyDef = (def, refs) => {\n return parseDef(def.innerType._def, refs);\n};\n","import { ignoreOverride } from \"./Options.js\";\nimport { selectParser } from \"./selectParser.js\";\nimport { getRelativePath } from \"./getRelativePath.js\";\nimport { parseAnyDef } from \"./parsers/any.js\";\nexport function parseDef(def, refs, forceResolution = false) {\n const seenItem = refs.seen.get(def);\n if (refs.override) {\n const overrideResult = refs.override?.(def, refs, seenItem, forceResolution);\n if (overrideResult !== ignoreOverride) {\n return overrideResult;\n }\n }\n if (seenItem && !forceResolution) {\n const seenSchema = get$ref(seenItem, refs);\n if (seenSchema !== undefined) {\n return seenSchema;\n }\n }\n const newItem = { def, path: refs.currentPath, jsonSchema: undefined };\n refs.seen.set(def, newItem);\n const jsonSchemaOrGetter = selectParser(def, def.typeName, refs);\n // If the return was a function, then the inner definition needs to be extracted before a call to parseDef (recursive)\n const jsonSchema = typeof jsonSchemaOrGetter === \"function\"\n ? parseDef(jsonSchemaOrGetter(), refs)\n : jsonSchemaOrGetter;\n if (jsonSchema) {\n addMeta(def, refs, jsonSchema);\n }\n if (refs.postProcess) {\n const postProcessResult = refs.postProcess(jsonSchema, def, refs);\n newItem.jsonSchema = jsonSchema;\n return postProcessResult;\n }\n newItem.jsonSchema = jsonSchema;\n return jsonSchema;\n}\nconst get$ref = (item, refs) => {\n switch (refs.$refStrategy) {\n case \"root\":\n return { $ref: item.path.join(\"/\") };\n case \"relative\":\n return { $ref: getRelativePath(refs.currentPath, item.path) };\n case \"none\":\n case \"seen\": {\n if (item.path.length < refs.currentPath.length &&\n item.path.every((value, index) => refs.currentPath[index] === value)) {\n console.warn(`Recursive reference detected at ${refs.currentPath.join(\"/\")}! Defaulting to any`);\n return parseAnyDef(refs);\n }\n return refs.$refStrategy === \"seen\" ? parseAnyDef(refs) : undefined;\n }\n }\n};\nconst addMeta = (def, refs, jsonSchema) => {\n if (def.description) {\n jsonSchema.description = def.description;\n if (refs.markdownDescription) {\n jsonSchema.markdownDescription = def.description;\n }\n }\n return jsonSchema;\n};\n","import { parseDef } from \"./parseDef.js\";\nimport { getRefs } from \"./Refs.js\";\nimport { parseAnyDef } from \"./parsers/any.js\";\nconst zodToJsonSchema = (schema, options) => {\n const refs = getRefs(options);\n let definitions = typeof options === \"object\" && options.definitions\n ? Object.entries(options.definitions).reduce((acc, [name, schema]) => ({\n ...acc,\n [name]: parseDef(schema._def, {\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name],\n }, true) ?? parseAnyDef(refs),\n }), {})\n : undefined;\n const name = typeof options === \"string\"\n ? options\n : options?.nameStrategy === \"title\"\n ? undefined\n : options?.name;\n const main = parseDef(schema._def, name === undefined\n ? refs\n : {\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name],\n }, false) ?? parseAnyDef(refs);\n const title = typeof options === \"object\" &&\n options.name !== undefined &&\n options.nameStrategy === \"title\"\n ? options.name\n : undefined;\n if (title !== undefined) {\n main.title = title;\n }\n if (refs.flags.hasReferencedOpenAiAnyType) {\n if (!definitions) {\n definitions = {};\n }\n if (!definitions[refs.openAiAnyTypeName]) {\n definitions[refs.openAiAnyTypeName] = {\n // Skipping \"object\" as no properties can be defined and additionalProperties must be \"false\"\n type: [\"string\", \"number\", \"integer\", \"boolean\", \"array\", \"null\"],\n items: {\n $ref: refs.$refStrategy === \"relative\"\n ? \"1\"\n : [\n ...refs.basePath,\n refs.definitionPath,\n refs.openAiAnyTypeName,\n ].join(\"/\"),\n },\n };\n }\n }\n const combined = name === undefined\n ? definitions\n ? {\n ...main,\n [refs.definitionPath]: definitions,\n }\n : main\n : {\n $ref: [\n ...(refs.$refStrategy === \"relative\" ? [] : refs.basePath),\n refs.definitionPath,\n name,\n ].join(\"/\"),\n [refs.definitionPath]: {\n ...definitions,\n [name]: main,\n },\n };\n if (refs.target === \"jsonSchema7\") {\n combined.$schema = \"http://json-schema.org/draft-07/schema#\";\n }\n else if (refs.target === \"jsonSchema2019-09\" || refs.target === \"openAi\") {\n combined.$schema = \"https://json-schema.org/draft/2019-09/schema#\";\n }\n if (refs.target === \"openAi\" &&\n (\"anyOf\" in combined ||\n \"oneOf\" in combined ||\n \"allOf\" in combined ||\n (\"type\" in combined && Array.isArray(combined.type)))) {\n console.warn(\"Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property.\");\n }\n return combined;\n};\nexport { zodToJsonSchema };\n",null,null,null,null,null,null,"let crypto;\ncrypto =\n globalThis.crypto?.webcrypto ?? // Node.js [18-16] REPL\n globalThis.crypto ?? // Node.js >18\n import(\"node:crypto\").then(m => m.webcrypto); // Node.js <18 Non-REPL\n/**\n * Creates an array of length `size` of random bytes\n * @param size\n * @returns Array of random ints (0 to 255)\n */\nasync function getRandomValues(size) {\n return (await crypto).getRandomValues(new Uint8Array(size));\n}\n/** Generate cryptographically strong random string\n * @param size The desired length of the string\n * @returns The random string\n */\nasync function random(size) {\n const mask = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~\";\n const evenDistCutoff = Math.pow(2, 8) - Math.pow(2, 8) % mask.length;\n let result = \"\";\n while (result.length < size) {\n const randomBytes = await getRandomValues(size - result.length);\n for (const randomByte of randomBytes) {\n if (randomByte < evenDistCutoff) {\n result += mask[randomByte % mask.length];\n }\n }\n }\n return result;\n}\n/** Generate a PKCE challenge verifier\n * @param length Length of the verifier\n * @returns A random verifier `length` characters long\n */\nasync function generateVerifier(length) {\n return await random(length);\n}\n/** Generate a PKCE code challenge from a code verifier\n * @param code_verifier\n * @returns The base64 url encoded code challenge\n */\nexport async function generateChallenge(code_verifier) {\n const buffer = await (await crypto).subtle.digest(\"SHA-256\", new TextEncoder().encode(code_verifier));\n // Generate base64url string\n // btoa is deprecated in Node.js but is used here for web browser compatibility\n // (which has no good replacement yet, see also https://github.com/whatwg/html/issues/6811)\n return btoa(String.fromCharCode(...new Uint8Array(buffer)))\n .replace(/\\//g, '_')\n .replace(/\\+/g, '-')\n .replace(/=/g, '');\n}\n/** Generate a PKCE challenge pair\n * @param length Length of the verifer (between 43-128). Defaults to 43.\n * @returns PKCE challenge pair\n */\nexport default async function pkceChallenge(length) {\n if (!length)\n length = 43;\n if (length < 43 || length > 128) {\n throw `Expected a length between 43 and 128. Received ${length}.`;\n }\n const verifier = await generateVerifier(length);\n const challenge = await generateChallenge(verifier);\n return {\n code_verifier: verifier,\n code_challenge: challenge,\n };\n}\n/** Verify that a code_verifier produces the expected code challenge\n * @param code_verifier\n * @param expectedChallenge The code challenge to verify\n * @returns True if challenges are equal. False otherwise.\n */\nexport async function verifyChallenge(code_verifier, expectedChallenge) {\n const actualChallenge = await generateChallenge(code_verifier);\n return actualChallenge === expectedChallenge;\n}\n",null,null,null,null,"/**\n * The type of error that occurred.\n * @public\n */\nexport type ErrorType = 'invalid-retry' | 'unknown-field'\n\n/**\n * Error thrown when encountering an issue during parsing.\n *\n * @public\n */\nexport class ParseError extends Error {\n /**\n * The type of error that occurred.\n */\n type: ErrorType\n\n /**\n * In the case of an unknown field encountered in the stream, this will be the field name.\n */\n field?: string | undefined\n\n /**\n * In the case of an unknown field encountered in the stream, this will be the value of the field.\n */\n value?: string | undefined\n\n /**\n * The line that caused the error, if available.\n */\n line?: string | undefined\n\n constructor(\n message: string,\n options: {type: ErrorType; field?: string; value?: string; line?: string},\n ) {\n super(message)\n this.name = 'ParseError'\n this.type = options.type\n this.field = options.field\n this.value = options.value\n this.line = options.line\n }\n}\n","/**\n * EventSource/Server-Sent Events parser\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html\n */\nimport {ParseError} from './errors.ts'\nimport type {EventSourceParser, ParserCallbacks} from './types.ts'\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction noop(_arg: unknown) {\n // intentional noop\n}\n\n/**\n * Creates a new EventSource parser.\n *\n * @param callbacks - Callbacks to invoke on different parsing events:\n * - `onEvent` when a new event is parsed\n * - `onError` when an error occurs\n * - `onRetry` when a new reconnection interval has been sent from the server\n * - `onComment` when a comment is encountered in the stream\n *\n * @returns A new EventSource parser, with `parse` and `reset` methods.\n * @public\n */\nexport function createParser(callbacks: ParserCallbacks): EventSourceParser {\n if (typeof callbacks === 'function') {\n throw new TypeError(\n '`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?',\n )\n }\n\n const {onEvent = noop, onError = noop, onRetry = noop, onComment} = callbacks\n\n let incompleteLine = ''\n\n let isFirstChunk = true\n let id: string | undefined\n let data = ''\n let eventType = ''\n\n function feed(newChunk: string) {\n // Strip any UTF8 byte order mark (BOM) at the start of the stream\n const chunk = isFirstChunk ? newChunk.replace(/^\\xEF\\xBB\\xBF/, '') : newChunk\n\n // If there was a previous incomplete line, append it to the new chunk,\n // so we may process it together as a new (hopefully complete) chunk.\n const [complete, incomplete] = splitLines(`${incompleteLine}${chunk}`)\n\n for (const line of complete) {\n parseLine(line)\n }\n\n incompleteLine = incomplete\n isFirstChunk = false\n }\n\n function parseLine(line: string) {\n // If the line is empty (a blank line), dispatch the event\n if (line === '') {\n dispatchEvent()\n return\n }\n\n // If the line starts with a U+003A COLON character (:), ignore the line.\n if (line.startsWith(':')) {\n if (onComment) {\n onComment(line.slice(line.startsWith(': ') ? 2 : 1))\n }\n return\n }\n\n // If the line contains a U+003A COLON character (:)\n const fieldSeparatorIndex = line.indexOf(':')\n if (fieldSeparatorIndex !== -1) {\n // Collect the characters on the line before the first U+003A COLON character (:),\n // and let `field` be that string.\n const field = line.slice(0, fieldSeparatorIndex)\n\n // Collect the characters on the line after the first U+003A COLON character (:),\n // and let `value` be that string. If value starts with a U+0020 SPACE character,\n // remove it from value.\n const offset = line[fieldSeparatorIndex + 1] === ' ' ? 2 : 1\n const value = line.slice(fieldSeparatorIndex + offset)\n\n processField(field, value, line)\n return\n }\n\n // Otherwise, the string is not empty but does not contain a U+003A COLON character (:)\n // Process the field using the whole line as the field name, and an empty string as the field value.\n // 👆 This is according to spec. That means that a line that has the value `data` will result in\n // a newline being added to the current `data` buffer, for instance.\n processField(line, '', line)\n }\n\n function processField(field: string, value: string, line: string) {\n // Field names must be compared literally, with no case folding performed.\n switch (field) {\n case 'event':\n // Set the `event type` buffer to field value\n eventType = value\n break\n case 'data':\n // Append the field value to the `data` buffer, then append a single U+000A LINE FEED(LF)\n // character to the `data` buffer.\n data = `${data}${value}\\n`\n break\n case 'id':\n // If the field value does not contain U+0000 NULL, then set the `ID` buffer to\n // the field value. Otherwise, ignore the field.\n id = value.includes('\\0') ? undefined : value\n break\n case 'retry':\n // If the field value consists of only ASCII digits, then interpret the field value as an\n // integer in base ten, and set the event stream's reconnection time to that integer.\n // Otherwise, ignore the field.\n if (/^\\d+$/.test(value)) {\n onRetry(parseInt(value, 10))\n } else {\n onError(\n new ParseError(`Invalid \\`retry\\` value: \"${value}\"`, {\n type: 'invalid-retry',\n value,\n line,\n }),\n )\n }\n break\n default:\n // Otherwise, the field is ignored.\n onError(\n new ParseError(\n `Unknown field \"${field.length > 20 ? `${field.slice(0, 20)}…` : field}\"`,\n {type: 'unknown-field', field, value, line},\n ),\n )\n break\n }\n }\n\n function dispatchEvent() {\n const shouldDispatch = data.length > 0\n if (shouldDispatch) {\n onEvent({\n id,\n event: eventType || undefined,\n // If the data buffer's last character is a U+000A LINE FEED (LF) character,\n // then remove the last character from the data buffer.\n data: data.endsWith('\\n') ? data.slice(0, -1) : data,\n })\n }\n\n // Reset for the next event\n id = undefined\n data = ''\n eventType = ''\n }\n\n function reset(options: {consume?: boolean} = {}) {\n if (incompleteLine && options.consume) {\n parseLine(incompleteLine)\n }\n\n isFirstChunk = true\n id = undefined\n data = ''\n eventType = ''\n incompleteLine = ''\n }\n\n return {feed, reset}\n}\n\n/**\n * For the given `chunk`, split it into lines according to spec, and return any remaining incomplete line.\n *\n * @param chunk - The chunk to split into lines\n * @returns A tuple containing an array of complete lines, and any remaining incomplete line\n * @internal\n */\nfunction splitLines(chunk: string): [complete: Array<string>, incomplete: string] {\n /**\n * According to the spec, a line is terminated by either:\n * - U+000D CARRIAGE RETURN U+000A LINE FEED (CRLF) character pair\n * - a single U+000A LINE FEED(LF) character not preceded by a U+000D CARRIAGE RETURN(CR) character\n * - a single U+000D CARRIAGE RETURN(CR) character not followed by a U+000A LINE FEED(LF) character\n */\n const lines: Array<string> = []\n let incompleteLine = ''\n let searchIndex = 0\n\n while (searchIndex < chunk.length) {\n // Find next line terminator\n const crIndex = chunk.indexOf('\\r', searchIndex)\n const lfIndex = chunk.indexOf('\\n', searchIndex)\n\n // Determine line end\n let lineEnd = -1\n if (crIndex !== -1 && lfIndex !== -1) {\n // CRLF case\n lineEnd = Math.min(crIndex, lfIndex)\n } else if (crIndex !== -1) {\n // CR at the end of a chunk might be part of a CRLF sequence that spans chunks,\n // so we shouldn't treat it as a line terminator (yet)\n if (crIndex === chunk.length - 1) {\n lineEnd = -1\n } else {\n lineEnd = crIndex\n }\n } else if (lfIndex !== -1) {\n lineEnd = lfIndex\n }\n\n // Extract line if terminator found\n if (lineEnd === -1) {\n // No terminator found, rest is incomplete\n incompleteLine = chunk.slice(searchIndex)\n break\n } else {\n const line = chunk.slice(searchIndex, lineEnd)\n lines.push(line)\n\n // Move past line terminator\n searchIndex = lineEnd + 1\n if (chunk[searchIndex - 1] === '\\r' && chunk[searchIndex] === '\\n') {\n searchIndex++\n }\n }\n }\n\n return [lines, incompleteLine]\n}\n","import {createParser} from './parse.ts'\nimport type {EventSourceMessage, EventSourceParser} from './types.ts'\n\n/**\n * Options for the EventSourceParserStream.\n *\n * @public\n */\nexport interface StreamOptions {\n /**\n * Behavior when a parsing error occurs.\n *\n * - A custom function can be provided to handle the error.\n * - `'terminate'` will error the stream and stop parsing.\n * - Any other value will ignore the error and continue parsing.\n *\n * @defaultValue `undefined`\n */\n onError?: ('terminate' | ((error: Error) => void)) | undefined\n\n /**\n * Callback for when a reconnection interval is sent from the server.\n *\n * @param retry - The number of milliseconds to wait before reconnecting.\n */\n onRetry?: ((retry: number) => void) | undefined\n\n /**\n * Callback for when a comment is encountered in the stream.\n *\n * @param comment - The comment encountered in the stream.\n */\n onComment?: ((comment: string) => void) | undefined\n}\n\n/**\n * A TransformStream that ingests a stream of strings and produces a stream of `EventSourceMessage`.\n *\n * @example Basic usage\n * ```\n * const eventStream =\n * response.body\n * .pipeThrough(new TextDecoderStream())\n * .pipeThrough(new EventSourceParserStream())\n * ```\n *\n * @example Terminate stream on parsing errors\n * ```\n * const eventStream =\n * response.body\n * .pipeThrough(new TextDecoderStream())\n * .pipeThrough(new EventSourceParserStream({terminateOnError: true}))\n * ```\n *\n * @public\n */\nexport class EventSourceParserStream extends TransformStream<string, EventSourceMessage> {\n constructor({onError, onRetry, onComment}: StreamOptions = {}) {\n let parser!: EventSourceParser\n\n super({\n start(controller) {\n parser = createParser({\n onEvent: (event) => {\n controller.enqueue(event)\n },\n onError(error) {\n if (onError === 'terminate') {\n controller.error(error)\n } else if (typeof onError === 'function') {\n onError(error)\n }\n\n // Ignore by default\n },\n onRetry,\n onComment,\n })\n },\n transform(chunk) {\n parser.feed(chunk)\n },\n })\n }\n}\n\nexport {type ErrorType, ParseError} from './errors.ts'\nexport type {EventSourceMessage} from './types.ts'\n",null,null,"function extend (destination) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (source.hasOwnProperty(key)) destination[key] = source[key];\n }\n }\n return destination\n}\n\nfunction repeat (character, count) {\n return Array(count + 1).join(character)\n}\n\nfunction trimLeadingNewlines (string) {\n return string.replace(/^\\n*/, '')\n}\n\nfunction trimTrailingNewlines (string) {\n // avoid match-at-end regexp bottleneck, see #370\n var indexEnd = string.length;\n while (indexEnd > 0 && string[indexEnd - 1] === '\\n') indexEnd--;\n return string.substring(0, indexEnd)\n}\n\nfunction trimNewlines (string) {\n return trimTrailingNewlines(trimLeadingNewlines(string))\n}\n\nvar blockElements = [\n 'ADDRESS', 'ARTICLE', 'ASIDE', 'AUDIO', 'BLOCKQUOTE', 'BODY', 'CANVAS',\n 'CENTER', 'DD', 'DIR', 'DIV', 'DL', 'DT', 'FIELDSET', 'FIGCAPTION', 'FIGURE',\n 'FOOTER', 'FORM', 'FRAMESET', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'HEADER',\n 'HGROUP', 'HR', 'HTML', 'ISINDEX', 'LI', 'MAIN', 'MENU', 'NAV', 'NOFRAMES',\n 'NOSCRIPT', 'OL', 'OUTPUT', 'P', 'PRE', 'SECTION', 'TABLE', 'TBODY', 'TD',\n 'TFOOT', 'TH', 'THEAD', 'TR', 'UL'\n];\n\nfunction isBlock (node) {\n return is(node, blockElements)\n}\n\nvar voidElements = [\n 'AREA', 'BASE', 'BR', 'COL', 'COMMAND', 'EMBED', 'HR', 'IMG', 'INPUT',\n 'KEYGEN', 'LINK', 'META', 'PARAM', 'SOURCE', 'TRACK', 'WBR'\n];\n\nfunction isVoid (node) {\n return is(node, voidElements)\n}\n\nfunction hasVoid (node) {\n return has(node, voidElements)\n}\n\nvar meaningfulWhenBlankElements = [\n 'A', 'TABLE', 'THEAD', 'TBODY', 'TFOOT', 'TH', 'TD', 'IFRAME', 'SCRIPT',\n 'AUDIO', 'VIDEO'\n];\n\nfunction isMeaningfulWhenBlank (node) {\n return is(node, meaningfulWhenBlankElements)\n}\n\nfunction hasMeaningfulWhenBlank (node) {\n return has(node, meaningfulWhenBlankElements)\n}\n\nfunction is (node, tagNames) {\n return tagNames.indexOf(node.nodeName) >= 0\n}\n\nfunction has (node, tagNames) {\n return (\n node.getElementsByTagName &&\n tagNames.some(function (tagName) {\n return node.getElementsByTagName(tagName).length\n })\n )\n}\n\nvar rules = {};\n\nrules.paragraph = {\n filter: 'p',\n\n replacement: function (content) {\n return '\\n\\n' + content + '\\n\\n'\n }\n};\n\nrules.lineBreak = {\n filter: 'br',\n\n replacement: function (content, node, options) {\n return options.br + '\\n'\n }\n};\n\nrules.heading = {\n filter: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'],\n\n replacement: function (content, node, options) {\n var hLevel = Number(node.nodeName.charAt(1));\n\n if (options.headingStyle === 'setext' && hLevel < 3) {\n var underline = repeat((hLevel === 1 ? '=' : '-'), content.length);\n return (\n '\\n\\n' + content + '\\n' + underline + '\\n\\n'\n )\n } else {\n return '\\n\\n' + repeat('#', hLevel) + ' ' + content + '\\n\\n'\n }\n }\n};\n\nrules.blockquote = {\n filter: 'blockquote',\n\n replacement: function (content) {\n content = trimNewlines(content).replace(/^/gm, '> ');\n return '\\n\\n' + content + '\\n\\n'\n }\n};\n\nrules.list = {\n filter: ['ul', 'ol'],\n\n replacement: function (content, node) {\n var parent = node.parentNode;\n if (parent.nodeName === 'LI' && parent.lastElementChild === node) {\n return '\\n' + content\n } else {\n return '\\n\\n' + content + '\\n\\n'\n }\n }\n};\n\nrules.listItem = {\n filter: 'li',\n\n replacement: function (content, node, options) {\n var prefix = options.bulletListMarker + ' ';\n var parent = node.parentNode;\n if (parent.nodeName === 'OL') {\n var start = parent.getAttribute('start');\n var index = Array.prototype.indexOf.call(parent.children, node);\n prefix = (start ? Number(start) + index : index + 1) + '. ';\n }\n var isParagraph = /\\n$/.test(content);\n content = trimNewlines(content) + (isParagraph ? '\\n' : '');\n content = content.replace(/\\n/gm, '\\n' + ' '.repeat(prefix.length)); // indent\n return (\n prefix + content + (node.nextSibling ? '\\n' : '')\n )\n }\n};\n\nrules.indentedCodeBlock = {\n filter: function (node, options) {\n return (\n options.codeBlockStyle === 'indented' &&\n node.nodeName === 'PRE' &&\n node.firstChild &&\n node.firstChild.nodeName === 'CODE'\n )\n },\n\n replacement: function (content, node, options) {\n return (\n '\\n\\n ' +\n node.firstChild.textContent.replace(/\\n/g, '\\n ') +\n '\\n\\n'\n )\n }\n};\n\nrules.fencedCodeBlock = {\n filter: function (node, options) {\n return (\n options.codeBlockStyle === 'fenced' &&\n node.nodeName === 'PRE' &&\n node.firstChild &&\n node.firstChild.nodeName === 'CODE'\n )\n },\n\n replacement: function (content, node, options) {\n var className = node.firstChild.getAttribute('class') || '';\n var language = (className.match(/language-(\\S+)/) || [null, ''])[1];\n var code = node.firstChild.textContent;\n\n var fenceChar = options.fence.charAt(0);\n var fenceSize = 3;\n var fenceInCodeRegex = new RegExp('^' + fenceChar + '{3,}', 'gm');\n\n var match;\n while ((match = fenceInCodeRegex.exec(code))) {\n if (match[0].length >= fenceSize) {\n fenceSize = match[0].length + 1;\n }\n }\n\n var fence = repeat(fenceChar, fenceSize);\n\n return (\n '\\n\\n' + fence + language + '\\n' +\n code.replace(/\\n$/, '') +\n '\\n' + fence + '\\n\\n'\n )\n }\n};\n\nrules.horizontalRule = {\n filter: 'hr',\n\n replacement: function (content, node, options) {\n return '\\n\\n' + options.hr + '\\n\\n'\n }\n};\n\nrules.inlineLink = {\n filter: function (node, options) {\n return (\n options.linkStyle === 'inlined' &&\n node.nodeName === 'A' &&\n node.getAttribute('href')\n )\n },\n\n replacement: function (content, node) {\n var href = node.getAttribute('href');\n if (href) href = href.replace(/([()])/g, '\\\\$1');\n var title = cleanAttribute(node.getAttribute('title'));\n if (title) title = ' \"' + title.replace(/\"/g, '\\\\\"') + '\"';\n return '[' + content + '](' + href + title + ')'\n }\n};\n\nrules.referenceLink = {\n filter: function (node, options) {\n return (\n options.linkStyle === 'referenced' &&\n node.nodeName === 'A' &&\n node.getAttribute('href')\n )\n },\n\n replacement: function (content, node, options) {\n var href = node.getAttribute('href');\n var title = cleanAttribute(node.getAttribute('title'));\n if (title) title = ' \"' + title + '\"';\n var replacement;\n var reference;\n\n switch (options.linkReferenceStyle) {\n case 'collapsed':\n replacement = '[' + content + '][]';\n reference = '[' + content + ']: ' + href + title;\n break\n case 'shortcut':\n replacement = '[' + content + ']';\n reference = '[' + content + ']: ' + href + title;\n break\n default:\n var id = this.references.length + 1;\n replacement = '[' + content + '][' + id + ']';\n reference = '[' + id + ']: ' + href + title;\n }\n\n this.references.push(reference);\n return replacement\n },\n\n references: [],\n\n append: function (options) {\n var references = '';\n if (this.references.length) {\n references = '\\n\\n' + this.references.join('\\n') + '\\n\\n';\n this.references = []; // Reset references\n }\n return references\n }\n};\n\nrules.emphasis = {\n filter: ['em', 'i'],\n\n replacement: function (content, node, options) {\n if (!content.trim()) return ''\n return options.emDelimiter + content + options.emDelimiter\n }\n};\n\nrules.strong = {\n filter: ['strong', 'b'],\n\n replacement: function (content, node, options) {\n if (!content.trim()) return ''\n return options.strongDelimiter + content + options.strongDelimiter\n }\n};\n\nrules.code = {\n filter: function (node) {\n var hasSiblings = node.previousSibling || node.nextSibling;\n var isCodeBlock = node.parentNode.nodeName === 'PRE' && !hasSiblings;\n\n return node.nodeName === 'CODE' && !isCodeBlock\n },\n\n replacement: function (content) {\n if (!content) return ''\n content = content.replace(/\\r?\\n|\\r/g, ' ');\n\n var extraSpace = /^`|^ .*?[^ ].* $|`$/.test(content) ? ' ' : '';\n var delimiter = '`';\n var matches = content.match(/`+/gm) || [];\n while (matches.indexOf(delimiter) !== -1) delimiter = delimiter + '`';\n\n return delimiter + extraSpace + content + extraSpace + delimiter\n }\n};\n\nrules.image = {\n filter: 'img',\n\n replacement: function (content, node) {\n var alt = cleanAttribute(node.getAttribute('alt'));\n var src = node.getAttribute('src') || '';\n var title = cleanAttribute(node.getAttribute('title'));\n var titlePart = title ? ' \"' + title + '\"' : '';\n return src ? '![' + alt + ']' + '(' + src + titlePart + ')' : ''\n }\n};\n\nfunction cleanAttribute (attribute) {\n return attribute ? attribute.replace(/(\\n+\\s*)+/g, '\\n') : ''\n}\n\n/**\n * Manages a collection of rules used to convert HTML to Markdown\n */\n\nfunction Rules (options) {\n this.options = options;\n this._keep = [];\n this._remove = [];\n\n this.blankRule = {\n replacement: options.blankReplacement\n };\n\n this.keepReplacement = options.keepReplacement;\n\n this.defaultRule = {\n replacement: options.defaultReplacement\n };\n\n this.array = [];\n for (var key in options.rules) this.array.push(options.rules[key]);\n}\n\nRules.prototype = {\n add: function (key, rule) {\n this.array.unshift(rule);\n },\n\n keep: function (filter) {\n this._keep.unshift({\n filter: filter,\n replacement: this.keepReplacement\n });\n },\n\n remove: function (filter) {\n this._remove.unshift({\n filter: filter,\n replacement: function () {\n return ''\n }\n });\n },\n\n forNode: function (node) {\n if (node.isBlank) return this.blankRule\n var rule;\n\n if ((rule = findRule(this.array, node, this.options))) return rule\n if ((rule = findRule(this._keep, node, this.options))) return rule\n if ((rule = findRule(this._remove, node, this.options))) return rule\n\n return this.defaultRule\n },\n\n forEach: function (fn) {\n for (var i = 0; i < this.array.length; i++) fn(this.array[i], i);\n }\n};\n\nfunction findRule (rules, node, options) {\n for (var i = 0; i < rules.length; i++) {\n var rule = rules[i];\n if (filterValue(rule, node, options)) return rule\n }\n return void 0\n}\n\nfunction filterValue (rule, node, options) {\n var filter = rule.filter;\n if (typeof filter === 'string') {\n if (filter === node.nodeName.toLowerCase()) return true\n } else if (Array.isArray(filter)) {\n if (filter.indexOf(node.nodeName.toLowerCase()) > -1) return true\n } else if (typeof filter === 'function') {\n if (filter.call(rule, node, options)) return true\n } else {\n throw new TypeError('`filter` needs to be a string, array, or function')\n }\n}\n\n/**\n * The collapseWhitespace function is adapted from collapse-whitespace\n * by Luc Thevenard.\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2014 Luc Thevenard <lucthevenard@gmail.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/**\n * collapseWhitespace(options) removes extraneous whitespace from an the given element.\n *\n * @param {Object} options\n */\nfunction collapseWhitespace (options) {\n var element = options.element;\n var isBlock = options.isBlock;\n var isVoid = options.isVoid;\n var isPre = options.isPre || function (node) {\n return node.nodeName === 'PRE'\n };\n\n if (!element.firstChild || isPre(element)) return\n\n var prevText = null;\n var keepLeadingWs = false;\n\n var prev = null;\n var node = next(prev, element, isPre);\n\n while (node !== element) {\n if (node.nodeType === 3 || node.nodeType === 4) { // Node.TEXT_NODE or Node.CDATA_SECTION_NODE\n var text = node.data.replace(/[ \\r\\n\\t]+/g, ' ');\n\n if ((!prevText || / $/.test(prevText.data)) &&\n !keepLeadingWs && text[0] === ' ') {\n text = text.substr(1);\n }\n\n // `text` might be empty at this point.\n if (!text) {\n node = remove(node);\n continue\n }\n\n node.data = text;\n\n prevText = node;\n } else if (node.nodeType === 1) { // Node.ELEMENT_NODE\n if (isBlock(node) || node.nodeName === 'BR') {\n if (prevText) {\n prevText.data = prevText.data.replace(/ $/, '');\n }\n\n prevText = null;\n keepLeadingWs = false;\n } else if (isVoid(node) || isPre(node)) {\n // Avoid trimming space around non-block, non-BR void elements and inline PRE.\n prevText = null;\n keepLeadingWs = true;\n } else if (prevText) {\n // Drop protection if set previously.\n keepLeadingWs = false;\n }\n } else {\n node = remove(node);\n continue\n }\n\n var nextNode = next(prev, node, isPre);\n prev = node;\n node = nextNode;\n }\n\n if (prevText) {\n prevText.data = prevText.data.replace(/ $/, '');\n if (!prevText.data) {\n remove(prevText);\n }\n }\n}\n\n/**\n * remove(node) removes the given node from the DOM and returns the\n * next node in the sequence.\n *\n * @param {Node} node\n * @return {Node} node\n */\nfunction remove (node) {\n var next = node.nextSibling || node.parentNode;\n\n node.parentNode.removeChild(node);\n\n return next\n}\n\n/**\n * next(prev, current, isPre) returns the next node in the sequence, given the\n * current and previous nodes.\n *\n * @param {Node} prev\n * @param {Node} current\n * @param {Function} isPre\n * @return {Node}\n */\nfunction next (prev, current, isPre) {\n if ((prev && prev.parentNode === current) || isPre(current)) {\n return current.nextSibling || current.parentNode\n }\n\n return current.firstChild || current.nextSibling || current.parentNode\n}\n\n/*\n * Set up window for Node.js\n */\n\nvar root = (typeof window !== 'undefined' ? window : {});\n\n/*\n * Parsing HTML strings\n */\n\nfunction canParseHTMLNatively () {\n var Parser = root.DOMParser;\n var canParse = false;\n\n // Adapted from https://gist.github.com/1129031\n // Firefox/Opera/IE throw errors on unsupported types\n try {\n // WebKit returns null on unsupported types\n if (new Parser().parseFromString('', 'text/html')) {\n canParse = true;\n }\n } catch (e) {}\n\n return canParse\n}\n\nfunction createHTMLParser () {\n var Parser = function () {};\n\n {\n var domino = require('@mixmark-io/domino');\n Parser.prototype.parseFromString = function (string) {\n return domino.createDocument(string)\n };\n }\n return Parser\n}\n\nvar HTMLParser = canParseHTMLNatively() ? root.DOMParser : createHTMLParser();\n\nfunction RootNode (input, options) {\n var root;\n if (typeof input === 'string') {\n var doc = htmlParser().parseFromString(\n // DOM parsers arrange elements in the <head> and <body>.\n // Wrapping in a custom element ensures elements are reliably arranged in\n // a single element.\n '<x-turndown id=\"turndown-root\">' + input + '</x-turndown>',\n 'text/html'\n );\n root = doc.getElementById('turndown-root');\n } else {\n root = input.cloneNode(true);\n }\n collapseWhitespace({\n element: root,\n isBlock: isBlock,\n isVoid: isVoid,\n isPre: options.preformattedCode ? isPreOrCode : null\n });\n\n return root\n}\n\nvar _htmlParser;\nfunction htmlParser () {\n _htmlParser = _htmlParser || new HTMLParser();\n return _htmlParser\n}\n\nfunction isPreOrCode (node) {\n return node.nodeName === 'PRE' || node.nodeName === 'CODE'\n}\n\nfunction Node (node, options) {\n node.isBlock = isBlock(node);\n node.isCode = node.nodeName === 'CODE' || node.parentNode.isCode;\n node.isBlank = isBlank(node);\n node.flankingWhitespace = flankingWhitespace(node, options);\n return node\n}\n\nfunction isBlank (node) {\n return (\n !isVoid(node) &&\n !isMeaningfulWhenBlank(node) &&\n /^\\s*$/i.test(node.textContent) &&\n !hasVoid(node) &&\n !hasMeaningfulWhenBlank(node)\n )\n}\n\nfunction flankingWhitespace (node, options) {\n if (node.isBlock || (options.preformattedCode && node.isCode)) {\n return { leading: '', trailing: '' }\n }\n\n var edges = edgeWhitespace(node.textContent);\n\n // abandon leading ASCII WS if left-flanked by ASCII WS\n if (edges.leadingAscii && isFlankedByWhitespace('left', node, options)) {\n edges.leading = edges.leadingNonAscii;\n }\n\n // abandon trailing ASCII WS if right-flanked by ASCII WS\n if (edges.trailingAscii && isFlankedByWhitespace('right', node, options)) {\n edges.trailing = edges.trailingNonAscii;\n }\n\n return { leading: edges.leading, trailing: edges.trailing }\n}\n\nfunction edgeWhitespace (string) {\n var m = string.match(/^(([ \\t\\r\\n]*)(\\s*))(?:(?=\\S)[\\s\\S]*\\S)?((\\s*?)([ \\t\\r\\n]*))$/);\n return {\n leading: m[1], // whole string for whitespace-only strings\n leadingAscii: m[2],\n leadingNonAscii: m[3],\n trailing: m[4], // empty for whitespace-only strings\n trailingNonAscii: m[5],\n trailingAscii: m[6]\n }\n}\n\nfunction isFlankedByWhitespace (side, node, options) {\n var sibling;\n var regExp;\n var isFlanked;\n\n if (side === 'left') {\n sibling = node.previousSibling;\n regExp = / $/;\n } else {\n sibling = node.nextSibling;\n regExp = /^ /;\n }\n\n if (sibling) {\n if (sibling.nodeType === 3) {\n isFlanked = regExp.test(sibling.nodeValue);\n } else if (options.preformattedCode && sibling.nodeName === 'CODE') {\n isFlanked = false;\n } else if (sibling.nodeType === 1 && !isBlock(sibling)) {\n isFlanked = regExp.test(sibling.textContent);\n }\n }\n return isFlanked\n}\n\nvar reduce = Array.prototype.reduce;\nvar escapes = [\n [/\\\\/g, '\\\\\\\\'],\n [/\\*/g, '\\\\*'],\n [/^-/g, '\\\\-'],\n [/^\\+ /g, '\\\\+ '],\n [/^(=+)/g, '\\\\$1'],\n [/^(#{1,6}) /g, '\\\\$1 '],\n [/`/g, '\\\\`'],\n [/^~~~/g, '\\\\~~~'],\n [/\\[/g, '\\\\['],\n [/\\]/g, '\\\\]'],\n [/^>/g, '\\\\>'],\n [/_/g, '\\\\_'],\n [/^(\\d+)\\. /g, '$1\\\\. ']\n];\n\nfunction TurndownService (options) {\n if (!(this instanceof TurndownService)) return new TurndownService(options)\n\n var defaults = {\n rules: rules,\n headingStyle: 'setext',\n hr: '* * *',\n bulletListMarker: '*',\n codeBlockStyle: 'indented',\n fence: '```',\n emDelimiter: '_',\n strongDelimiter: '**',\n linkStyle: 'inlined',\n linkReferenceStyle: 'full',\n br: ' ',\n preformattedCode: false,\n blankReplacement: function (content, node) {\n return node.isBlock ? '\\n\\n' : ''\n },\n keepReplacement: function (content, node) {\n return node.isBlock ? '\\n\\n' + node.outerHTML + '\\n\\n' : node.outerHTML\n },\n defaultReplacement: function (content, node) {\n return node.isBlock ? '\\n\\n' + content + '\\n\\n' : content\n }\n };\n this.options = extend({}, defaults, options);\n this.rules = new Rules(this.options);\n}\n\nTurndownService.prototype = {\n /**\n * The entry point for converting a string or DOM node to Markdown\n * @public\n * @param {String|HTMLElement} input The string or DOM node to convert\n * @returns A Markdown representation of the input\n * @type String\n */\n\n turndown: function (input) {\n if (!canConvert(input)) {\n throw new TypeError(\n input + ' is not a string, or an element/document/fragment node.'\n )\n }\n\n if (input === '') return ''\n\n var output = process.call(this, new RootNode(input, this.options));\n return postProcess.call(this, output)\n },\n\n /**\n * Add one or more plugins\n * @public\n * @param {Function|Array} plugin The plugin or array of plugins to add\n * @returns The Turndown instance for chaining\n * @type Object\n */\n\n use: function (plugin) {\n if (Array.isArray(plugin)) {\n for (var i = 0; i < plugin.length; i++) this.use(plugin[i]);\n } else if (typeof plugin === 'function') {\n plugin(this);\n } else {\n throw new TypeError('plugin must be a Function or an Array of Functions')\n }\n return this\n },\n\n /**\n * Adds a rule\n * @public\n * @param {String} key The unique key of the rule\n * @param {Object} rule The rule\n * @returns The Turndown instance for chaining\n * @type Object\n */\n\n addRule: function (key, rule) {\n this.rules.add(key, rule);\n return this\n },\n\n /**\n * Keep a node (as HTML) that matches the filter\n * @public\n * @param {String|Array|Function} filter The unique key of the rule\n * @returns The Turndown instance for chaining\n * @type Object\n */\n\n keep: function (filter) {\n this.rules.keep(filter);\n return this\n },\n\n /**\n * Remove a node that matches the filter\n * @public\n * @param {String|Array|Function} filter The unique key of the rule\n * @returns The Turndown instance for chaining\n * @type Object\n */\n\n remove: function (filter) {\n this.rules.remove(filter);\n return this\n },\n\n /**\n * Escapes Markdown syntax\n * @public\n * @param {String} string The string to escape\n * @returns A string with Markdown syntax escaped\n * @type String\n */\n\n escape: function (string) {\n return escapes.reduce(function (accumulator, escape) {\n return accumulator.replace(escape[0], escape[1])\n }, string)\n }\n};\n\n/**\n * Reduces a DOM node down to its Markdown string equivalent\n * @private\n * @param {HTMLElement} parentNode The node to convert\n * @returns A Markdown representation of the node\n * @type String\n */\n\nfunction process (parentNode) {\n var self = this;\n return reduce.call(parentNode.childNodes, function (output, node) {\n node = new Node(node, self.options);\n\n var replacement = '';\n if (node.nodeType === 3) {\n replacement = node.isCode ? node.nodeValue : self.escape(node.nodeValue);\n } else if (node.nodeType === 1) {\n replacement = replacementForNode.call(self, node);\n }\n\n return join(output, replacement)\n }, '')\n}\n\n/**\n * Appends strings as each rule requires and trims the output\n * @private\n * @param {String} output The conversion output\n * @returns A trimmed version of the ouput\n * @type String\n */\n\nfunction postProcess (output) {\n var self = this;\n this.rules.forEach(function (rule) {\n if (typeof rule.append === 'function') {\n output = join(output, rule.append(self.options));\n }\n });\n\n return output.replace(/^[\\t\\r\\n]+/, '').replace(/[\\t\\r\\n\\s]+$/, '')\n}\n\n/**\n * Converts an element node to its Markdown equivalent\n * @private\n * @param {HTMLElement} node The node to convert\n * @returns A Markdown representation of the node\n * @type String\n */\n\nfunction replacementForNode (node) {\n var rule = this.rules.forNode(node);\n var content = process.call(this, node);\n var whitespace = node.flankingWhitespace;\n if (whitespace.leading || whitespace.trailing) content = content.trim();\n return (\n whitespace.leading +\n rule.replacement(content, node, this.options) +\n whitespace.trailing\n )\n}\n\n/**\n * Joins replacement to the current output with appropriate number of new lines\n * @private\n * @param {String} output The current conversion output\n * @param {String} replacement The string to append to the output\n * @returns Joined output\n * @type String\n */\n\nfunction join (output, replacement) {\n var s1 = trimTrailingNewlines(output);\n var s2 = trimLeadingNewlines(replacement);\n var nls = Math.max(output.length - s1.length, replacement.length - s2.length);\n var separator = '\\n\\n'.substring(0, nls);\n\n return s1 + separator + s2\n}\n\n/**\n * Determines whether an input can be converted\n * @private\n * @param {String|HTMLElement} input Describe this parameter\n * @returns Describe what it returns\n * @type String|Object|Array|Boolean|Number\n */\n\nfunction canConvert (input) {\n return (\n input != null && (\n typeof input === 'string' ||\n (input.nodeType && (\n input.nodeType === 1 || input.nodeType === 9 || input.nodeType === 11\n ))\n )\n )\n}\n\nexport default TurndownService;\n"],"mappings":"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","names":["ajv","ajv","fs","fs","path","stat","fs","path","stat","fs","path","resolve","is","path","resolve","is","path","string","path","fs","path","spawn","result","event","i","n","result","next","result","Node","next","Node","root","next","Node","root","window","next","rules","url","find","el","Node","remove","Node","Node","root","next","result","Node","Node","result","next","Node","Node","Node","next","Node","result","root","result","root","next","URL","url","relative","path","result","value","URL","url","Node","URL","url","HTMLElement","HTMLUnknownElement","HTMLFormElement","SVGElement","Node","URL","root","url","Node","HTMLParser","Node","result","i","root","insertToken","doc","HTMLParser","URL","window","url","HTMLParser","util","object","array","objectUtil","path","errorUtil","path","result","errorMap","ctx","issues","elements","processed","preprocess","result","ZodFirstPartyTypeKind","safeParse","result","def","ErrorCode","z4mini","ZodFirstPartyTypeKind","ZodFirstPartyTypeKind","ZodFirstPartyTypeKind","ZodFirstPartyTypeKind","emojiRegex","literal","result","ZodFirstPartyTypeKind","object","types","x","base","result","ZodFirstPartyTypeKind","jsonSchema","name","schema","result","safeParse","result","_a","resolve","safeParse","jsonrpcNotification","ajv","_addFormats","safeParse","_a","result","_c","_b","process","process","resolve","spawn","_a","_b","url","result","z","url","url","result","codeVerifier","tokens","url","url","url","url","result","_a","error","url","result","resolve","_a","_b","path","z","string","rules","isBlock","isVoid","node","next","root","process","z","z","Ajv","z","result","record","url","resolve","relative","path","string","escapeRegExp","formatModelResponse","escapedPath","query","isZodSchema","z","next","resolve","uuidv4","result","usage","query"]}