admin
2020-12-12 41f7cc6dcdca7b5ac2557558509206cc7c9c99fb
界面完善
23个文件已修改
117个文件已添加
7624 ■■■■■ 已修改文件
.tea/entryFiles-development/config$.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.tea/entryFiles-development/index$.web.js 53 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.tea/entryFiles-development/index$.worker.js 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.tea/entryFiles-production/config$.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.tea/entryFiles-production/index$.web.js 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.tea/entryFiles-production/index$.worker.js 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domelementtype/LICENSE 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domelementtype/index.js 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domelementtype/package.json 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domelementtype/readme.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/.travis.yml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/LICENSE 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/index.js 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/lib/element.js 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/lib/node.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/package.json 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/readme.md 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/test/cases/01-basic.json 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/test/cases/02-single_tag_1.json 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/test/cases/03-single_tag_2.json 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/test/cases/04-unescaped_in_script.json 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/test/cases/05-tags_in_comment.json 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/test/cases/06-comment_in_script.json 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/test/cases/07-unescaped_in_style.json 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/test/cases/08-extra_spaces_in_tag.json 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/test/cases/09-unquoted_attrib.json 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/test/cases/10-singular_attribute.json 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/test/cases/11-text_outside_tags.json 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/test/cases/12-text_only.json 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/test/cases/13-comment_in_text.json 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/test/cases/14-comment_in_text_in_script.json 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/test/cases/15-non-verbose.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/test/cases/16-normalize_whitespace.json 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/test/cases/17-xml_namespace.json 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/test/cases/18-enforce_empty_tags.json 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/test/cases/19-ignore_empty_tags.json 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/test/cases/20-template_script_tags.json 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/test/cases/21-conditional_comments.json 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/test/cases/22-lowercase_tags.json 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/test/cases/23-dom-lvl1.json 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/test/cases/24-with-start-indices.json 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/test/cases/25-with-end-indices.json 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/domhandler/test/tests.js 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/entities/.travis.yml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/entities/LICENSE 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/entities/index.js 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/entities/lib/decode.js 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/entities/lib/decode_codepoint.js 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/entities/lib/encode.js 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/entities/maps/decode.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/entities/maps/entities.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/entities/maps/legacy.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/entities/maps/xml.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/entities/package.json 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/entities/readme.md 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/entities/test/mocha.opts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/entities/test/test.js 170 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/.airtap.yml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/.github/FUNDING.yml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/.travis.yml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/History.md 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/LICENSE 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/Readme.md 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/events.js 476 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/package.json 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/security.md 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/tests/add-listeners.js 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/tests/check-listener-leaks.js 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/tests/common.js 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/tests/errors.js 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/tests/events-list.js 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/tests/events-once.js 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/tests/index.js 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/tests/legacy-compat.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/tests/listener-count.js 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/tests/listeners-side-effects.js 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/tests/listeners.js 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/tests/max-listeners.js 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/tests/method-names.js 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/tests/modify-in-emit.js 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/tests/num-args.js 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/tests/once.js 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/tests/prepend.js 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/tests/remove-all-listeners.js 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/tests/remove-listeners.js 212 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/tests/set-max-listeners-side-effects.js 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/tests/special-event-names.js 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/tests/subclass.js 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/events/tests/symbols.js 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/mini-html-parser2/README.md 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/mini-html-parser2/lib/Parser.d.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/mini-html-parser2/lib/Parser.js 298 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/mini-html-parser2/lib/Tokenizer.d.ts 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/mini-html-parser2/lib/Tokenizer.js 769 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/mini-html-parser2/lib/index.d.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/mini-html-parser2/lib/index.js 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/mini-html-parser2/lib/inherits.d.ts 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/mini-html-parser2/lib/inherits.js 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/mini-html-parser2/package.json 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/miniapp-bc-user/es/bc-module/bc-module.acss 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/miniapp-bc-user/es/bc-module/bc-module.axml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/miniapp-bc-user/es/bc-module/bc-module.js 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/miniapp-bc-user/es/bc-module/bc-module.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/miniapp-bc-user/es/bc-module/bc-module.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/miniapp-bc-user/es/index.js 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/miniapp-bc-user/es/index.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/miniapp-bc-user/package.json 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/tslib/CopyrightNotice.txt 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/tslib/LICENSE.txt 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/tslib/README.md 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/tslib/modules/index.js 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/tslib/modules/package.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/tslib/package.json 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/tslib/test/validateModuleExportsMatchCommonJS/index.js 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/tslib/test/validateModuleExportsMatchCommonJS/package.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/tslib/tslib.d.ts 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/tslib/tslib.es6.html 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/tslib/tslib.es6.js 218 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/tslib/tslib.html 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
node_modules/tslib/tslib.js 284 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package-lock.json 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/activity-detail/activity-detail.acss 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/activity-detail/activity-detail.axml 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/activity-detail/activity-detail.js 79 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/goods/goods.axml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/goods/goods.js 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/goods/goods.json 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/jquery/jquery.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/mine/mine.acss 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/mine/mine.axml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/mine/mine.js 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/sponsor-signup/sponsor-signup.axml 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/sponsor-signup/sponsor-signup.js 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/sponsor-signup/sponsor-signup.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
util/help.js 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
util/http.js 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
util/md5.js 192 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.tea/entryFiles-development/config$.js
@@ -2,6 +2,7 @@
const g = typeof global !== 'undefined' ? global : self;
g.appXAppJson = {
  "app": {
    "$homepage": "pages/sponsor-signup/sponsor-signup"
    "$homepage": "pages/rewards/rewards",
    "useDynamicPlugins": true
  }
};
.tea/entryFiles-development/index$.web.js
@@ -1,17 +1,17 @@
require('@alipay/appx-compiler/lib/sjsEnvInit');
require('./config$');
require('../../node_modules/mini-ali-ui/es/loading/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/list/index?hash=e1617a0257fb9de746f60d50b03404ad924976c9');
require('../../node_modules/mini-ali-ui/es/list/auto-size-img/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/am-icon/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/list/list-item/index?hash=a5465b8c889360e3f854461d3ac41cf414aec633');
require('../../node_modules/mini-ali-ui/es/picker-item/index?hash=5a0c180d5ccf7c9d483dd4817cdab5489824013c');
require('../../app');
require('../../node_modules/mini-ali-ui/es/flex/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/flex/flex-item/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/loading/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/button/index?hash=e1617a0257fb9de746f60d50b03404ad924976c9');
require('../../node_modules/mini-ali-ui/es/am-icon/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/modal/index?hash=febd4c40992222524e0db12a74760a28f8f9b339');
require('../../node_modules/mini-ali-ui/es/notice/index?hash=5a0c180d5ccf7c9d483dd4817cdab5489824013c');
require('../../node_modules/miniapp-bc-user/es/bc-module/bc-module?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/list/index?hash=e1617a0257fb9de746f60d50b03404ad924976c9');
require('../../node_modules/mini-ali-ui/es/list/auto-size-img/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/list/list-item/index?hash=a5465b8c889360e3f854461d3ac41cf414aec633');
require('../../node_modules/mini-ali-ui/es/badge/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/mask/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/popover/index?hash=6d8aebee62dceaacd4af71bcf2a181cfc15220af');
@@ -21,22 +21,23 @@
require('../../node_modules/mini-ali-ui/es/grid/index?hash=45fe1418d25fc81c09eccb62e0568b7faa62b362');
require('../../node_modules/circle-statistic-view/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/am-switch/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../pages/sponsor-signup/sponsor-signup?hash=20dde489a4061a5579b2889ba2acc7e23b779522');
require('../../pages/advice/advice?hash=32d7d2807ed4e666ef03b4b3fe8c38ecf2e34e68');
require('../../pages/scan-record/scan-record?hash=d2c2848db0818b7a65235ff7a4451e03796136b5');
require('../../pages/rewards/rewards?hash=95ab0ede16cb1ad22ed1404bf4fb0e0873afc706');
require('../../pages/goods/goods?hash=32d7d2807ed4e666ef03b4b3fe8c38ecf2e34e68');
require('../../pages/mine/mine?hash=d479ca49a8aaa25923410044915915eb0ba6fb67');
require('../../pages/canvas/canvas?hash=32d7d2807ed4e666ef03b4b3fe8c38ecf2e34e68');
require('../../pages/activity-detail/activity-detail?hash=768e06c932dc70ff05ac6183e0331c45776096ba');
require('../../pages/reward-announcement/reward-announcement?hash=d2c2848db0818b7a65235ff7a4451e03796136b5');
require('../../pages/join-statistic/join-statistic?hash=f91084abb9cc4d6a1ab7c5f7212504dbfa35116b');
require('../../pages/assist-process/assist-process?hash=d2c2848db0818b7a65235ff7a4451e03796136b5');
require('../../pages/lucky-coupon/lucky-coupon?hash=d2c2848db0818b7a65235ff7a4451e03796136b5');
require('../../pages/web/web?hash=32d7d2807ed4e666ef03b4b3fe8c38ecf2e34e68');
require('../../pages/msg-record/msg-record?hash=5d86f384244ee40ea6500a270a121b3c10155863');
require('../../pages/assist-friends/assist-friends?hash=5d86f384244ee40ea6500a270a121b3c10155863');
require('../../pages/msg-setting/msg-setting?hash=bae612b4ae5b5e7f34a588a703442c2a3d9b953c');
require('../../pages/lucky-record/lucky-record?hash=d2c2848db0818b7a65235ff7a4451e03796136b5');
require('../../pages/template/template?hash=d2c2848db0818b7a65235ff7a4451e03796136b5');
require('../../pages/scan-record/scan-record?hash=d2c2848db0818b7a65235ff7a4451e03796136b5');
require('../../node_modules/mini-ali-ui/es/picker-item/index?hash=5a0c180d5ccf7c9d483dd4817cdab5489824013c');
require('../../pages/rewards/rewards?hash=b775c3299edccea71cc1989ff381088e71b0228f');
require('../../pages/goods/goods?hash=65adadcff52b81aaf77252ac60c693ec449caef8');
require('../../pages/mine/mine?hash=c3c7d3e16a646c4450b2732f1bcd56c7f32630ff');
require('../../pages/canvas/canvas?hash=c38b953af6bdab8fe399141b33dd1ad1ceb7ea7f');
require('../../pages/activity-detail/activity-detail?hash=3ff7dd30a3ea0de70909d48b0b8ce5bda62ef62e');
require('../../pages/reward-announcement/reward-announcement?hash=c6818e0a77e4e2f8365cc6ed1a93960827e43474');
require('../../pages/join-statistic/join-statistic?hash=96494a69a77c04a2a41944933b5875740b0d9262');
require('../../pages/assist-process/assist-process?hash=c6818e0a77e4e2f8365cc6ed1a93960827e43474');
require('../../pages/lucky-coupon/lucky-coupon?hash=c6818e0a77e4e2f8365cc6ed1a93960827e43474');
require('../../pages/web/web?hash=c38b953af6bdab8fe399141b33dd1ad1ceb7ea7f');
require('../../pages/msg-record/msg-record?hash=59bab5c4a4a4ec930e168925c97c3057ac83fa7d');
require('../../pages/assist-friends/assist-friends?hash=59bab5c4a4a4ec930e168925c97c3057ac83fa7d');
require('../../pages/msg-setting/msg-setting?hash=5f504890acbcf3bad0486fc198ac7448dd406718');
require('../../pages/lucky-record/lucky-record?hash=c6818e0a77e4e2f8365cc6ed1a93960827e43474');
require('../../pages/template/template?hash=c6818e0a77e4e2f8365cc6ed1a93960827e43474');
require('../../pages/scan-record/scan-record?hash=c6818e0a77e4e2f8365cc6ed1a93960827e43474');
require('../../pages/sponsor-signup/sponsor-signup?hash=dc20ef8880ff4618d424be68cf5d01d8a2b6ee52');
require('../../pages/advice/advice?hash=c38b953af6bdab8fe399141b33dd1ad1ceb7ea7f');
require('../../pages/scan-record/scan-record?hash=c6818e0a77e4e2f8365cc6ed1a93960827e43474');
.tea/entryFiles-development/index$.worker.js
@@ -32,17 +32,17 @@
function success() {
require('../../app');
require('../../node_modules/mini-ali-ui/es/loading/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/list/index?hash=e1617a0257fb9de746f60d50b03404ad924976c9');
require('../../node_modules/mini-ali-ui/es/list/auto-size-img/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/am-icon/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/list/list-item/index?hash=a5465b8c889360e3f854461d3ac41cf414aec633');
require('../../node_modules/mini-ali-ui/es/picker-item/index?hash=5a0c180d5ccf7c9d483dd4817cdab5489824013c');
require('../../node_modules/mini-ali-ui/es/flex/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/flex/flex-item/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/loading/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/button/index?hash=e1617a0257fb9de746f60d50b03404ad924976c9');
require('../../node_modules/mini-ali-ui/es/am-icon/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/modal/index?hash=febd4c40992222524e0db12a74760a28f8f9b339');
require('../../node_modules/mini-ali-ui/es/notice/index?hash=5a0c180d5ccf7c9d483dd4817cdab5489824013c');
require('../../node_modules/miniapp-bc-user/es/bc-module/bc-module?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/list/index?hash=e1617a0257fb9de746f60d50b03404ad924976c9');
require('../../node_modules/mini-ali-ui/es/list/auto-size-img/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/list/list-item/index?hash=a5465b8c889360e3f854461d3ac41cf414aec633');
require('../../node_modules/mini-ali-ui/es/badge/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/mask/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/popover/index?hash=6d8aebee62dceaacd4af71bcf2a181cfc15220af');
@@ -52,25 +52,26 @@
require('../../node_modules/mini-ali-ui/es/grid/index?hash=45fe1418d25fc81c09eccb62e0568b7faa62b362');
require('../../node_modules/circle-statistic-view/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/am-switch/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../pages/sponsor-signup/sponsor-signup?hash=20dde489a4061a5579b2889ba2acc7e23b779522');
require('../../pages/advice/advice?hash=32d7d2807ed4e666ef03b4b3fe8c38ecf2e34e68');
require('../../pages/scan-record/scan-record?hash=d2c2848db0818b7a65235ff7a4451e03796136b5');
require('../../pages/rewards/rewards?hash=95ab0ede16cb1ad22ed1404bf4fb0e0873afc706');
require('../../pages/goods/goods?hash=32d7d2807ed4e666ef03b4b3fe8c38ecf2e34e68');
require('../../pages/mine/mine?hash=d479ca49a8aaa25923410044915915eb0ba6fb67');
require('../../pages/canvas/canvas?hash=32d7d2807ed4e666ef03b4b3fe8c38ecf2e34e68');
require('../../pages/activity-detail/activity-detail?hash=768e06c932dc70ff05ac6183e0331c45776096ba');
require('../../pages/reward-announcement/reward-announcement?hash=d2c2848db0818b7a65235ff7a4451e03796136b5');
require('../../pages/join-statistic/join-statistic?hash=f91084abb9cc4d6a1ab7c5f7212504dbfa35116b');
require('../../pages/assist-process/assist-process?hash=d2c2848db0818b7a65235ff7a4451e03796136b5');
require('../../pages/lucky-coupon/lucky-coupon?hash=d2c2848db0818b7a65235ff7a4451e03796136b5');
require('../../pages/web/web?hash=32d7d2807ed4e666ef03b4b3fe8c38ecf2e34e68');
require('../../pages/msg-record/msg-record?hash=5d86f384244ee40ea6500a270a121b3c10155863');
require('../../pages/assist-friends/assist-friends?hash=5d86f384244ee40ea6500a270a121b3c10155863');
require('../../pages/msg-setting/msg-setting?hash=bae612b4ae5b5e7f34a588a703442c2a3d9b953c');
require('../../pages/lucky-record/lucky-record?hash=d2c2848db0818b7a65235ff7a4451e03796136b5');
require('../../pages/template/template?hash=d2c2848db0818b7a65235ff7a4451e03796136b5');
require('../../pages/scan-record/scan-record?hash=d2c2848db0818b7a65235ff7a4451e03796136b5');
require('../../node_modules/mini-ali-ui/es/picker-item/index?hash=5a0c180d5ccf7c9d483dd4817cdab5489824013c');
require('../../pages/rewards/rewards?hash=b775c3299edccea71cc1989ff381088e71b0228f');
require('../../pages/goods/goods?hash=65adadcff52b81aaf77252ac60c693ec449caef8');
require('../../pages/mine/mine?hash=c3c7d3e16a646c4450b2732f1bcd56c7f32630ff');
require('../../pages/canvas/canvas?hash=c38b953af6bdab8fe399141b33dd1ad1ceb7ea7f');
require('../../pages/activity-detail/activity-detail?hash=3ff7dd30a3ea0de70909d48b0b8ce5bda62ef62e');
require('../../pages/reward-announcement/reward-announcement?hash=c6818e0a77e4e2f8365cc6ed1a93960827e43474');
require('../../pages/join-statistic/join-statistic?hash=96494a69a77c04a2a41944933b5875740b0d9262');
require('../../pages/assist-process/assist-process?hash=c6818e0a77e4e2f8365cc6ed1a93960827e43474');
require('../../pages/lucky-coupon/lucky-coupon?hash=c6818e0a77e4e2f8365cc6ed1a93960827e43474');
require('../../pages/web/web?hash=c38b953af6bdab8fe399141b33dd1ad1ceb7ea7f');
require('../../pages/msg-record/msg-record?hash=59bab5c4a4a4ec930e168925c97c3057ac83fa7d');
require('../../pages/assist-friends/assist-friends?hash=59bab5c4a4a4ec930e168925c97c3057ac83fa7d');
require('../../pages/msg-setting/msg-setting?hash=5f504890acbcf3bad0486fc198ac7448dd406718');
require('../../pages/lucky-record/lucky-record?hash=c6818e0a77e4e2f8365cc6ed1a93960827e43474');
require('../../pages/template/template?hash=c6818e0a77e4e2f8365cc6ed1a93960827e43474');
require('../../pages/scan-record/scan-record?hash=c6818e0a77e4e2f8365cc6ed1a93960827e43474');
require('../../pages/sponsor-signup/sponsor-signup?hash=dc20ef8880ff4618d424be68cf5d01d8a2b6ee52');
require('../../pages/advice/advice?hash=c38b953af6bdab8fe399141b33dd1ad1ceb7ea7f');
require('../../pages/scan-record/scan-record?hash=c6818e0a77e4e2f8365cc6ed1a93960827e43474');
}
self.bootstrapApp ? self.bootstrapApp({ success }) : success();
}
.tea/entryFiles-production/config$.js
@@ -2,6 +2,7 @@
const g = typeof global !== 'undefined' ? global : self;
g.appXAppJson = {
  "app": {
    "$homepage": "pages/rewards/rewards"
    "$homepage": "pages/rewards/rewards",
    "useDynamicPlugins": true
  }
};
.tea/entryFiles-production/index$.web.js
@@ -1,6 +1,6 @@
require('@alipay/appx-compiler/lib/sjsEnvInit');
require('./config$');
require('../../app');
require('../../node_modules/mini-ali-ui/es/flex/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/flex/flex-item/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/loading/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
@@ -8,6 +8,7 @@
require('../../node_modules/mini-ali-ui/es/am-icon/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/modal/index?hash=febd4c40992222524e0db12a74760a28f8f9b339');
require('../../node_modules/mini-ali-ui/es/notice/index?hash=5a0c180d5ccf7c9d483dd4817cdab5489824013c');
require('../../node_modules/miniapp-bc-user/es/bc-module/bc-module?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/list/index?hash=e1617a0257fb9de746f60d50b03404ad924976c9');
require('../../node_modules/mini-ali-ui/es/list/auto-size-img/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/list/list-item/index?hash=a5465b8c889360e3f854461d3ac41cf414aec633');
@@ -20,18 +21,23 @@
require('../../node_modules/mini-ali-ui/es/grid/index?hash=45fe1418d25fc81c09eccb62e0568b7faa62b362');
require('../../node_modules/circle-statistic-view/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/am-switch/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../pages/rewards/rewards?hash=95ab0ede16cb1ad22ed1404bf4fb0e0873afc706');
require('../../pages/goods/goods?hash=32d7d2807ed4e666ef03b4b3fe8c38ecf2e34e68');
require('../../pages/mine/mine?hash=d479ca49a8aaa25923410044915915eb0ba6fb67');
require('../../pages/canvas/canvas?hash=32d7d2807ed4e666ef03b4b3fe8c38ecf2e34e68');
require('../../pages/activity-detail/activity-detail?hash=768e06c932dc70ff05ac6183e0331c45776096ba');
require('../../pages/reward-announcement/reward-announcement?hash=d2c2848db0818b7a65235ff7a4451e03796136b5');
require('../../pages/join-statistic/join-statistic?hash=f91084abb9cc4d6a1ab7c5f7212504dbfa35116b');
require('../../pages/assist-process/assist-process?hash=d2c2848db0818b7a65235ff7a4451e03796136b5');
require('../../pages/lucky-coupon/lucky-coupon?hash=d2c2848db0818b7a65235ff7a4451e03796136b5');
require('../../pages/web/web?hash=32d7d2807ed4e666ef03b4b3fe8c38ecf2e34e68');
require('../../pages/msg-record/msg-record?hash=5d86f384244ee40ea6500a270a121b3c10155863');
require('../../pages/assist-friends/assist-friends?hash=5d86f384244ee40ea6500a270a121b3c10155863');
require('../../pages/msg-setting/msg-setting?hash=bae612b4ae5b5e7f34a588a703442c2a3d9b953c');
require('../../pages/lucky-record/lucky-record?hash=d2c2848db0818b7a65235ff7a4451e03796136b5');
require('../../pages/template/template?hash=d2c2848db0818b7a65235ff7a4451e03796136b5');
require('../../node_modules/mini-ali-ui/es/picker-item/index?hash=5a0c180d5ccf7c9d483dd4817cdab5489824013c');
require('../../pages/rewards/rewards?hash=b775c3299edccea71cc1989ff381088e71b0228f');
require('../../pages/goods/goods?hash=65adadcff52b81aaf77252ac60c693ec449caef8');
require('../../pages/mine/mine?hash=c3c7d3e16a646c4450b2732f1bcd56c7f32630ff');
require('../../pages/canvas/canvas?hash=c38b953af6bdab8fe399141b33dd1ad1ceb7ea7f');
require('../../pages/activity-detail/activity-detail?hash=3ff7dd30a3ea0de70909d48b0b8ce5bda62ef62e');
require('../../pages/reward-announcement/reward-announcement?hash=c6818e0a77e4e2f8365cc6ed1a93960827e43474');
require('../../pages/join-statistic/join-statistic?hash=96494a69a77c04a2a41944933b5875740b0d9262');
require('../../pages/assist-process/assist-process?hash=c6818e0a77e4e2f8365cc6ed1a93960827e43474');
require('../../pages/lucky-coupon/lucky-coupon?hash=c6818e0a77e4e2f8365cc6ed1a93960827e43474');
require('../../pages/web/web?hash=c38b953af6bdab8fe399141b33dd1ad1ceb7ea7f');
require('../../pages/msg-record/msg-record?hash=59bab5c4a4a4ec930e168925c97c3057ac83fa7d');
require('../../pages/assist-friends/assist-friends?hash=59bab5c4a4a4ec930e168925c97c3057ac83fa7d');
require('../../pages/msg-setting/msg-setting?hash=5f504890acbcf3bad0486fc198ac7448dd406718');
require('../../pages/lucky-record/lucky-record?hash=c6818e0a77e4e2f8365cc6ed1a93960827e43474');
require('../../pages/template/template?hash=c6818e0a77e4e2f8365cc6ed1a93960827e43474');
require('../../pages/scan-record/scan-record?hash=c6818e0a77e4e2f8365cc6ed1a93960827e43474');
require('../../pages/sponsor-signup/sponsor-signup?hash=dc20ef8880ff4618d424be68cf5d01d8a2b6ee52');
require('../../pages/advice/advice?hash=c38b953af6bdab8fe399141b33dd1ad1ceb7ea7f');
require('../../pages/scan-record/scan-record?hash=c6818e0a77e4e2f8365cc6ed1a93960827e43474');
.tea/entryFiles-production/index$.worker.js
@@ -37,6 +37,7 @@
require('../../node_modules/mini-ali-ui/es/am-icon/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/modal/index?hash=febd4c40992222524e0db12a74760a28f8f9b339');
require('../../node_modules/mini-ali-ui/es/notice/index?hash=5a0c180d5ccf7c9d483dd4817cdab5489824013c');
require('../../node_modules/miniapp-bc-user/es/bc-module/bc-module?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/list/index?hash=e1617a0257fb9de746f60d50b03404ad924976c9');
require('../../node_modules/mini-ali-ui/es/list/auto-size-img/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/list/list-item/index?hash=a5465b8c889360e3f854461d3ac41cf414aec633');
@@ -49,21 +50,26 @@
require('../../node_modules/mini-ali-ui/es/grid/index?hash=45fe1418d25fc81c09eccb62e0568b7faa62b362');
require('../../node_modules/circle-statistic-view/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../node_modules/mini-ali-ui/es/am-switch/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43');
require('../../pages/rewards/rewards?hash=95ab0ede16cb1ad22ed1404bf4fb0e0873afc706');
require('../../pages/goods/goods?hash=32d7d2807ed4e666ef03b4b3fe8c38ecf2e34e68');
require('../../pages/mine/mine?hash=d479ca49a8aaa25923410044915915eb0ba6fb67');
require('../../pages/canvas/canvas?hash=32d7d2807ed4e666ef03b4b3fe8c38ecf2e34e68');
require('../../pages/activity-detail/activity-detail?hash=768e06c932dc70ff05ac6183e0331c45776096ba');
require('../../pages/reward-announcement/reward-announcement?hash=d2c2848db0818b7a65235ff7a4451e03796136b5');
require('../../pages/join-statistic/join-statistic?hash=f91084abb9cc4d6a1ab7c5f7212504dbfa35116b');
require('../../pages/assist-process/assist-process?hash=d2c2848db0818b7a65235ff7a4451e03796136b5');
require('../../pages/lucky-coupon/lucky-coupon?hash=d2c2848db0818b7a65235ff7a4451e03796136b5');
require('../../pages/web/web?hash=32d7d2807ed4e666ef03b4b3fe8c38ecf2e34e68');
require('../../pages/msg-record/msg-record?hash=5d86f384244ee40ea6500a270a121b3c10155863');
require('../../pages/assist-friends/assist-friends?hash=5d86f384244ee40ea6500a270a121b3c10155863');
require('../../pages/msg-setting/msg-setting?hash=bae612b4ae5b5e7f34a588a703442c2a3d9b953c');
require('../../pages/lucky-record/lucky-record?hash=d2c2848db0818b7a65235ff7a4451e03796136b5');
require('../../pages/template/template?hash=d2c2848db0818b7a65235ff7a4451e03796136b5');
require('../../node_modules/mini-ali-ui/es/picker-item/index?hash=5a0c180d5ccf7c9d483dd4817cdab5489824013c');
require('../../pages/rewards/rewards?hash=b775c3299edccea71cc1989ff381088e71b0228f');
require('../../pages/goods/goods?hash=65adadcff52b81aaf77252ac60c693ec449caef8');
require('../../pages/mine/mine?hash=c3c7d3e16a646c4450b2732f1bcd56c7f32630ff');
require('../../pages/canvas/canvas?hash=c38b953af6bdab8fe399141b33dd1ad1ceb7ea7f');
require('../../pages/activity-detail/activity-detail?hash=3ff7dd30a3ea0de70909d48b0b8ce5bda62ef62e');
require('../../pages/reward-announcement/reward-announcement?hash=c6818e0a77e4e2f8365cc6ed1a93960827e43474');
require('../../pages/join-statistic/join-statistic?hash=96494a69a77c04a2a41944933b5875740b0d9262');
require('../../pages/assist-process/assist-process?hash=c6818e0a77e4e2f8365cc6ed1a93960827e43474');
require('../../pages/lucky-coupon/lucky-coupon?hash=c6818e0a77e4e2f8365cc6ed1a93960827e43474');
require('../../pages/web/web?hash=c38b953af6bdab8fe399141b33dd1ad1ceb7ea7f');
require('../../pages/msg-record/msg-record?hash=59bab5c4a4a4ec930e168925c97c3057ac83fa7d');
require('../../pages/assist-friends/assist-friends?hash=59bab5c4a4a4ec930e168925c97c3057ac83fa7d');
require('../../pages/msg-setting/msg-setting?hash=5f504890acbcf3bad0486fc198ac7448dd406718');
require('../../pages/lucky-record/lucky-record?hash=c6818e0a77e4e2f8365cc6ed1a93960827e43474');
require('../../pages/template/template?hash=c6818e0a77e4e2f8365cc6ed1a93960827e43474');
require('../../pages/scan-record/scan-record?hash=c6818e0a77e4e2f8365cc6ed1a93960827e43474');
require('../../pages/sponsor-signup/sponsor-signup?hash=dc20ef8880ff4618d424be68cf5d01d8a2b6ee52');
require('../../pages/advice/advice?hash=c38b953af6bdab8fe399141b33dd1ad1ceb7ea7f');
require('../../pages/scan-record/scan-record?hash=c6818e0a77e4e2f8365cc6ed1a93960827e43474');
}
self.bootstrapApp ? self.bootstrapApp({ success }) : success();
}
app.js
@@ -1,11 +1,12 @@
var help = require('./util/help.js');
App({
  themeColor:"#0080FF",
  themeColor: "#0080FF",
  appKey: '100001',
  onLaunch(options) {
    // 第一次打开
    // options.query == {number:1}
    console.info('App onLaunch');
     my.hideFavoriteMenu();
    my.hideFavoriteMenu();
  },
  onShow(options) {
    // 从后台被 scheme 重新打开
app.json
@@ -1,8 +1,6 @@
{
  "useDynamicPlugins": true,
  "pages": [
    "pages/sponsor-signup/sponsor-signup",
    "pages/advice/advice",
    "pages/scan-record/scan-record",
    "pages/rewards/rewards",
    "pages/goods/goods",
    "pages/mine/mine",
@@ -18,6 +16,9 @@
    "pages/msg-setting/msg-setting",
    "pages/lucky-record/lucky-record",
    "pages/template/template",
    "pages/scan-record/scan-record",
    "pages/sponsor-signup/sponsor-signup",
    "pages/advice/advice",
    "pages/scan-record/scan-record"
  ],
  "window": {
node_modules/domelementtype/LICENSE
New file
@@ -0,0 +1,11 @@
Copyright (c) Felix Böhm
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
node_modules/domelementtype/index.js
New file
@@ -0,0 +1,15 @@
//Types of elements found in the DOM
module.exports = {
    Text: "text", //Text
    Directive: "directive", //<? ... ?>
    Comment: "comment", //<!-- ... -->
    Script: "script", //<script> tags
    Style: "style", //<style> tags
    Tag: "tag", //Any tag
    CDATA: "cdata", //<![CDATA[ ... ]]>
    Doctype: "doctype",
    isTag: function(elem){
        return elem.type === "tag" || elem.type === "script" || elem.type === "style";
    }
};
node_modules/domelementtype/package.json
New file
@@ -0,0 +1,48 @@
{
  "_from": "domelementtype@1",
  "_id": "domelementtype@1.3.1",
  "_inBundle": false,
  "_integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
  "_location": "/domelementtype",
  "_phantomChildren": {},
  "_requested": {
    "type": "range",
    "registry": true,
    "raw": "domelementtype@1",
    "name": "domelementtype",
    "escapedName": "domelementtype",
    "rawSpec": "1",
    "saveSpec": null,
    "fetchSpec": "1"
  },
  "_requiredBy": [
    "/domhandler"
  ],
  "_resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
  "_shasum": "d048c44b37b0d10a7f2a3d5fee3f4333d790481f",
  "_spec": "domelementtype@1",
  "_where": "D:\\workspace\\zfb\\MiniProjects\\DayLucky\\node_modules\\domhandler",
  "author": {
    "name": "Felix Boehm",
    "email": "me@feedic.com"
  },
  "bugs": {
    "url": "https://github.com/fb55/domelementtype/issues"
  },
  "bundleDependencies": false,
  "deprecated": false,
  "description": "all the types of nodes in htmlparser2's dom",
  "homepage": "https://github.com/fb55/domelementtype#readme",
  "keywords": [
    "dom",
    "htmlparser2"
  ],
  "license": "BSD-2-Clause",
  "main": "index.js",
  "name": "domelementtype",
  "repository": {
    "type": "git",
    "url": "git://github.com/fb55/domelementtype.git"
  },
  "version": "1.3.1"
}
node_modules/domelementtype/readme.md
New file
@@ -0,0 +1 @@
all the types of nodes in htmlparser2's dom
node_modules/domhandler/.travis.yml
New file
@@ -0,0 +1,6 @@
before_install:
  - '[ "${TRAVIS_NODE_VERSION}" != "0.8" ] || npm install -g npm@1.4.28'
  - npm install -g npm@latest
language: node_js
node_js:
  - 8
node_modules/domhandler/LICENSE
New file
@@ -0,0 +1,11 @@
Copyright (c) Felix Böhm
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
node_modules/domhandler/index.js
New file
@@ -0,0 +1,217 @@
var ElementType = require("domelementtype");
var re_whitespace = /\s+/g;
var NodePrototype = require("./lib/node");
var ElementPrototype = require("./lib/element");
function DomHandler(callback, options, elementCB){
    if(typeof callback === "object"){
        elementCB = options;
        options = callback;
        callback = null;
    } else if(typeof options === "function"){
        elementCB = options;
        options = defaultOpts;
    }
    this._callback = callback;
    this._options = options || defaultOpts;
    this._elementCB = elementCB;
    this.dom = [];
    this._done = false;
    this._tagStack = [];
    this._parser = this._parser || null;
}
//default options
var defaultOpts = {
    normalizeWhitespace: false, //Replace all whitespace with single spaces
    withStartIndices: false, //Add startIndex properties to nodes
    withEndIndices: false, //Add endIndex properties to nodes
};
DomHandler.prototype.onparserinit = function(parser){
    this._parser = parser;
};
//Resets the handler back to starting state
DomHandler.prototype.onreset = function(){
    DomHandler.call(this, this._callback, this._options, this._elementCB);
};
//Signals the handler that parsing is done
DomHandler.prototype.onend = function(){
    if(this._done) return;
    this._done = true;
    this._parser = null;
    this._handleCallback(null);
};
DomHandler.prototype._handleCallback =
DomHandler.prototype.onerror = function(error){
    if(typeof this._callback === "function"){
        this._callback(error, this.dom);
    } else {
        if(error) throw error;
    }
};
DomHandler.prototype.onclosetag = function(){
    //if(this._tagStack.pop().name !== name) this._handleCallback(Error("Tagname didn't match!"));
    var elem = this._tagStack.pop();
    if(this._options.withEndIndices && elem){
        elem.endIndex = this._parser.endIndex;
    }
    if(this._elementCB) this._elementCB(elem);
};
DomHandler.prototype._createDomElement = function(properties){
    if (!this._options.withDomLvl1) return properties;
    var element;
    if (properties.type === "tag") {
        element = Object.create(ElementPrototype);
    } else {
        element = Object.create(NodePrototype);
    }
    for (var key in properties) {
        if (properties.hasOwnProperty(key)) {
            element[key] = properties[key];
        }
    }
    return element;
};
DomHandler.prototype._addDomElement = function(element){
    var parent = this._tagStack[this._tagStack.length - 1];
    var siblings = parent ? parent.children : this.dom;
    var previousSibling = siblings[siblings.length - 1];
    element.next = null;
    if(this._options.withStartIndices){
        element.startIndex = this._parser.startIndex;
    }
    if(this._options.withEndIndices){
        element.endIndex = this._parser.endIndex;
    }
    if(previousSibling){
        element.prev = previousSibling;
        previousSibling.next = element;
    } else {
        element.prev = null;
    }
    siblings.push(element);
    element.parent = parent || null;
};
DomHandler.prototype.onopentag = function(name, attribs){
    var properties = {
        type: name === "script" ? ElementType.Script : name === "style" ? ElementType.Style : ElementType.Tag,
        name: name,
        attribs: attribs,
        children: []
    };
    var element = this._createDomElement(properties);
    this._addDomElement(element);
    this._tagStack.push(element);
};
DomHandler.prototype.ontext = function(data){
    //the ignoreWhitespace is officially dropped, but for now,
    //it's an alias for normalizeWhitespace
    var normalize = this._options.normalizeWhitespace || this._options.ignoreWhitespace;
    var lastTag;
    if(!this._tagStack.length && this.dom.length && (lastTag = this.dom[this.dom.length-1]).type === ElementType.Text){
        if(normalize){
            lastTag.data = (lastTag.data + data).replace(re_whitespace, " ");
        } else {
            lastTag.data += data;
        }
    } else {
        if(
            this._tagStack.length &&
            (lastTag = this._tagStack[this._tagStack.length - 1]) &&
            (lastTag = lastTag.children[lastTag.children.length - 1]) &&
            lastTag.type === ElementType.Text
        ){
            if(normalize){
                lastTag.data = (lastTag.data + data).replace(re_whitespace, " ");
            } else {
                lastTag.data += data;
            }
        } else {
            if(normalize){
                data = data.replace(re_whitespace, " ");
            }
            var element = this._createDomElement({
                data: data,
                type: ElementType.Text
            });
            this._addDomElement(element);
        }
    }
};
DomHandler.prototype.oncomment = function(data){
    var lastTag = this._tagStack[this._tagStack.length - 1];
    if(lastTag && lastTag.type === ElementType.Comment){
        lastTag.data += data;
        return;
    }
    var properties = {
        data: data,
        type: ElementType.Comment
    };
    var element = this._createDomElement(properties);
    this._addDomElement(element);
    this._tagStack.push(element);
};
DomHandler.prototype.oncdatastart = function(){
    var properties = {
        children: [{
            data: "",
            type: ElementType.Text
        }],
        type: ElementType.CDATA
    };
    var element = this._createDomElement(properties);
    this._addDomElement(element);
    this._tagStack.push(element);
};
DomHandler.prototype.oncommentend = DomHandler.prototype.oncdataend = function(){
    this._tagStack.pop();
};
DomHandler.prototype.onprocessinginstruction = function(name, data){
    var element = this._createDomElement({
        name: name,
        data: data,
        type: ElementType.Directive
    });
    this._addDomElement(element);
};
module.exports = DomHandler;
node_modules/domhandler/lib/element.js
New file
@@ -0,0 +1,20 @@
// DOM-Level-1-compliant structure
var NodePrototype = require('./node');
var ElementPrototype = module.exports = Object.create(NodePrototype);
var domLvl1 = {
    tagName: "name"
};
Object.keys(domLvl1).forEach(function(key) {
    var shorthand = domLvl1[key];
    Object.defineProperty(ElementPrototype, key, {
        get: function() {
            return this[shorthand] || null;
        },
        set: function(val) {
            this[shorthand] = val;
            return val;
        }
    });
});
node_modules/domhandler/lib/node.js
New file
@@ -0,0 +1,44 @@
// This object will be used as the prototype for Nodes when creating a
// DOM-Level-1-compliant structure.
var NodePrototype = module.exports = {
    get firstChild() {
        var children = this.children;
        return children && children[0] || null;
    },
    get lastChild() {
        var children = this.children;
        return children && children[children.length - 1] || null;
    },
    get nodeType() {
        return nodeTypes[this.type] || nodeTypes.element;
    }
};
var domLvl1 = {
    tagName: "name",
    childNodes: "children",
    parentNode: "parent",
    previousSibling: "prev",
    nextSibling: "next",
    nodeValue: "data"
};
var nodeTypes = {
    element: 1,
    text: 3,
    cdata: 4,
    comment: 8
};
Object.keys(domLvl1).forEach(function(key) {
    var shorthand = domLvl1[key];
    Object.defineProperty(NodePrototype, key, {
        get: function() {
            return this[shorthand] || null;
        },
        set: function(val) {
            this[shorthand] = val;
            return val;
        }
    });
});
node_modules/domhandler/package.json
New file
@@ -0,0 +1,73 @@
{
  "_from": "domhandler@^2.4.2",
  "_id": "domhandler@2.4.2",
  "_inBundle": false,
  "_integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
  "_location": "/domhandler",
  "_phantomChildren": {},
  "_requested": {
    "type": "range",
    "registry": true,
    "raw": "domhandler@^2.4.2",
    "name": "domhandler",
    "escapedName": "domhandler",
    "rawSpec": "^2.4.2",
    "saveSpec": null,
    "fetchSpec": "^2.4.2"
  },
  "_requiredBy": [
    "/mini-html-parser2"
  ],
  "_resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
  "_shasum": "8805097e933d65e85546f726d60f5eb88b44f803",
  "_spec": "domhandler@^2.4.2",
  "_where": "D:\\workspace\\zfb\\MiniProjects\\DayLucky\\node_modules\\mini-html-parser2",
  "author": {
    "name": "Felix Boehm",
    "email": "me@feedic.com"
  },
  "bugs": {
    "url": "https://github.com/fb55/DomHandler/issues"
  },
  "bundleDependencies": false,
  "dependencies": {
    "domelementtype": "1"
  },
  "deprecated": false,
  "description": "handler for htmlparser2 that turns pages into a dom",
  "devDependencies": {
    "htmlparser2": "^3.9.0",
    "jshint": "^2.9.1",
    "mocha": "^3.0.2"
  },
  "directories": {
    "test": "tests"
  },
  "homepage": "https://github.com/fb55/DomHandler#readme",
  "jshintConfig": {
    "quotmark": "double",
    "trailing": true,
    "unused": true,
    "undef": true,
    "node": true,
    "proto": true,
    "globals": {
      "it": true
    }
  },
  "keywords": [
    "dom",
    "htmlparser2"
  ],
  "license": "BSD-2-Clause",
  "main": "index.js",
  "name": "domhandler",
  "repository": {
    "type": "git",
    "url": "git://github.com/fb55/DomHandler.git"
  },
  "scripts": {
    "test": "mocha -R list && jshint index.js test/"
  },
  "version": "2.4.2"
}
node_modules/domhandler/readme.md
New file
@@ -0,0 +1,116 @@
# domhandler [![Build Status](https://travis-ci.org/fb55/domhandler.svg?branch=master)](https://travis-ci.org/fb55/domhandler)
The DOM handler (formally known as DefaultHandler) creates a tree containing all nodes of a page. The tree may be manipulated using the [domutils](https://github.com/fb55/domutils) library.
## Usage
```javascript
var handler = new DomHandler([ <func> callback(err, dom), ] [ <obj> options ]);
// var parser = new Parser(handler[, options]);
```
Available options are described below.
## Example
```javascript
var htmlparser = require("htmlparser2");
var rawHtml = "Xyz <script language= javascript>var foo = '<<bar>>';< /  script><!--<!-- Waah! -- -->";
var handler = new htmlparser.DomHandler(function (error, dom) {
    if (error)
        [...do something for errors...]
    else
        [...parsing done, do something...]
        console.log(dom);
});
var parser = new htmlparser.Parser(handler);
parser.write(rawHtml);
parser.end();
```
Output:
```javascript
[{
    data: 'Xyz ',
    type: 'text'
}, {
    type: 'script',
    name: 'script',
    attribs: {
        language: 'javascript'
    },
    children: [{
        data: 'var foo = \'<bar>\';<',
        type: 'text'
    }]
}, {
    data: '<!-- Waah! -- ',
    type: 'comment'
}]
```
## Option: normalizeWhitespace
Indicates whether the whitespace in text nodes should be normalized (= all whitespace should be replaced with single spaces). The default value is "false".
The following HTML will be used:
```html
<font>
    <br>this is the text
<font>
```
### Example: true
```javascript
[{
    type: 'tag',
    name: 'font',
    children: [{
        data: ' ',
        type: 'text'
    }, {
        type: 'tag',
        name: 'br'
    }, {
        data: 'this is the text ',
        type: 'text'
    }, {
        type: 'tag',
        name: 'font'
    }]
}]
```
### Example: false
```javascript
[{
    type: 'tag',
    name: 'font',
    children: [{
        data: '\n\t',
        type: 'text'
    }, {
        type: 'tag',
        name: 'br'
    }, {
        data: 'this is the text\n',
        type: 'text'
    }, {
        type: 'tag',
        name: 'font'
    }]
}]
```
## Option: withDomLvl1
Adds DOM level 1 properties to all elements.
<!-- TODO: description -->
## Option: withStartIndices
Indicates whether a `startIndex` property will be added to nodes. When the parser is used in a non-streaming fashion, `startIndex` is an integer indicating the position of the start of the node in the document. The default value is "false".
## Option: withEndIndices
Indicates whether a `endIndex` property will be added to nodes. When the parser is used in a non-streaming fashion, `endIndex` is an integer indicating the position of the end of the node in the document. The default value is "false".
node_modules/domhandler/test/cases/01-basic.json
New file
@@ -0,0 +1,57 @@
{
  "name": "Basic test",
  "options": {},
  "html": "<!DOCTYPE html><html><title>The Title</title><body>Hello world</body></html>",
  "expected": [
    {
      "name": "!doctype",
      "data": "!DOCTYPE html",
      "type": "directive"
    },
    {
      "type": "tag",
      "name": "html",
      "attribs": {},
      "parent": null,
      "children": [
        {
          "type": "tag",
          "name": "title",
          "attribs": {},
          "parent": {
            "type": "tag",
            "name": "html",
            "attribs": {}
          },
          "children": [
            {
              "data": "The Title",
              "type": "text",
              "parent": {
                "type": "tag",
                "name": "title",
                "attribs": {}
              }
            }
          ]
        },
        {
          "type": "tag",
          "name": "body",
          "attribs": {},
          "children": [
            {
              "data": "Hello world",
              "type": "text"
            }
          ],
          "prev": {
              "type": "tag",
              "name": "title",
              "attribs": {}
          }
        }
      ]
    }
  ]
}
node_modules/domhandler/test/cases/02-single_tag_1.json
New file
@@ -0,0 +1,21 @@
{
  "name": "Single Tag 1",
  "options": {},
  "html": "<br>text</br>",
  "expected": [
    {
      "type": "tag",
      "name": "br",
      "attribs": {}
    },
    {
      "data": "text",
      "type": "text"
    },
    {
      "type": "tag",
      "name": "br",
      "attribs": {}
    }
  ]
}
node_modules/domhandler/test/cases/03-single_tag_2.json
New file
@@ -0,0 +1,21 @@
{
  "name": "Single Tag 2",
  "options": {},
  "html": "<br>text<br>",
  "expected": [
    {
      "type": "tag",
      "name": "br",
      "attribs": {}
    },
    {
      "data": "text",
      "type": "text"
    },
    {
      "type": "tag",
      "name": "br",
      "attribs": {}
    }
  ]
}
node_modules/domhandler/test/cases/04-unescaped_in_script.json
New file
@@ -0,0 +1,27 @@
{
  "name": "Unescaped chars in script",
  "options": {},
  "html": "<head><script language=\"Javascript\">var foo = \"<bar>\"; alert(2 > foo); var baz = 10 << 2; var zip = 10 >> 1; var yap = \"<<>>>><<\";</script></head>",
  "expected": [
    {
      "type": "tag",
      "name": "head",
      "attribs": {},
      "children": [
        {
          "type": "script",
          "name": "script",
          "attribs": {
            "language": "Javascript"
          },
          "children": [
            {
              "data": "var foo = \"<bar>\"; alert(2 > foo); var baz = 10 << 2; var zip = 10 >> 1; var yap = \"<<>>>><<\";",
              "type": "text"
            }
          ]
        }
      ]
    }
  ]
}
node_modules/domhandler/test/cases/05-tags_in_comment.json
New file
@@ -0,0 +1,18 @@
{
  "name": "Special char in comment",
  "options": {},
  "html": "<head><!-- commented out tags <title>Test</title>--></head>",
  "expected": [
    {
      "type": "tag",
      "name": "head",
      "attribs": {},
      "children": [
        {
          "data": " commented out tags <title>Test</title>",
          "type": "comment"
        }
      ]
    }
  ]
}
node_modules/domhandler/test/cases/06-comment_in_script.json
New file
@@ -0,0 +1,18 @@
{
  "name": "Script source in comment",
  "options": {},
  "html": "<script><!--var foo = 1;--></script>",
  "expected": [
    {
      "type": "script",
      "name": "script",
      "attribs": {},
      "children": [
        {
          "data": "<!--var foo = 1;-->",
          "type": "text"
        }
      ]
    }
  ]
}
node_modules/domhandler/test/cases/07-unescaped_in_style.json
New file
@@ -0,0 +1,20 @@
{
  "name": "Unescaped chars in style",
  "options": {},
  "html": "<style type=\"text/css\">\n body > p\n\t{ font-weight: bold; }</style>",
  "expected": [
    {
      "type": "style",
      "name": "style",
      "attribs": {
        "type": "text/css"
      },
      "children": [
        {
          "data": "\n body > p\n\t{ font-weight: bold; }",
          "type": "text"
        }
      ]
    }
  ]
}
node_modules/domhandler/test/cases/08-extra_spaces_in_tag.json
New file
@@ -0,0 +1,20 @@
{
  "name": "Extra spaces in tag",
  "options": {},
  "html": "<font\t\n size='14' \n>the text</\t\nfont\t \n>",
  "expected": [
    {
      "type": "tag",
      "name": "font",
      "attribs": {
        "size": "14"
      },
      "children": [
        {
          "data": "the text",
          "type": "text"
        }
      ]
    }
  ]
}
node_modules/domhandler/test/cases/09-unquoted_attrib.json
New file
@@ -0,0 +1,20 @@
{
  "name": "Unquoted attributes",
  "options": {},
  "html": "<font size= 14>the text</font>",
  "expected": [
    {
      "type": "tag",
      "name": "font",
      "attribs": {
        "size": "14"
      },
      "children": [
        {
          "data": "the text",
          "type": "text"
        }
      ]
    }
  ]
}
node_modules/domhandler/test/cases/10-singular_attribute.json
New file
@@ -0,0 +1,15 @@
{
  "name": "Singular attribute",
  "options": {},
  "html": "<option value='foo' selected>",
  "expected": [
    {
      "type": "tag",
      "name": "option",
      "attribs": {
        "value": "foo",
        "selected": ""
      }
    }
  ]
}
node_modules/domhandler/test/cases/11-text_outside_tags.json
New file
@@ -0,0 +1,40 @@
{
  "name": "Text outside tags",
  "options": {},
  "html": "Line one\n<br>\nline two",
  "expected": [
    {
      "data": "Line one\n",
      "type": "text",
      "prev": null,
      "next": {
        "type": "tag",
        "name": "br",
        "attribs": {}
      }
    },
    {
      "type": "tag",
      "name": "br",
      "attribs": {},
      "prev": {
        "data": "Line one\n",
        "type": "text"
      },
      "next": {
        "data": "\nline two",
        "type": "text"
      }
    },
    {
      "data": "\nline two",
      "type": "text",
      "prev": {
        "type": "tag",
        "name": "br",
        "attribs": {}
      },
      "next": null
    }
  ]
}
node_modules/domhandler/test/cases/12-text_only.json
New file
@@ -0,0 +1,11 @@
{
  "name": "Only text",
  "options": {},
  "html": "this is the text",
  "expected": [
    {
      "data": "this is the text",
      "type": "text"
    }
  ]
}
node_modules/domhandler/test/cases/13-comment_in_text.json
New file
@@ -0,0 +1,19 @@
{
  "name": "Comment within text",
  "options": {},
  "html": "this is <!-- the comment --> the text",
  "expected": [
    {
      "data": "this is ",
      "type": "text"
    },
    {
      "data": " the comment ",
      "type": "comment"
    },
    {
      "data": " the text",
      "type": "text"
    }
  ]
}
node_modules/domhandler/test/cases/14-comment_in_text_in_script.json
New file
@@ -0,0 +1,18 @@
{
  "name": "Comment within text within script",
  "options": {},
  "html": "<script>this is <!-- the comment --> the text</script>",
  "expected": [
    {
      "type": "script",
      "name": "script",
      "attribs": {},
      "children": [
        {
          "data": "this is <!-- the comment --> the text",
          "type": "text"
        }
      ]
    }
  ]
}
node_modules/domhandler/test/cases/15-non-verbose.json
New file
@@ -0,0 +1,22 @@
{
  "name": "Option 'verbose' set to 'false'",
  "options": {
    "verbose": false
  },
  "html": "<font\t\n size='14' \n>the text</\t\nfont\t \n>",
  "expected": [
    {
      "type": "tag",
      "name": "font",
      "attribs": {
        "size": "14"
      },
      "children": [
        {
          "data": "the text",
          "type": "text"
        }
      ]
    }
  ]
}
node_modules/domhandler/test/cases/16-normalize_whitespace.json
New file
@@ -0,0 +1,47 @@
{
  "name": "Normalize whitespace",
  "options": {
    "normalizeWhitespace": true
  },
  "html": "Line one\n<br>\t  \r\n\f  <br>\nline two<font><br> x </font>",
  "expected": [
    {
      "data": "Line one ",
      "type": "text"
    },
    {
      "type": "tag",
      "name": "br",
      "attribs": {}
    },
    {
      "data": " ",
      "type": "text"
    },
    {
      "type": "tag",
      "name": "br",
      "attribs": {}
    },
    {
      "data": " line two",
      "type": "text"
    },
    {
      "type": "tag",
      "name": "font",
      "attribs": {},
      "children": [
        {
          "type": "tag",
          "name": "br",
          "attribs": {}
        },
        {
          "data": " x ",
          "type": "text"
        }
      ]
    }
  ]
}
node_modules/domhandler/test/cases/17-xml_namespace.json
New file
@@ -0,0 +1,18 @@
{
  "name": "XML Namespace",
  "options": {},
  "html": "<ns:tag>text</ns:tag>",
  "expected": [
    {
      "type": "tag",
      "name": "ns:tag",
      "attribs": {},
      "children": [
        {
          "data": "text",
          "type": "text"
        }
      ]
    }
  ]
}
node_modules/domhandler/test/cases/18-enforce_empty_tags.json
New file
@@ -0,0 +1,16 @@
{
  "name": "Enforce empty tags",
  "options": {},
  "html": "<link>text</link>",
  "expected": [
    {
      "type": "tag",
      "name": "link",
      "attribs": {}
    },
    {
      "data": "text",
      "type": "text"
    }
  ]
}
node_modules/domhandler/test/cases/19-ignore_empty_tags.json
New file
@@ -0,0 +1,20 @@
{
  "name": "Ignore empty tags (xml mode)",
  "options": {
    "xmlMode": true
  },
  "html": "<link>text</link>",
  "expected": [
    {
      "type": "tag",
      "name": "link",
      "attribs": {},
      "children": [
        {
          "data": "text",
          "type": "text"
        }
      ]
    }
  ]
}
node_modules/domhandler/test/cases/20-template_script_tags.json
New file
@@ -0,0 +1,20 @@
{
  "name": "Template script tags",
  "options": {},
  "html": "<script type=\"text/template\"><h1>Heading1</h1></script>",
  "expected": [
    {
      "type": "script",
      "name": "script",
      "attribs": {
        "type": "text/template"
      },
      "children": [
        {
          "data": "<h1>Heading1</h1>",
          "type": "text"
        }
      ]
    }
  ]
}
node_modules/domhandler/test/cases/21-conditional_comments.json
New file
@@ -0,0 +1,15 @@
{
  "name": "Conditional comments",
  "options": {},
  "html": "<!--[if lt IE 7]> <html class='no-js ie6 oldie' lang='en'> <![endif]--><!--[if lt IE 7]> <html class='no-js ie6 oldie' lang='en'> <![endif]-->",
  "expected": [
    {
      "data": "[if lt IE 7]> <html class='no-js ie6 oldie' lang='en'> <![endif]",
      "type": "comment"
    },
    {
      "data": "[if lt IE 7]> <html class='no-js ie6 oldie' lang='en'> <![endif]",
      "type": "comment"
    }
  ]
}
node_modules/domhandler/test/cases/22-lowercase_tags.json
New file
@@ -0,0 +1,41 @@
{
  "name": "lowercase tags",
  "options": {},
  "html": "<!DOCTYPE html><HTML><TITLE>The Title</title><BODY>Hello world</body></html>",
  "expected": [
    {
      "name": "!doctype",
      "data": "!DOCTYPE html",
      "type": "directive"
    },
    {
      "type": "tag",
      "name": "html",
      "attribs": {},
      "children": [
        {
          "type": "tag",
          "name": "title",
          "attribs": {},
          "children": [
            {
              "data": "The Title",
              "type": "text"
            }
          ]
        },
        {
          "type": "tag",
          "name": "body",
          "attribs": {},
          "children": [
            {
              "data": "Hello world",
              "type": "text"
            }
          ]
        }
      ]
    }
  ]
}
node_modules/domhandler/test/cases/23-dom-lvl1.json
New file
@@ -0,0 +1,131 @@
{
  "name": "DOM level 1",
  "options": { "withDomLvl1": true },
  "html": "<div>some stray text<h1>Hello, world.</h1><!-- comment node -->more stray text</div>",
  "expected": [
    {
      "type": "tag",
      "nodeType": 1,
      "name": "div",
      "tagName": "div",
      "attribs": {},
      "nodeValue": null,
      "children": [
        {
          "type": "text",
          "nodeType": 3,
          "tagName": null,
          "data": "some stray text",
          "nodeValue": "some stray text",
          "childNodes": null,
          "firstChild": null,
          "lastChild": null
        },
        {
          "type": "tag",
          "nodeType": 1,
          "name": "h1",
          "tagName": "h1",
          "nodeValue": null,
          "attribs": {},
          "children": [
            {
              "type": "text",
              "nodeType": 3,
              "tagName": null,
              "data": "Hello, world.",
              "nodeValue": "Hello, world.",
              "childNodes": null,
              "firstChild": null,
              "lastChild": null
            }
          ],
          "firstChild": {
            "type": "text",
            "nodeType": 3,
            "tagName": null,
            "data": "Hello, world.",
            "nodeValue": "Hello, world.",
            "childNodes": null,
            "firstChild": null,
            "lastChild": null
          },
          "lastChild": {
            "type": "text",
            "nodeType": 3,
            "tagName": null,
            "data": "Hello, world.",
            "nodeValue": "Hello, world.",
            "childNodes": null,
            "firstChild": null,
            "lastChild": null
          }
        },
        {
          "type": "comment",
          "nodeType": 8,
          "tagName": null,
          "data": " comment node ",
          "nodeValue": " comment node ",
          "childNodes": null,
          "firstChild": null,
          "lastChild": null,
          "prev": {
            "type": "tag",
            "name": "h1",
            "nodeValue": null,
            "attribs": {}
          },
          "previousSibling": {
            "type": "tag",
            "name": "h1",
            "nodeValue": null,
            "attribs": {}
          },
          "next": {
            "type": "text",
            "tagName": null,
            "data": "more stray text"
          },
          "nextSibling": {
            "type": "text",
            "tagName": null,
            "data": "more stray text"
          }
        },
        {
          "type": "text",
          "nodeType": 3,
          "tagName": null,
          "data": "more stray text",
          "nodeValue": "more stray text",
          "childNodes": null,
          "firstChild": null,
          "lastChild": null,
          "next": null,
          "nextSibling": null
        }
      ],
      "firstChild": {
        "type": "text",
        "nodeType": 3,
        "tagName": null,
        "data": "some stray text",
        "nodeValue": "some stray text",
        "childNodes": null,
        "firstChild": null,
        "lastChild": null
       },
       "lastChild": {
          "type": "text",
          "nodeType": 3,
          "tagName": null,
          "data": "more stray text",
          "nodeValue": "more stray text",
          "childNodes": null,
          "firstChild": null,
          "lastChild": null
        }
    }
  ]
}
node_modules/domhandler/test/cases/24-with-start-indices.json
New file
@@ -0,0 +1,85 @@
{
  "name": "withStartIndices adds correct startIndex properties",
  "options": {"withStartIndices": true},
  "streaming": false,
  "html": "<!DOCTYPE html> <html> <title>The Title</title> <body class='foo'>Hello world <p></p></body> <!-- the comment --> </html> ",
  "expected": [
    {
      "startIndex": 0,
      "name": "!doctype",
      "data": "!DOCTYPE html",
      "type": "directive"
    },
    {
      "type": "text",
      "data": " "
    },
    {
      "startIndex": 16,
      "type": "tag",
      "name": "html",
      "attribs": {},
      "parent": null,
      "children": [
        {
          "startIndex": 22,
          "type": "text",
          "data": " "
        },
        {
          "startIndex": 23,
          "type": "tag",
          "name": "title",
          "attribs": {},
          "children": [
            {
              "startIndex": 30,
              "data": "The Title",
              "type": "text"
            }
          ]
        },
        {
          "startIndex": 47,
          "type": "text",
          "data": " "
        },
        {
          "startIndex": 48,
          "type": "tag",
          "name": "body",
          "attribs": {"class": "foo"},
          "children": [
            {
              "startIndex": 66,
              "data": "Hello world ",
              "type": "text"
            },
            {
              "startIndex": 78,
              "type": "tag",
              "name": "p",
              "attribs": {},
              "children": []
            }
          ]
        },
        {
          "startIndex": 92,
          "type": "text",
          "data": " "
        },
        {
          "startIndex": 93,
          "type": "comment",
          "data": " the comment "
        },
        {
          "startIndex": 113,
          "type": "text",
          "data": " "
        }
      ]
    }
  ]
}
node_modules/domhandler/test/cases/25-with-end-indices.json
New file
@@ -0,0 +1,86 @@
{
  "name": "withEndIndices adds correct endIndex properties",
  "options": {"withStartIndices": true,"withEndIndices": true},
  "streaming": false,
  "html": "<!DOCTYPE html> <html> <title>The Title</title> <body class='foo'>Hello world <p></p></body> <!-- the comment --> </html> ",
  "expected": [
    {
      "endIndex": null,
      "name": "!doctype",
      "data": "!DOCTYPE html",
      "type": "directive"
    },
    {
      "type": "text",
      "data": " ",
      "endIndex": 15
    },
    {
      "endIndex": 120,
      "type": "tag",
      "name": "html",
      "attribs": {},
      "parent": null,
      "children": [
        {
          "endIndex": 22,
          "type": "text",
          "data": " "
        },
        {
          "endIndex": 46,
          "type": "tag",
          "name": "title",
          "attribs": {},
          "children": [
            {
              "endIndex": 38,
              "data": "The Title",
              "type": "text"
            }
          ]
        },
        {
          "endIndex": 47,
          "type": "text",
          "data": " "
        },
        {
          "endIndex": 91,
          "type": "tag",
          "name": "body",
          "attribs": {"class": "foo"},
          "children": [
            {
              "endIndex": 77,
              "data": "Hello world ",
              "type": "text"
            },
            {
              "endIndex": 84,
              "type": "tag",
              "name": "p",
              "attribs": {},
              "children": []
            }
          ]
        },
        {
          "endIndex": 92,
          "type": "text",
          "data": " "
        },
        {
          "endIndex": 112,
          "type": "comment",
          "data": " the comment "
        },
        {
          "endIndex": 113,
          "type": "text",
          "data": " "
        }
      ]
    }
  ]
}
node_modules/domhandler/test/tests.js
New file
@@ -0,0 +1,60 @@
var fs = require("fs"),
    path = require("path"),
    assert = require("assert"),
    util = require("util"),
    Parser = require("htmlparser2").Parser,
    Handler = require("../");
var basePath = path.resolve(__dirname, "cases"),
    inspectOpts = { showHidden: true, depth: null };
fs
.readdirSync(basePath)
.filter(RegExp.prototype.test, /\.json$/) //only allow .json files
.map(function(name){
    return path.resolve(basePath, name);
})
.map(require)
.forEach(function(test){
    it(test.name, function(){
        var expected = test.expected;
        var handler = new Handler(function(err, actual){
            assert.ifError(err);
            try {
                compare(expected, actual);
            } catch(e){
                e.expected = util.inspect(expected, inspectOpts);
                e.actual   = util.inspect(actual,   inspectOpts);
                throw e;
            }
        }, test.options);
        var data = test.html;
        var parser = new Parser(handler, test.options);
        //first, try to run the test via chunks
        if (test.streaming || test.streaming === undefined){
            for(var i = 0; i < data.length; i++){
                parser.write(data.charAt(i));
            }
            parser.done();
        }
        //then parse everything
        parser.parseComplete(data);
    });
});
function compare(expected, result){
    assert.equal(typeof expected, typeof result, "types didn't match");
    if(typeof expected !== "object" || expected === null){
        assert.strictEqual(expected, result, "result doesn't equal expected");
    } else {
        for(var prop in expected){
            assert.ok(prop in result, "result didn't contain property " + prop);
            compare(expected[prop], result[prop]);
        }
    }
}
node_modules/entities/.travis.yml
New file
@@ -0,0 +1,5 @@
sudo: true
language: node_js
node_js:
  - 8
script: npm run coveralls
node_modules/entities/LICENSE
New file
@@ -0,0 +1,11 @@
Copyright (c) Felix Böhm
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
node_modules/entities/index.js
New file
@@ -0,0 +1,26 @@
var encode = require("./lib/encode.js"),
    decode = require("./lib/decode.js");
exports.decode = function(data, level) {
    return (!level || level <= 0 ? decode.XML : decode.HTML)(data);
};
exports.decodeStrict = function(data, level) {
    return (!level || level <= 0 ? decode.XML : decode.HTMLStrict)(data);
};
exports.encode = function(data, level) {
    return (!level || level <= 0 ? encode.XML : encode.HTML)(data);
};
exports.encodeXML = encode.XML;
exports.encodeHTML4 = exports.encodeHTML5 = exports.encodeHTML = encode.HTML;
exports.decodeXML = exports.decodeXMLStrict = decode.XML;
exports.decodeHTML4 = exports.decodeHTML5 = exports.decodeHTML = decode.HTML;
exports.decodeHTML4Strict = exports.decodeHTML5Strict = exports.decodeHTMLStrict = decode.HTMLStrict;
exports.escape = encode.escape;
node_modules/entities/lib/decode.js
New file
@@ -0,0 +1,70 @@
var entityMap = require("../maps/entities.json"),
    legacyMap = require("../maps/legacy.json"),
    xmlMap = require("../maps/xml.json"),
    decodeCodePoint = require("./decode_codepoint.js");
var decodeXMLStrict = getStrictDecoder(xmlMap),
    decodeHTMLStrict = getStrictDecoder(entityMap);
function getStrictDecoder(map) {
    var keys = Object.keys(map).join("|"),
        replace = getReplacer(map);
    keys += "|#[xX][\\da-fA-F]+|#\\d+";
    var re = new RegExp("&(?:" + keys + ");", "g");
    return function(str) {
        return String(str).replace(re, replace);
    };
}
var decodeHTML = (function() {
    var legacy = Object.keys(legacyMap).sort(sorter);
    var keys = Object.keys(entityMap).sort(sorter);
    for (var i = 0, j = 0; i < keys.length; i++) {
        if (legacy[j] === keys[i]) {
            keys[i] += ";?";
            j++;
        } else {
            keys[i] += ";";
        }
    }
    var re = new RegExp("&(?:" + keys.join("|") + "|#[xX][\\da-fA-F]+;?|#\\d+;?)", "g"),
        replace = getReplacer(entityMap);
    function replacer(str) {
        if (str.substr(-1) !== ";") str += ";";
        return replace(str);
    }
    //TODO consider creating a merged map
    return function(str) {
        return String(str).replace(re, replacer);
    };
})();
function sorter(a, b) {
    return a < b ? 1 : -1;
}
function getReplacer(map) {
    return function replace(str) {
        if (str.charAt(1) === "#") {
            if (str.charAt(2) === "X" || str.charAt(2) === "x") {
                return decodeCodePoint(parseInt(str.substr(3), 16));
            }
            return decodeCodePoint(parseInt(str.substr(2), 10));
        }
        return map[str.slice(1, -1)];
    };
}
module.exports = {
    XML: decodeXMLStrict,
    HTML: decodeHTML,
    HTMLStrict: decodeHTMLStrict
};
node_modules/entities/lib/decode_codepoint.js
New file
@@ -0,0 +1,25 @@
var decodeMap = require("../maps/decode.json");
module.exports = decodeCodePoint;
// modified version of https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119
function decodeCodePoint(codePoint) {
    if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {
        return "\uFFFD";
    }
    if (codePoint in decodeMap) {
        codePoint = decodeMap[codePoint];
    }
    var output = "";
    if (codePoint > 0xffff) {
        codePoint -= 0x10000;
        output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);
        codePoint = 0xdc00 | (codePoint & 0x3ff);
    }
    output += String.fromCharCode(codePoint);
    return output;
}
node_modules/entities/lib/encode.js
New file
@@ -0,0 +1,82 @@
var inverseXML = getInverseObj(require("../maps/xml.json")),
    xmlReplacer = getInverseReplacer(inverseXML);
exports.XML = getInverse(inverseXML, xmlReplacer);
var inverseHTML = getInverseObj(require("../maps/entities.json")),
    htmlReplacer = getInverseReplacer(inverseHTML);
exports.HTML = getInverse(inverseHTML, htmlReplacer);
function getInverseObj(obj) {
    return Object.keys(obj)
        .sort()
        .reduce(function(inverse, name) {
            inverse[obj[name]] = "&" + name + ";";
            return inverse;
        }, {});
}
function getInverseReplacer(inverse) {
    var single = [],
        multiple = [];
    Object.keys(inverse).forEach(function(k) {
        if (k.length === 1) {
            single.push("\\" + k);
        } else {
            multiple.push(k);
        }
    });
    //TODO add ranges
    multiple.unshift("[" + single.join("") + "]");
    return new RegExp(multiple.join("|"), "g");
}
var re_nonASCII = /[^\0-\x7F]/g,
    re_astralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
function singleCharReplacer(c) {
    return (
        "&#x" +
        c
            .charCodeAt(0)
            .toString(16)
            .toUpperCase() +
        ";"
    );
}
function astralReplacer(c) {
    // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
    var high = c.charCodeAt(0);
    var low = c.charCodeAt(1);
    var codePoint = (high - 0xd800) * 0x400 + low - 0xdc00 + 0x10000;
    return "&#x" + codePoint.toString(16).toUpperCase() + ";";
}
function getInverse(inverse, re) {
    function func(name) {
        return inverse[name];
    }
    return function(data) {
        return data
            .replace(re, func)
            .replace(re_astralSymbols, astralReplacer)
            .replace(re_nonASCII, singleCharReplacer);
    };
}
var re_xmlChars = getInverseReplacer(inverseXML);
function escapeXML(data) {
    return data
        .replace(re_xmlChars, singleCharReplacer)
        .replace(re_astralSymbols, astralReplacer)
        .replace(re_nonASCII, singleCharReplacer);
}
exports.escape = escapeXML;
node_modules/entities/maps/decode.json
New file
@@ -0,0 +1 @@
{"0":65533,"128":8364,"130":8218,"131":402,"132":8222,"133":8230,"134":8224,"135":8225,"136":710,"137":8240,"138":352,"139":8249,"140":338,"142":381,"145":8216,"146":8217,"147":8220,"148":8221,"149":8226,"150":8211,"151":8212,"152":732,"153":8482,"154":353,"155":8250,"156":339,"158":382,"159":376}
node_modules/entities/maps/entities.json
New file
@@ -0,0 +1 @@
{"Aacute":"\u00C1","aacute":"\u00E1","Abreve":"\u0102","abreve":"\u0103","ac":"\u223E","acd":"\u223F","acE":"\u223E\u0333","Acirc":"\u00C2","acirc":"\u00E2","acute":"\u00B4","Acy":"\u0410","acy":"\u0430","AElig":"\u00C6","aelig":"\u00E6","af":"\u2061","Afr":"\uD835\uDD04","afr":"\uD835\uDD1E","Agrave":"\u00C0","agrave":"\u00E0","alefsym":"\u2135","aleph":"\u2135","Alpha":"\u0391","alpha":"\u03B1","Amacr":"\u0100","amacr":"\u0101","amalg":"\u2A3F","amp":"&","AMP":"&","andand":"\u2A55","And":"\u2A53","and":"\u2227","andd":"\u2A5C","andslope":"\u2A58","andv":"\u2A5A","ang":"\u2220","ange":"\u29A4","angle":"\u2220","angmsdaa":"\u29A8","angmsdab":"\u29A9","angmsdac":"\u29AA","angmsdad":"\u29AB","angmsdae":"\u29AC","angmsdaf":"\u29AD","angmsdag":"\u29AE","angmsdah":"\u29AF","angmsd":"\u2221","angrt":"\u221F","angrtvb":"\u22BE","angrtvbd":"\u299D","angsph":"\u2222","angst":"\u00C5","angzarr":"\u237C","Aogon":"\u0104","aogon":"\u0105","Aopf":"\uD835\uDD38","aopf":"\uD835\uDD52","apacir":"\u2A6F","ap":"\u2248","apE":"\u2A70","ape":"\u224A","apid":"\u224B","apos":"'","ApplyFunction":"\u2061","approx":"\u2248","approxeq":"\u224A","Aring":"\u00C5","aring":"\u00E5","Ascr":"\uD835\uDC9C","ascr":"\uD835\uDCB6","Assign":"\u2254","ast":"*","asymp":"\u2248","asympeq":"\u224D","Atilde":"\u00C3","atilde":"\u00E3","Auml":"\u00C4","auml":"\u00E4","awconint":"\u2233","awint":"\u2A11","backcong":"\u224C","backepsilon":"\u03F6","backprime":"\u2035","backsim":"\u223D","backsimeq":"\u22CD","Backslash":"\u2216","Barv":"\u2AE7","barvee":"\u22BD","barwed":"\u2305","Barwed":"\u2306","barwedge":"\u2305","bbrk":"\u23B5","bbrktbrk":"\u23B6","bcong":"\u224C","Bcy":"\u0411","bcy":"\u0431","bdquo":"\u201E","becaus":"\u2235","because":"\u2235","Because":"\u2235","bemptyv":"\u29B0","bepsi":"\u03F6","bernou":"\u212C","Bernoullis":"\u212C","Beta":"\u0392","beta":"\u03B2","beth":"\u2136","between":"\u226C","Bfr":"\uD835\uDD05","bfr":"\uD835\uDD1F","bigcap":"\u22C2","bigcirc":"\u25EF","bigcup":"\u22C3","bigodot":"\u2A00","bigoplus":"\u2A01","bigotimes":"\u2A02","bigsqcup":"\u2A06","bigstar":"\u2605","bigtriangledown":"\u25BD","bigtriangleup":"\u25B3","biguplus":"\u2A04","bigvee":"\u22C1","bigwedge":"\u22C0","bkarow":"\u290D","blacklozenge":"\u29EB","blacksquare":"\u25AA","blacktriangle":"\u25B4","blacktriangledown":"\u25BE","blacktriangleleft":"\u25C2","blacktriangleright":"\u25B8","blank":"\u2423","blk12":"\u2592","blk14":"\u2591","blk34":"\u2593","block":"\u2588","bne":"=\u20E5","bnequiv":"\u2261\u20E5","bNot":"\u2AED","bnot":"\u2310","Bopf":"\uD835\uDD39","bopf":"\uD835\uDD53","bot":"\u22A5","bottom":"\u22A5","bowtie":"\u22C8","boxbox":"\u29C9","boxdl":"\u2510","boxdL":"\u2555","boxDl":"\u2556","boxDL":"\u2557","boxdr":"\u250C","boxdR":"\u2552","boxDr":"\u2553","boxDR":"\u2554","boxh":"\u2500","boxH":"\u2550","boxhd":"\u252C","boxHd":"\u2564","boxhD":"\u2565","boxHD":"\u2566","boxhu":"\u2534","boxHu":"\u2567","boxhU":"\u2568","boxHU":"\u2569","boxminus":"\u229F","boxplus":"\u229E","boxtimes":"\u22A0","boxul":"\u2518","boxuL":"\u255B","boxUl":"\u255C","boxUL":"\u255D","boxur":"\u2514","boxuR":"\u2558","boxUr":"\u2559","boxUR":"\u255A","boxv":"\u2502","boxV":"\u2551","boxvh":"\u253C","boxvH":"\u256A","boxVh":"\u256B","boxVH":"\u256C","boxvl":"\u2524","boxvL":"\u2561","boxVl":"\u2562","boxVL":"\u2563","boxvr":"\u251C","boxvR":"\u255E","boxVr":"\u255F","boxVR":"\u2560","bprime":"\u2035","breve":"\u02D8","Breve":"\u02D8","brvbar":"\u00A6","bscr":"\uD835\uDCB7","Bscr":"\u212C","bsemi":"\u204F","bsim":"\u223D","bsime":"\u22CD","bsolb":"\u29C5","bsol":"\\","bsolhsub":"\u27C8","bull":"\u2022","bullet":"\u2022","bump":"\u224E","bumpE":"\u2AAE","bumpe":"\u224F","Bumpeq":"\u224E","bumpeq":"\u224F","Cacute":"\u0106","cacute":"\u0107","capand":"\u2A44","capbrcup":"\u2A49","capcap":"\u2A4B","cap":"\u2229","Cap":"\u22D2","capcup":"\u2A47","capdot":"\u2A40","CapitalDifferentialD":"\u2145","caps":"\u2229\uFE00","caret":"\u2041","caron":"\u02C7","Cayleys":"\u212D","ccaps":"\u2A4D","Ccaron":"\u010C","ccaron":"\u010D","Ccedil":"\u00C7","ccedil":"\u00E7","Ccirc":"\u0108","ccirc":"\u0109","Cconint":"\u2230","ccups":"\u2A4C","ccupssm":"\u2A50","Cdot":"\u010A","cdot":"\u010B","cedil":"\u00B8","Cedilla":"\u00B8","cemptyv":"\u29B2","cent":"\u00A2","centerdot":"\u00B7","CenterDot":"\u00B7","cfr":"\uD835\uDD20","Cfr":"\u212D","CHcy":"\u0427","chcy":"\u0447","check":"\u2713","checkmark":"\u2713","Chi":"\u03A7","chi":"\u03C7","circ":"\u02C6","circeq":"\u2257","circlearrowleft":"\u21BA","circlearrowright":"\u21BB","circledast":"\u229B","circledcirc":"\u229A","circleddash":"\u229D","CircleDot":"\u2299","circledR":"\u00AE","circledS":"\u24C8","CircleMinus":"\u2296","CirclePlus":"\u2295","CircleTimes":"\u2297","cir":"\u25CB","cirE":"\u29C3","cire":"\u2257","cirfnint":"\u2A10","cirmid":"\u2AEF","cirscir":"\u29C2","ClockwiseContourIntegral":"\u2232","CloseCurlyDoubleQuote":"\u201D","CloseCurlyQuote":"\u2019","clubs":"\u2663","clubsuit":"\u2663","colon":":","Colon":"\u2237","Colone":"\u2A74","colone":"\u2254","coloneq":"\u2254","comma":",","commat":"@","comp":"\u2201","compfn":"\u2218","complement":"\u2201","complexes":"\u2102","cong":"\u2245","congdot":"\u2A6D","Congruent":"\u2261","conint":"\u222E","Conint":"\u222F","ContourIntegral":"\u222E","copf":"\uD835\uDD54","Copf":"\u2102","coprod":"\u2210","Coproduct":"\u2210","copy":"\u00A9","COPY":"\u00A9","copysr":"\u2117","CounterClockwiseContourIntegral":"\u2233","crarr":"\u21B5","cross":"\u2717","Cross":"\u2A2F","Cscr":"\uD835\uDC9E","cscr":"\uD835\uDCB8","csub":"\u2ACF","csube":"\u2AD1","csup":"\u2AD0","csupe":"\u2AD2","ctdot":"\u22EF","cudarrl":"\u2938","cudarrr":"\u2935","cuepr":"\u22DE","cuesc":"\u22DF","cularr":"\u21B6","cularrp":"\u293D","cupbrcap":"\u2A48","cupcap":"\u2A46","CupCap":"\u224D","cup":"\u222A","Cup":"\u22D3","cupcup":"\u2A4A","cupdot":"\u228D","cupor":"\u2A45","cups":"\u222A\uFE00","curarr":"\u21B7","curarrm":"\u293C","curlyeqprec":"\u22DE","curlyeqsucc":"\u22DF","curlyvee":"\u22CE","curlywedge":"\u22CF","curren":"\u00A4","curvearrowleft":"\u21B6","curvearrowright":"\u21B7","cuvee":"\u22CE","cuwed":"\u22CF","cwconint":"\u2232","cwint":"\u2231","cylcty":"\u232D","dagger":"\u2020","Dagger":"\u2021","daleth":"\u2138","darr":"\u2193","Darr":"\u21A1","dArr":"\u21D3","dash":"\u2010","Dashv":"\u2AE4","dashv":"\u22A3","dbkarow":"\u290F","dblac":"\u02DD","Dcaron":"\u010E","dcaron":"\u010F","Dcy":"\u0414","dcy":"\u0434","ddagger":"\u2021","ddarr":"\u21CA","DD":"\u2145","dd":"\u2146","DDotrahd":"\u2911","ddotseq":"\u2A77","deg":"\u00B0","Del":"\u2207","Delta":"\u0394","delta":"\u03B4","demptyv":"\u29B1","dfisht":"\u297F","Dfr":"\uD835\uDD07","dfr":"\uD835\uDD21","dHar":"\u2965","dharl":"\u21C3","dharr":"\u21C2","DiacriticalAcute":"\u00B4","DiacriticalDot":"\u02D9","DiacriticalDoubleAcute":"\u02DD","DiacriticalGrave":"`","DiacriticalTilde":"\u02DC","diam":"\u22C4","diamond":"\u22C4","Diamond":"\u22C4","diamondsuit":"\u2666","diams":"\u2666","die":"\u00A8","DifferentialD":"\u2146","digamma":"\u03DD","disin":"\u22F2","div":"\u00F7","divide":"\u00F7","divideontimes":"\u22C7","divonx":"\u22C7","DJcy":"\u0402","djcy":"\u0452","dlcorn":"\u231E","dlcrop":"\u230D","dollar":"$","Dopf":"\uD835\uDD3B","dopf":"\uD835\uDD55","Dot":"\u00A8","dot":"\u02D9","DotDot":"\u20DC","doteq":"\u2250","doteqdot":"\u2251","DotEqual":"\u2250","dotminus":"\u2238","dotplus":"\u2214","dotsquare":"\u22A1","doublebarwedge":"\u2306","DoubleContourIntegral":"\u222F","DoubleDot":"\u00A8","DoubleDownArrow":"\u21D3","DoubleLeftArrow":"\u21D0","DoubleLeftRightArrow":"\u21D4","DoubleLeftTee":"\u2AE4","DoubleLongLeftArrow":"\u27F8","DoubleLongLeftRightArrow":"\u27FA","DoubleLongRightArrow":"\u27F9","DoubleRightArrow":"\u21D2","DoubleRightTee":"\u22A8","DoubleUpArrow":"\u21D1","DoubleUpDownArrow":"\u21D5","DoubleVerticalBar":"\u2225","DownArrowBar":"\u2913","downarrow":"\u2193","DownArrow":"\u2193","Downarrow":"\u21D3","DownArrowUpArrow":"\u21F5","DownBreve":"\u0311","downdownarrows":"\u21CA","downharpoonleft":"\u21C3","downharpoonright":"\u21C2","DownLeftRightVector":"\u2950","DownLeftTeeVector":"\u295E","DownLeftVectorBar":"\u2956","DownLeftVector":"\u21BD","DownRightTeeVector":"\u295F","DownRightVectorBar":"\u2957","DownRightVector":"\u21C1","DownTeeArrow":"\u21A7","DownTee":"\u22A4","drbkarow":"\u2910","drcorn":"\u231F","drcrop":"\u230C","Dscr":"\uD835\uDC9F","dscr":"\uD835\uDCB9","DScy":"\u0405","dscy":"\u0455","dsol":"\u29F6","Dstrok":"\u0110","dstrok":"\u0111","dtdot":"\u22F1","dtri":"\u25BF","dtrif":"\u25BE","duarr":"\u21F5","duhar":"\u296F","dwangle":"\u29A6","DZcy":"\u040F","dzcy":"\u045F","dzigrarr":"\u27FF","Eacute":"\u00C9","eacute":"\u00E9","easter":"\u2A6E","Ecaron":"\u011A","ecaron":"\u011B","Ecirc":"\u00CA","ecirc":"\u00EA","ecir":"\u2256","ecolon":"\u2255","Ecy":"\u042D","ecy":"\u044D","eDDot":"\u2A77","Edot":"\u0116","edot":"\u0117","eDot":"\u2251","ee":"\u2147","efDot":"\u2252","Efr":"\uD835\uDD08","efr":"\uD835\uDD22","eg":"\u2A9A","Egrave":"\u00C8","egrave":"\u00E8","egs":"\u2A96","egsdot":"\u2A98","el":"\u2A99","Element":"\u2208","elinters":"\u23E7","ell":"\u2113","els":"\u2A95","elsdot":"\u2A97","Emacr":"\u0112","emacr":"\u0113","empty":"\u2205","emptyset":"\u2205","EmptySmallSquare":"\u25FB","emptyv":"\u2205","EmptyVerySmallSquare":"\u25AB","emsp13":"\u2004","emsp14":"\u2005","emsp":"\u2003","ENG":"\u014A","eng":"\u014B","ensp":"\u2002","Eogon":"\u0118","eogon":"\u0119","Eopf":"\uD835\uDD3C","eopf":"\uD835\uDD56","epar":"\u22D5","eparsl":"\u29E3","eplus":"\u2A71","epsi":"\u03B5","Epsilon":"\u0395","epsilon":"\u03B5","epsiv":"\u03F5","eqcirc":"\u2256","eqcolon":"\u2255","eqsim":"\u2242","eqslantgtr":"\u2A96","eqslantless":"\u2A95","Equal":"\u2A75","equals":"=","EqualTilde":"\u2242","equest":"\u225F","Equilibrium":"\u21CC","equiv":"\u2261","equivDD":"\u2A78","eqvparsl":"\u29E5","erarr":"\u2971","erDot":"\u2253","escr":"\u212F","Escr":"\u2130","esdot":"\u2250","Esim":"\u2A73","esim":"\u2242","Eta":"\u0397","eta":"\u03B7","ETH":"\u00D0","eth":"\u00F0","Euml":"\u00CB","euml":"\u00EB","euro":"\u20AC","excl":"!","exist":"\u2203","Exists":"\u2203","expectation":"\u2130","exponentiale":"\u2147","ExponentialE":"\u2147","fallingdotseq":"\u2252","Fcy":"\u0424","fcy":"\u0444","female":"\u2640","ffilig":"\uFB03","fflig":"\uFB00","ffllig":"\uFB04","Ffr":"\uD835\uDD09","ffr":"\uD835\uDD23","filig":"\uFB01","FilledSmallSquare":"\u25FC","FilledVerySmallSquare":"\u25AA","fjlig":"fj","flat":"\u266D","fllig":"\uFB02","fltns":"\u25B1","fnof":"\u0192","Fopf":"\uD835\uDD3D","fopf":"\uD835\uDD57","forall":"\u2200","ForAll":"\u2200","fork":"\u22D4","forkv":"\u2AD9","Fouriertrf":"\u2131","fpartint":"\u2A0D","frac12":"\u00BD","frac13":"\u2153","frac14":"\u00BC","frac15":"\u2155","frac16":"\u2159","frac18":"\u215B","frac23":"\u2154","frac25":"\u2156","frac34":"\u00BE","frac35":"\u2157","frac38":"\u215C","frac45":"\u2158","frac56":"\u215A","frac58":"\u215D","frac78":"\u215E","frasl":"\u2044","frown":"\u2322","fscr":"\uD835\uDCBB","Fscr":"\u2131","gacute":"\u01F5","Gamma":"\u0393","gamma":"\u03B3","Gammad":"\u03DC","gammad":"\u03DD","gap":"\u2A86","Gbreve":"\u011E","gbreve":"\u011F","Gcedil":"\u0122","Gcirc":"\u011C","gcirc":"\u011D","Gcy":"\u0413","gcy":"\u0433","Gdot":"\u0120","gdot":"\u0121","ge":"\u2265","gE":"\u2267","gEl":"\u2A8C","gel":"\u22DB","geq":"\u2265","geqq":"\u2267","geqslant":"\u2A7E","gescc":"\u2AA9","ges":"\u2A7E","gesdot":"\u2A80","gesdoto":"\u2A82","gesdotol":"\u2A84","gesl":"\u22DB\uFE00","gesles":"\u2A94","Gfr":"\uD835\uDD0A","gfr":"\uD835\uDD24","gg":"\u226B","Gg":"\u22D9","ggg":"\u22D9","gimel":"\u2137","GJcy":"\u0403","gjcy":"\u0453","gla":"\u2AA5","gl":"\u2277","glE":"\u2A92","glj":"\u2AA4","gnap":"\u2A8A","gnapprox":"\u2A8A","gne":"\u2A88","gnE":"\u2269","gneq":"\u2A88","gneqq":"\u2269","gnsim":"\u22E7","Gopf":"\uD835\uDD3E","gopf":"\uD835\uDD58","grave":"`","GreaterEqual":"\u2265","GreaterEqualLess":"\u22DB","GreaterFullEqual":"\u2267","GreaterGreater":"\u2AA2","GreaterLess":"\u2277","GreaterSlantEqual":"\u2A7E","GreaterTilde":"\u2273","Gscr":"\uD835\uDCA2","gscr":"\u210A","gsim":"\u2273","gsime":"\u2A8E","gsiml":"\u2A90","gtcc":"\u2AA7","gtcir":"\u2A7A","gt":">","GT":">","Gt":"\u226B","gtdot":"\u22D7","gtlPar":"\u2995","gtquest":"\u2A7C","gtrapprox":"\u2A86","gtrarr":"\u2978","gtrdot":"\u22D7","gtreqless":"\u22DB","gtreqqless":"\u2A8C","gtrless":"\u2277","gtrsim":"\u2273","gvertneqq":"\u2269\uFE00","gvnE":"\u2269\uFE00","Hacek":"\u02C7","hairsp":"\u200A","half":"\u00BD","hamilt":"\u210B","HARDcy":"\u042A","hardcy":"\u044A","harrcir":"\u2948","harr":"\u2194","hArr":"\u21D4","harrw":"\u21AD","Hat":"^","hbar":"\u210F","Hcirc":"\u0124","hcirc":"\u0125","hearts":"\u2665","heartsuit":"\u2665","hellip":"\u2026","hercon":"\u22B9","hfr":"\uD835\uDD25","Hfr":"\u210C","HilbertSpace":"\u210B","hksearow":"\u2925","hkswarow":"\u2926","hoarr":"\u21FF","homtht":"\u223B","hookleftarrow":"\u21A9","hookrightarrow":"\u21AA","hopf":"\uD835\uDD59","Hopf":"\u210D","horbar":"\u2015","HorizontalLine":"\u2500","hscr":"\uD835\uDCBD","Hscr":"\u210B","hslash":"\u210F","Hstrok":"\u0126","hstrok":"\u0127","HumpDownHump":"\u224E","HumpEqual":"\u224F","hybull":"\u2043","hyphen":"\u2010","Iacute":"\u00CD","iacute":"\u00ED","ic":"\u2063","Icirc":"\u00CE","icirc":"\u00EE","Icy":"\u0418","icy":"\u0438","Idot":"\u0130","IEcy":"\u0415","iecy":"\u0435","iexcl":"\u00A1","iff":"\u21D4","ifr":"\uD835\uDD26","Ifr":"\u2111","Igrave":"\u00CC","igrave":"\u00EC","ii":"\u2148","iiiint":"\u2A0C","iiint":"\u222D","iinfin":"\u29DC","iiota":"\u2129","IJlig":"\u0132","ijlig":"\u0133","Imacr":"\u012A","imacr":"\u012B","image":"\u2111","ImaginaryI":"\u2148","imagline":"\u2110","imagpart":"\u2111","imath":"\u0131","Im":"\u2111","imof":"\u22B7","imped":"\u01B5","Implies":"\u21D2","incare":"\u2105","in":"\u2208","infin":"\u221E","infintie":"\u29DD","inodot":"\u0131","intcal":"\u22BA","int":"\u222B","Int":"\u222C","integers":"\u2124","Integral":"\u222B","intercal":"\u22BA","Intersection":"\u22C2","intlarhk":"\u2A17","intprod":"\u2A3C","InvisibleComma":"\u2063","InvisibleTimes":"\u2062","IOcy":"\u0401","iocy":"\u0451","Iogon":"\u012E","iogon":"\u012F","Iopf":"\uD835\uDD40","iopf":"\uD835\uDD5A","Iota":"\u0399","iota":"\u03B9","iprod":"\u2A3C","iquest":"\u00BF","iscr":"\uD835\uDCBE","Iscr":"\u2110","isin":"\u2208","isindot":"\u22F5","isinE":"\u22F9","isins":"\u22F4","isinsv":"\u22F3","isinv":"\u2208","it":"\u2062","Itilde":"\u0128","itilde":"\u0129","Iukcy":"\u0406","iukcy":"\u0456","Iuml":"\u00CF","iuml":"\u00EF","Jcirc":"\u0134","jcirc":"\u0135","Jcy":"\u0419","jcy":"\u0439","Jfr":"\uD835\uDD0D","jfr":"\uD835\uDD27","jmath":"\u0237","Jopf":"\uD835\uDD41","jopf":"\uD835\uDD5B","Jscr":"\uD835\uDCA5","jscr":"\uD835\uDCBF","Jsercy":"\u0408","jsercy":"\u0458","Jukcy":"\u0404","jukcy":"\u0454","Kappa":"\u039A","kappa":"\u03BA","kappav":"\u03F0","Kcedil":"\u0136","kcedil":"\u0137","Kcy":"\u041A","kcy":"\u043A","Kfr":"\uD835\uDD0E","kfr":"\uD835\uDD28","kgreen":"\u0138","KHcy":"\u0425","khcy":"\u0445","KJcy":"\u040C","kjcy":"\u045C","Kopf":"\uD835\uDD42","kopf":"\uD835\uDD5C","Kscr":"\uD835\uDCA6","kscr":"\uD835\uDCC0","lAarr":"\u21DA","Lacute":"\u0139","lacute":"\u013A","laemptyv":"\u29B4","lagran":"\u2112","Lambda":"\u039B","lambda":"\u03BB","lang":"\u27E8","Lang":"\u27EA","langd":"\u2991","langle":"\u27E8","lap":"\u2A85","Laplacetrf":"\u2112","laquo":"\u00AB","larrb":"\u21E4","larrbfs":"\u291F","larr":"\u2190","Larr":"\u219E","lArr":"\u21D0","larrfs":"\u291D","larrhk":"\u21A9","larrlp":"\u21AB","larrpl":"\u2939","larrsim":"\u2973","larrtl":"\u21A2","latail":"\u2919","lAtail":"\u291B","lat":"\u2AAB","late":"\u2AAD","lates":"\u2AAD\uFE00","lbarr":"\u290C","lBarr":"\u290E","lbbrk":"\u2772","lbrace":"{","lbrack":"[","lbrke":"\u298B","lbrksld":"\u298F","lbrkslu":"\u298D","Lcaron":"\u013D","lcaron":"\u013E","Lcedil":"\u013B","lcedil":"\u013C","lceil":"\u2308","lcub":"{","Lcy":"\u041B","lcy":"\u043B","ldca":"\u2936","ldquo":"\u201C","ldquor":"\u201E","ldrdhar":"\u2967","ldrushar":"\u294B","ldsh":"\u21B2","le":"\u2264","lE":"\u2266","LeftAngleBracket":"\u27E8","LeftArrowBar":"\u21E4","leftarrow":"\u2190","LeftArrow":"\u2190","Leftarrow":"\u21D0","LeftArrowRightArrow":"\u21C6","leftarrowtail":"\u21A2","LeftCeiling":"\u2308","LeftDoubleBracket":"\u27E6","LeftDownTeeVector":"\u2961","LeftDownVectorBar":"\u2959","LeftDownVector":"\u21C3","LeftFloor":"\u230A","leftharpoondown":"\u21BD","leftharpoonup":"\u21BC","leftleftarrows":"\u21C7","leftrightarrow":"\u2194","LeftRightArrow":"\u2194","Leftrightarrow":"\u21D4","leftrightarrows":"\u21C6","leftrightharpoons":"\u21CB","leftrightsquigarrow":"\u21AD","LeftRightVector":"\u294E","LeftTeeArrow":"\u21A4","LeftTee":"\u22A3","LeftTeeVector":"\u295A","leftthreetimes":"\u22CB","LeftTriangleBar":"\u29CF","LeftTriangle":"\u22B2","LeftTriangleEqual":"\u22B4","LeftUpDownVector":"\u2951","LeftUpTeeVector":"\u2960","LeftUpVectorBar":"\u2958","LeftUpVector":"\u21BF","LeftVectorBar":"\u2952","LeftVector":"\u21BC","lEg":"\u2A8B","leg":"\u22DA","leq":"\u2264","leqq":"\u2266","leqslant":"\u2A7D","lescc":"\u2AA8","les":"\u2A7D","lesdot":"\u2A7F","lesdoto":"\u2A81","lesdotor":"\u2A83","lesg":"\u22DA\uFE00","lesges":"\u2A93","lessapprox":"\u2A85","lessdot":"\u22D6","lesseqgtr":"\u22DA","lesseqqgtr":"\u2A8B","LessEqualGreater":"\u22DA","LessFullEqual":"\u2266","LessGreater":"\u2276","lessgtr":"\u2276","LessLess":"\u2AA1","lesssim":"\u2272","LessSlantEqual":"\u2A7D","LessTilde":"\u2272","lfisht":"\u297C","lfloor":"\u230A","Lfr":"\uD835\uDD0F","lfr":"\uD835\uDD29","lg":"\u2276","lgE":"\u2A91","lHar":"\u2962","lhard":"\u21BD","lharu":"\u21BC","lharul":"\u296A","lhblk":"\u2584","LJcy":"\u0409","ljcy":"\u0459","llarr":"\u21C7","ll":"\u226A","Ll":"\u22D8","llcorner":"\u231E","Lleftarrow":"\u21DA","llhard":"\u296B","lltri":"\u25FA","Lmidot":"\u013F","lmidot":"\u0140","lmoustache":"\u23B0","lmoust":"\u23B0","lnap":"\u2A89","lnapprox":"\u2A89","lne":"\u2A87","lnE":"\u2268","lneq":"\u2A87","lneqq":"\u2268","lnsim":"\u22E6","loang":"\u27EC","loarr":"\u21FD","lobrk":"\u27E6","longleftarrow":"\u27F5","LongLeftArrow":"\u27F5","Longleftarrow":"\u27F8","longleftrightarrow":"\u27F7","LongLeftRightArrow":"\u27F7","Longleftrightarrow":"\u27FA","longmapsto":"\u27FC","longrightarrow":"\u27F6","LongRightArrow":"\u27F6","Longrightarrow":"\u27F9","looparrowleft":"\u21AB","looparrowright":"\u21AC","lopar":"\u2985","Lopf":"\uD835\uDD43","lopf":"\uD835\uDD5D","loplus":"\u2A2D","lotimes":"\u2A34","lowast":"\u2217","lowbar":"_","LowerLeftArrow":"\u2199","LowerRightArrow":"\u2198","loz":"\u25CA","lozenge":"\u25CA","lozf":"\u29EB","lpar":"(","lparlt":"\u2993","lrarr":"\u21C6","lrcorner":"\u231F","lrhar":"\u21CB","lrhard":"\u296D","lrm":"\u200E","lrtri":"\u22BF","lsaquo":"\u2039","lscr":"\uD835\uDCC1","Lscr":"\u2112","lsh":"\u21B0","Lsh":"\u21B0","lsim":"\u2272","lsime":"\u2A8D","lsimg":"\u2A8F","lsqb":"[","lsquo":"\u2018","lsquor":"\u201A","Lstrok":"\u0141","lstrok":"\u0142","ltcc":"\u2AA6","ltcir":"\u2A79","lt":"<","LT":"<","Lt":"\u226A","ltdot":"\u22D6","lthree":"\u22CB","ltimes":"\u22C9","ltlarr":"\u2976","ltquest":"\u2A7B","ltri":"\u25C3","ltrie":"\u22B4","ltrif":"\u25C2","ltrPar":"\u2996","lurdshar":"\u294A","luruhar":"\u2966","lvertneqq":"\u2268\uFE00","lvnE":"\u2268\uFE00","macr":"\u00AF","male":"\u2642","malt":"\u2720","maltese":"\u2720","Map":"\u2905","map":"\u21A6","mapsto":"\u21A6","mapstodown":"\u21A7","mapstoleft":"\u21A4","mapstoup":"\u21A5","marker":"\u25AE","mcomma":"\u2A29","Mcy":"\u041C","mcy":"\u043C","mdash":"\u2014","mDDot":"\u223A","measuredangle":"\u2221","MediumSpace":"\u205F","Mellintrf":"\u2133","Mfr":"\uD835\uDD10","mfr":"\uD835\uDD2A","mho":"\u2127","micro":"\u00B5","midast":"*","midcir":"\u2AF0","mid":"\u2223","middot":"\u00B7","minusb":"\u229F","minus":"\u2212","minusd":"\u2238","minusdu":"\u2A2A","MinusPlus":"\u2213","mlcp":"\u2ADB","mldr":"\u2026","mnplus":"\u2213","models":"\u22A7","Mopf":"\uD835\uDD44","mopf":"\uD835\uDD5E","mp":"\u2213","mscr":"\uD835\uDCC2","Mscr":"\u2133","mstpos":"\u223E","Mu":"\u039C","mu":"\u03BC","multimap":"\u22B8","mumap":"\u22B8","nabla":"\u2207","Nacute":"\u0143","nacute":"\u0144","nang":"\u2220\u20D2","nap":"\u2249","napE":"\u2A70\u0338","napid":"\u224B\u0338","napos":"\u0149","napprox":"\u2249","natural":"\u266E","naturals":"\u2115","natur":"\u266E","nbsp":"\u00A0","nbump":"\u224E\u0338","nbumpe":"\u224F\u0338","ncap":"\u2A43","Ncaron":"\u0147","ncaron":"\u0148","Ncedil":"\u0145","ncedil":"\u0146","ncong":"\u2247","ncongdot":"\u2A6D\u0338","ncup":"\u2A42","Ncy":"\u041D","ncy":"\u043D","ndash":"\u2013","nearhk":"\u2924","nearr":"\u2197","neArr":"\u21D7","nearrow":"\u2197","ne":"\u2260","nedot":"\u2250\u0338","NegativeMediumSpace":"\u200B","NegativeThickSpace":"\u200B","NegativeThinSpace":"\u200B","NegativeVeryThinSpace":"\u200B","nequiv":"\u2262","nesear":"\u2928","nesim":"\u2242\u0338","NestedGreaterGreater":"\u226B","NestedLessLess":"\u226A","NewLine":"\n","nexist":"\u2204","nexists":"\u2204","Nfr":"\uD835\uDD11","nfr":"\uD835\uDD2B","ngE":"\u2267\u0338","nge":"\u2271","ngeq":"\u2271","ngeqq":"\u2267\u0338","ngeqslant":"\u2A7E\u0338","nges":"\u2A7E\u0338","nGg":"\u22D9\u0338","ngsim":"\u2275","nGt":"\u226B\u20D2","ngt":"\u226F","ngtr":"\u226F","nGtv":"\u226B\u0338","nharr":"\u21AE","nhArr":"\u21CE","nhpar":"\u2AF2","ni":"\u220B","nis":"\u22FC","nisd":"\u22FA","niv":"\u220B","NJcy":"\u040A","njcy":"\u045A","nlarr":"\u219A","nlArr":"\u21CD","nldr":"\u2025","nlE":"\u2266\u0338","nle":"\u2270","nleftarrow":"\u219A","nLeftarrow":"\u21CD","nleftrightarrow":"\u21AE","nLeftrightarrow":"\u21CE","nleq":"\u2270","nleqq":"\u2266\u0338","nleqslant":"\u2A7D\u0338","nles":"\u2A7D\u0338","nless":"\u226E","nLl":"\u22D8\u0338","nlsim":"\u2274","nLt":"\u226A\u20D2","nlt":"\u226E","nltri":"\u22EA","nltrie":"\u22EC","nLtv":"\u226A\u0338","nmid":"\u2224","NoBreak":"\u2060","NonBreakingSpace":"\u00A0","nopf":"\uD835\uDD5F","Nopf":"\u2115","Not":"\u2AEC","not":"\u00AC","NotCongruent":"\u2262","NotCupCap":"\u226D","NotDoubleVerticalBar":"\u2226","NotElement":"\u2209","NotEqual":"\u2260","NotEqualTilde":"\u2242\u0338","NotExists":"\u2204","NotGreater":"\u226F","NotGreaterEqual":"\u2271","NotGreaterFullEqual":"\u2267\u0338","NotGreaterGreater":"\u226B\u0338","NotGreaterLess":"\u2279","NotGreaterSlantEqual":"\u2A7E\u0338","NotGreaterTilde":"\u2275","NotHumpDownHump":"\u224E\u0338","NotHumpEqual":"\u224F\u0338","notin":"\u2209","notindot":"\u22F5\u0338","notinE":"\u22F9\u0338","notinva":"\u2209","notinvb":"\u22F7","notinvc":"\u22F6","NotLeftTriangleBar":"\u29CF\u0338","NotLeftTriangle":"\u22EA","NotLeftTriangleEqual":"\u22EC","NotLess":"\u226E","NotLessEqual":"\u2270","NotLessGreater":"\u2278","NotLessLess":"\u226A\u0338","NotLessSlantEqual":"\u2A7D\u0338","NotLessTilde":"\u2274","NotNestedGreaterGreater":"\u2AA2\u0338","NotNestedLessLess":"\u2AA1\u0338","notni":"\u220C","notniva":"\u220C","notnivb":"\u22FE","notnivc":"\u22FD","NotPrecedes":"\u2280","NotPrecedesEqual":"\u2AAF\u0338","NotPrecedesSlantEqual":"\u22E0","NotReverseElement":"\u220C","NotRightTriangleBar":"\u29D0\u0338","NotRightTriangle":"\u22EB","NotRightTriangleEqual":"\u22ED","NotSquareSubset":"\u228F\u0338","NotSquareSubsetEqual":"\u22E2","NotSquareSuperset":"\u2290\u0338","NotSquareSupersetEqual":"\u22E3","NotSubset":"\u2282\u20D2","NotSubsetEqual":"\u2288","NotSucceeds":"\u2281","NotSucceedsEqual":"\u2AB0\u0338","NotSucceedsSlantEqual":"\u22E1","NotSucceedsTilde":"\u227F\u0338","NotSuperset":"\u2283\u20D2","NotSupersetEqual":"\u2289","NotTilde":"\u2241","NotTildeEqual":"\u2244","NotTildeFullEqual":"\u2247","NotTildeTilde":"\u2249","NotVerticalBar":"\u2224","nparallel":"\u2226","npar":"\u2226","nparsl":"\u2AFD\u20E5","npart":"\u2202\u0338","npolint":"\u2A14","npr":"\u2280","nprcue":"\u22E0","nprec":"\u2280","npreceq":"\u2AAF\u0338","npre":"\u2AAF\u0338","nrarrc":"\u2933\u0338","nrarr":"\u219B","nrArr":"\u21CF","nrarrw":"\u219D\u0338","nrightarrow":"\u219B","nRightarrow":"\u21CF","nrtri":"\u22EB","nrtrie":"\u22ED","nsc":"\u2281","nsccue":"\u22E1","nsce":"\u2AB0\u0338","Nscr":"\uD835\uDCA9","nscr":"\uD835\uDCC3","nshortmid":"\u2224","nshortparallel":"\u2226","nsim":"\u2241","nsime":"\u2244","nsimeq":"\u2244","nsmid":"\u2224","nspar":"\u2226","nsqsube":"\u22E2","nsqsupe":"\u22E3","nsub":"\u2284","nsubE":"\u2AC5\u0338","nsube":"\u2288","nsubset":"\u2282\u20D2","nsubseteq":"\u2288","nsubseteqq":"\u2AC5\u0338","nsucc":"\u2281","nsucceq":"\u2AB0\u0338","nsup":"\u2285","nsupE":"\u2AC6\u0338","nsupe":"\u2289","nsupset":"\u2283\u20D2","nsupseteq":"\u2289","nsupseteqq":"\u2AC6\u0338","ntgl":"\u2279","Ntilde":"\u00D1","ntilde":"\u00F1","ntlg":"\u2278","ntriangleleft":"\u22EA","ntrianglelefteq":"\u22EC","ntriangleright":"\u22EB","ntrianglerighteq":"\u22ED","Nu":"\u039D","nu":"\u03BD","num":"#","numero":"\u2116","numsp":"\u2007","nvap":"\u224D\u20D2","nvdash":"\u22AC","nvDash":"\u22AD","nVdash":"\u22AE","nVDash":"\u22AF","nvge":"\u2265\u20D2","nvgt":">\u20D2","nvHarr":"\u2904","nvinfin":"\u29DE","nvlArr":"\u2902","nvle":"\u2264\u20D2","nvlt":"<\u20D2","nvltrie":"\u22B4\u20D2","nvrArr":"\u2903","nvrtrie":"\u22B5\u20D2","nvsim":"\u223C\u20D2","nwarhk":"\u2923","nwarr":"\u2196","nwArr":"\u21D6","nwarrow":"\u2196","nwnear":"\u2927","Oacute":"\u00D3","oacute":"\u00F3","oast":"\u229B","Ocirc":"\u00D4","ocirc":"\u00F4","ocir":"\u229A","Ocy":"\u041E","ocy":"\u043E","odash":"\u229D","Odblac":"\u0150","odblac":"\u0151","odiv":"\u2A38","odot":"\u2299","odsold":"\u29BC","OElig":"\u0152","oelig":"\u0153","ofcir":"\u29BF","Ofr":"\uD835\uDD12","ofr":"\uD835\uDD2C","ogon":"\u02DB","Ograve":"\u00D2","ograve":"\u00F2","ogt":"\u29C1","ohbar":"\u29B5","ohm":"\u03A9","oint":"\u222E","olarr":"\u21BA","olcir":"\u29BE","olcross":"\u29BB","oline":"\u203E","olt":"\u29C0","Omacr":"\u014C","omacr":"\u014D","Omega":"\u03A9","omega":"\u03C9","Omicron":"\u039F","omicron":"\u03BF","omid":"\u29B6","ominus":"\u2296","Oopf":"\uD835\uDD46","oopf":"\uD835\uDD60","opar":"\u29B7","OpenCurlyDoubleQuote":"\u201C","OpenCurlyQuote":"\u2018","operp":"\u29B9","oplus":"\u2295","orarr":"\u21BB","Or":"\u2A54","or":"\u2228","ord":"\u2A5D","order":"\u2134","orderof":"\u2134","ordf":"\u00AA","ordm":"\u00BA","origof":"\u22B6","oror":"\u2A56","orslope":"\u2A57","orv":"\u2A5B","oS":"\u24C8","Oscr":"\uD835\uDCAA","oscr":"\u2134","Oslash":"\u00D8","oslash":"\u00F8","osol":"\u2298","Otilde":"\u00D5","otilde":"\u00F5","otimesas":"\u2A36","Otimes":"\u2A37","otimes":"\u2297","Ouml":"\u00D6","ouml":"\u00F6","ovbar":"\u233D","OverBar":"\u203E","OverBrace":"\u23DE","OverBracket":"\u23B4","OverParenthesis":"\u23DC","para":"\u00B6","parallel":"\u2225","par":"\u2225","parsim":"\u2AF3","parsl":"\u2AFD","part":"\u2202","PartialD":"\u2202","Pcy":"\u041F","pcy":"\u043F","percnt":"%","period":".","permil":"\u2030","perp":"\u22A5","pertenk":"\u2031","Pfr":"\uD835\uDD13","pfr":"\uD835\uDD2D","Phi":"\u03A6","phi":"\u03C6","phiv":"\u03D5","phmmat":"\u2133","phone":"\u260E","Pi":"\u03A0","pi":"\u03C0","pitchfork":"\u22D4","piv":"\u03D6","planck":"\u210F","planckh":"\u210E","plankv":"\u210F","plusacir":"\u2A23","plusb":"\u229E","pluscir":"\u2A22","plus":"+","plusdo":"\u2214","plusdu":"\u2A25","pluse":"\u2A72","PlusMinus":"\u00B1","plusmn":"\u00B1","plussim":"\u2A26","plustwo":"\u2A27","pm":"\u00B1","Poincareplane":"\u210C","pointint":"\u2A15","popf":"\uD835\uDD61","Popf":"\u2119","pound":"\u00A3","prap":"\u2AB7","Pr":"\u2ABB","pr":"\u227A","prcue":"\u227C","precapprox":"\u2AB7","prec":"\u227A","preccurlyeq":"\u227C","Precedes":"\u227A","PrecedesEqual":"\u2AAF","PrecedesSlantEqual":"\u227C","PrecedesTilde":"\u227E","preceq":"\u2AAF","precnapprox":"\u2AB9","precneqq":"\u2AB5","precnsim":"\u22E8","pre":"\u2AAF","prE":"\u2AB3","precsim":"\u227E","prime":"\u2032","Prime":"\u2033","primes":"\u2119","prnap":"\u2AB9","prnE":"\u2AB5","prnsim":"\u22E8","prod":"\u220F","Product":"\u220F","profalar":"\u232E","profline":"\u2312","profsurf":"\u2313","prop":"\u221D","Proportional":"\u221D","Proportion":"\u2237","propto":"\u221D","prsim":"\u227E","prurel":"\u22B0","Pscr":"\uD835\uDCAB","pscr":"\uD835\uDCC5","Psi":"\u03A8","psi":"\u03C8","puncsp":"\u2008","Qfr":"\uD835\uDD14","qfr":"\uD835\uDD2E","qint":"\u2A0C","qopf":"\uD835\uDD62","Qopf":"\u211A","qprime":"\u2057","Qscr":"\uD835\uDCAC","qscr":"\uD835\uDCC6","quaternions":"\u210D","quatint":"\u2A16","quest":"?","questeq":"\u225F","quot":"\"","QUOT":"\"","rAarr":"\u21DB","race":"\u223D\u0331","Racute":"\u0154","racute":"\u0155","radic":"\u221A","raemptyv":"\u29B3","rang":"\u27E9","Rang":"\u27EB","rangd":"\u2992","range":"\u29A5","rangle":"\u27E9","raquo":"\u00BB","rarrap":"\u2975","rarrb":"\u21E5","rarrbfs":"\u2920","rarrc":"\u2933","rarr":"\u2192","Rarr":"\u21A0","rArr":"\u21D2","rarrfs":"\u291E","rarrhk":"\u21AA","rarrlp":"\u21AC","rarrpl":"\u2945","rarrsim":"\u2974","Rarrtl":"\u2916","rarrtl":"\u21A3","rarrw":"\u219D","ratail":"\u291A","rAtail":"\u291C","ratio":"\u2236","rationals":"\u211A","rbarr":"\u290D","rBarr":"\u290F","RBarr":"\u2910","rbbrk":"\u2773","rbrace":"}","rbrack":"]","rbrke":"\u298C","rbrksld":"\u298E","rbrkslu":"\u2990","Rcaron":"\u0158","rcaron":"\u0159","Rcedil":"\u0156","rcedil":"\u0157","rceil":"\u2309","rcub":"}","Rcy":"\u0420","rcy":"\u0440","rdca":"\u2937","rdldhar":"\u2969","rdquo":"\u201D","rdquor":"\u201D","rdsh":"\u21B3","real":"\u211C","realine":"\u211B","realpart":"\u211C","reals":"\u211D","Re":"\u211C","rect":"\u25AD","reg":"\u00AE","REG":"\u00AE","ReverseElement":"\u220B","ReverseEquilibrium":"\u21CB","ReverseUpEquilibrium":"\u296F","rfisht":"\u297D","rfloor":"\u230B","rfr":"\uD835\uDD2F","Rfr":"\u211C","rHar":"\u2964","rhard":"\u21C1","rharu":"\u21C0","rharul":"\u296C","Rho":"\u03A1","rho":"\u03C1","rhov":"\u03F1","RightAngleBracket":"\u27E9","RightArrowBar":"\u21E5","rightarrow":"\u2192","RightArrow":"\u2192","Rightarrow":"\u21D2","RightArrowLeftArrow":"\u21C4","rightarrowtail":"\u21A3","RightCeiling":"\u2309","RightDoubleBracket":"\u27E7","RightDownTeeVector":"\u295D","RightDownVectorBar":"\u2955","RightDownVector":"\u21C2","RightFloor":"\u230B","rightharpoondown":"\u21C1","rightharpoonup":"\u21C0","rightleftarrows":"\u21C4","rightleftharpoons":"\u21CC","rightrightarrows":"\u21C9","rightsquigarrow":"\u219D","RightTeeArrow":"\u21A6","RightTee":"\u22A2","RightTeeVector":"\u295B","rightthreetimes":"\u22CC","RightTriangleBar":"\u29D0","RightTriangle":"\u22B3","RightTriangleEqual":"\u22B5","RightUpDownVector":"\u294F","RightUpTeeVector":"\u295C","RightUpVectorBar":"\u2954","RightUpVector":"\u21BE","RightVectorBar":"\u2953","RightVector":"\u21C0","ring":"\u02DA","risingdotseq":"\u2253","rlarr":"\u21C4","rlhar":"\u21CC","rlm":"\u200F","rmoustache":"\u23B1","rmoust":"\u23B1","rnmid":"\u2AEE","roang":"\u27ED","roarr":"\u21FE","robrk":"\u27E7","ropar":"\u2986","ropf":"\uD835\uDD63","Ropf":"\u211D","roplus":"\u2A2E","rotimes":"\u2A35","RoundImplies":"\u2970","rpar":")","rpargt":"\u2994","rppolint":"\u2A12","rrarr":"\u21C9","Rrightarrow":"\u21DB","rsaquo":"\u203A","rscr":"\uD835\uDCC7","Rscr":"\u211B","rsh":"\u21B1","Rsh":"\u21B1","rsqb":"]","rsquo":"\u2019","rsquor":"\u2019","rthree":"\u22CC","rtimes":"\u22CA","rtri":"\u25B9","rtrie":"\u22B5","rtrif":"\u25B8","rtriltri":"\u29CE","RuleDelayed":"\u29F4","ruluhar":"\u2968","rx":"\u211E","Sacute":"\u015A","sacute":"\u015B","sbquo":"\u201A","scap":"\u2AB8","Scaron":"\u0160","scaron":"\u0161","Sc":"\u2ABC","sc":"\u227B","sccue":"\u227D","sce":"\u2AB0","scE":"\u2AB4","Scedil":"\u015E","scedil":"\u015F","Scirc":"\u015C","scirc":"\u015D","scnap":"\u2ABA","scnE":"\u2AB6","scnsim":"\u22E9","scpolint":"\u2A13","scsim":"\u227F","Scy":"\u0421","scy":"\u0441","sdotb":"\u22A1","sdot":"\u22C5","sdote":"\u2A66","searhk":"\u2925","searr":"\u2198","seArr":"\u21D8","searrow":"\u2198","sect":"\u00A7","semi":";","seswar":"\u2929","setminus":"\u2216","setmn":"\u2216","sext":"\u2736","Sfr":"\uD835\uDD16","sfr":"\uD835\uDD30","sfrown":"\u2322","sharp":"\u266F","SHCHcy":"\u0429","shchcy":"\u0449","SHcy":"\u0428","shcy":"\u0448","ShortDownArrow":"\u2193","ShortLeftArrow":"\u2190","shortmid":"\u2223","shortparallel":"\u2225","ShortRightArrow":"\u2192","ShortUpArrow":"\u2191","shy":"\u00AD","Sigma":"\u03A3","sigma":"\u03C3","sigmaf":"\u03C2","sigmav":"\u03C2","sim":"\u223C","simdot":"\u2A6A","sime":"\u2243","simeq":"\u2243","simg":"\u2A9E","simgE":"\u2AA0","siml":"\u2A9D","simlE":"\u2A9F","simne":"\u2246","simplus":"\u2A24","simrarr":"\u2972","slarr":"\u2190","SmallCircle":"\u2218","smallsetminus":"\u2216","smashp":"\u2A33","smeparsl":"\u29E4","smid":"\u2223","smile":"\u2323","smt":"\u2AAA","smte":"\u2AAC","smtes":"\u2AAC\uFE00","SOFTcy":"\u042C","softcy":"\u044C","solbar":"\u233F","solb":"\u29C4","sol":"/","Sopf":"\uD835\uDD4A","sopf":"\uD835\uDD64","spades":"\u2660","spadesuit":"\u2660","spar":"\u2225","sqcap":"\u2293","sqcaps":"\u2293\uFE00","sqcup":"\u2294","sqcups":"\u2294\uFE00","Sqrt":"\u221A","sqsub":"\u228F","sqsube":"\u2291","sqsubset":"\u228F","sqsubseteq":"\u2291","sqsup":"\u2290","sqsupe":"\u2292","sqsupset":"\u2290","sqsupseteq":"\u2292","square":"\u25A1","Square":"\u25A1","SquareIntersection":"\u2293","SquareSubset":"\u228F","SquareSubsetEqual":"\u2291","SquareSuperset":"\u2290","SquareSupersetEqual":"\u2292","SquareUnion":"\u2294","squarf":"\u25AA","squ":"\u25A1","squf":"\u25AA","srarr":"\u2192","Sscr":"\uD835\uDCAE","sscr":"\uD835\uDCC8","ssetmn":"\u2216","ssmile":"\u2323","sstarf":"\u22C6","Star":"\u22C6","star":"\u2606","starf":"\u2605","straightepsilon":"\u03F5","straightphi":"\u03D5","strns":"\u00AF","sub":"\u2282","Sub":"\u22D0","subdot":"\u2ABD","subE":"\u2AC5","sube":"\u2286","subedot":"\u2AC3","submult":"\u2AC1","subnE":"\u2ACB","subne":"\u228A","subplus":"\u2ABF","subrarr":"\u2979","subset":"\u2282","Subset":"\u22D0","subseteq":"\u2286","subseteqq":"\u2AC5","SubsetEqual":"\u2286","subsetneq":"\u228A","subsetneqq":"\u2ACB","subsim":"\u2AC7","subsub":"\u2AD5","subsup":"\u2AD3","succapprox":"\u2AB8","succ":"\u227B","succcurlyeq":"\u227D","Succeeds":"\u227B","SucceedsEqual":"\u2AB0","SucceedsSlantEqual":"\u227D","SucceedsTilde":"\u227F","succeq":"\u2AB0","succnapprox":"\u2ABA","succneqq":"\u2AB6","succnsim":"\u22E9","succsim":"\u227F","SuchThat":"\u220B","sum":"\u2211","Sum":"\u2211","sung":"\u266A","sup1":"\u00B9","sup2":"\u00B2","sup3":"\u00B3","sup":"\u2283","Sup":"\u22D1","supdot":"\u2ABE","supdsub":"\u2AD8","supE":"\u2AC6","supe":"\u2287","supedot":"\u2AC4","Superset":"\u2283","SupersetEqual":"\u2287","suphsol":"\u27C9","suphsub":"\u2AD7","suplarr":"\u297B","supmult":"\u2AC2","supnE":"\u2ACC","supne":"\u228B","supplus":"\u2AC0","supset":"\u2283","Supset":"\u22D1","supseteq":"\u2287","supseteqq":"\u2AC6","supsetneq":"\u228B","supsetneqq":"\u2ACC","supsim":"\u2AC8","supsub":"\u2AD4","supsup":"\u2AD6","swarhk":"\u2926","swarr":"\u2199","swArr":"\u21D9","swarrow":"\u2199","swnwar":"\u292A","szlig":"\u00DF","Tab":"\t","target":"\u2316","Tau":"\u03A4","tau":"\u03C4","tbrk":"\u23B4","Tcaron":"\u0164","tcaron":"\u0165","Tcedil":"\u0162","tcedil":"\u0163","Tcy":"\u0422","tcy":"\u0442","tdot":"\u20DB","telrec":"\u2315","Tfr":"\uD835\uDD17","tfr":"\uD835\uDD31","there4":"\u2234","therefore":"\u2234","Therefore":"\u2234","Theta":"\u0398","theta":"\u03B8","thetasym":"\u03D1","thetav":"\u03D1","thickapprox":"\u2248","thicksim":"\u223C","ThickSpace":"\u205F\u200A","ThinSpace":"\u2009","thinsp":"\u2009","thkap":"\u2248","thksim":"\u223C","THORN":"\u00DE","thorn":"\u00FE","tilde":"\u02DC","Tilde":"\u223C","TildeEqual":"\u2243","TildeFullEqual":"\u2245","TildeTilde":"\u2248","timesbar":"\u2A31","timesb":"\u22A0","times":"\u00D7","timesd":"\u2A30","tint":"\u222D","toea":"\u2928","topbot":"\u2336","topcir":"\u2AF1","top":"\u22A4","Topf":"\uD835\uDD4B","topf":"\uD835\uDD65","topfork":"\u2ADA","tosa":"\u2929","tprime":"\u2034","trade":"\u2122","TRADE":"\u2122","triangle":"\u25B5","triangledown":"\u25BF","triangleleft":"\u25C3","trianglelefteq":"\u22B4","triangleq":"\u225C","triangleright":"\u25B9","trianglerighteq":"\u22B5","tridot":"\u25EC","trie":"\u225C","triminus":"\u2A3A","TripleDot":"\u20DB","triplus":"\u2A39","trisb":"\u29CD","tritime":"\u2A3B","trpezium":"\u23E2","Tscr":"\uD835\uDCAF","tscr":"\uD835\uDCC9","TScy":"\u0426","tscy":"\u0446","TSHcy":"\u040B","tshcy":"\u045B","Tstrok":"\u0166","tstrok":"\u0167","twixt":"\u226C","twoheadleftarrow":"\u219E","twoheadrightarrow":"\u21A0","Uacute":"\u00DA","uacute":"\u00FA","uarr":"\u2191","Uarr":"\u219F","uArr":"\u21D1","Uarrocir":"\u2949","Ubrcy":"\u040E","ubrcy":"\u045E","Ubreve":"\u016C","ubreve":"\u016D","Ucirc":"\u00DB","ucirc":"\u00FB","Ucy":"\u0423","ucy":"\u0443","udarr":"\u21C5","Udblac":"\u0170","udblac":"\u0171","udhar":"\u296E","ufisht":"\u297E","Ufr":"\uD835\uDD18","ufr":"\uD835\uDD32","Ugrave":"\u00D9","ugrave":"\u00F9","uHar":"\u2963","uharl":"\u21BF","uharr":"\u21BE","uhblk":"\u2580","ulcorn":"\u231C","ulcorner":"\u231C","ulcrop":"\u230F","ultri":"\u25F8","Umacr":"\u016A","umacr":"\u016B","uml":"\u00A8","UnderBar":"_","UnderBrace":"\u23DF","UnderBracket":"\u23B5","UnderParenthesis":"\u23DD","Union":"\u22C3","UnionPlus":"\u228E","Uogon":"\u0172","uogon":"\u0173","Uopf":"\uD835\uDD4C","uopf":"\uD835\uDD66","UpArrowBar":"\u2912","uparrow":"\u2191","UpArrow":"\u2191","Uparrow":"\u21D1","UpArrowDownArrow":"\u21C5","updownarrow":"\u2195","UpDownArrow":"\u2195","Updownarrow":"\u21D5","UpEquilibrium":"\u296E","upharpoonleft":"\u21BF","upharpoonright":"\u21BE","uplus":"\u228E","UpperLeftArrow":"\u2196","UpperRightArrow":"\u2197","upsi":"\u03C5","Upsi":"\u03D2","upsih":"\u03D2","Upsilon":"\u03A5","upsilon":"\u03C5","UpTeeArrow":"\u21A5","UpTee":"\u22A5","upuparrows":"\u21C8","urcorn":"\u231D","urcorner":"\u231D","urcrop":"\u230E","Uring":"\u016E","uring":"\u016F","urtri":"\u25F9","Uscr":"\uD835\uDCB0","uscr":"\uD835\uDCCA","utdot":"\u22F0","Utilde":"\u0168","utilde":"\u0169","utri":"\u25B5","utrif":"\u25B4","uuarr":"\u21C8","Uuml":"\u00DC","uuml":"\u00FC","uwangle":"\u29A7","vangrt":"\u299C","varepsilon":"\u03F5","varkappa":"\u03F0","varnothing":"\u2205","varphi":"\u03D5","varpi":"\u03D6","varpropto":"\u221D","varr":"\u2195","vArr":"\u21D5","varrho":"\u03F1","varsigma":"\u03C2","varsubsetneq":"\u228A\uFE00","varsubsetneqq":"\u2ACB\uFE00","varsupsetneq":"\u228B\uFE00","varsupsetneqq":"\u2ACC\uFE00","vartheta":"\u03D1","vartriangleleft":"\u22B2","vartriangleright":"\u22B3","vBar":"\u2AE8","Vbar":"\u2AEB","vBarv":"\u2AE9","Vcy":"\u0412","vcy":"\u0432","vdash":"\u22A2","vDash":"\u22A8","Vdash":"\u22A9","VDash":"\u22AB","Vdashl":"\u2AE6","veebar":"\u22BB","vee":"\u2228","Vee":"\u22C1","veeeq":"\u225A","vellip":"\u22EE","verbar":"|","Verbar":"\u2016","vert":"|","Vert":"\u2016","VerticalBar":"\u2223","VerticalLine":"|","VerticalSeparator":"\u2758","VerticalTilde":"\u2240","VeryThinSpace":"\u200A","Vfr":"\uD835\uDD19","vfr":"\uD835\uDD33","vltri":"\u22B2","vnsub":"\u2282\u20D2","vnsup":"\u2283\u20D2","Vopf":"\uD835\uDD4D","vopf":"\uD835\uDD67","vprop":"\u221D","vrtri":"\u22B3","Vscr":"\uD835\uDCB1","vscr":"\uD835\uDCCB","vsubnE":"\u2ACB\uFE00","vsubne":"\u228A\uFE00","vsupnE":"\u2ACC\uFE00","vsupne":"\u228B\uFE00","Vvdash":"\u22AA","vzigzag":"\u299A","Wcirc":"\u0174","wcirc":"\u0175","wedbar":"\u2A5F","wedge":"\u2227","Wedge":"\u22C0","wedgeq":"\u2259","weierp":"\u2118","Wfr":"\uD835\uDD1A","wfr":"\uD835\uDD34","Wopf":"\uD835\uDD4E","wopf":"\uD835\uDD68","wp":"\u2118","wr":"\u2240","wreath":"\u2240","Wscr":"\uD835\uDCB2","wscr":"\uD835\uDCCC","xcap":"\u22C2","xcirc":"\u25EF","xcup":"\u22C3","xdtri":"\u25BD","Xfr":"\uD835\uDD1B","xfr":"\uD835\uDD35","xharr":"\u27F7","xhArr":"\u27FA","Xi":"\u039E","xi":"\u03BE","xlarr":"\u27F5","xlArr":"\u27F8","xmap":"\u27FC","xnis":"\u22FB","xodot":"\u2A00","Xopf":"\uD835\uDD4F","xopf":"\uD835\uDD69","xoplus":"\u2A01","xotime":"\u2A02","xrarr":"\u27F6","xrArr":"\u27F9","Xscr":"\uD835\uDCB3","xscr":"\uD835\uDCCD","xsqcup":"\u2A06","xuplus":"\u2A04","xutri":"\u25B3","xvee":"\u22C1","xwedge":"\u22C0","Yacute":"\u00DD","yacute":"\u00FD","YAcy":"\u042F","yacy":"\u044F","Ycirc":"\u0176","ycirc":"\u0177","Ycy":"\u042B","ycy":"\u044B","yen":"\u00A5","Yfr":"\uD835\uDD1C","yfr":"\uD835\uDD36","YIcy":"\u0407","yicy":"\u0457","Yopf":"\uD835\uDD50","yopf":"\uD835\uDD6A","Yscr":"\uD835\uDCB4","yscr":"\uD835\uDCCE","YUcy":"\u042E","yucy":"\u044E","yuml":"\u00FF","Yuml":"\u0178","Zacute":"\u0179","zacute":"\u017A","Zcaron":"\u017D","zcaron":"\u017E","Zcy":"\u0417","zcy":"\u0437","Zdot":"\u017B","zdot":"\u017C","zeetrf":"\u2128","ZeroWidthSpace":"\u200B","Zeta":"\u0396","zeta":"\u03B6","zfr":"\uD835\uDD37","Zfr":"\u2128","ZHcy":"\u0416","zhcy":"\u0436","zigrarr":"\u21DD","zopf":"\uD835\uDD6B","Zopf":"\u2124","Zscr":"\uD835\uDCB5","zscr":"\uD835\uDCCF","zwj":"\u200D","zwnj":"\u200C"}
node_modules/entities/maps/legacy.json
New file
@@ -0,0 +1 @@
{"Aacute":"\u00C1","aacute":"\u00E1","Acirc":"\u00C2","acirc":"\u00E2","acute":"\u00B4","AElig":"\u00C6","aelig":"\u00E6","Agrave":"\u00C0","agrave":"\u00E0","amp":"&","AMP":"&","Aring":"\u00C5","aring":"\u00E5","Atilde":"\u00C3","atilde":"\u00E3","Auml":"\u00C4","auml":"\u00E4","brvbar":"\u00A6","Ccedil":"\u00C7","ccedil":"\u00E7","cedil":"\u00B8","cent":"\u00A2","copy":"\u00A9","COPY":"\u00A9","curren":"\u00A4","deg":"\u00B0","divide":"\u00F7","Eacute":"\u00C9","eacute":"\u00E9","Ecirc":"\u00CA","ecirc":"\u00EA","Egrave":"\u00C8","egrave":"\u00E8","ETH":"\u00D0","eth":"\u00F0","Euml":"\u00CB","euml":"\u00EB","frac12":"\u00BD","frac14":"\u00BC","frac34":"\u00BE","gt":">","GT":">","Iacute":"\u00CD","iacute":"\u00ED","Icirc":"\u00CE","icirc":"\u00EE","iexcl":"\u00A1","Igrave":"\u00CC","igrave":"\u00EC","iquest":"\u00BF","Iuml":"\u00CF","iuml":"\u00EF","laquo":"\u00AB","lt":"<","LT":"<","macr":"\u00AF","micro":"\u00B5","middot":"\u00B7","nbsp":"\u00A0","not":"\u00AC","Ntilde":"\u00D1","ntilde":"\u00F1","Oacute":"\u00D3","oacute":"\u00F3","Ocirc":"\u00D4","ocirc":"\u00F4","Ograve":"\u00D2","ograve":"\u00F2","ordf":"\u00AA","ordm":"\u00BA","Oslash":"\u00D8","oslash":"\u00F8","Otilde":"\u00D5","otilde":"\u00F5","Ouml":"\u00D6","ouml":"\u00F6","para":"\u00B6","plusmn":"\u00B1","pound":"\u00A3","quot":"\"","QUOT":"\"","raquo":"\u00BB","reg":"\u00AE","REG":"\u00AE","sect":"\u00A7","shy":"\u00AD","sup1":"\u00B9","sup2":"\u00B2","sup3":"\u00B3","szlig":"\u00DF","THORN":"\u00DE","thorn":"\u00FE","times":"\u00D7","Uacute":"\u00DA","uacute":"\u00FA","Ucirc":"\u00DB","ucirc":"\u00FB","Ugrave":"\u00D9","ugrave":"\u00F9","uml":"\u00A8","Uuml":"\u00DC","uuml":"\u00FC","Yacute":"\u00DD","yacute":"\u00FD","yen":"\u00A5","yuml":"\u00FF"}
node_modules/entities/maps/xml.json
New file
@@ -0,0 +1 @@
{"amp":"&","apos":"'","gt":">","lt":"<","quot":"\""}
node_modules/entities/package.json
New file
@@ -0,0 +1,89 @@
{
  "_from": "entities@^1.1.1",
  "_id": "entities@1.1.2",
  "_inBundle": false,
  "_integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
  "_location": "/entities",
  "_phantomChildren": {},
  "_requested": {
    "type": "range",
    "registry": true,
    "raw": "entities@^1.1.1",
    "name": "entities",
    "escapedName": "entities",
    "rawSpec": "^1.1.1",
    "saveSpec": null,
    "fetchSpec": "^1.1.1"
  },
  "_requiredBy": [
    "/mini-html-parser2"
  ],
  "_resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
  "_shasum": "bdfa735299664dfafd34529ed4f8522a275fea56",
  "_spec": "entities@^1.1.1",
  "_where": "D:\\workspace\\zfb\\MiniProjects\\DayLucky\\node_modules\\mini-html-parser2",
  "author": {
    "name": "Felix Boehm",
    "email": "me@feedic.com"
  },
  "bugs": {
    "url": "https://github.com/fb55/entities/issues"
  },
  "bundleDependencies": false,
  "deprecated": false,
  "description": "Encode & decode XML/HTML entities with ease",
  "devDependencies": {
    "coveralls": "*",
    "istanbul": "*",
    "jshint": "2",
    "mocha": "^5.0.1",
    "mocha-lcov-reporter": "*"
  },
  "directories": {
    "test": "test"
  },
  "homepage": "https://github.com/fb55/entities#readme",
  "jshintConfig": {
    "eqeqeq": true,
    "freeze": true,
    "latedef": "nofunc",
    "noarg": true,
    "nonbsp": true,
    "quotmark": "double",
    "undef": true,
    "unused": true,
    "trailing": true,
    "eqnull": true,
    "proto": true,
    "smarttabs": true,
    "node": true,
    "globals": {
      "describe": true,
      "it": true
    }
  },
  "keywords": [
    "html",
    "xml",
    "entity",
    "decoding",
    "encoding"
  ],
  "license": "BSD-2-Clause",
  "main": "./index.js",
  "name": "entities",
  "prettier": {
    "tabWidth": 4
  },
  "repository": {
    "type": "git",
    "url": "git://github.com/fb55/entities.git"
  },
  "scripts": {
    "coveralls": "npm run lint && npm run lcov && (cat coverage/lcov.info | coveralls || exit 0)",
    "lcov": "istanbul cover _mocha --report lcovonly -- -R spec",
    "lint": "jshint index.js lib/*.js test/*.js",
    "test": "mocha && npm run lint"
  },
  "version": "1.1.2"
}
node_modules/entities/readme.md
New file
@@ -0,0 +1,27 @@
# entities [![NPM version](http://img.shields.io/npm/v/entities.svg)](https://npmjs.org/package/entities)  [![Downloads](https://img.shields.io/npm/dm/entities.svg)](https://npmjs.org/package/entities) [![Build Status](http://img.shields.io/travis/fb55/entities.svg)](http://travis-ci.org/fb55/entities) [![Coverage](http://img.shields.io/coveralls/fb55/entities.svg)](https://coveralls.io/r/fb55/entities)
En- & decoder for XML/HTML entities.
## How to…
### …install `entities`
    npm i entities
### …use `entities`
```javascript
var entities = require("entities");
//encoding
entities.encodeXML("&#38;");  // "&amp;#38;"
entities.encodeHTML("&#38;"); // "&amp;&num;38&semi;"
//decoding
entities.decodeXML("asdf &amp; &#xFF; &#xFC; &apos;");  // "asdf & ÿ ü '"
entities.decodeHTML("asdf &amp; &yuml; &uuml; &apos;"); // "asdf & ÿ ü '"
```
<!-- TODO extend API -->
---
License: BSD-2-Clause
node_modules/entities/test/mocha.opts
New file
@@ -0,0 +1,2 @@
--check-leaks
--reporter spec
node_modules/entities/test/test.js
New file
@@ -0,0 +1,170 @@
var assert = require("assert"),
    path = require("path"),
    entities = require("../");
describe("Encode->decode test", function() {
    var testcases = [
        {
            input: "asdf & ÿ ü '",
            xml: "asdf &amp; &#xFF; &#xFC; &apos;",
            html: "asdf &amp; &yuml; &uuml; &apos;"
        },
        {
            input: "&#38;",
            xml: "&amp;#38;",
            html: "&amp;&num;38&semi;"
        }
    ];
    testcases.forEach(function(tc) {
        var encodedXML = entities.encodeXML(tc.input);
        it("should XML encode " + tc.input, function() {
            assert.equal(encodedXML, tc.xml);
        });
        it("should default to XML encode " + tc.input, function() {
            assert.equal(entities.encode(tc.input), tc.xml);
        });
        it("should XML decode " + encodedXML, function() {
            assert.equal(entities.decodeXML(encodedXML), tc.input);
        });
        it("should default to XML encode " + encodedXML, function() {
            assert.equal(entities.decode(encodedXML), tc.input);
        });
        it("should default strict to XML encode " + encodedXML, function() {
            assert.equal(entities.decodeStrict(encodedXML), tc.input);
        });
        var encodedHTML5 = entities.encodeHTML5(tc.input);
        it("should HTML5 encode " + tc.input, function() {
            assert.equal(encodedHTML5, tc.html);
        });
        it("should HTML5 decode " + encodedHTML5, function() {
            assert.equal(entities.decodeHTML(encodedHTML5), tc.input);
        });
    });
    it("should encode data URIs (issue 16)", function() {
        var data = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAALAAABAAEAAAIBRAA7";
        assert.equal(entities.decode(entities.encode(data)), data);
    });
});
describe("Decode test", function() {
    var testcases = [
        { input: "&amp;amp;", output: "&amp;" },
        { input: "&amp;#38;", output: "&#38;" },
        { input: "&amp;#x26;", output: "&#x26;" },
        { input: "&amp;#X26;", output: "&#X26;" },
        { input: "&#38;#38;", output: "&#38;" },
        { input: "&#x26;#38;", output: "&#38;" },
        { input: "&#X26;#38;", output: "&#38;" },
        { input: "&#x3a;", output: ":" },
        { input: "&#x3A;", output: ":" },
        { input: "&#X3a;", output: ":" },
        { input: "&#X3A;", output: ":" }
    ];
    testcases.forEach(function(tc) {
        it("should XML decode " + tc.input, function() {
            assert.equal(entities.decodeXML(tc.input), tc.output);
        });
        it("should HTML4 decode " + tc.input, function() {
            assert.equal(entities.decodeHTML(tc.input), tc.output);
        });
        it("should HTML5 decode " + tc.input, function() {
            assert.equal(entities.decodeHTML(tc.input), tc.output);
        });
    });
});
var levels = ["xml", "entities"];
describe("Documents", function() {
    levels
        .map(function(n) {
            return path.join("..", "maps", n);
        })
        .map(require)
        .forEach(function(doc, i) {
            describe("Decode", function() {
                it(levels[i], function() {
                    Object.keys(doc).forEach(function(e) {
                        for (var l = i; l < levels.length; l++) {
                            assert.equal(entities.decode("&" + e + ";", l), doc[e]);
                        }
                    });
                });
            });
            describe("Decode strict", function() {
                it(levels[i], function() {
                    Object.keys(doc).forEach(function(e) {
                        for (var l = i; l < levels.length; l++) {
                            assert.equal(entities.decodeStrict("&" + e + ";", l), doc[e]);
                        }
                    });
                });
            });
            describe("Encode", function() {
                it(levels[i], function() {
                    Object.keys(doc).forEach(function(e) {
                        for (var l = i; l < levels.length; l++) {
                            assert.equal(entities.decode(entities.encode(doc[e], l), l), doc[e]);
                        }
                    });
                });
            });
        });
    var legacy = require("../maps/legacy.json");
    describe("Legacy", function() {
        it("should decode", runLegacy);
    });
    function runLegacy() {
        Object.keys(legacy).forEach(function(e) {
            assert.equal(entities.decodeHTML("&" + e), legacy[e]);
        });
    }
});
var astral = {
    "1D306": "\uD834\uDF06",
    "1D11E": "\uD834\uDD1E"
};
var astralSpecial = {
    "80": "\u20AC",
    "110000": "\uFFFD"
};
describe("Astral entities", function() {
    Object.keys(astral).forEach(function(c) {
        it("should decode " + astral[c], function() {
            assert.equal(entities.decode("&#x" + c + ";"), astral[c]);
        });
        it("should encode " + astral[c], function() {
            assert.equal(entities.encode(astral[c]), "&#x" + c + ";");
        });
        it("should escape " + astral[c], function() {
            assert.equal(entities.escape(astral[c]), "&#x" + c + ";");
        });
    });
    Object.keys(astralSpecial).forEach(function(c) {
        it("special should decode \\u" + c, function() {
            assert.equal(entities.decode("&#x" + c + ";"), astralSpecial[c]);
        });
    });
});
describe("Escape", function() {
    it("should always decode ASCII chars", function() {
        for (var i = 0; i < 0x7f; i++) {
            var c = String.fromCharCode(i);
            assert.equal(entities.decodeXML(entities.escape(c)), c);
        }
    });
});
node_modules/events/.airtap.yml
New file
@@ -0,0 +1,15 @@
sauce_connect: true
loopback: airtap.local
browsers:
  - name: chrome
    version: latest
  - name: firefox
    version: latest
  - name: safari
    version: 9..latest
  - name: iphone
    version: latest
  - name: ie
    version: 9..latest
  - name: microsoftedge
    version: 13..latest
node_modules/events/.github/FUNDING.yml
New file
@@ -0,0 +1,12 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: npm/events
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
node_modules/events/.travis.yml
New file
@@ -0,0 +1,18 @@
dist: xenial
os: linux
language: node_js
node_js:
  - 'stable'
  - 'lts/*'
  - '0.12'
script:
  - npm test
  - if [ "${TRAVIS_PULL_REQUEST}" = "false" ] && [ "${TRAVIS_NODE_VERSION}" = "stable" ]; then npm run test:browsers; fi
addons:
  sauce_connect: true
  hosts:
    - airtap.local
env:
  global:
  - secure: XcBiD8yReflut9q7leKsigDZ0mI3qTKH+QrNVY8DaqlomJOZw8aOrVuX9Jz12l86ZJ41nbxmKnRNkFzcVr9mbP9YaeTb3DpeOBWmvaoSfud9Wnc16VfXtc1FCcwDhSVcSiM3UtnrmFU5cH+Dw1LPh5PbfylYOS/nJxUvG0FFLqI=
  - secure: jNWtEbqhUdQ0xXDHvCYfUbKYeJCi6a7B4LsrcxYCyWWn4NIgncE5x2YbB+FSUUFVYfz0dsn5RKP1oHB99f0laUEo18HBNkrAS/rtyOdVzcpJjbQ6kgSILGjnJD/Ty1B57Rcz3iyev5Y7bLZ6Y1FbDnk/i9/l0faOGz8vTC3Vdkc=
node_modules/events/History.md
New file
@@ -0,0 +1,95 @@
# 3.2.0
 - Add `events.once` from Node.js 11.13.0.
   To use this function, Promises must be supported in the environment. Use a polyfill like `es6-promise` if you support older browsers.
# 3.1.0 (2020-01-08)
`events` now matches the Node.js 11.12.0 API.
  - pass through return value in wrapped `emitter.once()` listeners
    Now, this works:
    ```js
    emitter.once('myevent', function () { return 1; });
    var listener = emitter.rawListeners('myevent')[0]
    assert(listener() === 1);
    ```
    Previously, `listener()` would return undefined regardless of the implementation.
    Ported from https://github.com/nodejs/node/commit/acc506c2d2771dab8d7bba6d3452bc5180dff7cf
  - Reduce code duplication in listener type check ([#67](https://github.com/Gozala/events/pull/67) by [@friederbluemle](https://github.com/friederbluemle)).
  - Improve `emitter.once()` performance in some engines
# 3.0.0 (2018-05-25)
**This version drops support for IE8.** `events` no longer includes polyfills
for ES5 features. If you need to support older environments, use an ES5 shim
like [es5-shim](https://npmjs.com/package/es5-shim). Both the shim and sham
versions of es5-shim are necessary.
  - Update to events code from Node.js 10.x
    - (semver major) Adds `off()` method
  - Port more tests from Node.js
  - Switch browser tests to airtap, making things more reliable
# 2.1.0 (2018-05-25)
  - add Emitter#rawListeners from Node.js v9.4
# 2.0.0 (2018-02-02)
  - Update to events code from node.js 8.x
    - Adds `prependListener()` and `prependOnceListener()`
    - Adds `eventNames()` method
    - (semver major) Unwrap `once()` listeners in `listeners()`
  - copy tests from node.js
Note that this version doubles the gzipped size, jumping from 1.1KB to 2.1KB,
due to new methods and runtime performance improvements. Be aware of that when
upgrading.
# 1.1.1 (2016-06-22)
  - add more context to errors if they are not instanceof Error
# 1.1.0 (2015-09-29)
  - add Emitter#listerCount (to match node v4 api)
# 1.0.2 (2014-08-28)
  - remove un-reachable code
  - update devDeps
## 1.0.1 / 2014-05-11
  - check for console.trace before using it
## 1.0.0 / 2013-12-10
  - Update to latest events code from node.js 0.10
  - copy tests from node.js
## 0.4.0 / 2011-07-03 ##
  - Switching to graphquire@0.8.0
## 0.3.0 / 2011-07-03 ##
  - Switching to URL based module require.
## 0.2.0 / 2011-06-10 ##
  - Simplified package structure.
  - Graphquire for dependency management.
## 0.1.1 / 2011-05-16 ##
  - Unhandled errors are logged via console.error
## 0.1.0 / 2011-04-22 ##
  - Initial release
node_modules/events/LICENSE
New file
@@ -0,0 +1,22 @@
MIT
Copyright Joyent, Inc. and other Node contributors.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to permit
persons to whom the Software is furnished to do so, subject to the
following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
USE OR OTHER DEALINGS IN THE SOFTWARE.
node_modules/events/Readme.md
New file
@@ -0,0 +1,49 @@
# events [![Build Status](https://travis-ci.org/Gozala/events.png?branch=master)](https://travis-ci.org/Gozala/events)
> Node's event emitter for all engines.
This implements the Node.js [`events`][node.js docs] module for environments that do not have it, like browsers.
> `events` currently matches the **Node.js 11.13.0** API.
Note that the `events` module uses ES5 features. If you need to support very old browsers like IE8, use a shim like [`es5-shim`](https://www.npmjs.com/package/es5-shim). You need both the shim and the sham versions of `es5-shim`.
This module is maintained, but only by very few people. If you'd like to help, let us know in the [Maintainer Needed](https://github.com/Gozala/events/issues/43) issue!
## Install
You usually do not have to install `events` yourself! If your code runs in Node.js, `events` is built in. If your code runs in the browser, bundlers like [browserify](https://github.com/browserify/browserify) or [webpack](https://github.com/webpack/webpack) also include the `events` module.
But if none of those apply, with npm do:
```
npm install events
```
## Usage
```javascript
var EventEmitter = require('events')
var ee = new EventEmitter()
ee.on('message', function (text) {
  console.log(text)
})
ee.emit('message', 'hello world')
```
## API
See the [Node.js EventEmitter docs][node.js docs]. `events` currently matches the Node.js 11.13.0 API.
## Contributing
PRs are very welcome! The main way to contribute to `events` is by porting features, bugfixes and tests from Node.js. Ideally, code contributions to this module are copy-pasted from Node.js and transpiled to ES5, rather than reimplemented from scratch. Matching the Node.js code as closely as possible makes maintenance simpler when new changes land in Node.js.
This module intends to provide exactly the same API as Node.js, so features that are not available in the core `events` module will not be accepted. Feature requests should instead be directed at [nodejs/node](https://github.com/nodejs/node) and will be added to this module once they are implemented in Node.js.
If there is a difference in behaviour between Node.js's `events` module and this module, please open an issue!
## License
[MIT](./LICENSE)
[node.js docs]: https://nodejs.org/dist/v11.13.0/docs/api/events.html
node_modules/events/events.js
New file
@@ -0,0 +1,476 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
'use strict';
var R = typeof Reflect === 'object' ? Reflect : null
var ReflectApply = R && typeof R.apply === 'function'
  ? R.apply
  : function ReflectApply(target, receiver, args) {
    return Function.prototype.apply.call(target, receiver, args);
  }
var ReflectOwnKeys
if (R && typeof R.ownKeys === 'function') {
  ReflectOwnKeys = R.ownKeys
} else if (Object.getOwnPropertySymbols) {
  ReflectOwnKeys = function ReflectOwnKeys(target) {
    return Object.getOwnPropertyNames(target)
      .concat(Object.getOwnPropertySymbols(target));
  };
} else {
  ReflectOwnKeys = function ReflectOwnKeys(target) {
    return Object.getOwnPropertyNames(target);
  };
}
function ProcessEmitWarning(warning) {
  if (console && console.warn) console.warn(warning);
}
var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {
  return value !== value;
}
function EventEmitter() {
  EventEmitter.init.call(this);
}
module.exports = EventEmitter;
module.exports.once = once;
// Backwards-compat with node 0.10.x
EventEmitter.EventEmitter = EventEmitter;
EventEmitter.prototype._events = undefined;
EventEmitter.prototype._eventsCount = 0;
EventEmitter.prototype._maxListeners = undefined;
// By default EventEmitters will print a warning if more than 10 listeners are
// added to it. This is a useful default which helps finding memory leaks.
var defaultMaxListeners = 10;
function checkListener(listener) {
  if (typeof listener !== 'function') {
    throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener);
  }
}
Object.defineProperty(EventEmitter, 'defaultMaxListeners', {
  enumerable: true,
  get: function() {
    return defaultMaxListeners;
  },
  set: function(arg) {
    if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {
      throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.');
    }
    defaultMaxListeners = arg;
  }
});
EventEmitter.init = function() {
  if (this._events === undefined ||
      this._events === Object.getPrototypeOf(this)._events) {
    this._events = Object.create(null);
    this._eventsCount = 0;
  }
  this._maxListeners = this._maxListeners || undefined;
};
// Obviously not all Emitters should be limited to 10. This function allows
// that to be increased. Set to zero for unlimited.
EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {
  if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {
    throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.');
  }
  this._maxListeners = n;
  return this;
};
function _getMaxListeners(that) {
  if (that._maxListeners === undefined)
    return EventEmitter.defaultMaxListeners;
  return that._maxListeners;
}
EventEmitter.prototype.getMaxListeners = function getMaxListeners() {
  return _getMaxListeners(this);
};
EventEmitter.prototype.emit = function emit(type) {
  var args = [];
  for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);
  var doError = (type === 'error');
  var events = this._events;
  if (events !== undefined)
    doError = (doError && events.error === undefined);
  else if (!doError)
    return false;
  // If there is no 'error' event listener then throw.
  if (doError) {
    var er;
    if (args.length > 0)
      er = args[0];
    if (er instanceof Error) {
      // Note: The comments on the `throw` lines are intentional, they show
      // up in Node's output if this results in an unhandled exception.
      throw er; // Unhandled 'error' event
    }
    // At least give some kind of context to the user
    var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));
    err.context = er;
    throw err; // Unhandled 'error' event
  }
  var handler = events[type];
  if (handler === undefined)
    return false;
  if (typeof handler === 'function') {
    ReflectApply(handler, this, args);
  } else {
    var len = handler.length;
    var listeners = arrayClone(handler, len);
    for (var i = 0; i < len; ++i)
      ReflectApply(listeners[i], this, args);
  }
  return true;
};
function _addListener(target, type, listener, prepend) {
  var m;
  var events;
  var existing;
  checkListener(listener);
  events = target._events;
  if (events === undefined) {
    events = target._events = Object.create(null);
    target._eventsCount = 0;
  } else {
    // To avoid recursion in the case that type === "newListener"! Before
    // adding it to the listeners, first emit "newListener".
    if (events.newListener !== undefined) {
      target.emit('newListener', type,
                  listener.listener ? listener.listener : listener);
      // Re-assign `events` because a newListener handler could have caused the
      // this._events to be assigned to a new object
      events = target._events;
    }
    existing = events[type];
  }
  if (existing === undefined) {
    // Optimize the case of one listener. Don't need the extra array object.
    existing = events[type] = listener;
    ++target._eventsCount;
  } else {
    if (typeof existing === 'function') {
      // Adding the second element, need to change to array.
      existing = events[type] =
        prepend ? [listener, existing] : [existing, listener];
      // If we've already got an array, just append.
    } else if (prepend) {
      existing.unshift(listener);
    } else {
      existing.push(listener);
    }
    // Check for listener leak
    m = _getMaxListeners(target);
    if (m > 0 && existing.length > m && !existing.warned) {
      existing.warned = true;
      // No error code for this since it is a Warning
      // eslint-disable-next-line no-restricted-syntax
      var w = new Error('Possible EventEmitter memory leak detected. ' +
                          existing.length + ' ' + String(type) + ' listeners ' +
                          'added. Use emitter.setMaxListeners() to ' +
                          'increase limit');
      w.name = 'MaxListenersExceededWarning';
      w.emitter = target;
      w.type = type;
      w.count = existing.length;
      ProcessEmitWarning(w);
    }
  }
  return target;
}
EventEmitter.prototype.addListener = function addListener(type, listener) {
  return _addListener(this, type, listener, false);
};
EventEmitter.prototype.on = EventEmitter.prototype.addListener;
EventEmitter.prototype.prependListener =
    function prependListener(type, listener) {
      return _addListener(this, type, listener, true);
    };
function onceWrapper() {
  if (!this.fired) {
    this.target.removeListener(this.type, this.wrapFn);
    this.fired = true;
    if (arguments.length === 0)
      return this.listener.call(this.target);
    return this.listener.apply(this.target, arguments);
  }
}
function _onceWrap(target, type, listener) {
  var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };
  var wrapped = onceWrapper.bind(state);
  wrapped.listener = listener;
  state.wrapFn = wrapped;
  return wrapped;
}
EventEmitter.prototype.once = function once(type, listener) {
  checkListener(listener);
  this.on(type, _onceWrap(this, type, listener));
  return this;
};
EventEmitter.prototype.prependOnceListener =
    function prependOnceListener(type, listener) {
      checkListener(listener);
      this.prependListener(type, _onceWrap(this, type, listener));
      return this;
    };
// Emits a 'removeListener' event if and only if the listener was removed.
EventEmitter.prototype.removeListener =
    function removeListener(type, listener) {
      var list, events, position, i, originalListener;
      checkListener(listener);
      events = this._events;
      if (events === undefined)
        return this;
      list = events[type];
      if (list === undefined)
        return this;
      if (list === listener || list.listener === listener) {
        if (--this._eventsCount === 0)
          this._events = Object.create(null);
        else {
          delete events[type];
          if (events.removeListener)
            this.emit('removeListener', type, list.listener || listener);
        }
      } else if (typeof list !== 'function') {
        position = -1;
        for (i = list.length - 1; i >= 0; i--) {
          if (list[i] === listener || list[i].listener === listener) {
            originalListener = list[i].listener;
            position = i;
            break;
          }
        }
        if (position < 0)
          return this;
        if (position === 0)
          list.shift();
        else {
          spliceOne(list, position);
        }
        if (list.length === 1)
          events[type] = list[0];
        if (events.removeListener !== undefined)
          this.emit('removeListener', type, originalListener || listener);
      }
      return this;
    };
EventEmitter.prototype.off = EventEmitter.prototype.removeListener;
EventEmitter.prototype.removeAllListeners =
    function removeAllListeners(type) {
      var listeners, events, i;
      events = this._events;
      if (events === undefined)
        return this;
      // not listening for removeListener, no need to emit
      if (events.removeListener === undefined) {
        if (arguments.length === 0) {
          this._events = Object.create(null);
          this._eventsCount = 0;
        } else if (events[type] !== undefined) {
          if (--this._eventsCount === 0)
            this._events = Object.create(null);
          else
            delete events[type];
        }
        return this;
      }
      // emit removeListener for all listeners on all events
      if (arguments.length === 0) {
        var keys = Object.keys(events);
        var key;
        for (i = 0; i < keys.length; ++i) {
          key = keys[i];
          if (key === 'removeListener') continue;
          this.removeAllListeners(key);
        }
        this.removeAllListeners('removeListener');
        this._events = Object.create(null);
        this._eventsCount = 0;
        return this;
      }
      listeners = events[type];
      if (typeof listeners === 'function') {
        this.removeListener(type, listeners);
      } else if (listeners !== undefined) {
        // LIFO order
        for (i = listeners.length - 1; i >= 0; i--) {
          this.removeListener(type, listeners[i]);
        }
      }
      return this;
    };
function _listeners(target, type, unwrap) {
  var events = target._events;
  if (events === undefined)
    return [];
  var evlistener = events[type];
  if (evlistener === undefined)
    return [];
  if (typeof evlistener === 'function')
    return unwrap ? [evlistener.listener || evlistener] : [evlistener];
  return unwrap ?
    unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);
}
EventEmitter.prototype.listeners = function listeners(type) {
  return _listeners(this, type, true);
};
EventEmitter.prototype.rawListeners = function rawListeners(type) {
  return _listeners(this, type, false);
};
EventEmitter.listenerCount = function(emitter, type) {
  if (typeof emitter.listenerCount === 'function') {
    return emitter.listenerCount(type);
  } else {
    return listenerCount.call(emitter, type);
  }
};
EventEmitter.prototype.listenerCount = listenerCount;
function listenerCount(type) {
  var events = this._events;
  if (events !== undefined) {
    var evlistener = events[type];
    if (typeof evlistener === 'function') {
      return 1;
    } else if (evlistener !== undefined) {
      return evlistener.length;
    }
  }
  return 0;
}
EventEmitter.prototype.eventNames = function eventNames() {
  return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];
};
function arrayClone(arr, n) {
  var copy = new Array(n);
  for (var i = 0; i < n; ++i)
    copy[i] = arr[i];
  return copy;
}
function spliceOne(list, index) {
  for (; index + 1 < list.length; index++)
    list[index] = list[index + 1];
  list.pop();
}
function unwrapListeners(arr) {
  var ret = new Array(arr.length);
  for (var i = 0; i < ret.length; ++i) {
    ret[i] = arr[i].listener || arr[i];
  }
  return ret;
}
function once(emitter, name) {
  return new Promise(function (resolve, reject) {
    function eventListener() {
      if (errorListener !== undefined) {
        emitter.removeListener('error', errorListener);
      }
      resolve([].slice.call(arguments));
    };
    var errorListener;
    // Adding an error listener is not optional because
    // if an error is thrown on an event emitter we cannot
    // guarantee that the actual event we are waiting will
    // be fired. The result could be a silent way to create
    // memory or file descriptor leaks, which is something
    // we should avoid.
    if (name !== 'error') {
      errorListener = function errorListener(err) {
        emitter.removeListener(name, eventListener);
        reject(err);
      };
      emitter.once('error', errorListener);
    }
    emitter.once(name, eventListener);
  });
}
node_modules/events/package.json
New file
@@ -0,0 +1,66 @@
{
  "_from": "events@^3.0.0",
  "_id": "events@3.2.0",
  "_inBundle": false,
  "_integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==",
  "_location": "/events",
  "_phantomChildren": {},
  "_requested": {
    "type": "range",
    "registry": true,
    "raw": "events@^3.0.0",
    "name": "events",
    "escapedName": "events",
    "rawSpec": "^3.0.0",
    "saveSpec": null,
    "fetchSpec": "^3.0.0"
  },
  "_requiredBy": [
    "/mini-html-parser2"
  ],
  "_resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz",
  "_shasum": "93b87c18f8efcd4202a461aec4dfc0556b639379",
  "_spec": "events@^3.0.0",
  "_where": "D:\\workspace\\zfb\\MiniProjects\\DayLucky\\node_modules\\mini-html-parser2",
  "author": {
    "name": "Irakli Gozalishvili",
    "email": "rfobic@gmail.com",
    "url": "http://jeditoolkit.com"
  },
  "bugs": {
    "url": "http://github.com/Gozala/events/issues/"
  },
  "bundleDependencies": false,
  "deprecated": false,
  "description": "Node's event emitter for all engines.",
  "devDependencies": {
    "airtap": "^1.0.0",
    "functions-have-names": "^1.2.1",
    "has-symbols": "^1.0.1",
    "isarray": "^2.0.5",
    "tape": "^5.0.0"
  },
  "engines": {
    "node": ">=0.8.x"
  },
  "homepage": "https://github.com/Gozala/events#readme",
  "keywords": [
    "events",
    "eventEmitter",
    "eventDispatcher",
    "listeners"
  ],
  "license": "MIT",
  "main": "./events.js",
  "name": "events",
  "repository": {
    "type": "git",
    "url": "git://github.com/Gozala/events.git",
    "web": "https://github.com/Gozala/events"
  },
  "scripts": {
    "test": "node tests/index.js",
    "test:browsers": "airtap -- tests/index.js"
  },
  "version": "3.2.0"
}
node_modules/events/security.md
New file
@@ -0,0 +1,10 @@
# Security Policy
## Supported Versions
Only the latest major version is supported at any given time.
## Reporting a Vulnerability
To report a security vulnerability, please use the
[Tidelift security contact](https://tidelift.com/security).
Tidelift will coordinate the fix and disclosure.
node_modules/events/tests/add-listeners.js
New file
@@ -0,0 +1,111 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
var common = require('./common');
var assert = require('assert');
var EventEmitter = require('../');
{
  var ee = new EventEmitter();
  var events_new_listener_emitted = [];
  var listeners_new_listener_emitted = [];
  // Sanity check
  assert.strictEqual(ee.addListener, ee.on);
  ee.on('newListener', function(event, listener) {
    // Don't track newListener listeners.
    if (event === 'newListener')
      return;
    events_new_listener_emitted.push(event);
    listeners_new_listener_emitted.push(listener);
  });
  var hello = common.mustCall(function(a, b) {
    assert.strictEqual('a', a);
    assert.strictEqual('b', b);
  });
  ee.once('newListener', function(name, listener) {
    assert.strictEqual(name, 'hello');
    assert.strictEqual(listener, hello);
    var listeners = this.listeners('hello');
    assert.ok(Array.isArray(listeners));
    assert.strictEqual(listeners.length, 0);
  });
  ee.on('hello', hello);
  ee.once('foo', assert.fail);
  assert.ok(Array.isArray(events_new_listener_emitted));
  assert.strictEqual(events_new_listener_emitted.length, 2);
  assert.strictEqual(events_new_listener_emitted[0], 'hello');
  assert.strictEqual(events_new_listener_emitted[1], 'foo');
  assert.ok(Array.isArray(listeners_new_listener_emitted));
  assert.strictEqual(listeners_new_listener_emitted.length, 2);
  assert.strictEqual(listeners_new_listener_emitted[0], hello);
  assert.strictEqual(listeners_new_listener_emitted[1], assert.fail);
  ee.emit('hello', 'a', 'b');
}
// just make sure that this doesn't throw:
{
  var f = new EventEmitter();
  f.setMaxListeners(0);
}
{
  var listen1 = function() {};
  var listen2 = function() {};
  var ee = new EventEmitter();
  ee.once('newListener', function() {
    var listeners = ee.listeners('hello');
    assert.ok(Array.isArray(listeners));
    assert.strictEqual(listeners.length, 0);
    ee.once('newListener', function() {
      var listeners = ee.listeners('hello');
      assert.ok(Array.isArray(listeners));
      assert.strictEqual(listeners.length, 0);
    });
    ee.on('hello', listen2);
  });
  ee.on('hello', listen1);
  // The order of listeners on an event is not always the order in which the
  // listeners were added.
  var listeners = ee.listeners('hello');
  assert.ok(Array.isArray(listeners));
  assert.strictEqual(listeners.length, 2);
  assert.strictEqual(listeners[0], listen2);
  assert.strictEqual(listeners[1], listen1);
}
// Verify that the listener must be a function
assert.throws(function() {
  var ee = new EventEmitter();
  ee.on('foo', null);
}, /^TypeError: The "listener" argument must be of type Function. Received type object$/);
node_modules/events/tests/check-listener-leaks.js
New file
@@ -0,0 +1,101 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
var common = require('./common');
var assert = require('assert');
var events = require('../');
// Redirect warning output to tape.
var consoleWarn = console.warn;
console.warn = common.test.comment;
common.test.on('end', function () {
  console.warn = consoleWarn;
});
// default
{
  var e = new events.EventEmitter();
  for (var i = 0; i < 10; i++) {
    e.on('default', common.mustNotCall());
  }
  assert.ok(!e._events['default'].hasOwnProperty('warned'));
  e.on('default', common.mustNotCall());
  assert.ok(e._events['default'].warned);
  // specific
  e.setMaxListeners(5);
  for (var i = 0; i < 5; i++) {
    e.on('specific', common.mustNotCall());
  }
  assert.ok(!e._events['specific'].hasOwnProperty('warned'));
  e.on('specific', common.mustNotCall());
  assert.ok(e._events['specific'].warned);
  // only one
  e.setMaxListeners(1);
  e.on('only one', common.mustNotCall());
  assert.ok(!e._events['only one'].hasOwnProperty('warned'));
  e.on('only one', common.mustNotCall());
  assert.ok(e._events['only one'].hasOwnProperty('warned'));
  // unlimited
  e.setMaxListeners(0);
  for (var i = 0; i < 1000; i++) {
    e.on('unlimited', common.mustNotCall());
  }
  assert.ok(!e._events['unlimited'].hasOwnProperty('warned'));
}
// process-wide
{
  events.EventEmitter.defaultMaxListeners = 42;
  var e = new events.EventEmitter();
  for (var i = 0; i < 42; ++i) {
    e.on('fortytwo', common.mustNotCall());
  }
  assert.ok(!e._events['fortytwo'].hasOwnProperty('warned'));
  e.on('fortytwo', common.mustNotCall());
  assert.ok(e._events['fortytwo'].hasOwnProperty('warned'));
  delete e._events['fortytwo'].warned;
  events.EventEmitter.defaultMaxListeners = 44;
  e.on('fortytwo', common.mustNotCall());
  assert.ok(!e._events['fortytwo'].hasOwnProperty('warned'));
  e.on('fortytwo', common.mustNotCall());
  assert.ok(e._events['fortytwo'].hasOwnProperty('warned'));
}
// but _maxListeners still has precedence over defaultMaxListeners
{
  events.EventEmitter.defaultMaxListeners = 42;
  var e = new events.EventEmitter();
  e.setMaxListeners(1);
  e.on('uno', common.mustNotCall());
  assert.ok(!e._events['uno'].hasOwnProperty('warned'));
  e.on('uno', common.mustNotCall());
  assert.ok(e._events['uno'].hasOwnProperty('warned'));
  // chainable
  assert.strictEqual(e, e.setMaxListeners(1));
}
node_modules/events/tests/common.js
New file
@@ -0,0 +1,104 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
var test = require('tape');
var assert = require('assert');
var noop = function() {};
var mustCallChecks = [];
function runCallChecks(exitCode) {
  if (exitCode !== 0) return;
  var failed = filter(mustCallChecks, function(context) {
    if ('minimum' in context) {
      context.messageSegment = 'at least ' + context.minimum;
      return context.actual < context.minimum;
    } else {
      context.messageSegment = 'exactly ' + context.exact;
      return context.actual !== context.exact;
    }
  });
  for (var i = 0; i < failed.length; i++) {
    var context = failed[i];
    console.log('Mismatched %s function calls. Expected %s, actual %d.',
        context.name,
        context.messageSegment,
        context.actual);
    // IE8 has no .stack
    if (context.stack) console.log(context.stack.split('\n').slice(2).join('\n'));
  }
  assert.strictEqual(failed.length, 0);
}
exports.mustCall = function(fn, exact) {
  return _mustCallInner(fn, exact, 'exact');
};
function _mustCallInner(fn, criteria, field) {
  if (typeof criteria == 'undefined') criteria = 1;
  if (typeof fn === 'number') {
    criteria = fn;
    fn = noop;
  } else if (fn === undefined) {
    fn = noop;
  }
  if (typeof criteria !== 'number')
    throw new TypeError('Invalid ' + field + ' value: ' + criteria);
  var context = {
    actual: 0,
    stack: (new Error()).stack,
    name: fn.name || '<anonymous>'
  };
  context[field] = criteria;
  // add the exit listener only once to avoid listener leak warnings
  if (mustCallChecks.length === 0) test.onFinish(function() { runCallChecks(0); });
  mustCallChecks.push(context);
  return function() {
    context.actual++;
    return fn.apply(this, arguments);
  };
}
exports.mustNotCall = function(msg) {
  return function mustNotCall() {
    assert.fail(msg || 'function should not have been called');
  };
};
function filter(arr, fn) {
  if (arr.filter) return arr.filter(fn);
  var filtered = [];
  for (var i = 0; i < arr.length; i++) {
    if (fn(arr[i], i, arr)) filtered.push(arr[i]);
  }
  return filtered
}
node_modules/events/tests/errors.js
New file
@@ -0,0 +1,13 @@
'use strict';
var assert = require('assert');
var EventEmitter = require('../');
var EE = new EventEmitter();
assert.throws(function () {
  EE.emit('error', 'Accepts a string');
}, 'Error: Unhandled error. (Accepts a string)');
assert.throws(function () {
  EE.emit('error', { message: 'Error!' });
}, 'Unhandled error. ([object Object])');
node_modules/events/tests/events-list.js
New file
@@ -0,0 +1,28 @@
'use strict';
var EventEmitter = require('../');
var assert = require('assert');
var EE = new EventEmitter();
var m = function() {};
EE.on('foo', function() {});
assert.equal(1, EE.eventNames().length);
assert.equal('foo', EE.eventNames()[0]);
EE.on('bar', m);
assert.equal(2, EE.eventNames().length);
assert.equal('foo', EE.eventNames()[0]);
assert.equal('bar', EE.eventNames()[1]);
EE.removeListener('bar', m);
assert.equal(1, EE.eventNames().length);
assert.equal('foo', EE.eventNames()[0]);
if (typeof Symbol !== 'undefined') {
  var s = Symbol('s');
  EE.on(s, m);
  assert.equal(2, EE.eventNames().length);
  assert.equal('foo', EE.eventNames()[0]);
  assert.equal(s, EE.eventNames()[1]);
  EE.removeListener(s, m);
  assert.equal(1, EE.eventNames().length);
  assert.equal('foo', EE.eventNames()[0]);
}
node_modules/events/tests/events-once.js
New file
@@ -0,0 +1,100 @@
'use strict';
var common = require('./common');
var EventEmitter = require('../').EventEmitter;
var once = require('../').once;
var assert = require('assert');
function onceAnEvent() {
  var ee = new EventEmitter();
  process.nextTick(function () {
    ee.emit('myevent', 42);
  });
  return once(ee, 'myevent').then(function (args) {
    var value = args[0]
    assert.strictEqual(value, 42);
    assert.strictEqual(ee.listenerCount('error'), 0);
    assert.strictEqual(ee.listenerCount('myevent'), 0);
  });
}
function onceAnEventWithTwoArgs() {
  var ee = new EventEmitter();
  process.nextTick(function () {
    ee.emit('myevent', 42, 24);
  });
  return once(ee, 'myevent').then(function (value) {
    assert.strictEqual(value.length, 2);
    assert.strictEqual(value[0], 42);
    assert.strictEqual(value[1], 24);
  });
}
function catchesErrors() {
  var ee = new EventEmitter();
  var expected = new Error('kaboom');
  var err;
  process.nextTick(function () {
    ee.emit('error', expected);
  });
  return once(ee, 'myevent').then(function () {
    throw new Error('should reject')
  }, function (err) {
    assert.strictEqual(err, expected);
    assert.strictEqual(ee.listenerCount('error'), 0);
    assert.strictEqual(ee.listenerCount('myevent'), 0);
  });
}
function stopListeningAfterCatchingError() {
  var ee = new EventEmitter();
  var expected = new Error('kaboom');
  var err;
  process.nextTick(function () {
    ee.emit('error', expected);
    ee.emit('myevent', 42, 24);
  });
  // process.on('multipleResolves', common.mustNotCall());
  return once(ee, 'myevent').then(common.mustNotCall, function (err) {
    // process.removeAllListeners('multipleResolves');
    assert.strictEqual(err, expected);
    assert.strictEqual(ee.listenerCount('error'), 0);
    assert.strictEqual(ee.listenerCount('myevent'), 0);
  });
}
function onceError() {
  var ee = new EventEmitter();
  var expected = new Error('kaboom');
  process.nextTick(function () {
    ee.emit('error', expected);
  });
  return once(ee, 'error').then(function (args) {
    var err = args[0]
    assert.strictEqual(err, expected);
    assert.strictEqual(ee.listenerCount('error'), 0);
    assert.strictEqual(ee.listenerCount('myevent'), 0);
  });
}
Promise.all([
  onceAnEvent(),
  onceAnEventWithTwoArgs(),
  catchesErrors(),
  stopListeningAfterCatchingError(),
  onceError()
]).catch(function (err) {
  console.error(err.stack)
  process.exit(1)
});
node_modules/events/tests/index.js
New file
@@ -0,0 +1,56 @@
var test = require('tape');
var functionsHaveNames = require('functions-have-names');
var hasSymbols = require('has-symbols');
require('./legacy-compat');
var common = require('./common');
// we do this to easily wrap each file in a mocha test
// and also have browserify be able to statically analyze this file
var orig_require = require;
var require = function(file) {
    test(file, function(t) {
        // Store the tape object so tests can access it.
        t.on('end', function () { delete common.test; });
        common.test = t;
        try { orig_require(file); } catch (err) { t.fail(err); }
        t.end();
    });
};
require('./add-listeners.js');
require('./check-listener-leaks.js');
require('./errors.js');
require('./events-list.js');
if (typeof Promise === 'function') {
  require('./events-once.js');
} else {
  // Promise support is not available.
  test('./events-once.js', { skip: true }, function () {});
}
require('./listener-count.js');
require('./listeners-side-effects.js');
require('./listeners.js');
require('./max-listeners.js');
if (functionsHaveNames()) {
  require('./method-names.js');
} else {
  // Function.name is not supported in IE
  test('./method-names.js', { skip: true }, function () {});
}
require('./modify-in-emit.js');
require('./num-args.js');
require('./once.js');
require('./prepend.js');
require('./set-max-listeners-side-effects.js');
require('./special-event-names.js');
require('./subclass.js');
if (hasSymbols()) {
  require('./symbols.js');
} else {
  // Symbol is not available.
  test('./symbols.js', { skip: true }, function () {});
}
require('./remove-all-listeners.js');
require('./remove-listeners.js');
node_modules/events/tests/legacy-compat.js
New file
@@ -0,0 +1,16 @@
// sigh... life is hard
if (!global.console) {
    console = {}
}
var fns = ['log', 'error', 'trace'];
for (var i=0 ; i<fns.length ; ++i) {
    var fn = fns[i];
    if (!console[fn]) {
        console[fn] = function() {};
    }
}
if (!Array.isArray) {
    Array.isArray = require('isarray');
}
node_modules/events/tests/listener-count.js
New file
@@ -0,0 +1,37 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
require('./common');
var assert = require('assert');
var EventEmitter = require('../');
var emitter = new EventEmitter();
emitter.on('foo', function() {});
emitter.on('foo', function() {});
emitter.on('baz', function() {});
// Allow any type
emitter.on(123, function() {});
assert.strictEqual(EventEmitter.listenerCount(emitter, 'foo'), 2);
assert.strictEqual(emitter.listenerCount('foo'), 2);
assert.strictEqual(emitter.listenerCount('bar'), 0);
assert.strictEqual(emitter.listenerCount('baz'), 1);
assert.strictEqual(emitter.listenerCount(123), 1);
node_modules/events/tests/listeners-side-effects.js
New file
@@ -0,0 +1,56 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
require('./common');
var assert = require('assert');
var EventEmitter = require('../').EventEmitter;
var e = new EventEmitter();
var fl;  // foo listeners
fl = e.listeners('foo');
assert.ok(Array.isArray(fl));
assert.strictEqual(fl.length, 0);
if (Object.create) assert.ok(!(e._events instanceof Object));
assert.strictEqual(Object.keys(e._events).length, 0);
e.on('foo', assert.fail);
fl = e.listeners('foo');
assert.strictEqual(e._events.foo, assert.fail);
assert.ok(Array.isArray(fl));
assert.strictEqual(fl.length, 1);
assert.strictEqual(fl[0], assert.fail);
e.listeners('bar');
e.on('foo', assert.ok);
fl = e.listeners('foo');
assert.ok(Array.isArray(e._events.foo));
assert.strictEqual(e._events.foo.length, 2);
assert.strictEqual(e._events.foo[0], assert.fail);
assert.strictEqual(e._events.foo[1], assert.ok);
assert.ok(Array.isArray(fl));
assert.strictEqual(fl.length, 2);
assert.strictEqual(fl[0], assert.fail);
assert.strictEqual(fl[1], assert.ok);
node_modules/events/tests/listeners.js
New file
@@ -0,0 +1,168 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
require('./common');
var assert = require('assert');
var events = require('../');
var util = require('util');
function listener() {}
function listener2() {}
function listener3() {
  return 0;
}
function listener4() {
  return 1;
}
function TestStream() {}
util.inherits(TestStream, events.EventEmitter);
{
  var ee = new events.EventEmitter();
  ee.on('foo', listener);
  var fooListeners = ee.listeners('foo');
  var listeners = ee.listeners('foo');
  assert.ok(Array.isArray(listeners));
  assert.strictEqual(listeners.length, 1);
  assert.strictEqual(listeners[0], listener);
  ee.removeAllListeners('foo');
  listeners = ee.listeners('foo');
  assert.ok(Array.isArray(listeners));
  assert.strictEqual(listeners.length, 0);
  assert.ok(Array.isArray(fooListeners));
  assert.strictEqual(fooListeners.length, 1);
  assert.strictEqual(fooListeners[0], listener);
}
{
  var ee = new events.EventEmitter();
  ee.on('foo', listener);
  var eeListenersCopy = ee.listeners('foo');
  assert.ok(Array.isArray(eeListenersCopy));
  assert.strictEqual(eeListenersCopy.length, 1);
  assert.strictEqual(eeListenersCopy[0], listener);
  var listeners = ee.listeners('foo');
  assert.ok(Array.isArray(listeners));
  assert.strictEqual(listeners.length, 1);
  assert.strictEqual(listeners[0], listener);
  eeListenersCopy.push(listener2);
  listeners = ee.listeners('foo');
  assert.ok(Array.isArray(listeners));
  assert.strictEqual(listeners.length, 1);
  assert.strictEqual(listeners[0], listener);
  assert.strictEqual(eeListenersCopy.length, 2);
  assert.strictEqual(eeListenersCopy[0], listener);
  assert.strictEqual(eeListenersCopy[1], listener2);
}
{
  var ee = new events.EventEmitter();
  ee.on('foo', listener);
  var eeListenersCopy = ee.listeners('foo');
  ee.on('foo', listener2);
  var listeners = ee.listeners('foo');
  assert.ok(Array.isArray(listeners));
  assert.strictEqual(listeners.length, 2);
  assert.strictEqual(listeners[0], listener);
  assert.strictEqual(listeners[1], listener2);
  assert.ok(Array.isArray(eeListenersCopy));
  assert.strictEqual(eeListenersCopy.length, 1);
  assert.strictEqual(eeListenersCopy[0], listener);
}
{
  var ee = new events.EventEmitter();
  ee.once('foo', listener);
  var listeners = ee.listeners('foo');
  assert.ok(Array.isArray(listeners));
  assert.strictEqual(listeners.length, 1);
  assert.strictEqual(listeners[0], listener);
}
{
  var ee = new events.EventEmitter();
  ee.on('foo', listener);
  ee.once('foo', listener2);
  var listeners = ee.listeners('foo');
  assert.ok(Array.isArray(listeners));
  assert.strictEqual(listeners.length, 2);
  assert.strictEqual(listeners[0], listener);
  assert.strictEqual(listeners[1], listener2);
}
{
  var ee = new events.EventEmitter();
  ee._events = undefined;
  var listeners = ee.listeners('foo');
  assert.ok(Array.isArray(listeners));
  assert.strictEqual(listeners.length, 0);
}
{
  var s = new TestStream();
  var listeners = s.listeners('foo');
  assert.ok(Array.isArray(listeners));
  assert.strictEqual(listeners.length, 0);
}
{
  var ee = new events.EventEmitter();
  ee.on('foo', listener);
  var wrappedListener = ee.rawListeners('foo');
  assert.strictEqual(wrappedListener.length, 1);
  assert.strictEqual(wrappedListener[0], listener);
  assert.notStrictEqual(wrappedListener, ee.rawListeners('foo'));
  ee.once('foo', listener);
  var wrappedListeners = ee.rawListeners('foo');
  assert.strictEqual(wrappedListeners.length, 2);
  assert.strictEqual(wrappedListeners[0], listener);
  assert.notStrictEqual(wrappedListeners[1], listener);
  assert.strictEqual(wrappedListeners[1].listener, listener);
  assert.notStrictEqual(wrappedListeners, ee.rawListeners('foo'));
  ee.emit('foo');
  assert.strictEqual(wrappedListeners.length, 2);
  assert.strictEqual(wrappedListeners[1].listener, listener);
}
{
  var ee = new events.EventEmitter();
  ee.once('foo', listener3);
  ee.on('foo', listener4);
  var rawListeners = ee.rawListeners('foo');
  assert.strictEqual(rawListeners.length, 2);
  assert.strictEqual(rawListeners[0](), 0);
  var rawListener = ee.rawListeners('foo');
  assert.strictEqual(rawListener.length, 1);
  assert.strictEqual(rawListener[0](), 1);
}
node_modules/events/tests/max-listeners.js
New file
@@ -0,0 +1,47 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
var common = require('./common');
var assert = require('assert');
var events = require('../');
var e = new events.EventEmitter();
var hasDefineProperty = !!Object.defineProperty;
try { Object.defineProperty({}, 'x', { value: 0 }); } catch (err) { hasDefineProperty = false }
e.on('maxListeners', common.mustCall());
// Should not corrupt the 'maxListeners' queue.
e.setMaxListeners(42);
var throwsObjs = [NaN, -1, 'and even this'];
var maxError = /^RangeError: The value of "n" is out of range\. It must be a non-negative number\./;
var defError = /^RangeError: The value of "defaultMaxListeners" is out of range\. It must be a non-negative number\./;
for (var i = 0; i < throwsObjs.length; i++) {
  var obj = throwsObjs[i];
  assert.throws(function() { e.setMaxListeners(obj); }, maxError);
  if (hasDefineProperty) {
    assert.throws(function() { events.defaultMaxListeners = obj; }, defError);
  }
}
e.emit('maxListeners');
node_modules/events/tests/method-names.js
New file
@@ -0,0 +1,35 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
'use strict';
require('./common');
var assert = require('assert');
var events = require('../');
var E = events.EventEmitter.prototype;
assert.strictEqual(E.constructor.name, 'EventEmitter');
assert.strictEqual(E.on, E.addListener);  // Same method.
assert.strictEqual(E.off, E.removeListener);  // Same method.
Object.getOwnPropertyNames(E).forEach(function(name) {
  if (name === 'constructor' || name === 'on' || name === 'off') return;
  if (typeof E[name] !== 'function') return;
  assert.strictEqual(E[name].name, name);
});
node_modules/events/tests/modify-in-emit.js
New file
@@ -0,0 +1,90 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
require('./common');
var assert = require('assert');
var events = require('../');
var callbacks_called = [];
var e = new events.EventEmitter();
function callback1() {
  callbacks_called.push('callback1');
  e.on('foo', callback2);
  e.on('foo', callback3);
  e.removeListener('foo', callback1);
}
function callback2() {
  callbacks_called.push('callback2');
  e.removeListener('foo', callback2);
}
function callback3() {
  callbacks_called.push('callback3');
  e.removeListener('foo', callback3);
}
e.on('foo', callback1);
assert.strictEqual(e.listeners('foo').length, 1);
e.emit('foo');
assert.strictEqual(e.listeners('foo').length, 2);
assert.ok(Array.isArray(callbacks_called));
assert.strictEqual(callbacks_called.length, 1);
assert.strictEqual(callbacks_called[0], 'callback1');
e.emit('foo');
assert.strictEqual(e.listeners('foo').length, 0);
assert.ok(Array.isArray(callbacks_called));
assert.strictEqual(callbacks_called.length, 3);
assert.strictEqual(callbacks_called[0], 'callback1');
assert.strictEqual(callbacks_called[1], 'callback2');
assert.strictEqual(callbacks_called[2], 'callback3');
e.emit('foo');
assert.strictEqual(e.listeners('foo').length, 0);
assert.ok(Array.isArray(callbacks_called));
assert.strictEqual(callbacks_called.length, 3);
assert.strictEqual(callbacks_called[0], 'callback1');
assert.strictEqual(callbacks_called[1], 'callback2');
assert.strictEqual(callbacks_called[2], 'callback3');
e.on('foo', callback1);
e.on('foo', callback2);
assert.strictEqual(e.listeners('foo').length, 2);
e.removeAllListeners('foo');
assert.strictEqual(e.listeners('foo').length, 0);
// Verify that removing callbacks while in emit allows emits to propagate to
// all listeners
callbacks_called = [];
e.on('foo', callback2);
e.on('foo', callback3);
assert.strictEqual(2, e.listeners('foo').length);
e.emit('foo');
assert.ok(Array.isArray(callbacks_called));
assert.strictEqual(callbacks_called.length, 2);
assert.strictEqual(callbacks_called[0], 'callback2');
assert.strictEqual(callbacks_called[1], 'callback3');
assert.strictEqual(0, e.listeners('foo').length);
node_modules/events/tests/num-args.js
New file
@@ -0,0 +1,60 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
require('./common');
var assert = require('assert');
var events = require('../');
var e = new events.EventEmitter();
var num_args_emitted = [];
e.on('numArgs', function() {
  var numArgs = arguments.length;
  num_args_emitted.push(numArgs);
});
e.on('foo', function() {
  num_args_emitted.push(arguments.length);
});
e.on('foo', function() {
  num_args_emitted.push(arguments.length);
});
e.emit('numArgs');
e.emit('numArgs', null);
e.emit('numArgs', null, null);
e.emit('numArgs', null, null, null);
e.emit('numArgs', null, null, null, null);
e.emit('numArgs', null, null, null, null, null);
e.emit('foo', null, null, null, null);
assert.ok(Array.isArray(num_args_emitted));
assert.strictEqual(num_args_emitted.length, 8);
assert.strictEqual(num_args_emitted[0], 0);
assert.strictEqual(num_args_emitted[1], 1);
assert.strictEqual(num_args_emitted[2], 2);
assert.strictEqual(num_args_emitted[3], 3);
assert.strictEqual(num_args_emitted[4], 4);
assert.strictEqual(num_args_emitted[5], 5);
assert.strictEqual(num_args_emitted[6], 4);
assert.strictEqual(num_args_emitted[6], 4);
node_modules/events/tests/once.js
New file
@@ -0,0 +1,83 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
var common = require('./common');
var assert = require('assert');
var EventEmitter = require('../');
var e = new EventEmitter();
e.once('hello', common.mustCall());
e.emit('hello', 'a', 'b');
e.emit('hello', 'a', 'b');
e.emit('hello', 'a', 'b');
e.emit('hello', 'a', 'b');
function remove() {
  assert.fail('once->foo should not be emitted');
}
e.once('foo', remove);
e.removeListener('foo', remove);
e.emit('foo');
e.once('e', common.mustCall(function() {
  e.emit('e');
}));
e.once('e', common.mustCall());
e.emit('e');
// Verify that the listener must be a function
assert.throws(function() {
  var ee = new EventEmitter();
  ee.once('foo', null);
}, /^TypeError: The "listener" argument must be of type Function. Received type object$/);
{
  // once() has different code paths based on the number of arguments being
  // emitted. Verify that all of the cases are covered.
  var maxArgs = 4;
  for (var i = 0; i <= maxArgs; ++i) {
    var ee = new EventEmitter();
    var args = ['foo'];
    for (var j = 0; j < i; ++j)
      args.push(j);
    ee.once('foo', common.mustCall(function() {
      var params = Array.prototype.slice.call(arguments);
      var restArgs = args.slice(1);
      assert.ok(Array.isArray(params));
      assert.strictEqual(params.length, restArgs.length);
      for (var index = 0; index < params.length; index++) {
        var param = params[index];
        assert.strictEqual(param, restArgs[index]);
      }
      }));
    EventEmitter.prototype.emit.apply(ee, args);
  }
}
node_modules/events/tests/prepend.js
New file
@@ -0,0 +1,31 @@
'use strict';
var common = require('./common');
var EventEmitter = require('../');
var assert = require('assert');
var myEE = new EventEmitter();
var m = 0;
// This one comes last.
myEE.on('foo', common.mustCall(function () {
  assert.strictEqual(m, 2);
}));
// This one comes second.
myEE.prependListener('foo', common.mustCall(function () {
  assert.strictEqual(m++, 1);
}));
// This one comes first.
myEE.prependOnceListener('foo',
                         common.mustCall(function () {
                           assert.strictEqual(m++, 0);
                         }));
myEE.emit('foo');
// Verify that the listener must be a function
assert.throws(function () {
  var ee = new EventEmitter();
  ee.prependOnceListener('foo', null);
}, 'TypeError: The "listener" argument must be of type Function. Received type object');
node_modules/events/tests/remove-all-listeners.js
New file
@@ -0,0 +1,133 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
var common = require('./common');
var assert = require('assert');
var events = require('../');
var test = require('tape');
function expect(expected) {
  var actual = [];
  test.onFinish(function() {
    var sortedActual = actual.sort();
    var sortedExpected = expected.sort();
    assert.strictEqual(sortedActual.length, sortedExpected.length);
    for (var index = 0; index < sortedActual.length; index++) {
      var value = sortedActual[index];
      assert.strictEqual(value, sortedExpected[index]);
    }
  });
  function listener(name) {
    actual.push(name);
  }
  return common.mustCall(listener, expected.length);
}
{
  var ee = new events.EventEmitter();
  var noop = common.mustNotCall();
  ee.on('foo', noop);
  ee.on('bar', noop);
  ee.on('baz', noop);
  ee.on('baz', noop);
  var fooListeners = ee.listeners('foo');
  var barListeners = ee.listeners('bar');
  var bazListeners = ee.listeners('baz');
  ee.on('removeListener', expect(['bar', 'baz', 'baz']));
  ee.removeAllListeners('bar');
  ee.removeAllListeners('baz');
  var listeners = ee.listeners('foo');
  assert.ok(Array.isArray(listeners));
  assert.strictEqual(listeners.length, 1);
  assert.strictEqual(listeners[0], noop);
  listeners = ee.listeners('bar');
  assert.ok(Array.isArray(listeners));
  assert.strictEqual(listeners.length, 0);
  listeners = ee.listeners('baz');
  assert.ok(Array.isArray(listeners));
  assert.strictEqual(listeners.length, 0);
  // After calling removeAllListeners(),
  // the old listeners array should stay unchanged.
  assert.strictEqual(fooListeners.length, 1);
  assert.strictEqual(fooListeners[0], noop);
  assert.strictEqual(barListeners.length, 1);
  assert.strictEqual(barListeners[0], noop);
  assert.strictEqual(bazListeners.length, 2);
  assert.strictEqual(bazListeners[0], noop);
  assert.strictEqual(bazListeners[1], noop);
  // After calling removeAllListeners(),
  // new listeners arrays is different from the old.
  assert.notStrictEqual(ee.listeners('bar'), barListeners);
  assert.notStrictEqual(ee.listeners('baz'), bazListeners);
}
{
  var ee = new events.EventEmitter();
  ee.on('foo', common.mustNotCall());
  ee.on('bar', common.mustNotCall());
  // Expect LIFO order
  ee.on('removeListener', expect(['foo', 'bar', 'removeListener']));
  ee.on('removeListener', expect(['foo', 'bar']));
  ee.removeAllListeners();
  var listeners = ee.listeners('foo');
  assert.ok(Array.isArray(listeners));
  assert.strictEqual(listeners.length, 0);
  listeners = ee.listeners('bar');
  assert.ok(Array.isArray(listeners));
  assert.strictEqual(listeners.length, 0);
}
{
  var ee = new events.EventEmitter();
  ee.on('removeListener', common.mustNotCall());
  // Check for regression where removeAllListeners() throws when
  // there exists a 'removeListener' listener, but there exists
  // no listeners for the provided event type.
  assert.doesNotThrow(function () { ee.removeAllListeners(ee, 'foo') });
}
{
  var ee = new events.EventEmitter();
  var expectLength = 2;
  ee.on('removeListener', function() {
    assert.strictEqual(expectLength--, this.listeners('baz').length);
  });
  ee.on('baz', common.mustNotCall());
  ee.on('baz', common.mustNotCall());
  ee.on('baz', common.mustNotCall());
  assert.strictEqual(ee.listeners('baz').length, expectLength + 1);
  ee.removeAllListeners('baz');
  assert.strictEqual(ee.listeners('baz').length, 0);
}
{
  var ee = new events.EventEmitter();
  assert.strictEqual(ee, ee.removeAllListeners());
}
{
  var ee = new events.EventEmitter();
  ee._events = undefined;
  assert.strictEqual(ee, ee.removeAllListeners());
}
node_modules/events/tests/remove-listeners.js
New file
@@ -0,0 +1,212 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
var common = require('./common');
var assert = require('assert');
var EventEmitter = require('../');
var listener1 = function listener1() {};
var listener2 = function listener2() {};
{
  var ee = new EventEmitter();
  ee.on('hello', listener1);
  ee.on('removeListener', common.mustCall(function(name, cb) {
    assert.strictEqual(name, 'hello');
    assert.strictEqual(cb, listener1);
  }));
  ee.removeListener('hello', listener1);
  var listeners = ee.listeners('hello');
  assert.ok(Array.isArray(listeners));
  assert.strictEqual(listeners.length, 0);
}
{
  var ee = new EventEmitter();
  ee.on('hello', listener1);
  ee.on('removeListener', common.mustNotCall());
  ee.removeListener('hello', listener2);
  var listeners = ee.listeners('hello');
  assert.ok(Array.isArray(listeners));
  assert.strictEqual(listeners.length, 1);
  assert.strictEqual(listeners[0], listener1);
}
{
  var ee = new EventEmitter();
  ee.on('hello', listener1);
  ee.on('hello', listener2);
  var listeners;
  ee.once('removeListener', common.mustCall(function(name, cb) {
    assert.strictEqual(name, 'hello');
    assert.strictEqual(cb, listener1);
    listeners = ee.listeners('hello');
    assert.ok(Array.isArray(listeners));
    assert.strictEqual(listeners.length, 1);
    assert.strictEqual(listeners[0], listener2);
  }));
  ee.removeListener('hello', listener1);
  listeners = ee.listeners('hello');
  assert.ok(Array.isArray(listeners));
  assert.strictEqual(listeners.length, 1);
  assert.strictEqual(listeners[0], listener2);
  ee.once('removeListener', common.mustCall(function(name, cb) {
    assert.strictEqual(name, 'hello');
    assert.strictEqual(cb, listener2);
    listeners = ee.listeners('hello');
    assert.ok(Array.isArray(listeners));
    assert.strictEqual(listeners.length, 0);
  }));
  ee.removeListener('hello', listener2);
  listeners = ee.listeners('hello');
  assert.ok(Array.isArray(listeners));
  assert.strictEqual(listeners.length, 0);
}
{
  var ee = new EventEmitter();
  function remove1() {
    assert.fail('remove1 should not have been called');
  }
  function remove2() {
    assert.fail('remove2 should not have been called');
  }
  ee.on('removeListener', common.mustCall(function(name, cb) {
    if (cb !== remove1) return;
    this.removeListener('quux', remove2);
    this.emit('quux');
  }, 2));
  ee.on('quux', remove1);
  ee.on('quux', remove2);
  ee.removeListener('quux', remove1);
}
{
  var ee = new EventEmitter();
  ee.on('hello', listener1);
  ee.on('hello', listener2);
  var listeners;
  ee.once('removeListener', common.mustCall(function(name, cb) {
    assert.strictEqual(name, 'hello');
    assert.strictEqual(cb, listener1);
    listeners = ee.listeners('hello');
    assert.ok(Array.isArray(listeners));
    assert.strictEqual(listeners.length, 1);
    assert.strictEqual(listeners[0], listener2);
    ee.once('removeListener', common.mustCall(function(name, cb) {
      assert.strictEqual(name, 'hello');
      assert.strictEqual(cb, listener2);
      listeners = ee.listeners('hello');
      assert.ok(Array.isArray(listeners));
      assert.strictEqual(listeners.length, 0);
    }));
    ee.removeListener('hello', listener2);
    listeners = ee.listeners('hello');
    assert.ok(Array.isArray(listeners));
    assert.strictEqual(listeners.length, 0);
  }));
  ee.removeListener('hello', listener1);
  listeners = ee.listeners('hello');
  assert.ok(Array.isArray(listeners));
  assert.strictEqual(listeners.length, 0);
}
{
  var ee = new EventEmitter();
  var listener3 = common.mustCall(function() {
    ee.removeListener('hello', listener4);
  }, 2);
  var listener4 = common.mustCall();
  ee.on('hello', listener3);
  ee.on('hello', listener4);
  // listener4 will still be called although it is removed by listener 3.
  ee.emit('hello');
  // This is so because the interal listener array at time of emit
  // was [listener3,listener4]
  // Interal listener array [listener3]
  ee.emit('hello');
}
{
  var ee = new EventEmitter();
  ee.once('hello', listener1);
  ee.on('removeListener', common.mustCall(function(eventName, listener) {
    assert.strictEqual(eventName, 'hello');
    assert.strictEqual(listener, listener1);
  }));
  ee.emit('hello');
}
{
  var ee = new EventEmitter();
  assert.strictEqual(ee, ee.removeListener('foo', function() {}));
}
// Verify that the removed listener must be a function
assert.throws(function() {
  var ee = new EventEmitter();
  ee.removeListener('foo', null);
}, /^TypeError: The "listener" argument must be of type Function\. Received type object$/);
{
  var ee = new EventEmitter();
  var listener = function() {};
  ee._events = undefined;
  var e = ee.removeListener('foo', listener);
  assert.strictEqual(e, ee);
}
{
  var ee = new EventEmitter();
  ee.on('foo', listener1);
  ee.on('foo', listener2);
  var listeners = ee.listeners('foo');
  assert.ok(Array.isArray(listeners));
  assert.strictEqual(listeners.length, 2);
  assert.strictEqual(listeners[0], listener1);
  assert.strictEqual(listeners[1], listener2);
  ee.removeListener('foo', listener1);
  assert.strictEqual(ee._events.foo, listener2);
  ee.on('foo', listener1);
  listeners = ee.listeners('foo');
  assert.ok(Array.isArray(listeners));
  assert.strictEqual(listeners.length, 2);
  assert.strictEqual(listeners[0], listener2);
  assert.strictEqual(listeners[1], listener1);
  ee.removeListener('foo', listener1);
  assert.strictEqual(ee._events.foo, listener2);
}
node_modules/events/tests/set-max-listeners-side-effects.js
New file
@@ -0,0 +1,31 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
require('./common');
var assert = require('assert');
var events = require('../');
var e = new events.EventEmitter();
if (Object.create) assert.ok(!(e._events instanceof Object));
assert.strictEqual(Object.keys(e._events).length, 0);
e.setMaxListeners(5);
assert.strictEqual(Object.keys(e._events).length, 0);
node_modules/events/tests/special-event-names.js
New file
@@ -0,0 +1,45 @@
'use strict';
var common = require('./common');
var EventEmitter = require('../');
var assert = require('assert');
var ee = new EventEmitter();
var handler = function() {};
assert.strictEqual(ee.eventNames().length, 0);
assert.strictEqual(ee._events.hasOwnProperty, undefined);
assert.strictEqual(ee._events.toString, undefined);
ee.on('__defineGetter__', handler);
ee.on('toString', handler);
ee.on('__proto__', handler);
assert.strictEqual(ee.eventNames()[0], '__defineGetter__');
assert.strictEqual(ee.eventNames()[1], 'toString');
assert.strictEqual(ee.listeners('__defineGetter__').length, 1);
assert.strictEqual(ee.listeners('__defineGetter__')[0], handler);
assert.strictEqual(ee.listeners('toString').length, 1);
assert.strictEqual(ee.listeners('toString')[0], handler);
// Only run __proto__ tests if that property can actually be set
if ({ __proto__: 'ok' }.__proto__ === 'ok') {
  assert.strictEqual(ee.eventNames().length, 3);
  assert.strictEqual(ee.eventNames()[2], '__proto__');
  assert.strictEqual(ee.listeners('__proto__').length, 1);
  assert.strictEqual(ee.listeners('__proto__')[0], handler);
  ee.on('__proto__', common.mustCall(function(val) {
    assert.strictEqual(val, 1);
  }));
  ee.emit('__proto__', 1);
  process.on('__proto__', common.mustCall(function(val) {
    assert.strictEqual(val, 1);
  }));
  process.emit('__proto__', 1);
} else {
  console.log('# skipped __proto__')
}
node_modules/events/tests/subclass.js
New file
@@ -0,0 +1,66 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
var common = require('./common');
var test = require('tape');
var assert = require('assert');
var EventEmitter = require('../').EventEmitter;
var util = require('util');
util.inherits(MyEE, EventEmitter);
function MyEE(cb) {
  this.once(1, cb);
  this.emit(1);
  this.removeAllListeners();
  EventEmitter.call(this);
}
var myee = new MyEE(common.mustCall());
util.inherits(ErrorEE, EventEmitter);
function ErrorEE() {
  this.emit('error', new Error('blerg'));
}
assert.throws(function() {
  new ErrorEE();
}, /blerg/);
test.onFinish(function() {
  assert.ok(!(myee._events instanceof Object));
  assert.strictEqual(Object.keys(myee._events).length, 0);
});
function MyEE2() {
  EventEmitter.call(this);
}
MyEE2.prototype = new EventEmitter();
var ee1 = new MyEE2();
var ee2 = new MyEE2();
ee1.on('x', function() {});
assert.strictEqual(ee2.listenerCount('x'), 0);
node_modules/events/tests/symbols.js
New file
@@ -0,0 +1,25 @@
'use strict';
var common = require('./common');
var EventEmitter = require('../');
var assert = require('assert');
var ee = new EventEmitter();
var foo = Symbol('foo');
var listener = common.mustCall();
ee.on(foo, listener);
assert.strictEqual(ee.listeners(foo).length, 1);
assert.strictEqual(ee.listeners(foo)[0], listener);
ee.emit(foo);
ee.removeAllListeners();
assert.strictEqual(ee.listeners(foo).length, 0);
ee.on(foo, listener);
assert.strictEqual(ee.listeners(foo).length, 1);
assert.strictEqual(ee.listeners(foo)[0], listener);
ee.removeListener(foo, listener);
assert.strictEqual(ee.listeners(foo).length, 0);
node_modules/mini-html-parser2/README.md
New file
@@ -0,0 +1,63 @@
# mini-html-parser2
## 安装
```
$ npm install mini-html-parser2 --save
```
## 使用
```js
// page.js
const html = `<div>
<span>test</span>
<div>
    <span>table test</span>
    <table>
        <thead>
            <tr>
                <th>title</th>
                <th>title</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td colspan="2">yy</td>
                <td>xx</td>
                <td>xx</td>
                <td>xx</td>
            </tr>
        </tbody>
    </table>
</div>
</div>`
import parse from 'mini-html-parser2';
Page({
  data: {
    nodes: [],
  },
  onLoad() {
    parse(html, (err, nodes) => {
      if (!err) {
        this.setData({
          nodes,
        });
      }
    })
  },
})
```
```html
<!-- page.axml -->
<rich-text nodes="{{nodes}}" />
```
## 运行测试
```
$ npm run build
$ npm test
```
node_modules/mini-html-parser2/lib/Parser.d.ts
New file
@@ -0,0 +1,2 @@
declare function Parser(cbs: any, options: any): void;
export default Parser;
node_modules/mini-html-parser2/lib/Parser.js
New file
@@ -0,0 +1,298 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
    value: true
});
var Tokenizer = require("./Tokenizer.js");
/*
    Options:
    xmlMode: Disables the special behavior for script/style tags (false by default)
    lowerCaseAttributeNames: call .toLowerCase for each attribute name (true if xmlMode is `false`)
    lowerCaseTags: call .toLowerCase for each tag name (true if xmlMode is `false`)
*/
/*
    Callbacks:
    oncdataend,
    oncdatastart,
    onclosetag,
    oncomment,
    oncommentend,
    onerror,
    onopentag,
    onprocessinginstruction,
    onreset,
    ontext
*/
var formTags = {
    input: true,
    option: true,
    optgroup: true,
    select: true,
    button: true,
    datalist: true,
    textarea: true
};
var openImpliesClose = {
    tr: { tr: true, th: true, td: true },
    th: { th: true },
    td: { thead: true, th: true, td: true },
    body: { head: true, link: true, script: true },
    li: { li: true },
    p: { p: true },
    h1: { p: true },
    h2: { p: true },
    h3: { p: true },
    h4: { p: true },
    h5: { p: true },
    h6: { p: true },
    select: formTags,
    input: formTags,
    output: formTags,
    button: formTags,
    datalist: formTags,
    textarea: formTags,
    option: { option: true },
    optgroup: { optgroup: true }
};
var voidElements = {
    __proto__: null,
    area: true,
    base: true,
    basefont: true,
    br: true,
    col: true,
    command: true,
    embed: true,
    frame: true,
    hr: true,
    img: true,
    input: true,
    isindex: true,
    keygen: true,
    link: true,
    meta: true,
    param: true,
    source: true,
    track: true,
    wbr: true
};
var foreignContextElements = {
    __proto__: null,
    math: true,
    svg: true
};
var htmlIntegrationElements = {
    __proto__: null,
    mi: true,
    mo: true,
    mn: true,
    ms: true,
    mtext: true,
    "annotation-xml": true,
    foreignObject: true,
    desc: true,
    title: true
};
var re_nameEnd = /\s|\//;
function Parser(cbs, options) {
    this._options = options || {};
    this._cbs = cbs || {};
    this._tagname = "";
    this._attribname = "";
    this._attribvalue = "";
    this._attribs = null;
    this._stack = [];
    this._foreignContext = [];
    this.startIndex = 0;
    this.endIndex = null;
    this._lowerCaseTagNames = "lowerCaseTags" in this._options ? !!this._options.lowerCaseTags : !this._options.xmlMode;
    this._lowerCaseAttributeNames = "lowerCaseAttributeNames" in this._options ? !!this._options.lowerCaseAttributeNames : !this._options.xmlMode;
    if (this._options.Tokenizer) {
        Tokenizer = this._options.Tokenizer;
    }
    this._tokenizer = new Tokenizer(this._options, this);
    if (this._cbs.onparserinit) this._cbs.onparserinit(this);
}
require("./inherits")(Parser, require("events").EventEmitter);
Parser.prototype._updatePosition = function (initialOffset) {
    if (this.endIndex === null) {
        if (this._tokenizer._sectionStart <= initialOffset) {
            this.startIndex = 0;
        } else {
            this.startIndex = this._tokenizer._sectionStart - initialOffset;
        }
    } else this.startIndex = this.endIndex + 1;
    this.endIndex = this._tokenizer.getAbsoluteIndex();
};
//Tokenizer event handlers
Parser.prototype.ontext = function (data) {
    this._updatePosition(1);
    this.endIndex--;
    if (this._cbs.ontext) this._cbs.ontext(data);
};
Parser.prototype.onopentagname = function (name) {
    if (this._lowerCaseTagNames) {
        name = name.toLowerCase();
    }
    this._tagname = name;
    if (!this._options.xmlMode && name in openImpliesClose) {
        for (var el; (el = this._stack[this._stack.length - 1]) in openImpliesClose[name]; this.onclosetag(el)) {}
    }
    if (this._options.xmlMode || !(name in voidElements)) {
        this._stack.push(name);
        if (name in foreignContextElements) this._foreignContext.push(true);else if (name in htmlIntegrationElements) this._foreignContext.push(false);
    }
    if (this._cbs.onopentagname) this._cbs.onopentagname(name);
    if (this._cbs.onopentag) this._attribs = {};
};
Parser.prototype.onopentagend = function () {
    this._updatePosition(1);
    if (this._attribs) {
        if (this._cbs.onopentag) this._cbs.onopentag(this._tagname, this._attribs);
        this._attribs = null;
    }
    if (!this._options.xmlMode && this._cbs.onclosetag && this._tagname in voidElements) {
        this._cbs.onclosetag(this._tagname);
    }
    this._tagname = "";
};
Parser.prototype.onclosetag = function (name) {
    this._updatePosition(1);
    if (this._lowerCaseTagNames) {
        name = name.toLowerCase();
    }
    if (name in foreignContextElements || name in htmlIntegrationElements) {
        this._foreignContext.pop();
    }
    if (this._stack.length && (!(name in voidElements) || this._options.xmlMode)) {
        var pos = this._stack.lastIndexOf(name);
        if (pos !== -1) {
            if (this._cbs.onclosetag) {
                pos = this._stack.length - pos;
                while (pos--) {
                    this._cbs.onclosetag(this._stack.pop());
                }
            } else this._stack.length = pos;
        } else if (name === "p" && !this._options.xmlMode) {
            this.onopentagname(name);
            this._closeCurrentTag();
        }
    } else if (!this._options.xmlMode && (name === "br" || name === "p")) {
        this.onopentagname(name);
        this._closeCurrentTag();
    }
};
Parser.prototype.onselfclosingtag = function () {
    if (this._options.xmlMode || this._options.recognizeSelfClosing || this._foreignContext[this._foreignContext.length - 1]) {
        this._closeCurrentTag();
    } else {
        this.onopentagend();
    }
};
Parser.prototype._closeCurrentTag = function () {
    var name = this._tagname;
    this.onopentagend();
    //self-closing tags will be on the top of the stack
    //(cheaper check than in onclosetag)
    if (this._stack[this._stack.length - 1] === name) {
        if (this._cbs.onclosetag) {
            this._cbs.onclosetag(name);
        }
        this._stack.pop();
    }
};
Parser.prototype.onattribname = function (name) {
    if (this._lowerCaseAttributeNames) {
        name = name.toLowerCase();
    }
    this._attribname = name;
};
Parser.prototype.onattribdata = function (value) {
    this._attribvalue += value;
};
Parser.prototype.onattribend = function () {
    if (this._cbs.onattribute) this._cbs.onattribute(this._attribname, this._attribvalue);
    if (this._attribs && !Object.prototype.hasOwnProperty.call(this._attribs, this._attribname)) {
        this._attribs[this._attribname] = this._attribvalue;
    }
    this._attribname = "";
    this._attribvalue = "";
};
Parser.prototype._getInstructionName = function (value) {
    var idx = value.search(re_nameEnd),
        name = idx < 0 ? value : value.substr(0, idx);
    if (this._lowerCaseTagNames) {
        name = name.toLowerCase();
    }
    return name;
};
Parser.prototype.ondeclaration = function (value) {
    if (this._cbs.onprocessinginstruction) {
        var name = this._getInstructionName(value);
        this._cbs.onprocessinginstruction("!" + name, "!" + value);
    }
};
Parser.prototype.onprocessinginstruction = function (value) {
    if (this._cbs.onprocessinginstruction) {
        var name = this._getInstructionName(value);
        this._cbs.onprocessinginstruction("?" + name, "?" + value);
    }
};
Parser.prototype.oncomment = function (value) {
    this._updatePosition(4);
    if (this._cbs.oncomment) this._cbs.oncomment(value);
    if (this._cbs.oncommentend) this._cbs.oncommentend();
};
Parser.prototype.oncdata = function (value) {
    this._updatePosition(1);
    if (this._options.xmlMode || this._options.recognizeCDATA) {
        if (this._cbs.oncdatastart) this._cbs.oncdatastart();
        if (this._cbs.ontext) this._cbs.ontext(value);
        if (this._cbs.oncdataend) this._cbs.oncdataend();
    } else {
        this.oncomment("[CDATA[" + value + "]]");
    }
};
Parser.prototype.onerror = function (err) {
    if (this._cbs.onerror) this._cbs.onerror(err);
};
Parser.prototype.onend = function () {
    if (this._cbs.onclosetag) {
        for (var i = this._stack.length; i > 0; this._cbs.onclosetag(this._stack[--i])) {}
    }
    if (this._cbs.onend) this._cbs.onend();
};
//Resets the parser to a blank state, ready to parse a new HTML document
Parser.prototype.reset = function () {
    if (this._cbs.onreset) this._cbs.onreset();
    this._tokenizer.reset();
    this._tagname = "";
    this._attribname = "";
    this._attribs = null;
    this._stack = [];
    if (this._cbs.onparserinit) this._cbs.onparserinit(this);
};
//Parses a complete HTML document and pushes it to the handler
Parser.prototype.parseComplete = function (data) {
    this.reset();
    this.end(data);
};
Parser.prototype.write = function (chunk) {
    this._tokenizer.write(chunk);
};
Parser.prototype.end = function (chunk) {
    this._tokenizer.end(chunk);
};
Parser.prototype.pause = function () {
    this._tokenizer.pause();
};
Parser.prototype.resume = function () {
    this._tokenizer.resume();
};
//alias for backwards compat
Parser.prototype.parseChunk = Parser.prototype.write;
Parser.prototype.done = Parser.prototype.end;
exports["default"] = Parser;
module.exports = exports['default'];
node_modules/mini-html-parser2/lib/Tokenizer.d.ts
New file
@@ -0,0 +1,68 @@
declare var decodeCodePoint: any;
declare var entityMap: {};
declare var legacyMap: any;
declare var xmlMap: any;
declare var i: number;
declare var TEXT: number;
declare var BEFORE_TAG_NAME: number;
declare var IN_TAG_NAME: number;
declare var IN_SELF_CLOSING_TAG: number;
declare var BEFORE_CLOSING_TAG_NAME: number;
declare var IN_CLOSING_TAG_NAME: number;
declare var AFTER_CLOSING_TAG_NAME: number;
declare var BEFORE_ATTRIBUTE_NAME: number;
declare var IN_ATTRIBUTE_NAME: number;
declare var AFTER_ATTRIBUTE_NAME: number;
declare var BEFORE_ATTRIBUTE_VALUE: number;
declare var IN_ATTRIBUTE_VALUE_DQ: number;
declare var IN_ATTRIBUTE_VALUE_SQ: number;
declare var IN_ATTRIBUTE_VALUE_NQ: number;
declare var BEFORE_DECLARATION: number;
declare var IN_DECLARATION: number;
declare var IN_PROCESSING_INSTRUCTION: number;
declare var BEFORE_COMMENT: number;
declare var IN_COMMENT: number;
declare var AFTER_COMMENT_1: number;
declare var AFTER_COMMENT_2: number;
declare var BEFORE_CDATA_1: number;
declare var BEFORE_CDATA_2: number;
declare var BEFORE_CDATA_3: number;
declare var BEFORE_CDATA_4: number;
declare var BEFORE_CDATA_5: number;
declare var BEFORE_CDATA_6: number;
declare var IN_CDATA: number;
declare var AFTER_CDATA_1: number;
declare var AFTER_CDATA_2: number;
declare var BEFORE_SPECIAL: number;
declare var BEFORE_SPECIAL_END: number;
declare var BEFORE_SCRIPT_1: number;
declare var BEFORE_SCRIPT_2: number;
declare var BEFORE_SCRIPT_3: number;
declare var BEFORE_SCRIPT_4: number;
declare var BEFORE_SCRIPT_5: number;
declare var AFTER_SCRIPT_1: number;
declare var AFTER_SCRIPT_2: number;
declare var AFTER_SCRIPT_3: number;
declare var AFTER_SCRIPT_4: number;
declare var AFTER_SCRIPT_5: number;
declare var BEFORE_STYLE_1: number;
declare var BEFORE_STYLE_2: number;
declare var BEFORE_STYLE_3: number;
declare var BEFORE_STYLE_4: number;
declare var AFTER_STYLE_1: number;
declare var AFTER_STYLE_2: number;
declare var AFTER_STYLE_3: number;
declare var AFTER_STYLE_4: number;
declare var BEFORE_ENTITY: number;
declare var BEFORE_NUMERIC_ENTITY: number;
declare var IN_NAMED_ENTITY: number;
declare var IN_NUMERIC_ENTITY: number;
declare var IN_HEX_ENTITY: number;
declare var j: number;
declare var SPECIAL_NONE: number;
declare var SPECIAL_SCRIPT: number;
declare var SPECIAL_STYLE: number;
declare function whitespace(c: any): boolean;
declare function ifElseState(upper: any, SUCCESS: any, FAILURE: any): (c: any) => void;
declare function consumeSpecialNameChar(upper: any, NEXT_STATE: any): (c: any) => void;
declare function Tokenizer(options: any, cbs: any): void;
node_modules/mini-html-parser2/lib/Tokenizer.js
New file
@@ -0,0 +1,769 @@
"use strict";
var decodeCodePoint = require("entities/lib/decode_codepoint.js");
var entityMap = {};
var legacyMap = require("entities/maps/legacy.json");
var xmlMap = require("entities/maps/xml.json");
var i = 0;
var TEXT = i++;
var BEFORE_TAG_NAME = i++; //after <
var IN_TAG_NAME = i++;
var IN_SELF_CLOSING_TAG = i++;
var BEFORE_CLOSING_TAG_NAME = i++;
var IN_CLOSING_TAG_NAME = i++;
var AFTER_CLOSING_TAG_NAME = i++;
//attributes
var BEFORE_ATTRIBUTE_NAME = i++;
var IN_ATTRIBUTE_NAME = i++;
var AFTER_ATTRIBUTE_NAME = i++;
var BEFORE_ATTRIBUTE_VALUE = i++;
var IN_ATTRIBUTE_VALUE_DQ = i++; // "
var IN_ATTRIBUTE_VALUE_SQ = i++; // '
var IN_ATTRIBUTE_VALUE_NQ = i++;
//declarations
var BEFORE_DECLARATION = i++; // !
var IN_DECLARATION = i++;
//processing instructions
var IN_PROCESSING_INSTRUCTION = i++; // ?
//comments
var BEFORE_COMMENT = i++;
var IN_COMMENT = i++;
var AFTER_COMMENT_1 = i++;
var AFTER_COMMENT_2 = i++;
//cdata
var BEFORE_CDATA_1 = i++; // [
var BEFORE_CDATA_2 = i++; // C
var BEFORE_CDATA_3 = i++; // D
var BEFORE_CDATA_4 = i++; // A
var BEFORE_CDATA_5 = i++; // T
var BEFORE_CDATA_6 = i++; // A
var IN_CDATA = i++; // [
var AFTER_CDATA_1 = i++; // ]
var AFTER_CDATA_2 = i++; // ]
//special tags
var BEFORE_SPECIAL = i++; //S
var BEFORE_SPECIAL_END = i++; //S
var BEFORE_SCRIPT_1 = i++; //C
var BEFORE_SCRIPT_2 = i++; //R
var BEFORE_SCRIPT_3 = i++; //I
var BEFORE_SCRIPT_4 = i++; //P
var BEFORE_SCRIPT_5 = i++; //T
var AFTER_SCRIPT_1 = i++; //C
var AFTER_SCRIPT_2 = i++; //R
var AFTER_SCRIPT_3 = i++; //I
var AFTER_SCRIPT_4 = i++; //P
var AFTER_SCRIPT_5 = i++; //T
var BEFORE_STYLE_1 = i++; //T
var BEFORE_STYLE_2 = i++; //Y
var BEFORE_STYLE_3 = i++; //L
var BEFORE_STYLE_4 = i++; //E
var AFTER_STYLE_1 = i++; //T
var AFTER_STYLE_2 = i++; //Y
var AFTER_STYLE_3 = i++; //L
var AFTER_STYLE_4 = i++; //E
var BEFORE_ENTITY = i++; //&
var BEFORE_NUMERIC_ENTITY = i++; //#
var IN_NAMED_ENTITY = i++;
var IN_NUMERIC_ENTITY = i++;
var IN_HEX_ENTITY = i++; //X
var j = 0;
var SPECIAL_NONE = j++;
var SPECIAL_SCRIPT = j++;
var SPECIAL_STYLE = j++;
function whitespace(c) {
    return c === " " || c === "\n" || c === "\t" || c === "\f" || c === "\r";
}
function ifElseState(upper, SUCCESS, FAILURE) {
    var lower = upper.toLowerCase();
    if (upper === lower) {
        return function (c) {
            if (c === lower) {
                this._state = SUCCESS;
            } else {
                this._state = FAILURE;
                this._index--;
            }
        };
    } else {
        return function (c) {
            if (c === lower || c === upper) {
                this._state = SUCCESS;
            } else {
                this._state = FAILURE;
                this._index--;
            }
        };
    }
}
function consumeSpecialNameChar(upper, NEXT_STATE) {
    var lower = upper.toLowerCase();
    return function (c) {
        if (c === lower || c === upper) {
            this._state = NEXT_STATE;
        } else {
            this._state = IN_TAG_NAME;
            this._index--; //consume the token again
        }
    };
}
function Tokenizer(options, cbs) {
    this._state = TEXT;
    this._buffer = "";
    this._sectionStart = 0;
    this._index = 0;
    this._bufferOffset = 0; //chars removed from _buffer
    this._baseState = TEXT;
    this._special = SPECIAL_NONE;
    this._cbs = cbs;
    this._running = true;
    this._ended = false;
    this._xmlMode = !!(options && options.xmlMode);
    this._decodeEntities = !!(options && options.decodeEntities);
}
Tokenizer.prototype._stateText = function (c) {
    if (c === "<") {
        if (this._index > this._sectionStart) {
            this._cbs.ontext(this._getSection());
        }
        this._state = BEFORE_TAG_NAME;
        this._sectionStart = this._index;
    } else if (this._decodeEntities && this._special === SPECIAL_NONE && c === "&") {
        if (this._index > this._sectionStart) {
            this._cbs.ontext(this._getSection());
        }
        this._baseState = TEXT;
        this._state = BEFORE_ENTITY;
        this._sectionStart = this._index;
    }
};
Tokenizer.prototype._stateBeforeTagName = function (c) {
    if (c === "/") {
        this._state = BEFORE_CLOSING_TAG_NAME;
    } else if (c === "<") {
        this._cbs.ontext(this._getSection());
        this._sectionStart = this._index;
    } else if (c === ">" || this._special !== SPECIAL_NONE || whitespace(c)) {
        this._state = TEXT;
    } else if (c === "!") {
        this._state = BEFORE_DECLARATION;
        this._sectionStart = this._index + 1;
    } else if (c === "?") {
        this._state = IN_PROCESSING_INSTRUCTION;
        this._sectionStart = this._index + 1;
    } else {
        this._state = !this._xmlMode && (c === "s" || c === "S") ? BEFORE_SPECIAL : IN_TAG_NAME;
        this._sectionStart = this._index;
    }
};
Tokenizer.prototype._stateInTagName = function (c) {
    if (c === "/" || c === ">" || whitespace(c)) {
        this._emitToken("onopentagname");
        this._state = BEFORE_ATTRIBUTE_NAME;
        this._index--;
    }
};
Tokenizer.prototype._stateBeforeCloseingTagName = function (c) {
    if (whitespace(c)) {} else if (c === ">") {
        this._state = TEXT;
    } else if (this._special !== SPECIAL_NONE) {
        if (c === "s" || c === "S") {
            this._state = BEFORE_SPECIAL_END;
        } else {
            this._state = TEXT;
            this._index--;
        }
    } else {
        this._state = IN_CLOSING_TAG_NAME;
        this._sectionStart = this._index;
    }
};
Tokenizer.prototype._stateInCloseingTagName = function (c) {
    if (c === ">" || whitespace(c)) {
        this._emitToken("onclosetag");
        this._state = AFTER_CLOSING_TAG_NAME;
        this._index--;
    }
};
Tokenizer.prototype._stateAfterCloseingTagName = function (c) {
    //skip everything until ">"
    if (c === ">") {
        this._state = TEXT;
        this._sectionStart = this._index + 1;
    }
};
Tokenizer.prototype._stateBeforeAttributeName = function (c) {
    if (c === ">") {
        this._cbs.onopentagend();
        this._state = TEXT;
        this._sectionStart = this._index + 1;
    } else if (c === "/") {
        this._state = IN_SELF_CLOSING_TAG;
    } else if (!whitespace(c)) {
        this._state = IN_ATTRIBUTE_NAME;
        this._sectionStart = this._index;
    }
};
Tokenizer.prototype._stateInSelfClosingTag = function (c) {
    if (c === ">") {
        this._cbs.onselfclosingtag();
        this._state = TEXT;
        this._sectionStart = this._index + 1;
    } else if (!whitespace(c)) {
        this._state = BEFORE_ATTRIBUTE_NAME;
        this._index--;
    }
};
Tokenizer.prototype._stateInAttributeName = function (c) {
    if (c === "=" || c === "/" || c === ">" || whitespace(c)) {
        this._cbs.onattribname(this._getSection());
        this._sectionStart = -1;
        this._state = AFTER_ATTRIBUTE_NAME;
        this._index--;
    }
};
Tokenizer.prototype._stateAfterAttributeName = function (c) {
    if (c === "=") {
        this._state = BEFORE_ATTRIBUTE_VALUE;
    } else if (c === "/" || c === ">") {
        this._cbs.onattribend();
        this._state = BEFORE_ATTRIBUTE_NAME;
        this._index--;
    } else if (!whitespace(c)) {
        this._cbs.onattribend();
        this._state = IN_ATTRIBUTE_NAME;
        this._sectionStart = this._index;
    }
};
Tokenizer.prototype._stateBeforeAttributeValue = function (c) {
    if (c === '"') {
        this._state = IN_ATTRIBUTE_VALUE_DQ;
        this._sectionStart = this._index + 1;
    } else if (c === "'") {
        this._state = IN_ATTRIBUTE_VALUE_SQ;
        this._sectionStart = this._index + 1;
    } else if (!whitespace(c)) {
        this._state = IN_ATTRIBUTE_VALUE_NQ;
        this._sectionStart = this._index;
        this._index--; //reconsume token
    }
};
Tokenizer.prototype._stateInAttributeValueDoubleQuotes = function (c) {
    if (c === '"') {
        this._emitToken("onattribdata");
        this._cbs.onattribend();
        this._state = BEFORE_ATTRIBUTE_NAME;
    } else if (this._decodeEntities && c === "&") {
        this._emitToken("onattribdata");
        this._baseState = this._state;
        this._state = BEFORE_ENTITY;
        this._sectionStart = this._index;
    }
};
Tokenizer.prototype._stateInAttributeValueSingleQuotes = function (c) {
    if (c === "'") {
        this._emitToken("onattribdata");
        this._cbs.onattribend();
        this._state = BEFORE_ATTRIBUTE_NAME;
    } else if (this._decodeEntities && c === "&") {
        this._emitToken("onattribdata");
        this._baseState = this._state;
        this._state = BEFORE_ENTITY;
        this._sectionStart = this._index;
    }
};
Tokenizer.prototype._stateInAttributeValueNoQuotes = function (c) {
    if (whitespace(c) || c === ">") {
        this._emitToken("onattribdata");
        this._cbs.onattribend();
        this._state = BEFORE_ATTRIBUTE_NAME;
        this._index--;
    } else if (this._decodeEntities && c === "&") {
        this._emitToken("onattribdata");
        this._baseState = this._state;
        this._state = BEFORE_ENTITY;
        this._sectionStart = this._index;
    }
};
Tokenizer.prototype._stateBeforeDeclaration = function (c) {
    this._state = c === "[" ? BEFORE_CDATA_1 : c === "-" ? BEFORE_COMMENT : IN_DECLARATION;
};
Tokenizer.prototype._stateInDeclaration = function (c) {
    if (c === ">") {
        this._cbs.ondeclaration(this._getSection());
        this._state = TEXT;
        this._sectionStart = this._index + 1;
    }
};
Tokenizer.prototype._stateInProcessingInstruction = function (c) {
    if (c === ">") {
        this._cbs.onprocessinginstruction(this._getSection());
        this._state = TEXT;
        this._sectionStart = this._index + 1;
    }
};
Tokenizer.prototype._stateBeforeComment = function (c) {
    if (c === "-") {
        this._state = IN_COMMENT;
        this._sectionStart = this._index + 1;
    } else {
        this._state = IN_DECLARATION;
    }
};
Tokenizer.prototype._stateInComment = function (c) {
    if (c === "-") this._state = AFTER_COMMENT_1;
};
Tokenizer.prototype._stateAfterComment1 = function (c) {
    if (c === "-") {
        this._state = AFTER_COMMENT_2;
    } else {
        this._state = IN_COMMENT;
    }
};
Tokenizer.prototype._stateAfterComment2 = function (c) {
    if (c === ">") {
        //remove 2 trailing chars
        this._cbs.oncomment(this._buffer.substring(this._sectionStart, this._index - 2));
        this._state = TEXT;
        this._sectionStart = this._index + 1;
    } else if (c !== "-") {
        this._state = IN_COMMENT;
    }
    // else: stay in AFTER_COMMENT_2 (`--->`)
};
Tokenizer.prototype._stateBeforeCdata1 = ifElseState("C", BEFORE_CDATA_2, IN_DECLARATION);
Tokenizer.prototype._stateBeforeCdata2 = ifElseState("D", BEFORE_CDATA_3, IN_DECLARATION);
Tokenizer.prototype._stateBeforeCdata3 = ifElseState("A", BEFORE_CDATA_4, IN_DECLARATION);
Tokenizer.prototype._stateBeforeCdata4 = ifElseState("T", BEFORE_CDATA_5, IN_DECLARATION);
Tokenizer.prototype._stateBeforeCdata5 = ifElseState("A", BEFORE_CDATA_6, IN_DECLARATION);
Tokenizer.prototype._stateBeforeCdata6 = function (c) {
    if (c === "[") {
        this._state = IN_CDATA;
        this._sectionStart = this._index + 1;
    } else {
        this._state = IN_DECLARATION;
        this._index--;
    }
};
Tokenizer.prototype._stateInCdata = function (c) {
    if (c === "]") this._state = AFTER_CDATA_1;
};
Tokenizer.prototype._stateAfterCdata1 = function (c) {
    if (c === "]") this._state = AFTER_CDATA_2;else this._state = IN_CDATA;
};
Tokenizer.prototype._stateAfterCdata2 = function (c) {
    if (c === ">") {
        //remove 2 trailing chars
        this._cbs.oncdata(this._buffer.substring(this._sectionStart, this._index - 2));
        this._state = TEXT;
        this._sectionStart = this._index + 1;
    } else if (c !== "]") {
        this._state = IN_CDATA;
    }
    //else: stay in AFTER_CDATA_2 (`]]]>`)
};
Tokenizer.prototype._stateBeforeSpecial = function (c) {
    if (c === "c" || c === "C") {
        this._state = BEFORE_SCRIPT_1;
    } else if (c === "t" || c === "T") {
        this._state = BEFORE_STYLE_1;
    } else {
        this._state = IN_TAG_NAME;
        this._index--; //consume the token again
    }
};
Tokenizer.prototype._stateBeforeSpecialEnd = function (c) {
    if (this._special === SPECIAL_SCRIPT && (c === "c" || c === "C")) {
        this._state = AFTER_SCRIPT_1;
    } else if (this._special === SPECIAL_STYLE && (c === "t" || c === "T")) {
        this._state = AFTER_STYLE_1;
    } else this._state = TEXT;
};
Tokenizer.prototype._stateBeforeScript1 = consumeSpecialNameChar("R", BEFORE_SCRIPT_2);
Tokenizer.prototype._stateBeforeScript2 = consumeSpecialNameChar("I", BEFORE_SCRIPT_3);
Tokenizer.prototype._stateBeforeScript3 = consumeSpecialNameChar("P", BEFORE_SCRIPT_4);
Tokenizer.prototype._stateBeforeScript4 = consumeSpecialNameChar("T", BEFORE_SCRIPT_5);
Tokenizer.prototype._stateBeforeScript5 = function (c) {
    if (c === "/" || c === ">" || whitespace(c)) {
        this._special = SPECIAL_SCRIPT;
    }
    this._state = IN_TAG_NAME;
    this._index--; //consume the token again
};
Tokenizer.prototype._stateAfterScript1 = ifElseState("R", AFTER_SCRIPT_2, TEXT);
Tokenizer.prototype._stateAfterScript2 = ifElseState("I", AFTER_SCRIPT_3, TEXT);
Tokenizer.prototype._stateAfterScript3 = ifElseState("P", AFTER_SCRIPT_4, TEXT);
Tokenizer.prototype._stateAfterScript4 = ifElseState("T", AFTER_SCRIPT_5, TEXT);
Tokenizer.prototype._stateAfterScript5 = function (c) {
    if (c === ">" || whitespace(c)) {
        this._special = SPECIAL_NONE;
        this._state = IN_CLOSING_TAG_NAME;
        this._sectionStart = this._index - 6;
        this._index--; //reconsume the token
    } else this._state = TEXT;
};
Tokenizer.prototype._stateBeforeStyle1 = consumeSpecialNameChar("Y", BEFORE_STYLE_2);
Tokenizer.prototype._stateBeforeStyle2 = consumeSpecialNameChar("L", BEFORE_STYLE_3);
Tokenizer.prototype._stateBeforeStyle3 = consumeSpecialNameChar("E", BEFORE_STYLE_4);
Tokenizer.prototype._stateBeforeStyle4 = function (c) {
    if (c === "/" || c === ">" || whitespace(c)) {
        this._special = SPECIAL_STYLE;
    }
    this._state = IN_TAG_NAME;
    this._index--; //consume the token again
};
Tokenizer.prototype._stateAfterStyle1 = ifElseState("Y", AFTER_STYLE_2, TEXT);
Tokenizer.prototype._stateAfterStyle2 = ifElseState("L", AFTER_STYLE_3, TEXT);
Tokenizer.prototype._stateAfterStyle3 = ifElseState("E", AFTER_STYLE_4, TEXT);
Tokenizer.prototype._stateAfterStyle4 = function (c) {
    if (c === ">" || whitespace(c)) {
        this._special = SPECIAL_NONE;
        this._state = IN_CLOSING_TAG_NAME;
        this._sectionStart = this._index - 5;
        this._index--; //reconsume the token
    } else this._state = TEXT;
};
Tokenizer.prototype._stateBeforeEntity = ifElseState("#", BEFORE_NUMERIC_ENTITY, IN_NAMED_ENTITY);
Tokenizer.prototype._stateBeforeNumericEntity = ifElseState("X", IN_HEX_ENTITY, IN_NUMERIC_ENTITY);
//for entities terminated with a semicolon
Tokenizer.prototype._parseNamedEntityStrict = function () {
    //offset = 1
    if (this._sectionStart + 1 < this._index) {
        var entity = this._buffer.substring(this._sectionStart + 1, this._index),
            map = this._xmlMode ? xmlMap : entityMap;
        if (map.hasOwnProperty(entity)) {
            this._emitPartial(map[entity]);
            this._sectionStart = this._index + 1;
        }
    }
};
//parses legacy entities (without trailing semicolon)
Tokenizer.prototype._parseLegacyEntity = function () {
    var start = this._sectionStart + 1,
        limit = this._index - start;
    if (limit > 6) limit = 6; //the max length of legacy entities is 6
    while (limit >= 2) {
        //the min length of legacy entities is 2
        var entity = this._buffer.substr(start, limit);
        if (legacyMap.hasOwnProperty(entity)) {
            this._emitPartial(legacyMap[entity]);
            this._sectionStart += limit + 1;
            return;
        } else {
            limit--;
        }
    }
};
Tokenizer.prototype._stateInNamedEntity = function (c) {
    if (c === ";") {
        this._parseNamedEntityStrict();
        if (this._sectionStart + 1 < this._index && !this._xmlMode) {
            this._parseLegacyEntity();
        }
        this._state = this._baseState;
    } else if ((c < "a" || c > "z") && (c < "A" || c > "Z") && (c < "0" || c > "9")) {
        if (this._xmlMode) {} else if (this._sectionStart + 1 === this._index) {} else if (this._baseState !== TEXT) {
            if (c !== "=") {
                this._parseNamedEntityStrict();
            }
        } else {
            this._parseLegacyEntity();
        }
        this._state = this._baseState;
        this._index--;
    }
};
Tokenizer.prototype._decodeNumericEntity = function (offset, base) {
    var sectionStart = this._sectionStart + offset;
    if (sectionStart !== this._index) {
        //parse entity
        var entity = this._buffer.substring(sectionStart, this._index);
        var parsed = parseInt(entity, base);
        this._emitPartial(decodeCodePoint(parsed));
        this._sectionStart = this._index;
    } else {
        this._sectionStart--;
    }
    this._state = this._baseState;
};
Tokenizer.prototype._stateInNumericEntity = function (c) {
    if (c === ";") {
        this._decodeNumericEntity(2, 10);
        this._sectionStart++;
    } else if (c < "0" || c > "9") {
        if (!this._xmlMode) {
            this._decodeNumericEntity(2, 10);
        } else {
            this._state = this._baseState;
        }
        this._index--;
    }
};
Tokenizer.prototype._stateInHexEntity = function (c) {
    if (c === ";") {
        this._decodeNumericEntity(3, 16);
        this._sectionStart++;
    } else if ((c < "a" || c > "f") && (c < "A" || c > "F") && (c < "0" || c > "9")) {
        if (!this._xmlMode) {
            this._decodeNumericEntity(3, 16);
        } else {
            this._state = this._baseState;
        }
        this._index--;
    }
};
Tokenizer.prototype._cleanup = function () {
    if (this._sectionStart < 0) {
        this._buffer = "";
        this._bufferOffset += this._index;
        this._index = 0;
    } else if (this._running) {
        if (this._state === TEXT) {
            if (this._sectionStart !== this._index) {
                this._cbs.ontext(this._buffer.substr(this._sectionStart));
            }
            this._buffer = "";
            this._bufferOffset += this._index;
            this._index = 0;
        } else if (this._sectionStart === this._index) {
            //the section just started
            this._buffer = "";
            this._bufferOffset += this._index;
            this._index = 0;
        } else {
            //remove everything unnecessary
            this._buffer = this._buffer.substr(this._sectionStart);
            this._index -= this._sectionStart;
            this._bufferOffset += this._sectionStart;
        }
        this._sectionStart = 0;
    }
};
//TODO make events conditional
Tokenizer.prototype.write = function (chunk) {
    if (this._ended) this._cbs.onerror(Error(".write() after done!"));
    this._buffer += chunk;
    this._parse();
};
Tokenizer.prototype._parse = function () {
    while (this._index < this._buffer.length && this._running) {
        var c = this._buffer.charAt(this._index);
        if (this._state === TEXT) {
            this._stateText(c);
        } else if (this._state === BEFORE_TAG_NAME) {
            this._stateBeforeTagName(c);
        } else if (this._state === IN_TAG_NAME) {
            this._stateInTagName(c);
        } else if (this._state === BEFORE_CLOSING_TAG_NAME) {
            this._stateBeforeCloseingTagName(c);
        } else if (this._state === IN_CLOSING_TAG_NAME) {
            this._stateInCloseingTagName(c);
        } else if (this._state === AFTER_CLOSING_TAG_NAME) {
            this._stateAfterCloseingTagName(c);
        } else if (this._state === IN_SELF_CLOSING_TAG) {
            this._stateInSelfClosingTag(c);
        } else if (this._state === BEFORE_ATTRIBUTE_NAME) {
            /*
            *    attributes
            */
            this._stateBeforeAttributeName(c);
        } else if (this._state === IN_ATTRIBUTE_NAME) {
            this._stateInAttributeName(c);
        } else if (this._state === AFTER_ATTRIBUTE_NAME) {
            this._stateAfterAttributeName(c);
        } else if (this._state === BEFORE_ATTRIBUTE_VALUE) {
            this._stateBeforeAttributeValue(c);
        } else if (this._state === IN_ATTRIBUTE_VALUE_DQ) {
            this._stateInAttributeValueDoubleQuotes(c);
        } else if (this._state === IN_ATTRIBUTE_VALUE_SQ) {
            this._stateInAttributeValueSingleQuotes(c);
        } else if (this._state === IN_ATTRIBUTE_VALUE_NQ) {
            this._stateInAttributeValueNoQuotes(c);
        } else if (this._state === BEFORE_DECLARATION) {
            /*
            *    declarations
            */
            this._stateBeforeDeclaration(c);
        } else if (this._state === IN_DECLARATION) {
            this._stateInDeclaration(c);
        } else if (this._state === IN_PROCESSING_INSTRUCTION) {
            /*
            *    processing instructions
            */
            this._stateInProcessingInstruction(c);
        } else if (this._state === BEFORE_COMMENT) {
            /*
            *    comments
            */
            this._stateBeforeComment(c);
        } else if (this._state === IN_COMMENT) {
            this._stateInComment(c);
        } else if (this._state === AFTER_COMMENT_1) {
            this._stateAfterComment1(c);
        } else if (this._state === AFTER_COMMENT_2) {
            this._stateAfterComment2(c);
        } else if (this._state === BEFORE_CDATA_1) {
            /*
            *    cdata
            */
            this._stateBeforeCdata1(c);
        } else if (this._state === BEFORE_CDATA_2) {
            this._stateBeforeCdata2(c);
        } else if (this._state === BEFORE_CDATA_3) {
            this._stateBeforeCdata3(c);
        } else if (this._state === BEFORE_CDATA_4) {
            this._stateBeforeCdata4(c);
        } else if (this._state === BEFORE_CDATA_5) {
            this._stateBeforeCdata5(c);
        } else if (this._state === BEFORE_CDATA_6) {
            this._stateBeforeCdata6(c);
        } else if (this._state === IN_CDATA) {
            this._stateInCdata(c);
        } else if (this._state === AFTER_CDATA_1) {
            this._stateAfterCdata1(c);
        } else if (this._state === AFTER_CDATA_2) {
            this._stateAfterCdata2(c);
        } else if (this._state === BEFORE_SPECIAL) {
            /*
            * special tags
            */
            this._stateBeforeSpecial(c);
        } else if (this._state === BEFORE_SPECIAL_END) {
            this._stateBeforeSpecialEnd(c);
        } else if (this._state === BEFORE_SCRIPT_1) {
            /*
            * script
            */
            this._stateBeforeScript1(c);
        } else if (this._state === BEFORE_SCRIPT_2) {
            this._stateBeforeScript2(c);
        } else if (this._state === BEFORE_SCRIPT_3) {
            this._stateBeforeScript3(c);
        } else if (this._state === BEFORE_SCRIPT_4) {
            this._stateBeforeScript4(c);
        } else if (this._state === BEFORE_SCRIPT_5) {
            this._stateBeforeScript5(c);
        } else if (this._state === AFTER_SCRIPT_1) {
            this._stateAfterScript1(c);
        } else if (this._state === AFTER_SCRIPT_2) {
            this._stateAfterScript2(c);
        } else if (this._state === AFTER_SCRIPT_3) {
            this._stateAfterScript3(c);
        } else if (this._state === AFTER_SCRIPT_4) {
            this._stateAfterScript4(c);
        } else if (this._state === AFTER_SCRIPT_5) {
            this._stateAfterScript5(c);
        } else if (this._state === BEFORE_STYLE_1) {
            /*
            * style
            */
            this._stateBeforeStyle1(c);
        } else if (this._state === BEFORE_STYLE_2) {
            this._stateBeforeStyle2(c);
        } else if (this._state === BEFORE_STYLE_3) {
            this._stateBeforeStyle3(c);
        } else if (this._state === BEFORE_STYLE_4) {
            this._stateBeforeStyle4(c);
        } else if (this._state === AFTER_STYLE_1) {
            this._stateAfterStyle1(c);
        } else if (this._state === AFTER_STYLE_2) {
            this._stateAfterStyle2(c);
        } else if (this._state === AFTER_STYLE_3) {
            this._stateAfterStyle3(c);
        } else if (this._state === AFTER_STYLE_4) {
            this._stateAfterStyle4(c);
        } else if (this._state === BEFORE_ENTITY) {
            /*
            * entities
            */
            this._stateBeforeEntity(c);
        } else if (this._state === BEFORE_NUMERIC_ENTITY) {
            this._stateBeforeNumericEntity(c);
        } else if (this._state === IN_NAMED_ENTITY) {
            this._stateInNamedEntity(c);
        } else if (this._state === IN_NUMERIC_ENTITY) {
            this._stateInNumericEntity(c);
        } else if (this._state === IN_HEX_ENTITY) {
            this._stateInHexEntity(c);
        } else {
            this._cbs.onerror(Error("unknown _state"), this._state);
        }
        this._index++;
    }
    this._cleanup();
};
Tokenizer.prototype.pause = function () {
    this._running = false;
};
Tokenizer.prototype.resume = function () {
    this._running = true;
    if (this._index < this._buffer.length) {
        this._parse();
    }
    if (this._ended) {
        this._finish();
    }
};
Tokenizer.prototype.end = function (chunk) {
    if (this._ended) this._cbs.onerror(Error(".end() after done!"));
    if (chunk) this.write(chunk);
    this._ended = true;
    if (this._running) this._finish();
};
Tokenizer.prototype._finish = function () {
    //if there is remaining data, emit it in a reasonable way
    if (this._sectionStart < this._index) {
        this._handleTrailingData();
    }
    this._cbs.onend();
};
Tokenizer.prototype._handleTrailingData = function () {
    var data = this._buffer.substr(this._sectionStart);
    if (this._state === IN_CDATA || this._state === AFTER_CDATA_1 || this._state === AFTER_CDATA_2) {
        this._cbs.oncdata(data);
    } else if (this._state === IN_COMMENT || this._state === AFTER_COMMENT_1 || this._state === AFTER_COMMENT_2) {
        this._cbs.oncomment(data);
    } else if (this._state === IN_NAMED_ENTITY && !this._xmlMode) {
        this._parseLegacyEntity();
        if (this._sectionStart < this._index) {
            this._state = this._baseState;
            this._handleTrailingData();
        }
    } else if (this._state === IN_NUMERIC_ENTITY && !this._xmlMode) {
        this._decodeNumericEntity(2, 10);
        if (this._sectionStart < this._index) {
            this._state = this._baseState;
            this._handleTrailingData();
        }
    } else if (this._state === IN_HEX_ENTITY && !this._xmlMode) {
        this._decodeNumericEntity(3, 16);
        if (this._sectionStart < this._index) {
            this._state = this._baseState;
            this._handleTrailingData();
        }
    } else if (this._state !== IN_TAG_NAME && this._state !== BEFORE_ATTRIBUTE_NAME && this._state !== BEFORE_ATTRIBUTE_VALUE && this._state !== AFTER_ATTRIBUTE_NAME && this._state !== IN_ATTRIBUTE_NAME && this._state !== IN_ATTRIBUTE_VALUE_SQ && this._state !== IN_ATTRIBUTE_VALUE_DQ && this._state !== IN_ATTRIBUTE_VALUE_NQ && this._state !== IN_CLOSING_TAG_NAME) {
        this._cbs.ontext(data);
    }
    //else, ignore remaining data
    //TODO add a way to remove current tag
};
Tokenizer.prototype.reset = function () {
    Tokenizer.call(this, { xmlMode: this._xmlMode, decodeEntities: this._decodeEntities }, this._cbs);
};
Tokenizer.prototype.getAbsoluteIndex = function () {
    return this._bufferOffset + this._index;
};
Tokenizer.prototype._getSection = function () {
    return this._buffer.substring(this._sectionStart, this._index);
};
Tokenizer.prototype._emitToken = function (name) {
    this._cbs[name](this._getSection());
    this._sectionStart = -1;
};
Tokenizer.prototype._emitPartial = function (value) {
    if (this._baseState !== TEXT) {
        this._cbs.onattribdata(value); //TODO implement the new event
    } else {
        this._cbs.ontext(value);
    }
};
module.exports = Tokenizer;
node_modules/mini-html-parser2/lib/index.d.ts
New file
@@ -0,0 +1 @@
export default function parse(html: any, done: any): void;
node_modules/mini-html-parser2/lib/index.js
New file
@@ -0,0 +1,54 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
    value: true
});
exports['default'] = parse;
var _domhandler = require('domhandler');
var _domhandler2 = _interopRequireDefault(_domhandler);
var _Parser = require('./Parser');
var _Parser2 = _interopRequireDefault(_Parser);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function transformNode(node) {
    if (['tag', 'text'].indexOf(node.type) === -1) {
        throw new Error('not supported name ' + node.name + ' of type ' + node.type);
    }
    if (node.type === 'text') {
        return {
            type: node.type,
            text: node.data
        };
    }
    return {
        name: node.name,
        children: transform(node.children),
        attrs: node.attribs
    };
}
function transform(nodes) {
    return nodes.map(transformNode);
}
function parse(html, done) {
    var handler = new _domhandler2['default'](function (err, children) {
        if (err) {
            console.error(err);
            done(err);
        }
        try {
            done(null, transform(children));
        } catch (e) {
            console.error(e);
            done(e);
        }
    }, {});
    var parser = new _Parser2['default'](handler, { xmlMode: true });
    parser.write(html);
    parser.done();
}
module.exports = exports['default'];
node_modules/mini-html-parser2/lib/inherits.d.ts
node_modules/mini-html-parser2/lib/inherits.js
New file
@@ -0,0 +1,25 @@
'use strict';
if (typeof Object.create === 'function') {
    // implementation from standard node.js 'util' module
    module.exports = function inherits(ctor, superCtor) {
        ctor.super_ = superCtor;
        ctor.prototype = Object.create(superCtor.prototype, {
            constructor: {
                value: ctor,
                enumerable: false,
                writable: true,
                configurable: true
            }
        });
    };
} else {
    // old school shim for old browsers
    module.exports = function inherits(ctor, superCtor) {
        ctor.super_ = superCtor;
        var TempCtor = function TempCtor() {};
        TempCtor.prototype = superCtor.prototype;
        ctor.prototype = new TempCtor();
        ctor.prototype.constructor = ctor;
    };
}
node_modules/mini-html-parser2/package.json
New file
@@ -0,0 +1,66 @@
{
  "_from": "mini-html-parser2",
  "_id": "mini-html-parser2@0.2.0",
  "_inBundle": false,
  "_integrity": "sha512-SvDQmbQorG8LANarEnsuJBSrMwhHuXb4PK0oDix5ThqA5xNtgQjswxeJTqfP6+JEyQ5195Qlcpexej5zjSmLjA==",
  "_location": "/mini-html-parser2",
  "_phantomChildren": {},
  "_requested": {
    "type": "tag",
    "registry": true,
    "raw": "mini-html-parser2",
    "name": "mini-html-parser2",
    "escapedName": "mini-html-parser2",
    "rawSpec": "",
    "saveSpec": null,
    "fetchSpec": "latest"
  },
  "_requiredBy": [
    "#USER",
    "/"
  ],
  "_resolved": "https://registry.npmjs.org/mini-html-parser2/-/mini-html-parser2-0.2.0.tgz",
  "_shasum": "15de582fc10afd7dfed5407572b4c65c501bfba3",
  "_spec": "mini-html-parser2",
  "_where": "D:\\workspace\\zfb\\MiniProjects\\DayLucky",
  "author": {
    "name": "issac.lj@alibaba-inc.com"
  },
  "bugs": {
    "url": "https://github.com/ant-mini-program/mini-html-parser/issues"
  },
  "bundleDependencies": false,
  "dependencies": {
    "domhandler": "^2.4.2",
    "entities": "^1.1.1",
    "events": "^3.0.0"
  },
  "deprecated": false,
  "description": "小程序富文本",
  "devDependencies": {
    "@types/node": "^11.9.6",
    "jest": "^23.6.0",
    "rc-tools": "^8.1.5"
  },
  "files": [
    "lib"
  ],
  "homepage": "https://github.com/ant-mini-program/mini-html-parser#readme",
  "keywords": [
    "rich-text",
    "mini-program",
    "html-parser"
  ],
  "main": "lib/index.js",
  "name": "mini-html-parser2",
  "repository": {
    "type": "git",
    "url": "git+ssh://git@github.com/ant-mini-program/mini-html-parser.git"
  },
  "scripts": {
    "build": "rc-tools run compile",
    "pub": "git push origin && npm run build && npm publish",
    "test": "jest"
  },
  "version": "0.2.0"
}
node_modules/miniapp-bc-user/es/bc-module/bc-module.acss
New file
@@ -0,0 +1,4 @@
.bc-container {
  width: 100%;
  height: 100%;
}
node_modules/miniapp-bc-user/es/bc-module/bc-module.axml
New file
@@ -0,0 +1,9 @@
<block a:if="{{ show }}">
  <component
    a:for="{{ info }}"
    a:for-item="item"
    is="{{ item.path }}"
    bc-id="{{ item.apId }}"
    ext="{{ ext }}"
  ></component>
</block>
node_modules/miniapp-bc-user/es/bc-module/bc-module.js
New file
@@ -0,0 +1,56 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var index_1 = require("../index");
Component({
    initInvoke: false,
    mixins: [],
    data: {
        show: false,
        info: [],
    },
    props: {
        name: '',
        code: '',
        ext: {},
    },
    onInit: function () {
        this.initInvoke = true;
        this.init();
    },
    didMount: function () {
        if (!this.initInvoke)
            this.init();
    },
    didUpdate: function () { },
    didUnmount: function () { },
    methods: {
        init: function () {
            return tslib_1.__awaiter(this, void 0, void 0, function () {
                var pluginMethods, info;
                return tslib_1.__generator(this, function (_a) {
                    switch (_a.label) {
                        case 0:
                            pluginMethods = index_1.getPluginMethods();
                            if (!pluginMethods) {
                                if (typeof this.props.onError === 'function')
                                    this.props.onError({ msg: 'pluginMethods is undefined', code: this.props.code, name: this.props.name });
                                throw new Error('pluginMethods is undefined');
                            }
                            return [4, pluginMethods.getComponentByCode(this.props.code, this.props.name)];
                        case 1:
                            info = _a.sent();
                            if (!info) {
                                if (typeof this.props.onError === 'function')
                                    this.props.onError({ msg: 'module not found', code: this.props.code, name: this.props.name });
                                throw new Error('module not found');
                            }
                            this.setData({ show: true, info: info });
                            return [2];
                    }
                });
            });
        },
    },
});
//# sourceMappingURL=bc-module.js.map
node_modules/miniapp-bc-user/es/bc-module/bc-module.js.map
New file
@@ -0,0 +1 @@
{"version":3,"file":"bc-module.js","sourceRoot":"","sources":["../../bc-module/bc-module.js"],"names":[],"mappings":";;;AAAA,kCAA4C;AAE5C,SAAS,CAAC;IACR,UAAU,EAAE,KAAK;IACjB,MAAM,EAAE,EAAE;IACV,IAAI,EAAE;QACJ,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,EAAE;KACT;IACD,KAAK,EAAE;QACL,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,EAAE;QACR,GAAG,EAAE,EAAE;KACR;IACD,MAAM;QACJ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IACD,QAAQ;QAEN,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IACpC,CAAC;IACD,SAAS,gBAAI,CAAC;IACd,UAAU,gBAAI,CAAC;IACf,OAAO,EAAE;QACD,IAAI;;;;;;4BACF,aAAa,GAAG,wBAAgB,EAAE,CAAC;4BAEzC,IAAI,CAAC,aAAa,EAAE;gCAClB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,UAAU;oCAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,4BAA4B,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gCAC1G,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;6BAC/C;4BAEU,WAAM,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAA;;4BAA/E,IAAI,GAAG,SAAwE;4BAEnF,IAAI,CAAC,IAAI,EAAE;gCACT,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,UAAU;oCAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gCAChG,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;6BACrC;4BAED,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;;;;;SACpC;KACF;CACF,CAAC,CAAC"}
node_modules/miniapp-bc-user/es/bc-module/bc-module.json
New file
@@ -0,0 +1,4 @@
{
  "component": true,
  "usingComponents": {}
}
node_modules/miniapp-bc-user/es/index.js
New file
@@ -0,0 +1,34 @@
"use strict";
var tslib_1 = require("tslib");
var pluginMethods;
var pluginId = '2021001161608103';
function loadBC() {
    var args = [];
    for (var _i = 0; _i < arguments.length; _i++) {
        args[_i] = arguments[_i];
    }
    var plugin = pluginId + "@*";
    return new Promise(function (res, rej) {
        my.loadPlugin({
            plugin: plugin,
            success: function () {
                pluginMethods = requirePlugin("dynamic-plugin://" + pluginId);
                pluginMethods
                    .init.apply(pluginMethods, tslib_1.__spreadArrays([my], args)).then(function (data) {
                    res({ success: true });
                })
                    .catch(function (err) {
                    rej({ msg: "bc plugin load config fail", err: err, success: false });
                });
            },
            fail: function (err) {
                rej({ msg: "plugin: " + plugin + " load fail", err: err, success: false });
            },
        });
    });
}
function getPluginMethods() {
    return pluginMethods;
}
module.exports = { loadBC: loadBC, getPluginMethods: getPluginMethods };
//# sourceMappingURL=index.js.map
node_modules/miniapp-bc-user/es/index.js.map
New file
@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.js"],"names":[],"mappings":";;AAAA,IAAI,aAAa,CAAC;AAElB,IAAM,QAAQ,GAAG,kBAAkB,CAAC;AAEpC,SAAS,MAAM;IAAC,cAAO;SAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;QAAP,yBAAO;;IACrB,IAAM,MAAM,GAAM,QAAQ,OAAI,CAAC;IAE/B,OAAO,IAAI,OAAO,CAAC,UAAC,GAAG,EAAE,GAAG;QAC1B,EAAE,CAAC,UAAU,CAAC;YACZ,MAAM,QAAA;YACN,OAAO,EAAE;gBACP,aAAa,GAAG,aAAa,CAAC,sBAAoB,QAAU,CAAC,CAAC;gBAC9D,aAAa;qBACV,IAAI,OADP,aAAa,0BACL,EAAE,GAAK,IAAI,GAChB,IAAI,CAAC,UAAC,IAAI;oBACT,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBACzB,CAAC,CAAC;qBACD,KAAK,CAAC,UAAC,GAAG;oBACT,GAAG,CAAC,EAAE,GAAG,EAAE,4BAA4B,EAAE,GAAG,KAAA,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gBAClE,CAAC,CAAC,CAAC;YACP,CAAC;YACD,IAAI,EAAE,UAAC,GAAG;gBACR,GAAG,CAAC,EAAE,GAAG,EAAE,aAAW,MAAM,eAAY,EAAE,GAAG,KAAA,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YACnE,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,OAAO,GAAG,EAAE,MAAM,QAAA,EAAE,gBAAgB,kBAAA,EAAE,CAAC"}
node_modules/miniapp-bc-user/package.json
New file
@@ -0,0 +1,44 @@
{
  "_from": "miniapp-bc-user",
  "_id": "miniapp-bc-user@0.0.4",
  "_inBundle": false,
  "_integrity": "sha512-BitiMSKR/Z+GnXiz/rZKUbLVoQ0pjlN0DSW96Rh1gaNJ/nPltCdWxQ+Vg1Y6GR8VTC3cnHcsHy1jpehxsmPAtg==",
  "_location": "/miniapp-bc-user",
  "_phantomChildren": {},
  "_requested": {
    "type": "tag",
    "registry": true,
    "raw": "miniapp-bc-user",
    "name": "miniapp-bc-user",
    "escapedName": "miniapp-bc-user",
    "rawSpec": "",
    "saveSpec": null,
    "fetchSpec": "latest"
  },
  "_requiredBy": [
    "#USER",
    "/"
  ],
  "_resolved": "https://registry.npmjs.org/miniapp-bc-user/-/miniapp-bc-user-0.0.4.tgz",
  "_shasum": "e3ba151a45f131d9dad94574fac7b62773ee1fbd",
  "_spec": "miniapp-bc-user",
  "_where": "D:\\workspace\\zfb\\MiniProjects\\DayLucky",
  "author": "",
  "bundleDependencies": false,
  "dependencies": {
    "tslib": "^1.11.1"
  },
  "deprecated": false,
  "description": "",
  "files": [
    "es"
  ],
  "license": "ISC",
  "main": "./es/index.js",
  "name": "miniapp-bc-user",
  "publishConfig": {
    "registry": "https://registry.npmjs.org/"
  },
  "scripts": {},
  "version": "0.0.4"
}
node_modules/tslib/CopyrightNotice.txt
New file
@@ -0,0 +1,15 @@
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
node_modules/tslib/LICENSE.txt
New file
@@ -0,0 +1,12 @@
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
node_modules/tslib/README.md
New file
@@ -0,0 +1,142 @@
# tslib
This is a runtime library for [TypeScript](http://www.typescriptlang.org/) that contains all of the TypeScript helper functions.
This library is primarily used by the `--importHelpers` flag in TypeScript.
When using `--importHelpers`, a module that uses helper functions like `__extends` and `__assign` in the following emitted file:
```ts
var __assign = (this && this.__assign) || Object.assign || function(t) {
    for (var s, i = 1, n = arguments.length; i < n; i++) {
        s = arguments[i];
        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
            t[p] = s[p];
    }
    return t;
};
exports.x = {};
exports.y = __assign({}, exports.x);
```
will instead be emitted as something like the following:
```ts
var tslib_1 = require("tslib");
exports.x = {};
exports.y = tslib_1.__assign({}, exports.x);
```
Because this can avoid duplicate declarations of things like `__extends`, `__assign`, etc., this means delivering users smaller files on average, as well as less runtime overhead.
For optimized bundles with TypeScript, you should absolutely consider using `tslib` and `--importHelpers`.
# Installing
For the latest stable version, run:
## npm
```sh
# TypeScript 2.3.3 or later
npm install tslib
# TypeScript 2.3.2 or earlier
npm install tslib@1.6.1
```
## yarn
```sh
# TypeScript 2.3.3 or later
yarn add tslib
# TypeScript 2.3.2 or earlier
yarn add tslib@1.6.1
```
## bower
```sh
# TypeScript 2.3.3 or later
bower install tslib
# TypeScript 2.3.2 or earlier
bower install tslib@1.6.1
```
## JSPM
```sh
# TypeScript 2.3.3 or later
jspm install tslib
# TypeScript 2.3.2 or earlier
jspm install tslib@1.6.1
```
# Usage
Set the `importHelpers` compiler option on the command line:
```
tsc --importHelpers file.ts
```
or in your tsconfig.json:
```json
{
    "compilerOptions": {
        "importHelpers": true
    }
}
```
#### For bower and JSPM users
You will need to add a `paths` mapping for `tslib`, e.g. For Bower users:
```json
{
    "compilerOptions": {
        "module": "amd",
        "importHelpers": true,
        "baseUrl": "./",
        "paths": {
            "tslib" : ["bower_components/tslib/tslib.d.ts"]
        }
    }
}
```
For JSPM users:
```json
{
    "compilerOptions": {
        "module": "system",
        "importHelpers": true,
        "baseUrl": "./",
        "paths": {
            "tslib" : ["jspm_packages/npm/tslib@1.[version].0/tslib.d.ts"]
        }
    }
}
```
# Contribute
There are many ways to [contribute](https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md) to TypeScript.
* [Submit bugs](https://github.com/Microsoft/TypeScript/issues) and help us verify fixes as they are checked in.
* Review the [source code changes](https://github.com/Microsoft/TypeScript/pulls).
* Engage with other TypeScript users and developers on [StackOverflow](http://stackoverflow.com/questions/tagged/typescript).
* Join the [#typescript](http://twitter.com/#!/search/realtime/%23typescript) discussion on Twitter.
* [Contribute bug fixes](https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md).
# Documentation
* [Quick tutorial](http://www.typescriptlang.org/Tutorial)
* [Programming handbook](http://www.typescriptlang.org/Handbook)
* [Homepage](http://www.typescriptlang.org/)
node_modules/tslib/modules/index.js
New file
@@ -0,0 +1,51 @@
import tslib from '../tslib.js';
const {
    __extends,
    __assign,
    __rest,
    __decorate,
    __param,
    __metadata,
    __awaiter,
    __generator,
    __exportStar,
    __createBinding,
    __values,
    __read,
    __spread,
    __spreadArrays,
    __await,
    __asyncGenerator,
    __asyncDelegator,
    __asyncValues,
    __makeTemplateObject,
    __importStar,
    __importDefault,
    __classPrivateFieldGet,
    __classPrivateFieldSet,
} = tslib;
export {
    __extends,
    __assign,
    __rest,
    __decorate,
    __param,
    __metadata,
    __awaiter,
    __generator,
    __exportStar,
    __createBinding,
    __values,
    __read,
    __spread,
    __spreadArrays,
    __await,
    __asyncGenerator,
    __asyncDelegator,
    __asyncValues,
    __makeTemplateObject,
    __importStar,
    __importDefault,
    __classPrivateFieldGet,
    __classPrivateFieldSet,
};
node_modules/tslib/modules/package.json
New file
@@ -0,0 +1,3 @@
{
    "type": "module"
}
node_modules/tslib/package.json
New file
@@ -0,0 +1,64 @@
{
  "_from": "tslib@^1.11.1",
  "_id": "tslib@1.14.1",
  "_inBundle": false,
  "_integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
  "_location": "/tslib",
  "_phantomChildren": {},
  "_requested": {
    "type": "range",
    "registry": true,
    "raw": "tslib@^1.11.1",
    "name": "tslib",
    "escapedName": "tslib",
    "rawSpec": "^1.11.1",
    "saveSpec": null,
    "fetchSpec": "^1.11.1"
  },
  "_requiredBy": [
    "/miniapp-bc-user"
  ],
  "_resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
  "_shasum": "cf2d38bdc34a134bcaf1091c41f6619e2f672d00",
  "_spec": "tslib@^1.11.1",
  "_where": "D:\\workspace\\zfb\\MiniProjects\\DayLucky\\node_modules\\miniapp-bc-user",
  "author": {
    "name": "Microsoft Corp."
  },
  "bugs": {
    "url": "https://github.com/Microsoft/TypeScript/issues"
  },
  "bundleDependencies": false,
  "deprecated": false,
  "description": "Runtime library for TypeScript helper functions",
  "exports": {
    ".": {
      "module": "./tslib.es6.js",
      "import": "./modules/index.js",
      "default": "./tslib.js"
    },
    "./": "./"
  },
  "homepage": "https://www.typescriptlang.org/",
  "jsnext:main": "tslib.es6.js",
  "keywords": [
    "TypeScript",
    "Microsoft",
    "compiler",
    "language",
    "javascript",
    "tslib",
    "runtime"
  ],
  "license": "0BSD",
  "main": "tslib.js",
  "module": "tslib.es6.js",
  "name": "tslib",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/Microsoft/tslib.git"
  },
  "sideEffects": false,
  "typings": "tslib.d.ts",
  "version": "1.14.1"
}
node_modules/tslib/test/validateModuleExportsMatchCommonJS/index.js
New file
@@ -0,0 +1,23 @@
// When on node 14, it validates that all of the commonjs exports
// are correctly re-exported for es modules importers.
const nodeMajor = Number(process.version.split(".")[0].slice(1))
if (nodeMajor < 14) {
  console.log("Skipping because node does not support module exports.")
  process.exit(0)
}
// ES Modules import via the ./modules folder
import * as esTSLib from "../../modules/index.js"
// Force a commonjs resolve
import { createRequire } from "module";
const commonJSTSLib = createRequire(import.meta.url)("../../tslib.js");
for (const key in commonJSTSLib) {
  if (commonJSTSLib.hasOwnProperty(key)) {
    if(!esTSLib[key]) throw new Error(`ESModules is missing ${key} - it needs to be re-exported in  ./modules/index.js`)
  }
}
console.log("All exports in commonjs are available for es module consumers.")
node_modules/tslib/test/validateModuleExportsMatchCommonJS/package.json
New file
@@ -0,0 +1,6 @@
{
  "type": "module",
  "scripts": {
    "test": "node index.js"
  }
}
node_modules/tslib/tslib.d.ts
New file
@@ -0,0 +1,37 @@
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
export declare function __extends(d: Function, b: Function): void;
export declare function __assign(t: any, ...sources: any[]): any;
export declare function __rest(t: any, propertyNames: (string | symbol)[]): any;
export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any;
export declare function __param(paramIndex: number, decorator: Function): Function;
export declare function __metadata(metadataKey: any, metadataValue: any): Function;
export declare function __awaiter(thisArg: any, _arguments: any, P: Function, generator: Function): any;
export declare function __generator(thisArg: any, body: Function): any;
export declare function __exportStar(m: any, exports: any): void;
export declare function __values(o: any): any;
export declare function __read(o: any, n?: number): any[];
export declare function __spread(...args: any[][]): any[];
export declare function __spreadArrays(...args: any[][]): any[];
export declare function __await(v: any): any;
export declare function __asyncGenerator(thisArg: any, _arguments: any, generator: Function): any;
export declare function __asyncDelegator(o: any): any;
export declare function __asyncValues(o: any): any;
export declare function __makeTemplateObject(cooked: string[], raw: string[]): TemplateStringsArray;
export declare function __importStar<T>(mod: T): T;
export declare function __importDefault<T>(mod: T): T | { default: T };
export declare function __classPrivateFieldGet<T extends object, V>(receiver: T, privateMap: { has(o: T): boolean, get(o: T): V | undefined }): V;
export declare function __classPrivateFieldSet<T extends object, V>(receiver: T, privateMap: { has(o: T): boolean, set(o: T, value: V): any }, value: V): V;
export declare function __createBinding(object: object, target: object, key: PropertyKey, objectKey?: PropertyKey): void;
node_modules/tslib/tslib.es6.html
New file
@@ -0,0 +1 @@
<script src="tslib.es6.js"></script>
node_modules/tslib/tslib.es6.js
New file
@@ -0,0 +1,218 @@
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
/* global Reflect, Promise */
var extendStatics = function(d, b) {
    extendStatics = Object.setPrototypeOf ||
        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
    return extendStatics(d, b);
};
export function __extends(d, b) {
    extendStatics(d, b);
    function __() { this.constructor = d; }
    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}
export var __assign = function() {
    __assign = Object.assign || function __assign(t) {
        for (var s, i = 1, n = arguments.length; i < n; i++) {
            s = arguments[i];
            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
        }
        return t;
    }
    return __assign.apply(this, arguments);
}
export function __rest(s, e) {
    var t = {};
    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
        t[p] = s[p];
    if (s != null && typeof Object.getOwnPropertySymbols === "function")
        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
                t[p[i]] = s[p[i]];
        }
    return t;
}
export function __decorate(decorators, target, key, desc) {
    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
    return c > 3 && r && Object.defineProperty(target, key, r), r;
}
export function __param(paramIndex, decorator) {
    return function (target, key) { decorator(target, key, paramIndex); }
}
export function __metadata(metadataKey, metadataValue) {
    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
}
export function __awaiter(thisArg, _arguments, P, generator) {
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
}
export function __generator(thisArg, body) {
    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
    return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
    function verb(n) { return function (v) { return step([n, v]); }; }
    function step(op) {
        if (f) throw new TypeError("Generator is already executing.");
        while (_) try {
            if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
            if (y = 0, t) op = [op[0] & 2, t.value];
            switch (op[0]) {
                case 0: case 1: t = op; break;
                case 4: _.label++; return { value: op[1], done: false };
                case 5: _.label++; y = op[1]; op = [0]; continue;
                case 7: op = _.ops.pop(); _.trys.pop(); continue;
                default:
                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
                    if (t[2]) _.ops.pop();
                    _.trys.pop(); continue;
            }
            op = body.call(thisArg, _);
        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
    }
}
export function __createBinding(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}
export function __exportStar(m, exports) {
    for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) exports[p] = m[p];
}
export function __values(o) {
    var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
    if (m) return m.call(o);
    if (o && typeof o.length === "number") return {
        next: function () {
            if (o && i >= o.length) o = void 0;
            return { value: o && o[i++], done: !o };
        }
    };
    throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
}
export function __read(o, n) {
    var m = typeof Symbol === "function" && o[Symbol.iterator];
    if (!m) return o;
    var i = m.call(o), r, ar = [], e;
    try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
    }
    catch (error) { e = { error: error }; }
    finally {
        try {
            if (r && !r.done && (m = i["return"])) m.call(i);
        }
        finally { if (e) throw e.error; }
    }
    return ar;
}
export function __spread() {
    for (var ar = [], i = 0; i < arguments.length; i++)
        ar = ar.concat(__read(arguments[i]));
    return ar;
}
export function __spreadArrays() {
    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
    for (var r = Array(s), k = 0, i = 0; i < il; i++)
        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
            r[k] = a[j];
    return r;
};
export function __await(v) {
    return this instanceof __await ? (this.v = v, this) : new __await(v);
}
export function __asyncGenerator(thisArg, _arguments, generator) {
    if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
    var g = generator.apply(thisArg, _arguments || []), i, q = [];
    return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
    function fulfill(value) { resume("next", value); }
    function reject(value) { resume("throw", value); }
    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
}
export function __asyncDelegator(o) {
    var i, p;
    return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
}
export function __asyncValues(o) {
    if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
    var m = o[Symbol.asyncIterator], i;
    return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
}
export function __makeTemplateObject(cooked, raw) {
    if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
    return cooked;
};
export function __importStar(mod) {
    if (mod && mod.__esModule) return mod;
    var result = {};
    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
    result.default = mod;
    return result;
}
export function __importDefault(mod) {
    return (mod && mod.__esModule) ? mod : { default: mod };
}
export function __classPrivateFieldGet(receiver, privateMap) {
    if (!privateMap.has(receiver)) {
        throw new TypeError("attempted to get private field on non-instance");
    }
    return privateMap.get(receiver);
}
export function __classPrivateFieldSet(receiver, privateMap, value) {
    if (!privateMap.has(receiver)) {
        throw new TypeError("attempted to set private field on non-instance");
    }
    privateMap.set(receiver, value);
    return value;
}
node_modules/tslib/tslib.html
New file
@@ -0,0 +1 @@
<script src="tslib.js"></script>
node_modules/tslib/tslib.js
New file
@@ -0,0 +1,284 @@
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
/* global global, define, System, Reflect, Promise */
var __extends;
var __assign;
var __rest;
var __decorate;
var __param;
var __metadata;
var __awaiter;
var __generator;
var __exportStar;
var __values;
var __read;
var __spread;
var __spreadArrays;
var __await;
var __asyncGenerator;
var __asyncDelegator;
var __asyncValues;
var __makeTemplateObject;
var __importStar;
var __importDefault;
var __classPrivateFieldGet;
var __classPrivateFieldSet;
var __createBinding;
(function (factory) {
    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
    if (typeof define === "function" && define.amd) {
        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
    }
    else if (typeof module === "object" && typeof module.exports === "object") {
        factory(createExporter(root, createExporter(module.exports)));
    }
    else {
        factory(createExporter(root));
    }
    function createExporter(exports, previous) {
        if (exports !== root) {
            if (typeof Object.create === "function") {
                Object.defineProperty(exports, "__esModule", { value: true });
            }
            else {
                exports.__esModule = true;
            }
        }
        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
    }
})
(function (exporter) {
    var extendStatics = Object.setPrototypeOf ||
        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
    __extends = function (d, b) {
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
    __assign = Object.assign || function (t) {
        for (var s, i = 1, n = arguments.length; i < n; i++) {
            s = arguments[i];
            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
        }
        return t;
    };
    __rest = function (s, e) {
        var t = {};
        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
            t[p] = s[p];
        if (s != null && typeof Object.getOwnPropertySymbols === "function")
            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
                    t[p[i]] = s[p[i]];
            }
        return t;
    };
    __decorate = function (decorators, target, key, desc) {
        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
        return c > 3 && r && Object.defineProperty(target, key, r), r;
    };
    __param = function (paramIndex, decorator) {
        return function (target, key) { decorator(target, key, paramIndex); }
    };
    __metadata = function (metadataKey, metadataValue) {
        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
    };
    __awaiter = function (thisArg, _arguments, P, generator) {
        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
        return new (P || (P = Promise))(function (resolve, reject) {
            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
            function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
            step((generator = generator.apply(thisArg, _arguments || [])).next());
        });
    };
    __generator = function (thisArg, body) {
        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
        function verb(n) { return function (v) { return step([n, v]); }; }
        function step(op) {
            if (f) throw new TypeError("Generator is already executing.");
            while (_) try {
                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
                if (y = 0, t) op = [op[0] & 2, t.value];
                switch (op[0]) {
                    case 0: case 1: t = op; break;
                    case 4: _.label++; return { value: op[1], done: false };
                    case 5: _.label++; y = op[1]; op = [0]; continue;
                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
                    default:
                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
                        if (t[2]) _.ops.pop();
                        _.trys.pop(); continue;
                }
                op = body.call(thisArg, _);
            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
        }
    };
    __createBinding = function(o, m, k, k2) {
        if (k2 === undefined) k2 = k;
        o[k2] = m[k];
    };
    __exportStar = function (m, exports) {
        for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) exports[p] = m[p];
    };
    __values = function (o) {
        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
        if (m) return m.call(o);
        if (o && typeof o.length === "number") return {
            next: function () {
                if (o && i >= o.length) o = void 0;
                return { value: o && o[i++], done: !o };
            }
        };
        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
    };
    __read = function (o, n) {
        var m = typeof Symbol === "function" && o[Symbol.iterator];
        if (!m) return o;
        var i = m.call(o), r, ar = [], e;
        try {
            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
        }
        catch (error) { e = { error: error }; }
        finally {
            try {
                if (r && !r.done && (m = i["return"])) m.call(i);
            }
            finally { if (e) throw e.error; }
        }
        return ar;
    };
    __spread = function () {
        for (var ar = [], i = 0; i < arguments.length; i++)
            ar = ar.concat(__read(arguments[i]));
        return ar;
    };
    __spreadArrays = function () {
        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
        for (var r = Array(s), k = 0, i = 0; i < il; i++)
            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
                r[k] = a[j];
        return r;
    };
    __await = function (v) {
        return this instanceof __await ? (this.v = v, this) : new __await(v);
    };
    __asyncGenerator = function (thisArg, _arguments, generator) {
        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
        var g = generator.apply(thisArg, _arguments || []), i, q = [];
        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
        function fulfill(value) { resume("next", value); }
        function reject(value) { resume("throw", value); }
        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
    };
    __asyncDelegator = function (o) {
        var i, p;
        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
    };
    __asyncValues = function (o) {
        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
        var m = o[Symbol.asyncIterator], i;
        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
    };
    __makeTemplateObject = function (cooked, raw) {
        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
        return cooked;
    };
    __importStar = function (mod) {
        if (mod && mod.__esModule) return mod;
        var result = {};
        if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
        result["default"] = mod;
        return result;
    };
    __importDefault = function (mod) {
        return (mod && mod.__esModule) ? mod : { "default": mod };
    };
    __classPrivateFieldGet = function (receiver, privateMap) {
        if (!privateMap.has(receiver)) {
            throw new TypeError("attempted to get private field on non-instance");
        }
        return privateMap.get(receiver);
    };
    __classPrivateFieldSet = function (receiver, privateMap, value) {
        if (!privateMap.has(receiver)) {
            throw new TypeError("attempted to set private field on non-instance");
        }
        privateMap.set(receiver, value);
        return value;
    };
    exporter("__extends", __extends);
    exporter("__assign", __assign);
    exporter("__rest", __rest);
    exporter("__decorate", __decorate);
    exporter("__param", __param);
    exporter("__metadata", __metadata);
    exporter("__awaiter", __awaiter);
    exporter("__generator", __generator);
    exporter("__exportStar", __exportStar);
    exporter("__createBinding", __createBinding);
    exporter("__values", __values);
    exporter("__read", __read);
    exporter("__spread", __spread);
    exporter("__spreadArrays", __spreadArrays);
    exporter("__await", __await);
    exporter("__asyncGenerator", __asyncGenerator);
    exporter("__asyncDelegator", __asyncDelegator);
    exporter("__asyncValues", __asyncValues);
    exporter("__makeTemplateObject", __makeTemplateObject);
    exporter("__importStar", __importStar);
    exporter("__importDefault", __importDefault);
    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
});
package-lock.json
@@ -10,6 +10,29 @@
        "regenerator-runtime": "^0.13.4"
      }
    },
    "domelementtype": {
      "version": "1.3.1",
      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
      "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w=="
    },
    "domhandler": {
      "version": "2.4.2",
      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
      "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
      "requires": {
        "domelementtype": "1"
      }
    },
    "entities": {
      "version": "1.1.2",
      "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
      "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w=="
    },
    "events": {
      "version": "3.2.0",
      "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz",
      "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg=="
    },
    "mini-ali-ui": {
      "version": "1.2.1",
      "resolved": "https://registry.npm.taobao.org/mini-ali-ui/download/mini-ali-ui-1.2.1.tgz",
@@ -18,10 +41,33 @@
        "@babel/runtime": "^7.11.2"
      }
    },
    "mini-html-parser2": {
      "version": "0.2.0",
      "resolved": "https://registry.npmjs.org/mini-html-parser2/-/mini-html-parser2-0.2.0.tgz",
      "integrity": "sha512-SvDQmbQorG8LANarEnsuJBSrMwhHuXb4PK0oDix5ThqA5xNtgQjswxeJTqfP6+JEyQ5195Qlcpexej5zjSmLjA==",
      "requires": {
        "domhandler": "^2.4.2",
        "entities": "^1.1.1",
        "events": "^3.0.0"
      }
    },
    "miniapp-bc-user": {
      "version": "0.0.4",
      "resolved": "https://registry.npmjs.org/miniapp-bc-user/-/miniapp-bc-user-0.0.4.tgz",
      "integrity": "sha512-BitiMSKR/Z+GnXiz/rZKUbLVoQ0pjlN0DSW96Rh1gaNJ/nPltCdWxQ+Vg1Y6GR8VTC3cnHcsHy1jpehxsmPAtg==",
      "requires": {
        "tslib": "^1.11.1"
      }
    },
    "regenerator-runtime": {
      "version": "0.13.7",
      "resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.13.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerator-runtime%2Fdownload%2Fregenerator-runtime-0.13.7.tgz",
      "integrity": "sha1-ysLazIoepnX+qrrriugziYrkb1U="
    },
    "tslib": {
      "version": "1.14.1",
      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
    }
  }
}
package.json
@@ -1,5 +1,7 @@
{
  "dependencies": {
    "mini-ali-ui": "^1.2.1"
    "mini-ali-ui": "^1.2.1",
    "mini-html-parser2": "^0.2.0",
    "miniapp-bc-user": "0.0.4"
  }
}
pages/activity-detail/activity-detail.acss
@@ -89,9 +89,20 @@
  position: relative;
}
.content .award .award-item {
  display: flex;
  margin-bottom: 23rpx;
}
.content .award .award-item rich-text {
  width: 592rpx;
  margin-left: 17rpx;
}
.content .award image {
  width: 28rpx;
  height: 28rpx;
  margin-top: 5rpx;
}
.content .award .question {
@@ -297,6 +308,12 @@
  margin-bottom: 19rpx;
}
.content .award-anouncement rich-text {
  font-size: 24rpx;
  color: #999999;
  font-weight: 400;
}
.content .sponsor-join {
  display: flex;
  align-items: center;
@@ -307,6 +324,12 @@
  margin-bottom: 19rpx;
}
.content .sponsor-join rich-text {
  font-size: 24rpx;
  color: #999999;
  font-weight: 400;
}
.footer {
  display: flex;
  justify-content: space-around;
pages/activity-detail/activity-detail.axml
@@ -29,14 +29,14 @@
  </view>
  <view class="content">
    <view class="award item">
      <view style="display:flex;">
      <view style="display:flex;margin-bottom:23rpx;">
        <view a:for="{{activity.labels}}" style="color:{{item.color}}; background:{{item.background}}; " class="label">
            {{item.value}}
        </view>
      </view>
      <view class="award-item" a:for="{{activity.awardList}}" onTap="onAwardDetailClick">
        <image mode="scaleToFill" src=""/>
        <rich-text class="title" nodes="{{}}"></rich-text>
      <view class="award-item" a:for-item="award" a:for="{{activity.awardList}}" onTap="onAwardDetailClick">
        <image mode="scaleToFill" src="/image/icon/icon_award_ding.png"/>
        <rich-text class="title" nodes="{{award.htmlJson}}"></rich-text>
      </view>
      <view class="load-more" a:if="{{awardShowMore}}" data-type="award" onTap="showMore">
        查看更多
@@ -99,7 +99,7 @@
    <view class="assist-process item" onTap="onAssistProcessClick">
      <view style="flex-grow:1;">
        <view class="title">助力进度</view>
        <rich-text nodes="{{}}">
        <rich-text nodes="{{assistProcessDesc}}">
        </rich-text>
      </view>
      <image mode="scaleToFill" src="/image/icon/icon_right_array_input.png" class="input"/>
@@ -127,7 +127,7 @@
    <view class="award-anouncement item" onTap="onDrawnAnouncementClick">
      <view style="flex-grow:1;">
        <view class="title">中奖公示</view>
        <rich-text nodes="{{}}">
        <rich-text nodes="{{drawnAnouncementDesc}}">
        </rich-text>
      </view>
      <image mode="scaleToFill" src="/image/icon/icon_right_array_input.png" class="input"/>
@@ -135,7 +135,7 @@
    <view class="sponsor-join item" onTap="onSponsorSignUpClick">
      <view style="flex-grow:1;">
        <view class="title">赞助报名</view>
        <rich-text nodes="{{}}">
        <rich-text nodes="{{[{name:'div',children:[{type:'text',text:'成为赞助商为用户派送福利'}]}]}}">
        </rich-text>
      </view>
      <image mode="scaleToFill" src="/image/icon/icon_right_array_input.png" class="input"/>
pages/activity-detail/activity-detail.js
@@ -1,4 +1,5 @@
var help = require('../../util/help.js');
import parse from 'mini-html-parser2';
Page({
  data: {
    leftTime: {//剩余时间
@@ -15,8 +16,6 @@
    showAssistModal: true,
    //奖项查看更多
    awardShowMore: true,
    //参与条件查看更多
    joinShowMore: true,
@@ -25,16 +24,72 @@
    //奖品列表最大数量
    maxAward: 3,
    activity: {
      joined: false,
      awardList: [{}, {}, {}],
      labels: [{ background: "#E0FFD2", color: "#008B10", value: "进行中" }, { background: "#FFF5D2", color: "#FF8A00", value: "押金预付" }, { background: "#FFE2E6", color: "#F53D59", value: "礼金核实" }]
    }
    //助力进度
    assistProcessDesc: [],
    //中奖公示
    drawnAnouncementDesc: [],
  },
  onShareAppMessage() {
    return {
      title: '分享 View 组件',
      desc: 'View 组件很通用',
      path: 'pages/activity-detail/activity-detail',
    };
  },
  onLoad() {
    help.setPageNavBar("抽奖详情");
    var that=this;
    var activity = {
      joined: false,
      awardList: [{
      }, {}, {}],
      labels: [{ background: "#E0FFD2", color: "#008B10", value: "进行中" }, { background: "#FFF5D2", color: "#FF8A00", value: "押金预付" }, { background: "#FFE2E6", color: "#F53D59", value: "礼金核实" }]
    };
    //封装奖项的富文本
    this.loadRichTextNode(help.getAwardHtml({}), function (nodes) {
      for (var i = 0; i < activity.awardList.length; i++) {
        activity.awardList[i].htmlJson = nodes;
      }
      that.setData({
        activity: activity
      });
    });
    //封装助力进度的富文本
    this.loadRichTextNode(help.getAssistProcessHtml(1), function (nodes) {
      that.setData({
        assistProcessDesc: nodes
      });
    });
    //封装中奖公示的富文本
    this.loadRichTextNode(help.getDowanAnouncementHtml("2020.02.02 02:02"), function (nodes) {
      that.setData({
        drawnAnouncementDesc: nodes
      });
    });
  },
  loadRichTextNode(html, callback) {
    parse(html, (err, nodes) => {
      console.log(nodes);
      if (!err) {
        callback(nodes);
      }
    });
  },
  onReady() {
    var item = my.createSelectorQuery()
@@ -136,7 +191,7 @@
  },
  //更多参与者
  onJoinerMoreClick() {
      my.navigateTo({
    my.navigateTo({
      url: '/pages/join-statistic/join-statistic'
    });
  },
@@ -150,21 +205,21 @@
  //中奖公示
  onDrawnAnouncementClick() {
   my.navigateTo({
    my.navigateTo({
      url: '/pages/reward-announcement/reward-announcement'
    });
  },
  //赞助商报名
  onSponsorSignUpClick() {
    my.showToast({
      content: '赞助报名'
    my.navigateTo({
      url: '/pages/sponsor-signup/sponsor-signup'
    });
  },
  //意见反馈
  onAdviceClick() {
      my.navigateTo({
    my.navigateTo({
      url: '/pages/advice/advice'
    });
  },
pages/goods/goods.axml
@@ -1,3 +1,4 @@
<view>
  New Page goods
<view class="page">
  <!-- <bc-module a:if="{{ showComponent }}" code="suite://bc.suite.choiceness/bc.template.choiceness" name="block-choiceness" onError="bcError" ext="{{pluginOptions: {pageSize:20,relationId:'123123'}}}" /> -->
  <bc-module a:if="{{ showComponent }}" code="suite://bc.suite.etaoMarketing/bc.template.rebate.search" name="block-etao-searchbox" onError="bcError" />
</view>
pages/goods/goods.js
@@ -1,4 +1,24 @@
import { loadBC } from 'miniapp-bc-user'
Page({
  data: {},
  onLoad() {},
  onLoad() { },
  async onReady() {
    try {
      await loadBC();
      this.setData({ showComponent: true })
    } catch (e) {
      console.log(e);
    }
  },
  bcError(err) {
    console.log('err:', err)
  },
  /*----以下是物料类插件有滚动加载需求的专用代码--其他对接请忽略--*/
  // 每日精选插件
  // 监听页面滚动到底部,加载更多
  onReachBottom() {
    this.setData({
      loadMoreTime: (this.data.loadMoreTime || 0) + 1
    })
  },
});
pages/goods/goods.json
@@ -1 +1,5 @@
{}
{
  "usingComponents": {
    "bc-module": "miniapp-bc-user/es/bc-module/bc-module"
  }
}
pages/jquery/jquery.js
New file
@@ -0,0 +1,6 @@
var
Page({
  data: {},
  onLoad() {},
});
pages/mine/mine.acss
@@ -3,7 +3,7 @@
  position: relative;
  color: white;
  padding: 50rpx 30rpx;
  ;
  font-size: 0;
}
.user .portrait {
@@ -30,6 +30,19 @@
  border: #73B9FF solid 1px;
  text-align: center;
  font-weight: 400;
}
.user .login {
  color: white;
  height: 42rpx;
  border-radius: 21rpx;
  font-size: 24rpx;
  line-height: 42rpx;
  background: #0080FF;
  border-color: white;
  border: #73B9FF solid 1px;
  padding: 0 28rpx;
  margin-left: 30rpx;
}
.modal-logout {}
@@ -64,6 +77,6 @@
  font-size: 30rpx;
}
badge{
badge {
  z-index: 10;
}
pages/mine/mine.axml
@@ -1,5 +1,5 @@
<view enable-back-to-top="true">
  <flex class="user" align="center">
  <flex class="user" align="center" a:if="{{logined}}">
    <image mode="scaleToFill" class="portrait" src="/image/portrait-test.jpg"/>
    <view style="width:480rpx;margin-right:10rpx;margin-left:31rpx;">
      <text class="nick-name" number-of-lines="1">
@@ -9,9 +9,15 @@
      ID:412165
      </text>
    </view>
    <view class="logout">
    <button type="ghost" class="logout">
    退出
    </view>
    </button>
  </flex>
  <flex a:else class="user" align="center" a:if="{{logined}}">
    <image mode="scaleToFill" class="portrait" src="/image/portrait-test.jpg"/>
    <button type="ghost" class="login" open-type="getAuthorize" onGetAuthorize="onGetAuthorize" onError="onAuthError" scope='userInfo'>
    登录
    </button>
  </flex>
  <list>
    <view style="height:22rpx;"></view>
pages/mine/mine.js
@@ -3,6 +3,25 @@
  data: {
    showLogout: true
  },
  //导航栏点击过来的
  onTabItemTap(item) {
    my.getAuthCode({
      scopes: ['auth_user'],
      success: (res) => {
        my.getOpenUserInfo({
          fail: (res) => {
          },
          success: (res) => {
            console.log(res);
            let userInfo = JSON.parse(res.response).response // 以下方的报文格式解析两层 response
            console.log(userInfo);
          }
        });
      },
    });
  },
  onLoad() {
    my.setNavigationBar({
      backgroundColor: "#0080FF",
@@ -10,6 +29,37 @@
    });
  },
  onGetAuthorize(res) {
    var that=this;
    my.getOpenUserInfo({
      fail: (res) => {
      },
      success: (res) => {
        let userInfo = JSON.parse(res.response).response // 以下方的报文格式解析两层 response
        console.log(JSON.stringify(userInfo));
        if (userInfo.code == '10000') {//成功
          my.showToast({
            content: JSON.stringify(userInfo)
          });
          that.setData({
            logined: true
          });
        } else {
          my.showToast({
            content: '授权失败'
          });
        }
      }
    });
  },
  onAuthError(event) {
    my.showToast({
      content: '授权失败'
    });
  },
  onItemClick(event) {
    var key = help.getEventParam(event, "key");
pages/sponsor-signup/sponsor-signup.axml
@@ -1,18 +1,20 @@
<view style="padding-top:20rpx;">
  <list >
    <picker-item data-field="bank" placeholder="" value="{{bank}}" onPickerTap="onPickerTap">
  <form onSubmit="onSubmitClick">
    <list >
      <picker-item placeholder="" value="{{data1}}" onPickerTap="onPickerTap1">
      我是
    </picker-item>
    <picker-item data-field="bank" placeholder="" value="{{bank}}" onPickerTap="onPickerTap">
      </picker-item>
      <picker-item placeholder="" value="{{data2}}" onPickerTap="onPickerTap2">
      我能提供
    </picker-item>
    <list-item arrow="{{false}}" style="display:flex;line-height:0" upperSubtitle="">
      <text> 联系方式
      </text>
      <input placeholder="请输入" style="text-align:left;" slot="afterTitle"/>
    </list-item>
  </list>
  <button type="primary" onTap="">
      </picker-item>
      <list-item arrow="{{false}}" style="display:flex;line-height:0" upperSubtitle="">
        <text> 联系方式
        </text>
        <input name="phone" placeholder="请输入" value="{{phone}}" style="text-align:left;" slot="afterTitle"/>
      </list-item>
    </list>
    <button type="primary" formType="submit">
  提交信息
  </button>
    </button>
  </form>
</view>
pages/sponsor-signup/sponsor-signup.js
@@ -1,18 +1,44 @@
var help = require("../../util/help.js")
const banks=[1,2,3,4];
const source_1 = ["淘客", "测试1", "测试1", "测试1"];
const source_2 = ["测试1", "测试2", "测试3", "测试4"];
Page({
  data: {},
  data: {
    data1: '',
    data2: ''
  },
  onLoad() {
    help.setPageNavBar("赞助报名");
  },
  onPickerTap() {
  onPickerTap1() {
    my.showActionSheet({
      items: banks,
      items: source_1,
      success: (res) => {
        this.setData({
          bank: banks[res.index],
          data1: source_1[res.index],
        });
      },
    });
  },
  onPickerTap2() {
    my.showActionSheet({
      items: source_2,
      success: (res) => {
        console.log(res);
        this.setData({
          data2: source_2[res.index],
        });
      },
    });
  },
  //提交
  onSubmitClick(e) {
    console.log(e.detail.value);
    var phone = e.detail.value.phone;
    if (help.isNullOrEmpty(this.data.data1) || help.isNullOrEmpty(this.data.data2) || help.isNullOrEmpty(phone)) {
      my.showToast({
        content: '信息未填写完整'
      });
      return;
    }
  }
});
pages/sponsor-signup/sponsor-signup.json
@@ -2,6 +2,6 @@
  "usingComponents": {
    "list": "mini-ali-ui/es/list/index",
    "list-item": "mini-ali-ui/es/list/list-item/index",
     "picker-item": "mini-ali-ui/es/picker-item/index"
    "picker-item": "mini-ali-ui/es/picker-item/index"
  }
}
util/help.js
@@ -2,13 +2,62 @@
  getEventParam(event, name) {
    return event.target.dataset[name];
  },
  setPageNavBar(title){
     my.setNavigationBar({
  setPageNavBar(title) {
    my.setNavigationBar({
      title: title,
      backgroundColor: getApp().themeColor,
      borderBottomColor: getApp().themeColor
    });
  },
  isNullOrEmpty(str) {
    if (str == undefined || str == null || str.length == 0)
      return true;
    else
      return false;
  },
  //获取奖项的html代码
  getAwardHtml(params) {
    params = {
      type: 1,
      content: "奖品二:大额现金红包100,免费抽奖拼手气免费抽奖拼手免费抽奖拼手气免费抽奖拼手免费抽奖拼手气免费抽奖拼手",
      moreType: 'icon',//text,icon
      link: ''
    };
    var html = "<div>";
    html += params.content;
    if (params.link != null && params.link.length > 0) {
      if (params.moreType == 'icon') {
        html += "<img src='/image/icon/icon_right_array_fill.png' style='width:30rpx;height:30rpx;margin-bottom:-5rpx;margin-left:10rpx;'>";
      } else {
        html += "<a href='http://www.baidu.com' style='color:#0080FF; font-size:24rpx;margin-left:10rpx;'>查看详情</a>";
      }
    }
    html += "</div>";
    console.log(html);
    return html;
  },
  //获取助力进度html
  getAssistProcessHtml(number) {
    if (number == null || number == 0) {
      return "<div>暂未邀请好友助力</div>";
    }
    return "<div>已有<span style='color:#FF0000;'>" + number + "</span>位好友完成了助力</div>";
  },
  getDowanAnouncementHtml(openTime) {
    if (help.isNullOrEmpty(openTime)) {
      return "<div>暂未开奖</div>";
    }
    return "<div>已于<span style='color:#FF0000;'>" + openTime + "</span>完成了开奖</div>";
  }
};
module.exports = help;
util/http.js
New file
@@ -0,0 +1,107 @@
var md5 = require("./md5.js");
const SECRET = "123123123";
var http = {
  //网络请求
  postApi(url, params, success, fail, complete, showLoading) {
    if (params == null) {
      params = {};
    }
    //判断token是否存在,如果不存在就去获取
    http.getToken(function (token) {
      params.sign = http.getSign(params);
      if (showLoading) {
        my.showLoading();
      }
      my.request({
        url: url,
        method: 'POST',
        data: params,
        headers: {
          'content-type': 'application/json',  //默认值
          'token': token
        },
        dataType: 'json',
        success: function (res) {
          success(res);
          if (res.code == 10001) {//token过期,刷新token
            //删除token
            //重新请求
            http.postApi(url, params, success, fail, complete, showLoading);
          }
        },
        fail: function (res) {
          fail(res);
        },
        complete: function (res) {
          my.hideLoading();
          complete(res);
        }
      });
    });
  },
  getToken(success) {
    //本地获取token
    var token;
    let res = my.getStorageSync({ key: 'token' });
    if (res != null) {
      token = res.data;
    }
    if (token != null && token.length > 0) {
      success(token);
    }
    my.getAuthCode({
      scopes: ['auth_base'],
      success: (res) => {
        //授权码
        const authCode = res.authCode;
        //todo请求token
        success("token");
        token = "token";
        //将token保存到本地
        my.setStorageSync({
          key: 'token',
          data: token
        });
      },
    });
  },
  getSign(params) {
    if (params == null)
      params = {};
    params.timestamp = new Date().getMilliseconds();
    params.appKey = getApp().appKey;
    var array = new Array();
    for (k, v in params) {
      array.push(k + "=" + v);
    }
    //排序
    array = array.sort();
    var str = "";
    for (var i = 0; i < array.length; i++) {
      str += array[i] + "&";
    }
    if (str.endsWith("&")) {
      str = str.substr(0, str.length - 1);
    }
    str += SECRET;
    return md5.md5(str);
  }
};
module.exports = http;
util/md5.js
New file
@@ -0,0 +1,192 @@
function md5(string) {
  var x = Array();
  var k, AA, BB, CC, DD, a, b, c, d;
  var S11 = 7, S12 = 12, S13 = 17, S14 = 22;
  var S21 = 5, S22 = 9, S23 = 14, S24 = 20;
  var S31 = 4, S32 = 11, S33 = 16, S34 = 23;
  var S41 = 6, S42 = 10, S43 = 15, S44 = 21;
  string = Utf8Encode(string);
  x = ConvertToWordArray(string);
  a = 0x67452301;
  b = 0xEFCDAB89;
  c = 0x98BADCFE;
  d = 0x10325476;
  for (k = 0; k < x.length; k += 16) {
    AA = a;
    BB = b;
    CC = c;
    DD = d;
    a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478);
    d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);
    c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB);
    b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);
    a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);
    d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);
    c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613);
    b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501);
    a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8);
    d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);
    c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);
    b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);
    a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122);
    d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193);
    c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E);
    b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821);
    a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562);
    d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340);
    c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);
    b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);
    a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D);
    d = GG(d, a, b, c, x[k + 10], S22, 0x2441453);
    c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);
    b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);
    a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);
    d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);
    c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);
    b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);
    a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);
    d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);
    c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);
    b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);
    a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);
    d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681);
    c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);
    b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);
    a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);
    d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);
    c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);
    b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);
    a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);
    d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);
    c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);
    b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05);
    a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);
    d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);
    c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);
    b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);
    a = II(a, b, c, d, x[k + 0], S41, 0xF4292244);
    d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97);
    c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);
    b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039);
    a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3);
    d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);
    c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);
    b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1);
    a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);
    d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);
    c = II(c, d, a, b, x[k + 6], S43, 0xA3014314);
    b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);
    a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82);
    d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);
    c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);
    b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391);
    a = AddUnsigned(a, AA);
    b = AddUnsigned(b, BB);
    c = AddUnsigned(c, CC);
    d = AddUnsigned(d, DD);
  }
  var temp = WordToHex(a) + WordToHex(b) + WordToHex(c) + WordToHex(d);
  return temp.toUpperCase();
}
function RotateLeft(lValue, iShiftBits) {
  return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));
}
function AddUnsigned(lX, lY) {
  var lX4, lY4, lX8, lY8, lResult;
  lX8 = (lX & 0x80000000);
  lY8 = (lY & 0x80000000);
  lX4 = (lX & 0x40000000);
  lY4 = (lY & 0x40000000);
  lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
  if (lX4 & lY4) {
    return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
  }
  if (lX4 | lY4) {
    if (lResult & 0x40000000) {
      return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
    } else {
      return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
    }
  } else {
    return (lResult ^ lX8 ^ lY8);
  }
}
function F(x, y, z) {
  return (x & y) | ((~x) & z);
}
function G(x, y, z) {
  return (x & z) | (y & (~z));
}
function H(x, y, z) {
  return (x ^ y ^ z);
}
function I(x, y, z) {
  return (y ^ (x | (~z)));
}
function FF(a, b, c, d, x, s, ac) {
  a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
  return AddUnsigned(RotateLeft(a, s), b);
}
function GG(a, b, c, d, x, s, ac) {
  a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
  return AddUnsigned(RotateLeft(a, s), b);
}
function HH(a, b, c, d, x, s, ac) {
  a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
  return AddUnsigned(RotateLeft(a, s), b);
}
function II(a, b, c, d, x, s, ac) {
  a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
  return AddUnsigned(RotateLeft(a, s), b);
}
function ConvertToWordArray(string) {
  var lWordCount;
  var lMessageLength = string.length;
  var lNumberOfWords_temp1 = lMessageLength + 8;
  var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64;
  var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;
  var lWordArray = Array(lNumberOfWords - 1);
  var lBytePosition = 0;
  var lByteCount = 0;
  while (lByteCount < lMessageLength) {
    lWordCount = (lByteCount - (lByteCount % 4)) / 4;
    lBytePosition = (lByteCount % 4) * 8;
    lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition));
    lByteCount++;
  }
  lWordCount = (lByteCount - (lByteCount % 4)) / 4;
  lBytePosition = (lByteCount % 4) * 8;
  lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
  lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
  lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
  return lWordArray;
}
function WordToHex(lValue) {
  var WordToHexValue = "", WordToHexValue_temp = "", lByte, lCount;
  for (lCount = 0; lCount <= 3; lCount++) {
    lByte = (lValue >>> (lCount * 8)) & 255;
    WordToHexValue_temp = "0" + lByte.toString(16);
    WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2);
  }
  return WordToHexValue;
}
function Utf8Encode(string) {
  var utftext = "";
  for (var n = 0; n < string.length; n++) {
    var c = string.charCodeAt(n);
    if (c < 128) {
      utftext += String.fromCharCode(c);
    } else if ((c > 127) && (c < 2048)) {
      utftext += String.fromCharCode((c >> 6) | 192);
      utftext += String.fromCharCode((c & 63) | 128);
    } else {
      utftext += String.fromCharCode((c >> 12) | 224);
      utftext += String.fromCharCode(((c >> 6) & 63) | 128);
      utftext += String.fromCharCode((c & 63) | 128);
    }
  }
  return utftext;
}
module.exports = {
  md5: md5
}