@mastra/server 1.58.0-alpha.9 → 1.58.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +248 -0
- package/dist/{a2a-_D2EA4oa.js → a2a-CUkzkdTZ.js} +3 -3
- package/dist/{a2a-_D2EA4oa.js.map → a2a-CUkzkdTZ.js.map} +1 -1
- package/dist/{a2a-B6YkZ2i9.cjs → a2a-DzZHH3OH.cjs} +3 -3
- package/dist/{a2a-B6YkZ2i9.cjs.map → a2a-DzZHH3OH.cjs.map} +1 -1
- package/dist/{agent-versions-DBwhQgbJ.js → agent-versions-CWEnD62A.js} +3 -3
- package/dist/{agent-versions-DBwhQgbJ.js.map → agent-versions-CWEnD62A.js.map} +1 -1
- package/dist/{agent-versions-znzuht90.cjs → agent-versions-xeysPGel.cjs} +3 -3
- package/dist/{agent-versions-znzuht90.cjs.map → agent-versions-xeysPGel.cjs.map} +1 -1
- package/dist/{agents-DXkajFi1.cjs → agents-0Tw3kkD_.cjs} +2 -2
- package/dist/{agents-DXkajFi1.cjs.map → agents-0Tw3kkD_.cjs.map} +1 -1
- package/dist/{agents-D0eC6_5b.js → agents-uT8ZDE4k.js} +2 -2
- package/dist/{agents-D0eC6_5b.js.map → agents-uT8ZDE4k.js.map} +1 -1
- package/dist/{api-schema-manifest-D7g1cmet.cjs → api-schema-manifest-BPk3u4B-.cjs} +3 -3
- package/dist/{api-schema-manifest-D7g1cmet.cjs.map → api-schema-manifest-BPk3u4B-.cjs.map} +1 -1
- package/dist/{api-schema-manifest-CfgTQzaK.js → api-schema-manifest-DSelT9XK.js} +3 -3
- package/dist/{api-schema-manifest-CfgTQzaK.js.map → api-schema-manifest-DSelT9XK.js.map} +1 -1
- package/dist/{background-tasks-DnmhLalp.js → background-tasks-BtWM0sZs.js} +2 -2
- package/dist/{background-tasks-DnmhLalp.js.map → background-tasks-BtWM0sZs.js.map} +1 -1
- package/dist/{background-tasks-CYgzzUnb.cjs → background-tasks-C5G2jJax.cjs} +2 -2
- package/dist/{background-tasks-CYgzzUnb.cjs.map → background-tasks-C5G2jJax.cjs.map} +1 -1
- package/dist/{builder-registry-DE5w7bNk.js → builder-registry-B8KyPAOP.js} +3 -3
- package/dist/{builder-registry-DE5w7bNk.js.map → builder-registry-B8KyPAOP.js.map} +1 -1
- package/dist/{builder-registry-BoaXBdm_.cjs → builder-registry-Dcou-kzd.cjs} +3 -3
- package/dist/{builder-registry-BoaXBdm_.cjs.map → builder-registry-Dcou-kzd.cjs.map} +1 -1
- package/dist/{channels-BqkOxxEk.js → channels-B9yt3a2P.js} +2 -2
- package/dist/{channels-BqkOxxEk.js.map → channels-B9yt3a2P.js.map} +1 -1
- package/dist/{channels-BonQBJT0.cjs → channels-BRoq3VKR.cjs} +2 -2
- package/dist/{channels-BonQBJT0.cjs.map → channels-BRoq3VKR.cjs.map} +1 -1
- package/dist/{default-options-BcPyp2Gx.cjs → default-options-C9HZGjYi.cjs} +6 -3
- package/dist/{default-options-BcPyp2Gx.cjs.map → default-options-C9HZGjYi.cjs.map} +1 -1
- package/dist/{default-options-DGCDKR3I.js → default-options-C9JVjlto.js} +6 -3
- package/dist/{default-options-DGCDKR3I.js.map → default-options-C9JVjlto.js.map} +1 -1
- package/dist/{dist-D-2BtcNU.js → dist-7r8jzEWH.js} +68 -1303
- package/dist/dist-7r8jzEWH.js.map +1 -0
- package/dist/{dist-DhqgxyoU.cjs → dist-DEgLyP8h.cjs} +77 -1315
- package/dist/dist-DEgLyP8h.cjs.map +1 -0
- package/dist/docs/SKILL.md +2 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/docs/references/docs-server-custom-adapters.md +1 -1
- package/dist/docs/references/docs-server-custom-api-routes.md +375 -0
- package/dist/docs/references/reference-server-create-route.md +27 -1
- package/dist/{dynamic-workflows-B4LI2B52.js → dynamic-workflows-B0TE8mjA.js} +2 -2
- package/dist/{dynamic-workflows-B4LI2B52.js.map → dynamic-workflows-B0TE8mjA.js.map} +1 -1
- package/dist/{dynamic-workflows-BXeywVEf.cjs → dynamic-workflows-C-6vmau5.cjs} +2 -2
- package/dist/{dynamic-workflows-BXeywVEf.cjs.map → dynamic-workflows-C-6vmau5.cjs.map} +1 -1
- package/dist/{editor-builder-Cy-eOCYp.js → editor-builder-Byg6wbi6.js} +3 -3
- package/dist/{editor-builder-Cy-eOCYp.js.map → editor-builder-Byg6wbi6.js.map} +1 -1
- package/dist/{editor-builder-BexykVlx.cjs → editor-builder-C3ZvffGu.cjs} +2 -2
- package/dist/{editor-builder-BexykVlx.cjs.map → editor-builder-C3ZvffGu.cjs.map} +1 -1
- package/dist/{editor-builder-CYY0CsMd.js → editor-builder-DJUxdzC8.js} +2 -2
- package/dist/{editor-builder-CYY0CsMd.js.map → editor-builder-DJUxdzC8.js.map} +1 -1
- package/dist/{editor-builder-LvpimMOA.cjs → editor-builder-DT7ypWfa.cjs} +3 -3
- package/dist/{editor-builder-LvpimMOA.cjs.map → editor-builder-DT7ypWfa.cjs.map} +1 -1
- package/dist/{observability-new-endpoints-Dk3oatL8.cjs → observability-new-endpoints-BC-dasRY.cjs} +2 -2
- package/dist/{observability-new-endpoints-Dk3oatL8.cjs.map → observability-new-endpoints-BC-dasRY.cjs.map} +1 -1
- package/dist/{observability-new-endpoints-YK2DjZto.js → observability-new-endpoints-Drx0C8uc.js} +2 -2
- package/dist/{observability-new-endpoints-YK2DjZto.js.map → observability-new-endpoints-Drx0C8uc.js.map} +1 -1
- package/dist/{probe-image-size-DYJVSL0b.cjs → probe-image-size-C2F59z8Z.cjs} +56 -1707
- package/dist/probe-image-size-C2F59z8Z.cjs.map +1 -0
- package/dist/{probe-image-size-BQgIJeY_.js → probe-image-size-mXCWYNrz.js} +22 -1673
- package/dist/probe-image-size-mXCWYNrz.js.map +1 -0
- package/dist/{route-builder-CgLVYL1c.cjs → route-builder-BAAedfru.cjs} +11 -2
- package/dist/route-builder-BAAedfru.cjs.map +1 -0
- package/dist/{route-builder-CIk5k35M.js → route-builder-YQ_gLIvW.js} +11 -2
- package/dist/route-builder-YQ_gLIvW.js.map +1 -0
- package/dist/{routes-Bj3bjfJ3.cjs → routes-0BEh3stO.cjs} +10 -10
- package/dist/{routes-Bj3bjfJ3.cjs.map → routes-0BEh3stO.cjs.map} +1 -1
- package/dist/{routes-Q1t7kbml.js → routes-BsMPy5bu.js} +10 -10
- package/dist/{routes-Q1t7kbml.js.map → routes-BsMPy5bu.js.map} +1 -1
- package/dist/{schedules-CK3-IE0h.cjs → schedules-DOK225ZZ.cjs} +2 -2
- package/dist/{schedules-CK3-IE0h.cjs.map → schedules-DOK225ZZ.cjs.map} +1 -1
- package/dist/{schedules-qxFoU-Tb.js → schedules-RjPcNOmY.js} +2 -2
- package/dist/{schedules-qxFoU-Tb.js.map → schedules-RjPcNOmY.js.map} +1 -1
- package/dist/{schema-Bv9OdW1f-BY6u3u8K.cjs → schema-Bv9OdW1f-CHHI-NTr.cjs} +2 -76
- package/dist/schema-Bv9OdW1f-CHHI-NTr.cjs.map +1 -0
- package/dist/{schema-Bv9OdW1f-CIOfv-3w.js → schema-Bv9OdW1f-DLSJSqQv.js} +2 -76
- package/dist/schema-Bv9OdW1f-DLSJSqQv.js.map +1 -0
- package/dist/schema-CGeYTFwm.js +2 -0
- package/dist/schema-DkBbires.cjs +1 -0
- package/dist/{scorer-versions-PL0wCOT-.cjs → scorer-versions-CYXtxMTU.cjs} +2 -2
- package/dist/{scorer-versions-PL0wCOT-.cjs.map → scorer-versions-CYXtxMTU.cjs.map} +1 -1
- package/dist/{scorer-versions-DNdVTLOq.js → scorer-versions-CdVjOtQO.js} +2 -2
- package/dist/{scorer-versions-DNdVTLOq.js.map → scorer-versions-CdVjOtQO.js.map} +1 -1
- package/dist/server/handlers/a2a.cjs +1 -1
- package/dist/server/handlers/a2a.d.ts +545 -505
- package/dist/server/handlers/a2a.d.ts.map +1 -1
- package/dist/server/handlers/a2a.js +1 -1
- package/dist/server/handlers/agent-builder.cjs +4 -4
- package/dist/server/handlers/agent-builder.d.ts +1069 -764
- package/dist/server/handlers/agent-builder.d.ts.map +1 -1
- package/dist/server/handlers/agent-builder.js +4 -4
- package/dist/server/handlers/agent-controller.cjs +61 -11
- package/dist/server/handlers/agent-controller.cjs.map +1 -1
- package/dist/server/handlers/agent-controller.d.ts +1547 -893
- package/dist/server/handlers/agent-controller.d.ts.map +1 -1
- package/dist/server/handlers/agent-controller.js +61 -11
- package/dist/server/handlers/agent-controller.js.map +1 -1
- package/dist/server/handlers/agent-versions.cjs +3 -3
- package/dist/server/handlers/agent-versions.d.ts +8504 -8312
- package/dist/server/handlers/agent-versions.d.ts.map +1 -1
- package/dist/server/handlers/agent-versions.js +3 -3
- package/dist/server/handlers/agents.cjs +6 -6
- package/dist/server/handlers/agents.d.ts +9984 -9832
- package/dist/server/handlers/agents.d.ts.map +1 -1
- package/dist/server/handlers/agents.js +6 -6
- package/dist/server/handlers/auth.cjs +1 -1
- package/dist/server/handlers/auth.d.ts +693 -297
- package/dist/server/handlers/auth.d.ts.map +1 -1
- package/dist/server/handlers/auth.js +1 -1
- package/dist/server/handlers/background-tasks.cjs +1 -1
- package/dist/server/handlers/background-tasks.d.ts +190 -130
- package/dist/server/handlers/background-tasks.d.ts.map +1 -1
- package/dist/server/handlers/background-tasks.js +1 -1
- package/dist/server/handlers/builder-registry.cjs +1 -1
- package/dist/server/handlers/builder-registry.d.ts +218 -121
- package/dist/server/handlers/builder-registry.d.ts.map +1 -1
- package/dist/server/handlers/builder-registry.js +1 -1
- package/dist/server/handlers/channels.cjs +1 -1
- package/dist/server/handlers/channels.d.ts +157 -77
- package/dist/server/handlers/channels.d.ts.map +1 -1
- package/dist/server/handlers/channels.js +1 -1
- package/dist/server/handlers/conversations.cjs +1 -1
- package/dist/server/handlers/conversations.d.ts +221 -141
- package/dist/server/handlers/conversations.d.ts.map +1 -1
- package/dist/server/handlers/conversations.js +1 -1
- package/dist/server/handlers/datasets.cjs +1 -1
- package/dist/server/handlers/datasets.d.ts +2669 -2234
- package/dist/server/handlers/datasets.d.ts.map +1 -1
- package/dist/server/handlers/datasets.js +1 -1
- package/dist/server/handlers/dynamic-workflows.cjs +1 -1
- package/dist/server/handlers/dynamic-workflows.d.ts +506 -426
- package/dist/server/handlers/dynamic-workflows.d.ts.map +1 -1
- package/dist/server/handlers/dynamic-workflows.js +1 -1
- package/dist/server/handlers/editor-builder.cjs +1 -1
- package/dist/server/handlers/editor-builder.d.ts +305 -245
- package/dist/server/handlers/editor-builder.d.ts.map +1 -1
- package/dist/server/handlers/editor-builder.js +1 -1
- package/dist/server/handlers/favorites-enrichment.cjs +1 -1
- package/dist/server/handlers/favorites-enrichment.js +1 -1
- package/dist/server/handlers/logs.cjs +1 -1
- package/dist/server/handlers/logs.d.ts +245 -185
- package/dist/server/handlers/logs.d.ts.map +1 -1
- package/dist/server/handlers/logs.js +1 -1
- package/dist/server/handlers/mcp-client-versions.cjs +2 -2
- package/dist/server/handlers/mcp-client-versions.d.ts +447 -307
- package/dist/server/handlers/mcp-client-versions.d.ts.map +1 -1
- package/dist/server/handlers/mcp-client-versions.js +2 -2
- package/dist/server/handlers/mcp.cjs +1 -1
- package/dist/server/handlers/mcp.d.ts +357 -156
- package/dist/server/handlers/mcp.d.ts.map +1 -1
- package/dist/server/handlers/mcp.js +1 -1
- package/dist/server/handlers/memory.cjs +1 -1
- package/dist/server/handlers/memory.d.ts +1723 -1223
- package/dist/server/handlers/memory.d.ts.map +1 -1
- package/dist/server/handlers/memory.js +1 -1
- package/dist/server/handlers/observability-new-endpoints.cjs +1 -1
- package/dist/server/handlers/observability-new-endpoints.d.ts +3239 -2158
- package/dist/server/handlers/observability-new-endpoints.d.ts.map +1 -1
- package/dist/server/handlers/observability-new-endpoints.js +1 -1
- package/dist/server/handlers/observability-shared.cjs +1 -1
- package/dist/server/handlers/observability-shared.js +1 -1
- package/dist/server/handlers/observability.cjs +2 -2
- package/dist/server/handlers/observability.d.ts +267 -149
- package/dist/server/handlers/observability.d.ts.map +1 -1
- package/dist/server/handlers/observability.js +2 -2
- package/dist/server/handlers/processor-providers.cjs +1 -1
- package/dist/server/handlers/processor-providers.d.ts +74 -34
- package/dist/server/handlers/processor-providers.d.ts.map +1 -1
- package/dist/server/handlers/processor-providers.js +1 -1
- package/dist/server/handlers/processors.cjs +1 -1
- package/dist/server/handlers/processors.d.ts +222 -173
- package/dist/server/handlers/processors.d.ts.map +1 -1
- package/dist/server/handlers/processors.js +1 -1
- package/dist/server/handlers/prompt-block-versions.cjs +2 -2
- package/dist/server/handlers/prompt-block-versions.d.ts +646 -506
- package/dist/server/handlers/prompt-block-versions.d.ts.map +1 -1
- package/dist/server/handlers/prompt-block-versions.js +2 -2
- package/dist/server/handlers/responses.cjs +1 -1
- package/dist/server/handlers/responses.d.ts +352 -362
- package/dist/server/handlers/responses.d.ts.map +1 -1
- package/dist/server/handlers/responses.js +1 -1
- package/dist/server/handlers/schedules.cjs +1 -1
- package/dist/server/handlers/schedules.d.ts +1190 -1028
- package/dist/server/handlers/schedules.d.ts.map +1 -1
- package/dist/server/handlers/schedules.js +1 -1
- package/dist/server/handlers/scorer-versions.cjs +3 -3
- package/dist/server/handlers/scorer-versions.d.ts +551 -411
- package/dist/server/handlers/scorer-versions.d.ts.map +1 -1
- package/dist/server/handlers/scorer-versions.js +3 -3
- package/dist/server/handlers/scores.cjs +1 -1
- package/dist/server/handlers/scores.d.ts +287 -167
- package/dist/server/handlers/scores.d.ts.map +1 -1
- package/dist/server/handlers/scores.js +1 -1
- package/dist/server/handlers/stored-agent-favorites.cjs +4 -4
- package/dist/server/handlers/stored-agent-favorites.d.ts +62 -22
- package/dist/server/handlers/stored-agent-favorites.d.ts.map +1 -1
- package/dist/server/handlers/stored-agent-favorites.js +4 -4
- package/dist/server/handlers/stored-agents.cjs +4 -4
- package/dist/server/handlers/stored-agents.d.ts +12056 -16152
- package/dist/server/handlers/stored-agents.d.ts.map +1 -1
- package/dist/server/handlers/stored-agents.js +4 -4
- package/dist/server/handlers/stored-mcp-clients.cjs +2 -2
- package/dist/server/handlers/stored-mcp-clients.d.ts +417 -324
- package/dist/server/handlers/stored-mcp-clients.d.ts.map +1 -1
- package/dist/server/handlers/stored-mcp-clients.js +2 -2
- package/dist/server/handlers/stored-prompt-blocks.cjs +2 -2
- package/dist/server/handlers/stored-prompt-blocks.d.ts +603 -555
- package/dist/server/handlers/stored-prompt-blocks.d.ts.map +1 -1
- package/dist/server/handlers/stored-prompt-blocks.js +2 -2
- package/dist/server/handlers/stored-scorers.cjs +3 -3
- package/dist/server/handlers/stored-scorers.d.ts +556 -472
- package/dist/server/handlers/stored-scorers.d.ts.map +1 -1
- package/dist/server/handlers/stored-scorers.js +3 -3
- package/dist/server/handlers/stored-skill-favorites.cjs +3 -3
- package/dist/server/handlers/stored-skill-favorites.d.ts +62 -22
- package/dist/server/handlers/stored-skill-favorites.d.ts.map +1 -1
- package/dist/server/handlers/stored-skill-favorites.js +3 -3
- package/dist/server/handlers/stored-skills.cjs +3 -3
- package/dist/server/handlers/stored-skills.d.ts +632 -515
- package/dist/server/handlers/stored-skills.d.ts.map +1 -1
- package/dist/server/handlers/stored-skills.js +3 -3
- package/dist/server/handlers/stored-workspaces.cjs +2 -2
- package/dist/server/handlers/stored-workspaces.d.ts +646 -546
- package/dist/server/handlers/stored-workspaces.d.ts.map +1 -1
- package/dist/server/handlers/stored-workspaces.js +2 -2
- package/dist/server/handlers/system.cjs +2 -2
- package/dist/server/handlers/system.d.ts +146 -106
- package/dist/server/handlers/system.d.ts.map +1 -1
- package/dist/server/handlers/system.js +2 -2
- package/dist/server/handlers/tool-providers.cjs +1 -1
- package/dist/server/handlers/tool-providers.d.ts +580 -331
- package/dist/server/handlers/tool-providers.d.ts.map +1 -1
- package/dist/server/handlers/tool-providers.js +1 -1
- package/dist/server/handlers/tools.cjs +5 -5
- package/dist/server/handlers/tools.d.ts +177 -77
- package/dist/server/handlers/tools.d.ts.map +1 -1
- package/dist/server/handlers/tools.js +5 -5
- package/dist/server/handlers/validate-agent-instructions.cjs +1 -1
- package/dist/server/handlers/validate-agent-instructions.js +1 -1
- package/dist/server/handlers/vector.cjs +1 -1
- package/dist/server/handlers/vector.d.ts +282 -126
- package/dist/server/handlers/vector.d.ts.map +1 -1
- package/dist/server/handlers/vector.js +1 -1
- package/dist/server/handlers/workflows.cjs +3 -3
- package/dist/server/handlers/workflows.d.ts +1703 -1181
- package/dist/server/handlers/workflows.d.ts.map +1 -1
- package/dist/server/handlers/workflows.js +3 -3
- package/dist/server/handlers/workspace.cjs +1 -1
- package/dist/server/handlers/workspace.d.ts +1936 -1150
- package/dist/server/handlers/workspace.d.ts.map +1 -1
- package/dist/server/handlers/workspace.js +1 -1
- package/dist/server/handlers.cjs +2 -2
- package/dist/server/handlers.js +2 -2
- package/dist/server/schemas/agent-versions.d.ts +70 -10
- package/dist/server/schemas/agent-versions.d.ts.map +1 -1
- package/dist/server/schemas/agents.d.ts +21 -3
- package/dist/server/schemas/agents.d.ts.map +1 -1
- package/dist/server/schemas/default-options.d.ts +7 -1
- package/dist/server/schemas/default-options.d.ts.map +1 -1
- package/dist/server/schemas/index.cjs +7 -7
- package/dist/server/schemas/index.js +7 -7
- package/dist/server/schemas/stored-agents.d.ts +140 -20
- package/dist/server/schemas/stored-agents.d.ts.map +1 -1
- package/dist/server/server-adapter/index.cjs +28 -7
- package/dist/server/server-adapter/index.cjs.map +1 -1
- package/dist/server/server-adapter/index.d.ts +14 -1
- package/dist/server/server-adapter/index.d.ts.map +1 -1
- package/dist/server/server-adapter/index.js +28 -7
- package/dist/server/server-adapter/index.js.map +1 -1
- package/dist/server/server-adapter/openapi-utils.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/a2a.d.ts +544 -504
- package/dist/server/server-adapter/routes/a2a.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/agent-builder.d.ts +1054 -749
- package/dist/server/server-adapter/routes/agent-builder.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/channels.d.ts +153 -73
- package/dist/server/server-adapter/routes/channels.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/conversations.d.ts +218 -138
- package/dist/server/server-adapter/routes/conversations.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/datasets.d.ts +2312 -1877
- package/dist/server/server-adapter/routes/datasets.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/editor-builder.d.ts +506 -349
- package/dist/server/server-adapter/routes/editor-builder.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/legacy.d.ts +615 -629
- package/dist/server/server-adapter/routes/legacy.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/logs.d.ts +243 -183
- package/dist/server/server-adapter/routes/logs.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/mcp.d.ts +347 -147
- package/dist/server/server-adapter/routes/mcp.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/memory.d.ts +1699 -1199
- package/dist/server/server-adapter/routes/memory.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/observability.d.ts +2761 -2103
- package/dist/server/server-adapter/routes/observability.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/processor-providers.d.ts +70 -30
- package/dist/server/server-adapter/routes/processor-providers.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/processors.d.ts +220 -171
- package/dist/server/server-adapter/routes/processors.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/responses.d.ts +350 -360
- package/dist/server/server-adapter/routes/responses.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/route-builder.d.ts +6 -2
- package/dist/server/server-adapter/routes/route-builder.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/scorers.d.ts +282 -162
- package/dist/server/server-adapter/routes/scorers.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/stored-mcp-clients.d.ts +821 -588
- package/dist/server/server-adapter/routes/stored-mcp-clients.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/stored-prompt-blocks.d.ts +1252 -1064
- package/dist/server/server-adapter/routes/stored-prompt-blocks.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/stored-scorers.d.ts +1046 -822
- package/dist/server/server-adapter/routes/stored-scorers.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/stored-skills.d.ts +683 -526
- package/dist/server/server-adapter/routes/stored-skills.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/stored-workspaces.d.ts +637 -537
- package/dist/server/server-adapter/routes/stored-workspaces.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/system.d.ts +145 -105
- package/dist/server/server-adapter/routes/system.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/tool-providers.d.ts +566 -317
- package/dist/server/server-adapter/routes/tool-providers.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/tools.d.ts +103 -43
- package/dist/server/server-adapter/routes/tools.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/vectors.d.ts +275 -119
- package/dist/server/server-adapter/routes/vectors.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/workflows.d.ts +1586 -1104
- package/dist/server/server-adapter/routes/workflows.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/workspace.d.ts +1026 -613
- package/dist/server/server-adapter/routes/workspace.d.ts.map +1 -1
- package/dist/{stored-agents-CWC-Nj6N.js → stored-agents-BRBZM-Xl.js} +2 -2
- package/dist/{stored-agents-CWC-Nj6N.js.map → stored-agents-BRBZM-Xl.js.map} +1 -1
- package/dist/{stored-agents-d2kvyKAb.cjs → stored-agents-CPxfYRH9.cjs} +2 -2
- package/dist/{stored-agents-d2kvyKAb.cjs.map → stored-agents-CPxfYRH9.cjs.map} +1 -1
- package/dist/{stored-scorers-yaft2JFH.js → stored-scorers-B__LF0Cy.js} +2 -2
- package/dist/{stored-scorers-yaft2JFH.js.map → stored-scorers-B__LF0Cy.js.map} +1 -1
- package/dist/{stored-scorers-Dm0HwOZe.cjs → stored-scorers-Cml7jPJv.cjs} +2 -2
- package/dist/{stored-scorers-Dm0HwOZe.cjs.map → stored-scorers-Cml7jPJv.cjs.map} +1 -1
- package/dist/sync-BHatXKfg.cjs +1679 -0
- package/dist/sync-BHatXKfg.cjs.map +1 -0
- package/dist/sync-djJ8Lmds.js +1656 -0
- package/dist/sync-djJ8Lmds.js.map +1 -0
- package/dist/{utils-wESuBh27.cjs → utils-Bna_JCkb.cjs} +3 -3
- package/dist/{utils-wESuBh27.cjs.map → utils-Bna_JCkb.cjs.map} +1 -1
- package/dist/{utils-BUK03Frl.js → utils-QXKhjIm6.js} +3 -3
- package/dist/{utils-BUK03Frl.js.map → utils-QXKhjIm6.js.map} +1 -1
- package/package.json +9 -9
- package/dist/dist-D-2BtcNU.js.map +0 -1
- package/dist/dist-DhqgxyoU.cjs.map +0 -1
- package/dist/probe-image-size-BQgIJeY_.js.map +0 -1
- package/dist/probe-image-size-DYJVSL0b.cjs.map +0 -1
- package/dist/route-builder-CIk5k35M.js.map +0 -1
- package/dist/route-builder-CgLVYL1c.cjs.map +0 -1
- package/dist/schema-B8-5YCsA.js +0 -2
- package/dist/schema-BieM1qrc.cjs +0 -1
- package/dist/schema-Bv9OdW1f-BY6u3u8K.cjs.map +0 -1
- package/dist/schema-Bv9OdW1f-CIOfv-3w.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"probe-image-size-C2F59z8Z.cjs","names":["Transform","Transform","Buffer","Buffer","stream"],"sources":["../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/probe-image-size/7.2.3/709fce7441af0bd4eca9e0986826eb4285dfd57d75e823eb9ecd5dec0565501f/node_modules/probe-image-size/lib/parse_stream/avif.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/probe-image-size/7.2.3/709fce7441af0bd4eca9e0986826eb4285dfd57d75e823eb9ecd5dec0565501f/node_modules/probe-image-size/lib/parse_stream/bmp.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/probe-image-size/7.2.3/709fce7441af0bd4eca9e0986826eb4285dfd57d75e823eb9ecd5dec0565501f/node_modules/probe-image-size/lib/parse_stream/gif.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/probe-image-size/7.2.3/709fce7441af0bd4eca9e0986826eb4285dfd57d75e823eb9ecd5dec0565501f/node_modules/probe-image-size/lib/parse_stream/ico.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/probe-image-size/7.2.3/709fce7441af0bd4eca9e0986826eb4285dfd57d75e823eb9ecd5dec0565501f/node_modules/probe-image-size/lib/parse_stream/jpeg.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/probe-image-size/7.2.3/709fce7441af0bd4eca9e0986826eb4285dfd57d75e823eb9ecd5dec0565501f/node_modules/probe-image-size/lib/parse_stream/png.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/probe-image-size/7.2.3/709fce7441af0bd4eca9e0986826eb4285dfd57d75e823eb9ecd5dec0565501f/node_modules/probe-image-size/lib/parse_stream/psd.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/probe-image-size/7.2.3/709fce7441af0bd4eca9e0986826eb4285dfd57d75e823eb9ecd5dec0565501f/node_modules/probe-image-size/lib/parse_stream/svg.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/probe-image-size/7.2.3/709fce7441af0bd4eca9e0986826eb4285dfd57d75e823eb9ecd5dec0565501f/node_modules/probe-image-size/lib/parse_stream/tiff.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/probe-image-size/7.2.3/709fce7441af0bd4eca9e0986826eb4285dfd57d75e823eb9ecd5dec0565501f/node_modules/probe-image-size/lib/parse_stream/webp.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/probe-image-size/7.2.3/709fce7441af0bd4eca9e0986826eb4285dfd57d75e823eb9ecd5dec0565501f/node_modules/probe-image-size/lib/parsers_stream.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/probe-image-size/7.2.3/709fce7441af0bd4eca9e0986826eb4285dfd57d75e823eb9ecd5dec0565501f/node_modules/probe-image-size/stream.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/ms/2.1.3/e0f4c72e735898d92cc164c858cbd0c7b6ed2ec2b4d6da5e8a20fedffeed95cd/node_modules/ms/index.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/debug/3.2.7/489723db5ee7916450db3e4874f081b817abd369caa1d1411727a8c4ed1e6dd7/node_modules/debug/src/common.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/debug/3.2.7/489723db5ee7916450db3e4874f081b817abd369caa1d1411727a8c4ed1e6dd7/node_modules/debug/src/browser.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/debug/3.2.7/489723db5ee7916450db3e4874f081b817abd369caa1d1411727a8c4ed1e6dd7/node_modules/debug/src/node.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/debug/3.2.7/489723db5ee7916450db3e4874f081b817abd369caa1d1411727a8c4ed1e6dd7/node_modules/debug/src/index.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/needle/2.9.1/554345a69bd37e9e2dea341b768e276709a2f896fa9d219076bade7d3a46bce3/node_modules/needle/lib/querystring.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/needle/2.9.1/554345a69bd37e9e2dea341b768e276709a2f896fa9d219076bade7d3a46bce3/node_modules/needle/lib/multipart.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/needle/2.9.1/554345a69bd37e9e2dea341b768e276709a2f896fa9d219076bade7d3a46bce3/node_modules/needle/lib/auth.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/needle/2.9.1/554345a69bd37e9e2dea341b768e276709a2f896fa9d219076bade7d3a46bce3/node_modules/needle/lib/cookies.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/sax/1.6.0/c618581d18b286836eea05c14f870f3a2341e7621f81bcb8d8da0c131e832bb6/node_modules/sax/lib/sax.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/needle/2.9.1/554345a69bd37e9e2dea341b768e276709a2f896fa9d219076bade7d3a46bce3/node_modules/needle/lib/parsers.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@socketregistry/safer-buffer/1.0.10/41025762acbb9a06703fd8c193e1cc701bd3f907227d931fc38c3386b3bcf2cc/node_modules/@socketregistry/safer-buffer/shared.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@socketregistry/safer-buffer/1.0.10/41025762acbb9a06703fd8c193e1cc701bd3f907227d931fc38c3386b3bcf2cc/node_modules/@socketregistry/safer-buffer/safer.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/iconv-lite/0.4.24/870ab2f90f7127007bf0abb0c57f32d2f7c507616f4121b102ed4f0566e68438/node_modules/iconv-lite/lib/bom-handling.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/iconv-lite/0.4.24/870ab2f90f7127007bf0abb0c57f32d2f7c507616f4121b102ed4f0566e68438/node_modules/iconv-lite/encodings/internal.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/iconv-lite/0.4.24/870ab2f90f7127007bf0abb0c57f32d2f7c507616f4121b102ed4f0566e68438/node_modules/iconv-lite/encodings/utf16.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/iconv-lite/0.4.24/870ab2f90f7127007bf0abb0c57f32d2f7c507616f4121b102ed4f0566e68438/node_modules/iconv-lite/encodings/utf7.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/iconv-lite/0.4.24/870ab2f90f7127007bf0abb0c57f32d2f7c507616f4121b102ed4f0566e68438/node_modules/iconv-lite/encodings/sbcs-codec.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/iconv-lite/0.4.24/870ab2f90f7127007bf0abb0c57f32d2f7c507616f4121b102ed4f0566e68438/node_modules/iconv-lite/encodings/sbcs-data.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/iconv-lite/0.4.24/870ab2f90f7127007bf0abb0c57f32d2f7c507616f4121b102ed4f0566e68438/node_modules/iconv-lite/encodings/sbcs-data-generated.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/iconv-lite/0.4.24/870ab2f90f7127007bf0abb0c57f32d2f7c507616f4121b102ed4f0566e68438/node_modules/iconv-lite/encodings/dbcs-codec.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/iconv-lite/0.4.24/870ab2f90f7127007bf0abb0c57f32d2f7c507616f4121b102ed4f0566e68438/node_modules/iconv-lite/encodings/tables/shiftjis.json","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/iconv-lite/0.4.24/870ab2f90f7127007bf0abb0c57f32d2f7c507616f4121b102ed4f0566e68438/node_modules/iconv-lite/encodings/tables/eucjp.json","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/iconv-lite/0.4.24/870ab2f90f7127007bf0abb0c57f32d2f7c507616f4121b102ed4f0566e68438/node_modules/iconv-lite/encodings/tables/cp936.json","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/iconv-lite/0.4.24/870ab2f90f7127007bf0abb0c57f32d2f7c507616f4121b102ed4f0566e68438/node_modules/iconv-lite/encodings/tables/gbk-added.json","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/iconv-lite/0.4.24/870ab2f90f7127007bf0abb0c57f32d2f7c507616f4121b102ed4f0566e68438/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/iconv-lite/0.4.24/870ab2f90f7127007bf0abb0c57f32d2f7c507616f4121b102ed4f0566e68438/node_modules/iconv-lite/encodings/tables/cp949.json","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/iconv-lite/0.4.24/870ab2f90f7127007bf0abb0c57f32d2f7c507616f4121b102ed4f0566e68438/node_modules/iconv-lite/encodings/tables/cp950.json","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/iconv-lite/0.4.24/870ab2f90f7127007bf0abb0c57f32d2f7c507616f4121b102ed4f0566e68438/node_modules/iconv-lite/encodings/tables/big5-added.json","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/iconv-lite/0.4.24/870ab2f90f7127007bf0abb0c57f32d2f7c507616f4121b102ed4f0566e68438/node_modules/iconv-lite/encodings/dbcs-data.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/iconv-lite/0.4.24/870ab2f90f7127007bf0abb0c57f32d2f7c507616f4121b102ed4f0566e68438/node_modules/iconv-lite/encodings/index.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/iconv-lite/0.4.24/870ab2f90f7127007bf0abb0c57f32d2f7c507616f4121b102ed4f0566e68438/node_modules/iconv-lite/lib/streams.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/iconv-lite/0.4.24/870ab2f90f7127007bf0abb0c57f32d2f7c507616f4121b102ed4f0566e68438/node_modules/iconv-lite/lib/extend-node.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/iconv-lite/0.4.24/870ab2f90f7127007bf0abb0c57f32d2f7c507616f4121b102ed4f0566e68438/node_modules/iconv-lite/lib/index.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/needle/2.9.1/554345a69bd37e9e2dea341b768e276709a2f896fa9d219076bade7d3a46bce3/node_modules/needle/lib/decoder.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/needle/2.9.1/554345a69bd37e9e2dea341b768e276709a2f896fa9d219076bade7d3a46bce3/node_modules/needle/package.json","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/needle/2.9.1/554345a69bd37e9e2dea341b768e276709a2f896fa9d219076bade7d3a46bce3/node_modules/needle/lib/needle.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/lodash.merge/4.6.2/2b189c4d8ef1e950f2ec53d37d17c4ea7b14b11cb9e95d45a3e9d96e9b69e672/node_modules/lodash.merge/index.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/probe-image-size/7.2.3/709fce7441af0bd4eca9e0986826eb4285dfd57d75e823eb9ecd5dec0565501f/node_modules/probe-image-size/package.json","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/probe-image-size/7.2.3/709fce7441af0bd4eca9e0986826eb4285dfd57d75e823eb9ecd5dec0565501f/node_modules/probe-image-size/http.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/probe-image-size/7.2.3/709fce7441af0bd4eca9e0986826eb4285dfd57d75e823eb9ecd5dec0565501f/node_modules/probe-image-size/index.js"],"sourcesContent":["// Utils used to parse miaf-based files (avif/heic/heif)\n//\n// - image collections are not supported (only last size is reported)\n// - images with metadata encoded after image data are not supported\n// - images without any `ispe` box are not supported\n//\n\n'use strict';\n\n/* eslint-disable consistent-return */\n\n\nvar ParserStream = require('../common').ParserStream;\nvar str2arr = require('../common').str2arr;\nvar sliceEq = require('../common').sliceEq;\nvar readUInt32BE = require('../common').readUInt32BE;\nvar miaf = require('../miaf_utils');\nvar exif = require('../exif_utils');\n\nvar SIG_FTYP = str2arr('ftyp');\n\n\nfunction safeSkip(parser, count, callback) {\n if (count === 0) { // parser._skipBytes throws error if count === 0\n callback();\n return;\n }\n\n parser._skipBytes(count, callback);\n}\n\n\nfunction readExifOrientation(parser, sandbox, callback) {\n if (!sandbox.exif_location || sandbox.exif_location.offset <= sandbox.offset) {\n callback(0);\n return;\n }\n\n parser._skipBytes(sandbox.exif_location.offset - sandbox.offset, function () {\n sandbox.offset = sandbox.exif_location.offset;\n\n parser._bytes(4, function (data) {\n sandbox.offset += 4;\n var sig_offset = readUInt32BE(data, 0);\n\n safeSkip(parser, sig_offset, function () {\n sandbox.offset += sig_offset;\n var byteCount = sandbox.exif_location.length - sig_offset - 4;\n\n if (byteCount <= 0) {\n callback(0);\n return;\n }\n\n parser._bytes(byteCount, function (exif_data) {\n sandbox.offset += byteCount;\n callback(exif.get_orientation(exif_data));\n });\n });\n });\n });\n}\n\n\n// sandbox is a storage for intermediate data retrieved from jpeg while parsing it\nfunction readAvifSize(parser, sandbox) {\n parser._bytes(8, function (data) {\n sandbox.offset += 8;\n var size = readUInt32BE(data, 0) - 8;\n var type = String.fromCharCode.apply(null, data.slice(4, 8));\n\n if (type === 'mdat') {\n parser._skipBytes(Infinity);\n parser.push(null);\n return;\n } else if (size < 0) {\n parser._skipBytes(Infinity);\n parser.push(null);\n return;\n } else if (type === 'meta' && size > 0) {\n parser._bytes(size, function (data) {\n sandbox.offset += size;\n var imgSize = miaf.readSizeFromMeta(data);\n\n if (!imgSize) {\n parser._skipBytes(Infinity);\n parser.push(null);\n return;\n }\n\n var result = {\n width: imgSize.width,\n height: imgSize.height,\n type: sandbox.fileType.type,\n mime: sandbox.fileType.mime,\n wUnits: 'px',\n hUnits: 'px'\n };\n\n if (imgSize.variants.length > 1) {\n result.variants = imgSize.variants;\n }\n\n if (imgSize.orientation) {\n result.orientation = imgSize.orientation;\n }\n\n sandbox.exif_location = imgSize.exif_location;\n\n readExifOrientation(parser, sandbox, function (orientation) {\n if (orientation > 0) result.orientation = orientation;\n\n parser._skipBytes(Infinity);\n parser.push(result);\n parser.push(null);\n });\n });\n } else {\n safeSkip(parser, size, function () {\n sandbox.offset += size;\n readAvifSize(parser, sandbox);\n });\n }\n });\n}\n\n\nmodule.exports = function () {\n var parser = new ParserStream();\n var sandbox = { offset: 0, fileType: null };\n\n parser._bytes(8, function (data) {\n sandbox.offset += 8;\n if (!sliceEq(data, 4, SIG_FTYP)) {\n parser._skipBytes(Infinity);\n parser.push(null);\n return;\n }\n\n var size = readUInt32BE(data, 0) - 8;\n\n if (size <= 0) {\n parser._skipBytes(Infinity);\n parser.push(null);\n return;\n }\n\n parser._bytes(size, function (data) {\n sandbox.offset += size;\n sandbox.fileType = miaf.getMimeType(data);\n\n if (!sandbox.fileType) {\n parser._skipBytes(Infinity);\n parser.push(null);\n return;\n }\n\n readAvifSize(parser, sandbox);\n });\n });\n\n return parser;\n};\n","'use strict';\n\n\nvar ParserStream = require('../common').ParserStream;\nvar str2arr = require('../common').str2arr;\nvar sliceEq = require('../common').sliceEq;\n\n\nvar SIG_BM = str2arr('BM');\n\n\nmodule.exports = function () {\n var parser = new ParserStream();\n\n parser._bytes(26, function (data) {\n parser._skipBytes(Infinity);\n\n if (!sliceEq(data, 0, SIG_BM)) {\n parser.push(null);\n return;\n }\n\n parser.push({\n width: data.readUInt16LE(18),\n height: data.readUInt16LE(22),\n type: 'bmp',\n mime: 'image/bmp',\n wUnits: 'px',\n hUnits: 'px'\n });\n\n parser.push(null);\n });\n\n return parser;\n};\n","'use strict';\n\n\nvar ParserStream = require('../common').ParserStream;\nvar str2arr = require('../common').str2arr;\nvar sliceEq = require('../common').sliceEq;\n\n\nvar SIG_GIF87a = str2arr('GIF87a');\nvar SIG_GIF89a = str2arr('GIF89a');\n\n\nmodule.exports = function () {\n var parser = new ParserStream();\n\n parser._bytes(10, function (data) {\n parser._skipBytes(Infinity);\n\n if (!sliceEq(data, 0, SIG_GIF87a) && !sliceEq(data, 0, SIG_GIF89a)) {\n parser.push(null);\n return;\n }\n\n parser.push({\n width: data.readUInt16LE(6),\n height: data.readUInt16LE(8),\n type: 'gif',\n mime: 'image/gif',\n wUnits: 'px',\n hUnits: 'px'\n });\n\n parser.push(null);\n });\n\n return parser;\n};\n","'use strict';\n\nvar ParserStream = require('../common').ParserStream;\n\nvar HEADER = 0;\nvar TYPE_ICO = 1;\nvar INDEX_SIZE = 16;\n\n// Format specification:\n// https://en.wikipedia.org/wiki/ICO_(file_format)#Icon_resource_structure\nmodule.exports = function () {\n var parser = new ParserStream();\n\n parser._bytes(6, function (data) {\n var header = data.readUInt16LE(0);\n var type = data.readUInt16LE(2);\n var numImages = data.readUInt16LE(4);\n\n if (header !== HEADER || type !== TYPE_ICO || !numImages) {\n parser._skipBytes(Infinity);\n parser.push(null);\n return;\n }\n\n parser._bytes(numImages * INDEX_SIZE, function (indexData) {\n parser._skipBytes(Infinity);\n\n var variants = [];\n var maxSize = { width: 0, height: 0 };\n\n for (var i = 0; i < numImages; i++) {\n var width = indexData.readUInt8(INDEX_SIZE * i + 0) || 256;\n var height = indexData.readUInt8(INDEX_SIZE * i + 1) || 256;\n var size = { width: width, height: height };\n variants.push(size);\n\n if (width > maxSize.width || height > maxSize.height) {\n maxSize = size;\n }\n }\n\n parser.push({\n width: maxSize.width,\n height: maxSize.height,\n variants: variants,\n type: 'ico',\n mime: 'image/x-icon',\n wUnits: 'px',\n hUnits: 'px'\n });\n parser.push(null);\n });\n });\n\n return parser;\n};\n","'use strict';\n\n\n/* eslint-disable consistent-return */\n\nvar ParserStream = require('../common').ParserStream;\nvar str2arr = require('../common').str2arr;\nvar sliceEq = require('../common').sliceEq;\nvar exif = require('../exif_utils');\n\n\nvar SIG_EXIF = str2arr('Exif\\0\\0');\n\n\n// part of parseJpegMarker called after skipping initial FF\nfunction parseJpegMarker_afterFF(parser, callback) {\n parser._bytes(1, function (data) {\n var code = data[0];\n\n if (code === 0xFF) {\n // padding byte, skip it\n parseJpegMarker_afterFF(parser, callback);\n return;\n }\n\n // standalone markers, according to JPEG 1992,\n // http://www.w3.org/Graphics/JPEG/itu-t81.pdf, see Table B.1\n if ((0xD0 <= code && code <= 0xD9) || code === 0x01) {\n callback(code, 0);\n return;\n }\n\n // the rest of the unreserved markers\n if (0xC0 <= code && code <= 0xFE) {\n parser._bytes(2, function (length) {\n callback(code, length.readUInt16BE(0) - 2);\n });\n return;\n }\n\n // unknown markers\n callback();\n });\n}\n\n\nfunction parseJpegMarker(parser, sandbox, callback) {\n var start = sandbox.start;\n sandbox.start = false;\n\n parser._bytes(1, function (data) {\n if (data[0] !== 0xFF) {\n // not a JPEG marker\n if (start) {\n // expect JPEG file to start with `FFD8 FFE0`, `FFD8 FFE2` or `FFD8 FFE1`,\n // don't allow garbage before second marker\n callback();\n } else {\n // skip until we see 0xFF, see https://github.com/nodeca/probe-image-size/issues/68\n parseJpegMarker(parser, sandbox, callback);\n }\n return;\n }\n\n parseJpegMarker_afterFF(parser, callback);\n });\n}\n\n\n// sandbox is a storage for intermediate data retrieved from jpeg while parsing it\nfunction getJpegSize(parser, sandbox) {\n parseJpegMarker(parser, sandbox, function (code, length) {\n if (!code || length < 0) {\n // invalid jpeg\n parser._skipBytes(Infinity);\n parser.push(null);\n return;\n }\n\n if (code === 0xD9 /* EOI */ || code === 0xDA /* SOS */) {\n // end of the datastream\n parser._skipBytes(Infinity);\n parser.push(null);\n return;\n }\n\n // try to get orientation from Exif segment\n if (code === 0xE1 && length >= 10) {\n parser._bytes(length, function (data) {\n if (sliceEq(data, 0, SIG_EXIF)) {\n sandbox.orientation = exif.get_orientation(data.slice(6, 6 + length));\n }\n\n getJpegSize(parser, sandbox);\n });\n return;\n }\n\n if (length <= 0) {\n // e.g. empty comment\n getJpegSize(parser, sandbox);\n return;\n }\n\n if (length >= 5 &&\n (0xC0 <= code && code <= 0xCF) &&\n code !== 0xC4 && code !== 0xC8 && code !== 0xCC) {\n\n parser._bytes(length, function (data) {\n parser._skipBytes(Infinity);\n\n var result = {\n width: data.readUInt16BE(3),\n height: data.readUInt16BE(1),\n type: 'jpg',\n mime: 'image/jpeg',\n wUnits: 'px',\n hUnits: 'px'\n };\n\n if (sandbox.orientation > 0) result.orientation = sandbox.orientation;\n\n parser.push(result);\n parser.push(null);\n });\n return;\n }\n\n parser._skipBytes(length, function () {\n getJpegSize(parser, sandbox);\n });\n });\n}\n\n\nmodule.exports = function () {\n var parser = new ParserStream();\n\n parser._bytes(2, function (data) {\n if (data[0] !== 0xFF || data[1] !== 0xD8) {\n // first marker of the file MUST be 0xFFD8\n parser._skipBytes(Infinity);\n parser.push(null);\n return;\n }\n\n getJpegSize(parser, { start: true });\n });\n\n return parser;\n};\n","'use strict';\n\n\nvar ParserStream = require('../common').ParserStream;\nvar str2arr = require('../common').str2arr;\nvar sliceEq = require('../common').sliceEq;\n\n\nvar SIG_PNG = str2arr('\\x89PNG\\r\\n\\x1a\\n');\nvar SIG_IHDR = str2arr('IHDR');\n\n\nmodule.exports = function () {\n var parser = new ParserStream();\n\n parser._bytes(24, function (data) {\n parser._skipBytes(Infinity);\n\n // check PNG signature\n if (!sliceEq(data, 0, SIG_PNG)) {\n parser.push(null);\n return;\n }\n\n // check that first chunk is IHDR\n if (!sliceEq(data, 12, SIG_IHDR)) {\n parser.push(null);\n return;\n }\n\n parser.push({\n width: data.readUInt32BE(16),\n height: data.readUInt32BE(20),\n type: 'png',\n mime: 'image/png',\n wUnits: 'px',\n hUnits: 'px'\n });\n\n parser.push(null);\n });\n\n return parser;\n};\n","'use strict';\n\n\nvar ParserStream = require('../common').ParserStream;\nvar str2arr = require('../common').str2arr;\nvar sliceEq = require('../common').sliceEq;\n\n\nvar SIG_8BPS = str2arr('8BPS\\x00\\x01');\n\n\nmodule.exports = function () {\n var parser = new ParserStream();\n\n parser._bytes(6, function (data) {\n // signature + version\n if (!sliceEq(data, 0, SIG_8BPS)) {\n parser._skipBytes(Infinity);\n parser.push(null);\n return;\n }\n\n parser._bytes(16, function (data) {\n parser._skipBytes(Infinity);\n\n parser.push({\n width: data.readUInt32BE(12),\n height: data.readUInt32BE(8),\n type: 'psd',\n mime: 'image/vnd.adobe.photoshop',\n wUnits: 'px',\n hUnits: 'px'\n });\n\n parser.push(null);\n });\n });\n\n return parser;\n};\n","'use strict';\n\n/* eslint-disable consistent-return */\n\nvar Transform = require('stream').Transform;\n\nvar STATE_IDENTIFY = 0; // look for '<'\nvar STATE_PARSE = 1; // extract width and height from svg tag\nvar STATE_IGNORE = 2; // we got all the data we want, skip the rest\n\n// max size for pre-svg-tag comments plus svg tag itself\nvar MAX_DATA_LENGTH = 65536;\n\n// skip `<?` (comments), `<!` (directives, cdata, doctype),\n// looking for `<svg>` or `<NAMESPACE:svg>`\nvar SVG_HEADER_RE = /<[-_.:a-zA-Z0-9][^>]*>/;\n\n// test if the top level element is svg + optional namespace,\n// used to skip svg embedded in html\nvar SVG_TAG_RE = /^<([-_.:a-zA-Z0-9]+:)?svg\\s/;\n\nvar SVG_WIDTH_RE = /[^-]\\bwidth=\"([^%]+?)\"|[^-]\\bwidth='([^%]+?)'/;\nvar SVG_HEIGHT_RE = /\\bheight=\"([^%]+?)\"|\\bheight='([^%]+?)'/;\nvar SVG_VIEWBOX_RE = /\\bview[bB]ox=\"(.+?)\"|\\bview[bB]ox='(.+?)'/;\nvar SVG_UNITS_RE = /in$|mm$|cm$|pt$|pc$|px$|em$|ex$/;\n\n\nfunction isWhiteSpace(chr) {\n return chr === 0x20 || chr === 0x09 || chr === 0x0D || chr === 0x0A;\n}\n\n// Filter NaN, Infinity, < 0\nfunction isFinitePositive(val) {\n return typeof val === 'number' && isFinite(val) && val > 0;\n}\n\nfunction svgAttrs(str) {\n var width = str.match(SVG_WIDTH_RE);\n var height = str.match(SVG_HEIGHT_RE);\n var viewbox = str.match(SVG_VIEWBOX_RE);\n\n return {\n width: width && (width[1] || width[2]),\n height: height && (height[1] || height[2]),\n viewbox: viewbox && (viewbox[1] || viewbox[2])\n };\n}\n\n\nfunction units(str) {\n if (!SVG_UNITS_RE.test(str)) return 'px';\n\n return str.match(SVG_UNITS_RE)[0];\n}\n\n\nfunction parseSvg(str) {\n // get top level element\n var svgTag = (str.match(SVG_HEADER_RE) || [ '' ])[0];\n\n // test if top level element is <svg>\n if (!SVG_TAG_RE.test(svgTag)) return;\n\n var attrs = svgAttrs(svgTag);\n var width = parseFloat(attrs.width);\n var height = parseFloat(attrs.height);\n\n // Extract from direct values\n\n if (attrs.width && attrs.height) {\n if (!isFinitePositive(width) || !isFinitePositive(height)) return;\n\n return {\n width: width,\n height: height,\n type: 'svg',\n mime: 'image/svg+xml',\n wUnits: units(attrs.width),\n hUnits: units(attrs.height)\n };\n }\n\n // Extract from viewbox\n\n var parts = (attrs.viewbox || '').split(' ');\n var viewbox = {\n width: parts[2],\n height: parts[3]\n };\n var vbWidth = parseFloat(viewbox.width);\n var vbHeight = parseFloat(viewbox.height);\n\n if (!isFinitePositive(vbWidth) || !isFinitePositive(vbHeight)) return;\n if (units(viewbox.width) !== units(viewbox.height)) return;\n\n var ratio = vbWidth / vbHeight;\n\n if (attrs.width) {\n if (!isFinitePositive(width)) return;\n\n return {\n width: width,\n height: width / ratio,\n type: 'svg',\n mime: 'image/svg+xml',\n wUnits: units(attrs.width),\n hUnits: units(attrs.width)\n };\n }\n\n if (attrs.height) {\n if (!isFinitePositive(height)) return;\n\n return {\n width: height * ratio,\n height: height,\n type: 'svg',\n mime: 'image/svg+xml',\n wUnits: units(attrs.height),\n hUnits: units(attrs.height)\n };\n }\n\n return {\n width: vbWidth,\n height: vbHeight,\n type: 'svg',\n mime: 'image/svg+xml',\n wUnits: units(viewbox.width),\n hUnits: units(viewbox.height)\n };\n}\n\n\nmodule.exports = function () {\n var state = STATE_IDENTIFY;\n var data_len = 0;\n var str = '';\n var buf = null; // used to manage first chunk in IDENTIFY\n\n var parser = new Transform({\n readableObjectMode: true,\n transform: function transform(chunk, encoding, next) {\n switch (state) {\n // identify step is needed to fail fast if the file isn't SVG\n case STATE_IDENTIFY:\n if (buf) {\n // make sure that first chunk is at least 4 bytes (to do BOM skip later),\n // last chunk was small\n chunk = Buffer.concat([ buf, chunk ]);\n buf = null;\n }\n\n if (data_len === 0 && chunk.length < 4) {\n // make sure that first chunk is at least 4 bytes (to do BOM skip later),\n // current chunk is small\n buf = chunk;\n break;\n }\n\n var i = 0, max = chunk.length;\n\n // byte order mark, https://github.com/nodeca/probe-image-size/issues/57\n if (data_len === 0 && chunk[0] === 0xEF && chunk[1] === 0xBB && chunk[2] === 0xBF) i = 3;\n\n while (i < max && isWhiteSpace(chunk[i])) i++;\n\n if (i >= max) {\n data_len += chunk.length;\n\n if (data_len > MAX_DATA_LENGTH) {\n state = STATE_IGNORE;\n parser.push(null);\n }\n\n } else if (chunk[i] === 0x3c /* < */) {\n state = STATE_PARSE;\n return transform(chunk, encoding, next);\n\n } else {\n state = STATE_IGNORE;\n parser.push(null);\n }\n\n break;\n\n case STATE_PARSE:\n str += chunk.toString();\n\n var result = parseSvg(str);\n\n if (result) {\n state = STATE_IGNORE;\n parser.push(result);\n parser.push(null);\n break;\n }\n\n data_len += chunk.length;\n\n if (data_len > MAX_DATA_LENGTH) {\n state = STATE_IGNORE;\n parser.push(null);\n }\n\n break;\n }\n\n next();\n },\n\n flush: function () {\n state = STATE_IGNORE;\n parser.push(null);\n }\n });\n\n return parser;\n};\n","'use strict';\n\n\nvar ParserStream = require('../common').ParserStream;\nvar str2arr = require('../common').str2arr;\nvar sliceEq = require('../common').sliceEq;\n\n\nvar SIG_1 = str2arr('II\\x2A\\0');\nvar SIG_2 = str2arr('MM\\0\\x2A');\n\n\nfunction readUInt16(buffer, offset, is_big_endian) {\n return is_big_endian ? buffer.readUInt16BE(offset) : buffer.readUInt16LE(offset);\n}\n\nfunction readUInt32(buffer, offset, is_big_endian) {\n return is_big_endian ? buffer.readUInt32BE(offset) : buffer.readUInt32LE(offset);\n}\n\nfunction readIFDValue(data, data_offset, is_big_endian) {\n var type = readUInt16(data, data_offset + 2, is_big_endian);\n var values = readUInt32(data, data_offset + 4, is_big_endian);\n\n if (values !== 1 || (type !== 3 && type !== 4)) {\n return null;\n }\n\n if (type === 3) {\n return readUInt16(data, data_offset + 8, is_big_endian);\n }\n\n return readUInt32(data, data_offset + 8, is_big_endian);\n}\n\nmodule.exports = function () {\n var parser = new ParserStream();\n\n // read header\n parser._bytes(8, function (data) {\n // check TIFF signature\n if (!sliceEq(data, 0, SIG_1) && !sliceEq(data, 0, SIG_2)) {\n parser._skipBytes(Infinity);\n parser.push(null);\n return;\n }\n\n var is_big_endian = (data[0] === 77 /* 'MM' */);\n var count = readUInt32(data, 4, is_big_endian) - 8;\n\n if (count < 0) {\n parser._skipBytes(Infinity);\n parser.push(null);\n return;\n }\n\n function safeSkip(parser, count, callback) {\n if (count === 0) { // parser._skipBytes throws error if count === 0\n callback();\n return;\n }\n\n parser._skipBytes(count, callback);\n }\n\n // skip until IFD\n safeSkip(parser, count, function () {\n // read number of IFD entries\n parser._bytes(2, function (data) {\n var ifd_size = readUInt16(data, 0, is_big_endian) * 12;\n\n if (ifd_size <= 0) {\n parser._skipBytes(Infinity);\n parser.push(null);\n return;\n }\n\n // read all IFD entries\n parser._bytes(ifd_size, function (data) {\n parser._skipBytes(Infinity);\n\n var i, width, height, tag;\n\n for (i = 0; i < ifd_size; i += 12) {\n tag = readUInt16(data, i, is_big_endian);\n\n if (tag === 256) {\n width = readIFDValue(data, i, is_big_endian);\n } else if (tag === 257) {\n height = readIFDValue(data, i, is_big_endian);\n }\n }\n\n if (width && height) {\n parser.push({\n width: width,\n height: height,\n type: 'tiff',\n mime: 'image/tiff',\n wUnits: 'px',\n hUnits: 'px'\n });\n }\n\n parser.push(null);\n });\n });\n });\n });\n\n return parser;\n};\n","'use strict';\n\n/* eslint-disable no-bitwise */\n/* eslint-disable no-use-before-define */\n\nvar ParserStream = require('../common').ParserStream;\nvar str2arr = require('../common').str2arr;\nvar sliceEq = require('../common').sliceEq;\nvar exif = require('../exif_utils');\n\n\nvar SIG_RIFF = str2arr('RIFF');\nvar SIG_WEBP = str2arr('WEBP');\n\n\nfunction safeSkip(parser, count, callback) {\n if (count === 0) { // parser._skipBytes throws error if count === 0\n callback();\n return;\n }\n\n parser._skipBytes(count, callback);\n}\n\n\nfunction parseVP8(parser, length, sandbox) {\n parser._bytes(10, function (data) {\n // check code block signature\n if (data[3] === 0x9D && data[4] === 0x01 && data[5] === 0x2A) {\n sandbox.result = sandbox.result || {\n width: data.readUInt16LE(6) & 0x3FFF,\n height: data.readUInt16LE(8) & 0x3FFF,\n type: 'webp',\n mime: 'image/webp',\n wUnits: 'px',\n hUnits: 'px'\n };\n }\n\n safeSkip(parser, length - 10, function () {\n sandbox.offset += length;\n getWebpSize(parser, sandbox);\n });\n });\n}\n\n\nfunction parseVP8L(parser, length, sandbox) {\n parser._bytes(5, function (data) {\n // check code block signature\n if (data[0] === 0x2F) {\n var bits = data.readUInt32LE(1);\n\n sandbox.result = sandbox.result || {\n width: (bits & 0x3FFF) + 1,\n height: ((bits >> 14) & 0x3FFF) + 1,\n type: 'webp',\n mime: 'image/webp',\n wUnits: 'px',\n hUnits: 'px'\n };\n }\n\n safeSkip(parser, length - 5, function () {\n sandbox.offset += length;\n getWebpSize(parser, sandbox);\n });\n });\n}\n\n\nfunction parseVP8X(parser, length, sandbox) {\n parser._bytes(10, function (data) {\n sandbox.result = sandbox.result || {\n // TODO: replace with `data.readUIntLE(8, 3) + 1`\n // when 0.10 support is dropped\n width: ((data[6] << 16) | (data[5] << 8) | data[4]) + 1,\n height: ((data[9] << 16) | (data[8] << 8) | data[7]) + 1,\n type: 'webp',\n mime: 'image/webp',\n wUnits: 'px',\n hUnits: 'px'\n };\n\n safeSkip(parser, length - 10, function () {\n sandbox.offset += length;\n getWebpSize(parser, sandbox);\n });\n });\n}\n\n\nfunction parseExif(parser, length, sandbox) {\n parser._bytes(length, function (data) {\n // exif is the last chunk we care about, stop after it\n sandbox.offset = Infinity;\n sandbox.exif_orientation = exif.get_orientation(data);\n\n getWebpSize(parser, sandbox);\n });\n}\n\n\nfunction getWebpSize(parser, sandbox) {\n if (sandbox.fileLength - 8 <= sandbox.offset) {\n parser._skipBytes(Infinity);\n\n if (sandbox.result) {\n var result = sandbox.result;\n\n if (sandbox.exif_orientation > 0) {\n result.orientation = sandbox.exif_orientation;\n }\n\n parser.push(result);\n }\n\n parser.push(null);\n return;\n }\n\n parser._bytes(4 - sandbox.bufferedChunkHeader.length, function (data) {\n sandbox.offset += 4 - sandbox.bufferedChunkHeader.length;\n var header = sandbox.bufferedChunkHeader + String.fromCharCode.apply(null, data);\n\n // after each chunk of odd size there should be 0 byte of padding, skip those\n header = header.replace(/^\\0+/, '');\n\n if (header.length < 4) {\n sandbox.bufferedChunkHeader = header;\n getWebpSize(parser, sandbox);\n return;\n }\n\n sandbox.bufferedChunkHeader = '';\n\n parser._bytes(4, function (data) {\n sandbox.offset += 4;\n var length = data.readUInt32LE(0);\n\n if (header === 'VP8 ' && length >= 10) {\n parseVP8(parser, length, sandbox);\n } else if (header === 'VP8L' && length >= 5) {\n parseVP8L(parser, length, sandbox);\n } else if (header === 'VP8X' && length >= 10) {\n parseVP8X(parser, length, sandbox);\n } else if (header === 'EXIF' && length >= 4) {\n parseExif(parser, length, sandbox);\n } else {\n safeSkip(parser, length, function () {\n sandbox.offset += length;\n getWebpSize(parser, sandbox);\n });\n }\n });\n });\n}\n\n\nmodule.exports = function () {\n var parser = new ParserStream();\n\n parser._bytes(12, function (data) {\n\n // check /^RIFF....WEBPVP8([ LX])$/ signature\n if (sliceEq(data, 0, SIG_RIFF) && sliceEq(data, 8, SIG_WEBP)) {\n getWebpSize(parser, {\n fileLength: data.readUInt32LE(4) + 8,\n offset: 12,\n exif_orientation: 0,\n bufferedChunkHeader: '' // for dealing with padding\n });\n } else {\n parser._skipBytes(Infinity);\n parser.push(null);\n }\n });\n\n return parser;\n};\n","'use strict';\n\nmodule.exports = {\n avif: require('./parse_stream/avif'),\n bmp: require('./parse_stream/bmp'),\n gif: require('./parse_stream/gif'),\n ico: require('./parse_stream/ico'),\n jpeg: require('./parse_stream/jpeg'),\n png: require('./parse_stream/png'),\n psd: require('./parse_stream/psd'),\n svg: require('./parse_stream/svg'),\n tiff: require('./parse_stream/tiff'),\n webp: require('./parse_stream/webp')\n};\n","'use strict';\n\n\nvar ProbeError = require('./lib/common').ProbeError;\nvar parsers = require('./lib/parsers_stream');\nvar PassThrough = require('stream').PassThrough;\nvar pipeline = require('stream').pipeline;\n\n\nmodule.exports = function probeStream(src, keepOpen) {\n var proxy = new PassThrough();\n\n // increase max number of listeners to stop memory leak warning\n proxy.setMaxListeners(Object.keys(parsers).length + 10);\n\n var result = new Promise(function (resolve, reject) {\n src.on('error', reject);\n proxy.on('error', reject);\n\n var alive_parsers = [];\n var last_error;\n\n function parserEnd(err) {\n var idx = alive_parsers.indexOf[this];\n\n /* istanbul ignore if */\n if (idx < 0) return;\n\n /* istanbul ignore if */\n if (err) last_error = err;\n\n proxy.unpipe(this);\n this.removeAllListeners();\n alive_parsers.splice(idx, 1);\n\n if (alive_parsers.length) return;\n\n // if all parsers finished without success -> fail.\n reject(last_error || new ProbeError('unrecognized file format', 'ECONTENT'));\n }\n\n Object.keys(parsers).forEach(function (type) {\n var pStream = parsers[type]();\n\n alive_parsers.push(pStream);\n\n pStream.once('data', resolve);\n pStream.once('end', parserEnd);\n // User does not need to know that something wrong in parser\n // Process error the same was unrecognized format (end without data)\n pStream.on('error', parserEnd);\n\n proxy.pipe(pStream);\n });\n });\n\n function cleanup() {\n // request stream doesn't have unpipe, https://github.com/request/request/issues/874\n if (keepOpen && typeof src.unpipe === 'function') src.unpipe(proxy);\n proxy.destroy();\n }\n\n result.then(cleanup).catch(cleanup);\n\n if (keepOpen) src.pipe(proxy);\n else pipeline(src, proxy, function () {});\n\n return result;\n};\n\n\nmodule.exports.parsers = parsers;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\"use strict\";\n\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\nfunction setup(env) {\n createDebug.debug = createDebug;\n createDebug.default = createDebug;\n createDebug.coerce = coerce;\n createDebug.disable = disable;\n createDebug.enable = enable;\n createDebug.enabled = enabled;\n createDebug.humanize = require('ms');\n Object.keys(env).forEach(function (key) {\n createDebug[key] = env[key];\n });\n /**\n * Active `debug` instances.\n */\n\n createDebug.instances = [];\n /**\n * The currently active debug mode names, and names to skip.\n */\n\n createDebug.names = [];\n createDebug.skips = [];\n /**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\n createDebug.formatters = {};\n /**\n * Selects a color for a debug namespace\n * @param {String} namespace The namespace string for the for the debug instance to be colored\n * @return {Number|String} An ANSI color code for the given namespace\n * @api private\n */\n\n function selectColor(namespace) {\n var hash = 0;\n\n for (var i = 0; i < namespace.length; i++) {\n hash = (hash << 5) - hash + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n }\n\n createDebug.selectColor = selectColor;\n /**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\n function createDebug(namespace) {\n var prevTime;\n\n function debug() {\n // Disabled?\n if (!debug.enabled) {\n return;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var self = debug; // Set `diff` timestamp\n\n var curr = Number(new Date());\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n args[0] = createDebug.coerce(args[0]);\n\n if (typeof args[0] !== 'string') {\n // Anything else let's inspect with %O\n args.unshift('%O');\n } // Apply any `formatters` transformations\n\n\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {\n // If we encounter an escaped % then don't increase the array index\n if (match === '%%') {\n return match;\n }\n\n index++;\n var formatter = createDebug.formatters[format];\n\n if (typeof formatter === 'function') {\n var val = args[index];\n match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format`\n\n args.splice(index, 1);\n index--;\n }\n\n return match;\n }); // Apply env-specific formatting (colors, etc.)\n\n createDebug.formatArgs.call(self, args);\n var logFn = self.log || createDebug.log;\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = createDebug.enabled(namespace);\n debug.useColors = createDebug.useColors();\n debug.color = selectColor(namespace);\n debug.destroy = destroy;\n debug.extend = extend; // Debug.formatArgs = formatArgs;\n // debug.rawLog = rawLog;\n // env-specific initialization logic for debug instances\n\n if (typeof createDebug.init === 'function') {\n createDebug.init(debug);\n }\n\n createDebug.instances.push(debug);\n return debug;\n }\n\n function destroy() {\n var index = createDebug.instances.indexOf(this);\n\n if (index !== -1) {\n createDebug.instances.splice(index, 1);\n return true;\n }\n\n return false;\n }\n\n function extend(namespace, delimiter) {\n return createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n }\n /**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\n\n function enable(namespaces) {\n createDebug.save(namespaces);\n createDebug.names = [];\n createDebug.skips = [];\n var i;\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (i = 0; i < len; i++) {\n if (!split[i]) {\n // ignore empty strings\n continue;\n }\n\n namespaces = split[i].replace(/\\*/g, '.*?');\n\n if (namespaces[0] === '-') {\n createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n createDebug.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n\n for (i = 0; i < createDebug.instances.length; i++) {\n var instance = createDebug.instances[i];\n instance.enabled = createDebug.enabled(instance.namespace);\n }\n }\n /**\n * Disable debug output.\n *\n * @api public\n */\n\n\n function disable() {\n createDebug.enable('');\n }\n /**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\n\n function enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n\n var i;\n var len;\n\n for (i = 0, len = createDebug.skips.length; i < len; i++) {\n if (createDebug.skips[i].test(name)) {\n return false;\n }\n }\n\n for (i = 0, len = createDebug.names.length; i < len; i++) {\n if (createDebug.names[i].test(name)) {\n return true;\n }\n }\n\n return false;\n }\n /**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\n\n function coerce(val) {\n if (val instanceof Error) {\n return val.stack || val.message;\n }\n\n return val;\n }\n\n createDebug.enable(createDebug.load());\n return createDebug;\n}\n\nmodule.exports = setup;\n\n","\"use strict\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\n/**\n * Colors.\n */\n\nexports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'];\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n// eslint-disable-next-line complexity\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n return true;\n } // Internet Explorer and Edge do not support colors.\n\n\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n } // Is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\n\n return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773\n typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/);\n}\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);\n\n if (!this.useColors) {\n return;\n }\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit'); // The final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function (match) {\n if (match === '%%') {\n return;\n }\n\n index++;\n\n if (match === '%c') {\n // We only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n args.splice(lastC, 0, c);\n}\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\n\nfunction log() {\n var _console;\n\n // This hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return (typeof console === \"undefined\" ? \"undefined\" : _typeof(console)) === 'object' && console.log && (_console = console).log.apply(_console, arguments);\n}\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n try {\n if (namespaces) {\n exports.storage.setItem('debug', namespaces);\n } else {\n exports.storage.removeItem('debug');\n }\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n var r;\n\n try {\n r = exports.storage.getItem('debug');\n } catch (error) {} // Swallow\n // XXX (@Qix-) should we be logging these?\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\n\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\n\nfunction localstorage() {\n try {\n // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n // The Browser also has localStorage in the global context.\n return localStorage;\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n\nmodule.exports = require('./common')(exports);\nvar formatters = module.exports.formatters;\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n try {\n return JSON.stringify(v);\n } catch (error) {\n return '[UnexpectedJSONParseError]: ' + error.message;\n }\n};\n\n","\"use strict\";\n\n/**\n * Module dependencies.\n */\nvar tty = require('tty');\n\nvar util = require('util');\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n // eslint-disable-next-line import/no-extraneous-dependencies\n var supportsColor = require('supports-color');\n\n if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n exports.colors = [20, 21, 26, 27, 32, 33, 38, 39, 40, 41, 42, 43, 44, 45, 56, 57, 62, 63, 68, 69, 74, 75, 76, 77, 78, 79, 80, 81, 92, 93, 98, 99, 112, 113, 128, 129, 134, 135, 148, 149, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 178, 179, 184, 185, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 214, 215, 220, 221];\n }\n} catch (error) {} // Swallow - we only care if `supports-color` is available; it doesn't have to be.\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\n\nexports.inspectOpts = Object.keys(process.env).filter(function (key) {\n return /^debug_/i.test(key);\n}).reduce(function (obj, key) {\n // Camel-case\n var prop = key.substring(6).toLowerCase().replace(/_([a-z])/g, function (_, k) {\n return k.toUpperCase();\n }); // Coerce string value into JS value\n\n var val = process.env[key];\n\n if (/^(yes|on|true|enabled)$/i.test(val)) {\n val = true;\n } else if (/^(no|off|false|disabled)$/i.test(val)) {\n val = false;\n } else if (val === 'null') {\n val = null;\n } else {\n val = Number(val);\n }\n\n obj[prop] = val;\n return obj;\n}, {});\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n return 'colors' in exports.inspectOpts ? Boolean(exports.inspectOpts.colors) : tty.isatty(process.stderr.fd);\n}\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n var name = this.namespace,\n useColors = this.useColors;\n\n if (useColors) {\n var c = this.color;\n var colorCode = \"\\x1B[3\" + (c < 8 ? c : '8;5;' + c);\n var prefix = \" \".concat(colorCode, \";1m\").concat(name, \" \\x1B[0m\");\n args[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + \"\\x1B[0m\");\n } else {\n args[0] = getDate() + name + ' ' + args[0];\n }\n}\n\nfunction getDate() {\n if (exports.inspectOpts.hideDate) {\n return '';\n }\n\n return new Date().toISOString() + ' ';\n}\n/**\n * Invokes `util.format()` with the specified arguments and writes to stderr.\n */\n\n\nfunction log() {\n return process.stderr.write(util.format.apply(util, arguments) + '\\n');\n}\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n if (namespaces) {\n process.env.DEBUG = namespaces;\n } else {\n // If you set a process.env field to null or undefined, it gets cast to the\n // string 'null' or 'undefined'. Just delete instead.\n delete process.env.DEBUG;\n }\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n return process.env.DEBUG;\n}\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\n\nfunction init(debug) {\n debug.inspectOpts = {};\n var keys = Object.keys(exports.inspectOpts);\n\n for (var i = 0; i < keys.length; i++) {\n debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n }\n}\n\nmodule.exports = require('./common')(exports);\nvar formatters = module.exports.formatters;\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts)\n .split('\\n')\n .map(function (str) { return str.trim(); })\n .join(' ');\n};\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\n\nformatters.O = function (v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts);\n};\n\n","\"use strict\";\n\n/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n module.exports = require('./browser.js');\n} else {\n module.exports = require('./node.js');\n}\n\n","// based on the qs module, but handles null objects as expected\n// fixes by Tomas Pollak.\n\nvar toString = Object.prototype.toString;\n\nfunction stringify(obj, prefix) {\n if (prefix && (obj === null || typeof obj == 'undefined')) {\n return prefix + '=';\n } else if (toString.call(obj) == '[object Array]') {\n return stringifyArray(obj, prefix);\n } else if (toString.call(obj) == '[object Object]') {\n return stringifyObject(obj, prefix);\n } else if (toString.call(obj) == '[object Date]') {\n return obj.toISOString();\n } else if (prefix) { // string inside array or hash\n return prefix + '=' + encodeURIComponent(String(obj));\n } else if (String(obj).indexOf('=') !== -1) { // string with equal sign\n return String(obj);\n } else {\n throw new TypeError('Cannot build a querystring out of: ' + obj);\n }\n};\n\nfunction stringifyArray(arr, prefix) {\n var ret = [];\n\n for (var i = 0, len = arr.length; i < len; i++) {\n if (prefix)\n ret.push(stringify(arr[i], prefix + '[]'));\n else\n ret.push(stringify(arr[i]));\n }\n\n return ret.join('&');\n}\n\nfunction stringifyObject(obj, prefix) {\n var ret = [];\n\n Object.keys(obj).forEach(function(key) {\n ret.push(stringify(obj[key], prefix\n ? prefix + '[' + encodeURIComponent(key) + ']'\n : encodeURIComponent(key)));\n })\n\n return ret.join('&');\n}\n\nexports.build = stringify;\n","var readFile = require('fs').readFile,\n basename = require('path').basename;\n\nexports.build = function(data, boundary, callback) {\n\n if (typeof data != 'object' || typeof data.pipe == 'function')\n return callback(new Error('Multipart builder expects data as key/val object.'));\n\n var body = '',\n object = flatten(data),\n count = Object.keys(object).length;\n\n if (count === 0)\n return callback(new Error('Empty multipart body. Invalid data.'))\n\n function done(err, section) {\n if (err) return callback(err);\n if (section) body += section;\n --count || callback(null, body + '--' + boundary + '--');\n };\n\n for (var key in object) {\n var value = object[key];\n if (value === null || typeof value == 'undefined') {\n done();\n } else if (Buffer.isBuffer(value)) {\n var part = { buffer: value, content_type: 'application/octet-stream' };\n generate_part(key, part, boundary, done);\n } else {\n var part = (value.buffer || value.file || value.content_type) ? value : { value: value };\n generate_part(key, part, boundary, done);\n }\n }\n\n}\n\nfunction generate_part(name, part, boundary, callback) {\n\n var return_part = '--' + boundary + '\\r\\n';\n return_part += 'Content-Disposition: form-data; name=\"' + name + '\"';\n\n function append(data, filename) {\n\n if (data) {\n var binary = part.content_type.indexOf('text') == -1;\n return_part += '; filename=\"' + encodeURIComponent(filename) + '\"\\r\\n';\n if (binary) return_part += 'Content-Transfer-Encoding: binary\\r\\n';\n return_part += 'Content-Type: ' + part.content_type + '\\r\\n\\r\\n';\n return_part += binary ? data.toString('binary') : data.toString('utf8');\n }\n\n callback(null, return_part + '\\r\\n');\n };\n\n if ((part.file || part.buffer) && part.content_type) {\n\n var filename = part.filename ? part.filename : part.file ? basename(part.file) : name;\n if (part.buffer) return append(part.buffer, filename);\n\n readFile(part.file, function(err, data) {\n if (err) return callback(err);\n append(data, filename);\n });\n\n } else {\n\n if (typeof part.value == 'object')\n return callback(new Error('Object received for ' + name + ', expected string.'))\n\n if (part.content_type) {\n return_part += '\\r\\n';\n return_part += 'Content-Type: ' + part.content_type;\n }\n\n return_part += '\\r\\n\\r\\n';\n return_part += Buffer.from(String(part.value), 'utf8').toString('binary');\n append();\n\n }\n\n}\n\n// flattens nested objects for multipart body\nfunction flatten(object, into, prefix) {\n into = into || {};\n\n for(var key in object) {\n var prefix_key = prefix ? prefix + '[' + key + ']' : key;\n var prop = object[key];\n\n if (prop && typeof prop === 'object' && !(prop.buffer || prop.file || prop.content_type))\n flatten(prop, into, prefix_key)\n else\n into[prefix_key] = prop;\n }\n\n return into;\n}\n","var createHash = require('crypto').createHash;\n\nfunction get_header(header, credentials, opts) {\n var type = header.split(' ')[0],\n user = credentials[0],\n pass = credentials[1];\n\n if (type == 'Digest') {\n return digest.generate(header, user, pass, opts.method, opts.path);\n } else if (type == 'Basic') {\n return basic(user, pass);\n }\n}\n\n////////////////////\n// basic\n\nfunction md5(string) {\n return createHash('md5').update(string).digest('hex');\n}\n\nfunction basic(user, pass) {\n var str = typeof pass == 'undefined' ? user : [user, pass].join(':');\n return 'Basic ' + Buffer.from(str).toString('base64');\n}\n\n////////////////////\n// digest\n// logic inspired from https://github.com/simme/node-http-digest-client\n\nvar digest = {};\n\ndigest.parse_header = function(header) {\n var challenge = {},\n matches = header.match(/([a-z0-9_-]+)=\"?([a-z0-9_=\\/\\.@\\s-\\+)()]+)\"?/gi);\n\n for (var i = 0, l = matches.length; i < l; i++) {\n var parts = matches[i].split('='),\n key = parts.shift(),\n val = parts.join('=').replace(/^\"/, '').replace(/\"$/, '');\n\n challenge[key] = val;\n }\n\n return challenge;\n}\n\ndigest.update_nc = function(nc) {\n var max = 99999999;\n nc++;\n\n if (nc > max)\n nc = 1;\n\n var padding = new Array(8).join('0') + '';\n nc = nc + '';\n return padding.substr(0, 8 - nc.length) + nc;\n}\n\ndigest.generate = function(header, user, pass, method, path) {\n\n var nc = 1,\n cnonce = null,\n challenge = digest.parse_header(header);\n\n var ha1 = md5(user + ':' + challenge.realm + ':' + pass),\n ha2 = md5(method.toUpperCase() + ':' + path),\n resp = [ha1, challenge.nonce];\n\n if (typeof challenge.qop === 'string') {\n cnonce = md5(Math.random().toString(36)).substr(0, 8);\n nc = digest.update_nc(nc);\n resp = resp.concat(nc, cnonce);\n resp = resp.concat(challenge.qop, ha2);\n } else {\n resp = resp.concat(ha2);\n }\n\n\n var params = {\n uri : path,\n realm : challenge.realm,\n nonce : challenge.nonce,\n username : user,\n response : md5(resp.join(':'))\n }\n\n if (challenge.qop) {\n params.qop = challenge.qop;\n }\n\n if (challenge.opaque) {\n params.opaque = challenge.opaque;\n }\n\n if (cnonce) {\n params.nc = nc;\n params.cnonce = cnonce;\n }\n\n header = []\n for (var k in params)\n header.push(k + '=\"' + params[k] + '\"')\n\n return 'Digest ' + header.join(', ');\n}\n\nmodule.exports = {\n header : get_header,\n basic : basic,\n digest : digest.generate\n}\n","\n// Simple cookie handling implementation based on the standard RFC 6265.\n//\n// This module just has two functionalities:\n// - Parse a set-cookie-header as a key value object\n// - Write a cookie-string from a key value object\n//\n// All cookie attributes are ignored.\n\nvar unescape = require('querystring').unescape;\n\nvar COOKIE_PAIR = /^([^=\\s]+)\\s*=\\s*(\"?)\\s*(.*)\\s*\\2\\s*$/;\nvar EXCLUDED_CHARS = /[\\x00-\\x1F\\x7F\\x3B\\x3B\\s\\\"\\,\\\\\"%]/g;\nvar TRAILING_SEMICOLON = /\\x3B+$/;\nvar SEP_SEMICOLON = /\\s*\\x3B\\s*/;\n\n// i know these should be 'const', but I'd like to keep\n// supporting earlier node.js versions as long as I can. :)\n\nvar KEY_INDEX = 1; // index of key from COOKIE_PAIR match\nvar VALUE_INDEX = 3; // index of value from COOKIE_PAIR match\n\n// Returns a copy str trimmed and without trainling semicolon.\nfunction cleanCookieString(str) {\n return str.trim().replace(/\\x3B+$/, '');\n}\n\nfunction getFirstPair(str) {\n var index = str.indexOf('\\x3B');\n return index === -1 ? str : str.substr(0, index);\n}\n\n// Returns a encoded copy of str based on RFC6265 S4.1.1.\nfunction encodeCookieComponent(str) {\n return str.toString().replace(EXCLUDED_CHARS, encodeURIComponent);\n}\n\n// Parses a set-cookie-string based on the standard defined in RFC6265 S4.1.1.\nfunction parseSetCookieString(str) {\n str = cleanCookieString(str);\n str = getFirstPair(str);\n\n var res = COOKIE_PAIR.exec(str);\n if (!res || !res[VALUE_INDEX]) return null;\n\n return {\n name : unescape(res[KEY_INDEX]),\n value : unescape(res[VALUE_INDEX])\n };\n}\n\n// Parses a set-cookie-header and returns a key/value object.\n// Each key represents the name of a cookie.\nfunction parseSetCookieHeader(header) {\n if (!header) return {};\n header = Array.isArray(header) ? header : [header];\n\n return header.reduce(function(res, str) {\n var cookie = parseSetCookieString(str);\n if (cookie) res[cookie.name] = cookie.value;\n return res;\n }, {});\n}\n\n// Writes a set-cookie-string based on the standard definded in RFC6265 S4.1.1.\nfunction writeCookieString(obj) {\n return Object.keys(obj).reduce(function(str, name) {\n var encodedName = encodeCookieComponent(name);\n var encodedValue = encodeCookieComponent(obj[name]);\n str += (str ? '; ' : '') + encodedName + '=' + encodedValue;\n return str;\n }, '');\n}\n\n// returns a key/val object from an array of cookie strings\nexports.read = parseSetCookieHeader;\n\n// writes a cookie string header\nexports.write = writeCookieString;\n",";(function (sax) {\n // wrapper for non-node envs\n sax.parser = function (strict, opt) {\n return new SAXParser(strict, opt)\n }\n sax.SAXParser = SAXParser\n sax.SAXStream = SAXStream\n sax.createStream = createStream\n\n // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.\n // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),\n // since that's the earliest that a buffer overrun could occur. This way, checks are\n // as rare as required, but as often as necessary to ensure never crossing this bound.\n // Furthermore, buffers are only tested at most once per write(), so passing a very\n // large string into write() might have undesirable effects, but this is manageable by\n // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme\n // edge case, result in creating at most one complete copy of the string passed in.\n // Set to Infinity to have unlimited buffers.\n sax.MAX_BUFFER_LENGTH = 64 * 1024\n\n var buffers = [\n 'comment',\n 'sgmlDecl',\n 'textNode',\n 'tagName',\n 'doctype',\n 'procInstName',\n 'procInstBody',\n 'entity',\n 'attribName',\n 'attribValue',\n 'cdata',\n 'script',\n ]\n\n sax.EVENTS = [\n 'text',\n 'processinginstruction',\n 'sgmldeclaration',\n 'doctype',\n 'comment',\n 'opentagstart',\n 'attribute',\n 'opentag',\n 'closetag',\n 'opencdata',\n 'cdata',\n 'closecdata',\n 'error',\n 'end',\n 'ready',\n 'script',\n 'opennamespace',\n 'closenamespace',\n ]\n\n function SAXParser(strict, opt) {\n if (!(this instanceof SAXParser)) {\n return new SAXParser(strict, opt)\n }\n\n var parser = this\n clearBuffers(parser)\n parser.q = parser.c = ''\n parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH\n parser.encoding = null;\n parser.opt = opt || {}\n parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags\n parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase'\n parser.opt.maxEntityCount = parser.opt.maxEntityCount || 512\n parser.opt.maxEntityDepth = parser.opt.maxEntityDepth || 4\n parser.entityCount = parser.entityDepth = 0\n parser.tags = []\n parser.closed = parser.closedRoot = parser.sawRoot = false\n parser.tag = parser.error = null\n parser.strict = !!strict\n parser.noscript = !!(strict || parser.opt.noscript)\n parser.state = S.BEGIN\n parser.strictEntities = parser.opt.strictEntities\n parser.ENTITIES =\n parser.strictEntities ?\n Object.create(sax.XML_ENTITIES)\n : Object.create(sax.ENTITIES)\n parser.attribList = []\n\n // namespaces form a prototype chain.\n // it always points at the current tag,\n // which protos to its parent tag.\n if (parser.opt.xmlns) {\n parser.ns = Object.create(rootNS)\n }\n\n // disallow unquoted attribute values if not otherwise configured\n // and strict mode is true\n if (parser.opt.unquotedAttributeValues === undefined) {\n parser.opt.unquotedAttributeValues = !strict\n }\n\n // mostly just for error reporting\n parser.trackPosition = parser.opt.position !== false\n if (parser.trackPosition) {\n parser.position = parser.line = parser.column = 0\n }\n emit(parser, 'onready')\n }\n\n if (!Object.create) {\n Object.create = function (o) {\n function F() {}\n F.prototype = o\n var newf = new F()\n return newf\n }\n }\n\n if (!Object.keys) {\n Object.keys = function (o) {\n var a = []\n for (var i in o) if (o.hasOwnProperty(i)) a.push(i)\n return a\n }\n }\n\n function checkBufferLength(parser) {\n var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)\n var maxActual = 0\n for (var i = 0, l = buffers.length; i < l; i++) {\n var len = parser[buffers[i]].length\n if (len > maxAllowed) {\n // Text/cdata nodes can get big, and since they're buffered,\n // we can get here under normal conditions.\n // Avoid issues by emitting the text node now,\n // so at least it won't get any bigger.\n switch (buffers[i]) {\n case 'textNode':\n closeText(parser)\n break\n\n case 'cdata':\n emitNode(parser, 'oncdata', parser.cdata)\n parser.cdata = ''\n break\n\n case 'script':\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n break\n\n default:\n error(parser, 'Max buffer length exceeded: ' + buffers[i])\n }\n }\n maxActual = Math.max(maxActual, len)\n }\n // schedule the next check for the earliest possible buffer overrun.\n var m = sax.MAX_BUFFER_LENGTH - maxActual\n parser.bufferCheckPosition = m + parser.position\n }\n\n function clearBuffers(parser) {\n for (var i = 0, l = buffers.length; i < l; i++) {\n parser[buffers[i]] = ''\n }\n }\n\n function flushBuffers(parser) {\n closeText(parser)\n if (parser.cdata !== '') {\n emitNode(parser, 'oncdata', parser.cdata)\n parser.cdata = ''\n }\n if (parser.script !== '') {\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n }\n }\n\n SAXParser.prototype = {\n end: function () {\n end(this)\n },\n write: write,\n resume: function () {\n this.error = null\n return this\n },\n close: function () {\n return this.write(null)\n },\n flush: function () {\n flushBuffers(this)\n },\n }\n\n var Stream\n try {\n Stream = require('stream').Stream\n } catch (ex) {\n Stream = function () {}\n }\n if (!Stream) Stream = function () {}\n\n var streamWraps = sax.EVENTS.filter(function (ev) {\n return ev !== 'error' && ev !== 'end'\n })\n\n function createStream(strict, opt) {\n return new SAXStream(strict, opt)\n }\n\n function determineBufferEncoding(data, isEnd) {\n // BOM-based detection is the most reliable signal when present.\n if (data.length >= 2) {\n if (data[0] === 0xff && data[1] === 0xfe) {\n return 'utf-16le'\n }\n\n if (data[0] === 0xfe && data[1] === 0xff) {\n return 'utf-16be'\n }\n }\n\n if (data.length >= 3 && data[0] === 0xef && data[1] === 0xbb && data[2] === 0xbf) {\n return 'utf8'\n }\n\n if (data.length >= 4) {\n // XML documents without a BOM still start with \"<?xml\", which is enough\n // to distinguish UTF-16LE/BE from UTF-8 by looking at the zero bytes.\n if (data[0] === 0x3c && data[1] === 0x00 && data[2] === 0x3f && data[3] === 0x00) {\n return 'utf-16le'\n }\n\n if (data[0] === 0x00 && data[1] === 0x3c && data[2] === 0x00 && data[3] === 0x3f) {\n return 'utf-16be'\n }\n\n return 'utf8'\n }\n\n return isEnd ? 'utf8' : null\n }\n\n function SAXStream(strict, opt) {\n if (!(this instanceof SAXStream)) {\n return new SAXStream(strict, opt)\n }\n\n Stream.apply(this)\n\n this._parser = new SAXParser(strict, opt)\n this.writable = true\n this.readable = true\n\n var me = this\n\n this._parser.onend = function () {\n me.emit('end')\n }\n\n this._parser.onerror = function (er) {\n me.emit('error', er)\n\n // if didn't throw, then means error was handled.\n // go ahead and clear error, so we can write again.\n me._parser.error = null\n }\n\n this._decoder = null\n this._decoderBuffer = null\n streamWraps.forEach(function (ev) {\n Object.defineProperty(me, 'on' + ev, {\n get: function () {\n return me._parser['on' + ev]\n },\n set: function (h) {\n if (!h) {\n me.removeAllListeners(ev)\n me._parser['on' + ev] = h\n return h\n }\n me.on(ev, h)\n },\n enumerable: true,\n configurable: false,\n })\n })\n }\n\n SAXStream.prototype = Object.create(Stream.prototype, {\n constructor: {\n value: SAXStream,\n },\n })\n\n SAXStream.prototype._decodeBuffer = function (data, isEnd) {\n if (this._decoderBuffer) {\n // Keep incomplete leading bytes until we have enough data to infer the\n // stream encoding, then decode the buffered prefix together with the next chunk.\n data = Buffer.concat([this._decoderBuffer, data])\n this._decoderBuffer = null\n }\n\n if (!this._decoder) {\n var encoding = determineBufferEncoding(data, isEnd)\n if (!encoding) {\n // A very short first chunk may not contain enough bytes to detect the\n // encoding yet, so defer decoding until the next write/end call.\n this._decoderBuffer = data\n return ''\n }\n\n // Store the detected transport encoding so strict mode can compare it\n // with the optional encoding declared in the XML prolog later on.\n this._parser.encoding = encoding\n this._decoder = new TextDecoder(encoding)\n }\n\n return this._decoder.decode(data, { stream: !isEnd })\n }\n\n SAXStream.prototype.write = function (data) {\n if (\n typeof Buffer === 'function' &&\n typeof Buffer.isBuffer === 'function' &&\n Buffer.isBuffer(data)\n ) {\n data = this._decodeBuffer(data, false)\n } else if (this._decoderBuffer) {\n // Flush any buffered binary prefix before handling a string chunk.\n // This only matters if the caller mixes Buffer and string writes (used in test).\n var remaining = this._decodeBuffer(Buffer.alloc(0), true)\n if (remaining) {\n this._parser.write(remaining)\n this.emit('data', remaining)\n }\n }\n\n this._parser.write(data.toString())\n this.emit('data', data)\n return true\n }\n\n SAXStream.prototype.end = function (chunk) {\n if (chunk && chunk.length) {\n this.write(chunk)\n }\n // Flush any remaining decoded data from the TextDecoder\n if (this._decoderBuffer) {\n var finalChunk = this._decodeBuffer(Buffer.alloc(0), true)\n if (finalChunk) {\n this._parser.write(finalChunk)\n this.emit('data', finalChunk)\n }\n } else if (this._decoder) {\n var remaining = this._decoder.decode()\n if (remaining) {\n this._parser.write(remaining)\n this.emit('data', remaining)\n }\n }\n this._parser.end()\n return true\n }\n\n SAXStream.prototype.on = function (ev, handler) {\n var me = this\n if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) {\n me._parser['on' + ev] = function () {\n var args =\n arguments.length === 1 ?\n [arguments[0]]\n : Array.apply(null, arguments)\n args.splice(0, 0, ev)\n me.emit.apply(me, args)\n }\n }\n\n return Stream.prototype.on.call(me, ev, handler)\n }\n\n // this really needs to be replaced with character classes.\n // XML allows all manner of ridiculous numbers and digits.\n var CDATA = '[CDATA['\n var DOCTYPE = 'DOCTYPE'\n var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace'\n var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/'\n var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }\n\n // http://www.w3.org/TR/REC-xml/#NT-NameStartChar\n // This implementation works on strings, a single character at a time\n // as such, it cannot ever support astral-plane characters (10000-EFFFF)\n // without a significant breaking change to either this parser, or the\n // JavaScript language. Implementation of an emoji-capable xml parser\n // is left as an exercise for the reader.\n var nameStart =\n /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n\n var nameBody =\n /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n var entityStart =\n /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n var entityBody =\n /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n function isWhitespace(c) {\n return c === ' ' || c === '\\n' || c === '\\r' || c === '\\t'\n }\n\n function isQuote(c) {\n return c === '\"' || c === \"'\"\n }\n\n function isAttribEnd(c) {\n return c === '>' || isWhitespace(c)\n }\n\n function isMatch(regex, c) {\n return regex.test(c)\n }\n\n function notMatch(regex, c) {\n return !isMatch(regex, c)\n }\n\n var S = 0\n sax.STATE = {\n BEGIN: S++, // leading byte order mark or whitespace\n BEGIN_WHITESPACE: S++, // leading whitespace\n TEXT: S++, // general stuff\n TEXT_ENTITY: S++, // & and such.\n OPEN_WAKA: S++, // <\n SGML_DECL: S++, // <!BLARG\n SGML_DECL_QUOTED: S++, // <!BLARG foo \"bar\n DOCTYPE: S++, // <!DOCTYPE\n DOCTYPE_QUOTED: S++, // <!DOCTYPE \"//blah\n DOCTYPE_DTD: S++, // <!DOCTYPE \"//blah\" [ ...\n DOCTYPE_DTD_QUOTED: S++, // <!DOCTYPE \"//blah\" [ \"foo\n COMMENT_STARTING: S++, // <!-\n COMMENT: S++, // <!--\n COMMENT_ENDING: S++, // <!-- blah -\n COMMENT_ENDED: S++, // <!-- blah --\n CDATA: S++, // <![CDATA[ something\n CDATA_ENDING: S++, // ]\n CDATA_ENDING_2: S++, // ]]\n PROC_INST: S++, // <?hi\n PROC_INST_BODY: S++, // <?hi there\n PROC_INST_ENDING: S++, // <?hi \"there\" ?\n OPEN_TAG: S++, // <strong\n OPEN_TAG_SLASH: S++, // <strong /\n ATTRIB: S++, // <a\n ATTRIB_NAME: S++, // <a foo\n ATTRIB_NAME_SAW_WHITE: S++, // <a foo _\n ATTRIB_VALUE: S++, // <a foo=\n ATTRIB_VALUE_QUOTED: S++, // <a foo=\"bar\n ATTRIB_VALUE_CLOSED: S++, // <a foo=\"bar\"\n ATTRIB_VALUE_UNQUOTED: S++, // <a foo=bar\n ATTRIB_VALUE_ENTITY_Q: S++, // <foo bar=\""\"\n ATTRIB_VALUE_ENTITY_U: S++, // <foo bar="\n CLOSE_TAG: S++, // </a\n CLOSE_TAG_SAW_WHITE: S++, // </a >\n SCRIPT: S++, // <script> ...\n SCRIPT_ENDING: S++, // <script> ... <\n }\n\n sax.XML_ENTITIES = {\n amp: '&',\n gt: '>',\n lt: '<',\n quot: '\"',\n apos: \"'\",\n }\n\n sax.ENTITIES = {\n amp: '&',\n gt: '>',\n lt: '<',\n quot: '\"',\n apos: \"'\",\n AElig: 198,\n Aacute: 193,\n Acirc: 194,\n Agrave: 192,\n Aring: 197,\n Atilde: 195,\n Auml: 196,\n Ccedil: 199,\n ETH: 208,\n Eacute: 201,\n Ecirc: 202,\n Egrave: 200,\n Euml: 203,\n Iacute: 205,\n Icirc: 206,\n Igrave: 204,\n Iuml: 207,\n Ntilde: 209,\n Oacute: 211,\n Ocirc: 212,\n Ograve: 210,\n Oslash: 216,\n Otilde: 213,\n Ouml: 214,\n THORN: 222,\n Uacute: 218,\n Ucirc: 219,\n Ugrave: 217,\n Uuml: 220,\n Yacute: 221,\n aacute: 225,\n acirc: 226,\n aelig: 230,\n agrave: 224,\n aring: 229,\n atilde: 227,\n auml: 228,\n ccedil: 231,\n eacute: 233,\n ecirc: 234,\n egrave: 232,\n eth: 240,\n euml: 235,\n iacute: 237,\n icirc: 238,\n igrave: 236,\n iuml: 239,\n ntilde: 241,\n oacute: 243,\n ocirc: 244,\n ograve: 242,\n oslash: 248,\n otilde: 245,\n ouml: 246,\n szlig: 223,\n thorn: 254,\n uacute: 250,\n ucirc: 251,\n ugrave: 249,\n uuml: 252,\n yacute: 253,\n yuml: 255,\n copy: 169,\n reg: 174,\n nbsp: 160,\n iexcl: 161,\n cent: 162,\n pound: 163,\n curren: 164,\n yen: 165,\n brvbar: 166,\n sect: 167,\n uml: 168,\n ordf: 170,\n laquo: 171,\n not: 172,\n shy: 173,\n macr: 175,\n deg: 176,\n plusmn: 177,\n sup1: 185,\n sup2: 178,\n sup3: 179,\n acute: 180,\n micro: 181,\n para: 182,\n middot: 183,\n cedil: 184,\n ordm: 186,\n raquo: 187,\n frac14: 188,\n frac12: 189,\n frac34: 190,\n iquest: 191,\n times: 215,\n divide: 247,\n OElig: 338,\n oelig: 339,\n Scaron: 352,\n scaron: 353,\n Yuml: 376,\n fnof: 402,\n circ: 710,\n tilde: 732,\n Alpha: 913,\n Beta: 914,\n Gamma: 915,\n Delta: 916,\n Epsilon: 917,\n Zeta: 918,\n Eta: 919,\n Theta: 920,\n Iota: 921,\n Kappa: 922,\n Lambda: 923,\n Mu: 924,\n Nu: 925,\n Xi: 926,\n Omicron: 927,\n Pi: 928,\n Rho: 929,\n Sigma: 931,\n Tau: 932,\n Upsilon: 933,\n Phi: 934,\n Chi: 935,\n Psi: 936,\n Omega: 937,\n alpha: 945,\n beta: 946,\n gamma: 947,\n delta: 948,\n epsilon: 949,\n zeta: 950,\n eta: 951,\n theta: 952,\n iota: 953,\n kappa: 954,\n lambda: 955,\n mu: 956,\n nu: 957,\n xi: 958,\n omicron: 959,\n pi: 960,\n rho: 961,\n sigmaf: 962,\n sigma: 963,\n tau: 964,\n upsilon: 965,\n phi: 966,\n chi: 967,\n psi: 968,\n omega: 969,\n thetasym: 977,\n upsih: 978,\n piv: 982,\n ensp: 8194,\n emsp: 8195,\n thinsp: 8201,\n zwnj: 8204,\n zwj: 8205,\n lrm: 8206,\n rlm: 8207,\n ndash: 8211,\n mdash: 8212,\n lsquo: 8216,\n rsquo: 8217,\n sbquo: 8218,\n ldquo: 8220,\n rdquo: 8221,\n bdquo: 8222,\n dagger: 8224,\n Dagger: 8225,\n bull: 8226,\n hellip: 8230,\n permil: 8240,\n prime: 8242,\n Prime: 8243,\n lsaquo: 8249,\n rsaquo: 8250,\n oline: 8254,\n frasl: 8260,\n euro: 8364,\n image: 8465,\n weierp: 8472,\n real: 8476,\n trade: 8482,\n alefsym: 8501,\n larr: 8592,\n uarr: 8593,\n rarr: 8594,\n darr: 8595,\n harr: 8596,\n crarr: 8629,\n lArr: 8656,\n uArr: 8657,\n rArr: 8658,\n dArr: 8659,\n hArr: 8660,\n forall: 8704,\n part: 8706,\n exist: 8707,\n empty: 8709,\n nabla: 8711,\n isin: 8712,\n notin: 8713,\n ni: 8715,\n prod: 8719,\n sum: 8721,\n minus: 8722,\n lowast: 8727,\n radic: 8730,\n prop: 8733,\n infin: 8734,\n ang: 8736,\n and: 8743,\n or: 8744,\n cap: 8745,\n cup: 8746,\n int: 8747,\n there4: 8756,\n sim: 8764,\n cong: 8773,\n asymp: 8776,\n ne: 8800,\n equiv: 8801,\n le: 8804,\n ge: 8805,\n sub: 8834,\n sup: 8835,\n nsub: 8836,\n sube: 8838,\n supe: 8839,\n oplus: 8853,\n otimes: 8855,\n perp: 8869,\n sdot: 8901,\n lceil: 8968,\n rceil: 8969,\n lfloor: 8970,\n rfloor: 8971,\n lang: 9001,\n rang: 9002,\n loz: 9674,\n spades: 9824,\n clubs: 9827,\n hearts: 9829,\n diams: 9830,\n }\n\n Object.keys(sax.ENTITIES).forEach(function (key) {\n var e = sax.ENTITIES[key]\n var s = typeof e === 'number' ? String.fromCharCode(e) : e\n sax.ENTITIES[key] = s\n })\n\n for (var s in sax.STATE) {\n sax.STATE[sax.STATE[s]] = s\n }\n\n // shorthand\n S = sax.STATE\n\n function emit(parser, event, data) {\n parser[event] && parser[event](data)\n }\n\n function getDeclaredEncoding(body) {\n var match = body && body.match(/(?:^|\\s)encoding\\s*=\\s*(['\"])([^'\"]+)\\1/i)\n return match ? match[2] : null\n }\n\n function normalizeEncodingName(encoding) {\n if (!encoding) {\n return null\n }\n\n return encoding.toLowerCase().replace(/[^a-z0-9]/g, '')\n }\n\n function encodingsMatch(detectedEncoding, declaredEncoding) {\n const detected = normalizeEncodingName(detectedEncoding)\n const declared = normalizeEncodingName(declaredEncoding)\n\n if (!detected || !declared) {\n return true\n }\n\n if (declared === 'utf16') {\n return detected === 'utf16le' || detected === 'utf16be'\n }\n\n return detected === declared\n }\n\n function validateXmlDeclarationEncoding(parser, data) {\n if (\n !parser.strict ||\n !parser.encoding ||\n !data ||\n data.name !== 'xml'\n ) {\n return\n }\n\n var declaredEncoding = getDeclaredEncoding(data.body)\n if (\n declaredEncoding &&\n !encodingsMatch(parser.encoding, declaredEncoding)\n ) {\n strictFail(\n parser,\n 'XML declaration encoding ' +\n declaredEncoding +\n ' does not match detected stream encoding ' +\n parser.encoding.toUpperCase()\n )\n }\n }\n\n function emitNode(parser, nodeType, data) {\n if (parser.textNode) closeText(parser)\n emit(parser, nodeType, data)\n }\n\n function closeText(parser) {\n parser.textNode = textopts(parser.opt, parser.textNode)\n if (parser.textNode) emit(parser, 'ontext', parser.textNode)\n parser.textNode = ''\n }\n\n function textopts(opt, text) {\n if (opt.trim) text = text.trim()\n if (opt.normalize) text = text.replace(/\\s+/g, ' ')\n return text\n }\n\n function error(parser, er) {\n closeText(parser)\n if (parser.trackPosition) {\n er +=\n '\\nLine: ' +\n parser.line +\n '\\nColumn: ' +\n parser.column +\n '\\nChar: ' +\n parser.c\n }\n er = new Error(er)\n parser.error = er\n emit(parser, 'onerror', er)\n return parser\n }\n\n function end(parser) {\n if (parser.sawRoot && !parser.closedRoot)\n strictFail(parser, 'Unclosed root tag')\n if (\n parser.state !== S.BEGIN &&\n parser.state !== S.BEGIN_WHITESPACE &&\n parser.state !== S.TEXT\n ) {\n error(parser, 'Unexpected end')\n }\n closeText(parser)\n parser.c = ''\n parser.closed = true\n emit(parser, 'onend')\n SAXParser.call(parser, parser.strict, parser.opt)\n return parser\n }\n\n function strictFail(parser, message) {\n if (typeof parser !== 'object' || !(parser instanceof SAXParser)) {\n throw new Error('bad call to strictFail')\n }\n if (parser.strict) {\n error(parser, message)\n }\n }\n\n function newTag(parser) {\n if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]()\n var parent = parser.tags[parser.tags.length - 1] || parser\n var tag = (parser.tag = { name: parser.tagName, attributes: {} })\n\n // will be overridden if tag contails an xmlns=\"foo\" or xmlns:foo=\"bar\"\n if (parser.opt.xmlns) {\n tag.ns = parent.ns\n }\n parser.attribList.length = 0\n emitNode(parser, 'onopentagstart', tag)\n }\n\n function qname(name, attribute) {\n var i = name.indexOf(':')\n var qualName = i < 0 ? ['', name] : name.split(':')\n var prefix = qualName[0]\n var local = qualName[1]\n\n // <x \"xmlns\"=\"http://foo\">\n if (attribute && name === 'xmlns') {\n prefix = 'xmlns'\n local = ''\n }\n\n return { prefix: prefix, local: local }\n }\n\n function attrib(parser) {\n if (!parser.strict) {\n parser.attribName = parser.attribName[parser.looseCase]()\n }\n\n if (\n parser.attribList.indexOf(parser.attribName) !== -1 ||\n parser.tag.attributes.hasOwnProperty(parser.attribName)\n ) {\n parser.attribName = parser.attribValue = ''\n return\n }\n\n if (parser.opt.xmlns) {\n var qn = qname(parser.attribName, true)\n var prefix = qn.prefix\n var local = qn.local\n\n if (prefix === 'xmlns') {\n // namespace binding attribute. push the binding into scope\n if (local === 'xml' && parser.attribValue !== XML_NAMESPACE) {\n strictFail(\n parser,\n 'xml: prefix must be bound to ' +\n XML_NAMESPACE +\n '\\n' +\n 'Actual: ' +\n parser.attribValue\n )\n } else if (\n local === 'xmlns' &&\n parser.attribValue !== XMLNS_NAMESPACE\n ) {\n strictFail(\n parser,\n 'xmlns: prefix must be bound to ' +\n XMLNS_NAMESPACE +\n '\\n' +\n 'Actual: ' +\n parser.attribValue\n )\n } else {\n var tag = parser.tag\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (tag.ns === parent.ns) {\n tag.ns = Object.create(parent.ns)\n }\n tag.ns[local] = parser.attribValue\n }\n }\n\n // defer onattribute events until all attributes have been seen\n // so any new bindings can take effect. preserve attribute order\n // so deferred events can be emitted in document order\n parser.attribList.push([parser.attribName, parser.attribValue])\n } else {\n // in non-xmlns mode, we can emit the event right away\n parser.tag.attributes[parser.attribName] = parser.attribValue\n emitNode(parser, 'onattribute', {\n name: parser.attribName,\n value: parser.attribValue,\n })\n }\n\n parser.attribName = parser.attribValue = ''\n }\n\n function openTag(parser, selfClosing) {\n if (parser.opt.xmlns) {\n // emit namespace binding events\n var tag = parser.tag\n\n // add namespace info to tag\n var qn = qname(parser.tagName)\n tag.prefix = qn.prefix\n tag.local = qn.local\n tag.uri = tag.ns[qn.prefix] || ''\n\n if (tag.prefix && !tag.uri) {\n strictFail(\n parser,\n 'Unbound namespace prefix: ' + JSON.stringify(parser.tagName)\n )\n tag.uri = qn.prefix\n }\n\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (tag.ns && parent.ns !== tag.ns) {\n Object.keys(tag.ns).forEach(function (p) {\n emitNode(parser, 'onopennamespace', {\n prefix: p,\n uri: tag.ns[p],\n })\n })\n }\n\n // handle deferred onattribute events\n // Note: do not apply default ns to attributes:\n // http://www.w3.org/TR/REC-xml-names/#defaulting\n for (var i = 0, l = parser.attribList.length; i < l; i++) {\n var nv = parser.attribList[i]\n var name = nv[0]\n var value = nv[1]\n var qualName = qname(name, true)\n var prefix = qualName.prefix\n var local = qualName.local\n var uri = prefix === '' ? '' : tag.ns[prefix] || ''\n var a = {\n name: name,\n value: value,\n prefix: prefix,\n local: local,\n uri: uri,\n }\n\n // if there's any attributes with an undefined namespace,\n // then fail on them now.\n if (prefix && prefix !== 'xmlns' && !uri) {\n strictFail(\n parser,\n 'Unbound namespace prefix: ' + JSON.stringify(prefix)\n )\n a.uri = prefix\n }\n parser.tag.attributes[name] = a\n emitNode(parser, 'onattribute', a)\n }\n parser.attribList.length = 0\n }\n\n parser.tag.isSelfClosing = !!selfClosing\n\n // process the tag\n parser.sawRoot = true\n parser.tags.push(parser.tag)\n emitNode(parser, 'onopentag', parser.tag)\n if (!selfClosing) {\n // special case for <script> in non-strict mode.\n if (!parser.noscript && parser.tagName.toLowerCase() === 'script') {\n parser.state = S.SCRIPT\n } else {\n parser.state = S.TEXT\n }\n parser.tag = null\n parser.tagName = ''\n }\n parser.attribName = parser.attribValue = ''\n parser.attribList.length = 0\n }\n\n function closeTag(parser) {\n if (!parser.tagName) {\n strictFail(parser, 'Weird empty close tag.')\n parser.textNode += '</>'\n parser.state = S.TEXT\n return\n }\n\n if (parser.script) {\n if (parser.tagName !== 'script') {\n parser.script += '</' + parser.tagName + '>'\n parser.tagName = ''\n parser.state = S.SCRIPT\n return\n }\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n }\n\n // first make sure that the closing tag actually exists.\n // <a><b></c></b></a> will close everything, otherwise.\n var t = parser.tags.length\n var tagName = parser.tagName\n if (!parser.strict) {\n tagName = tagName[parser.looseCase]()\n }\n var closeTo = tagName\n while (t--) {\n var close = parser.tags[t]\n if (close.name !== closeTo) {\n // fail the first time in strict mode\n strictFail(parser, 'Unexpected close tag')\n } else {\n break\n }\n }\n\n // didn't find it. we already failed for strict, so just abort.\n if (t < 0) {\n strictFail(parser, 'Unmatched closing tag: ' + parser.tagName)\n parser.textNode += '</' + parser.tagName + '>'\n parser.state = S.TEXT\n return\n }\n parser.tagName = tagName\n var s = parser.tags.length\n while (s-- > t) {\n var tag = (parser.tag = parser.tags.pop())\n parser.tagName = parser.tag.name\n emitNode(parser, 'onclosetag', parser.tagName)\n\n var x = {}\n for (var i in tag.ns) {\n x[i] = tag.ns[i]\n }\n\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (parser.opt.xmlns && tag.ns !== parent.ns) {\n // remove namespace bindings introduced by tag\n Object.keys(tag.ns).forEach(function (p) {\n var n = tag.ns[p]\n emitNode(parser, 'onclosenamespace', { prefix: p, uri: n })\n })\n }\n }\n if (t === 0) parser.closedRoot = true\n parser.tagName = parser.attribValue = parser.attribName = ''\n parser.attribList.length = 0\n parser.state = S.TEXT\n }\n\n function parseEntity(parser) {\n var entity = parser.entity\n var entityLC = entity.toLowerCase()\n var num\n var numStr = ''\n\n if (parser.ENTITIES[entity]) {\n return parser.ENTITIES[entity]\n }\n if (parser.ENTITIES[entityLC]) {\n return parser.ENTITIES[entityLC]\n }\n entity = entityLC\n if (entity.charAt(0) === '#') {\n if (entity.charAt(1) === 'x') {\n entity = entity.slice(2)\n num = parseInt(entity, 16)\n numStr = num.toString(16)\n } else {\n entity = entity.slice(1)\n num = parseInt(entity, 10)\n numStr = num.toString(10)\n }\n }\n entity = entity.replace(/^0+/, '')\n if (\n isNaN(num) ||\n numStr.toLowerCase() !== entity ||\n num < 0 ||\n num > 0x10ffff\n ) {\n strictFail(parser, 'Invalid character entity')\n return '&' + parser.entity + ';'\n }\n\n return String.fromCodePoint(num)\n }\n\n function beginWhiteSpace(parser, c) {\n if (c === '<') {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else if (!isWhitespace(c)) {\n // have to process this as a text node.\n // weird, but happens.\n strictFail(parser, 'Non-whitespace before first tag.')\n parser.textNode = c\n parser.state = S.TEXT\n }\n }\n\n function charAt(chunk, i) {\n var result = ''\n if (i < chunk.length) {\n result = chunk.charAt(i)\n }\n return result\n }\n\n function write(chunk) {\n var parser = this\n if (this.error) {\n throw this.error\n }\n if (parser.closed) {\n return error(\n parser,\n 'Cannot write after close. Assign an onready handler.'\n )\n }\n if (chunk === null) {\n return end(parser)\n }\n if (typeof chunk === 'object') {\n chunk = chunk.toString()\n }\n var i = 0\n var c = ''\n while (true) {\n c = charAt(chunk, i++)\n parser.c = c\n\n if (!c) {\n break\n }\n\n if (parser.trackPosition) {\n parser.position++\n if (c === '\\n') {\n parser.line++\n parser.column = 0\n } else {\n parser.column++\n }\n }\n\n switch (parser.state) {\n case S.BEGIN:\n parser.state = S.BEGIN_WHITESPACE\n if (c === '\\uFEFF') {\n continue\n }\n beginWhiteSpace(parser, c)\n continue\n\n case S.BEGIN_WHITESPACE:\n beginWhiteSpace(parser, c)\n continue\n\n case S.TEXT:\n if (parser.sawRoot && !parser.closedRoot) {\n var starti = i - 1\n while (c && c !== '<' && c !== '&') {\n c = charAt(chunk, i++)\n if (c && parser.trackPosition) {\n parser.position++\n if (c === '\\n') {\n parser.line++\n parser.column = 0\n } else {\n parser.column++\n }\n }\n }\n parser.textNode += chunk.substring(starti, i - 1)\n }\n if (\n c === '<' &&\n !(parser.sawRoot && parser.closedRoot && !parser.strict)\n ) {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else {\n if (\n !isWhitespace(c) &&\n (!parser.sawRoot || parser.closedRoot)\n ) {\n strictFail(parser, 'Text data outside of root node.')\n }\n if (c === '&') {\n parser.state = S.TEXT_ENTITY\n } else {\n parser.textNode += c\n }\n }\n continue\n\n case S.SCRIPT:\n // only non-strict\n if (c === '<') {\n parser.state = S.SCRIPT_ENDING\n } else {\n parser.script += c\n }\n continue\n\n case S.SCRIPT_ENDING:\n if (c === '/') {\n parser.state = S.CLOSE_TAG\n } else {\n parser.script += '<' + c\n parser.state = S.SCRIPT\n }\n continue\n\n case S.OPEN_WAKA:\n // either a /, ?, !, or text is coming next.\n if (c === '!') {\n parser.state = S.SGML_DECL\n parser.sgmlDecl = ''\n } else if (isWhitespace(c)) {\n // wait for it...\n } else if (isMatch(nameStart, c)) {\n parser.state = S.OPEN_TAG\n parser.tagName = c\n } else if (c === '/') {\n parser.state = S.CLOSE_TAG\n parser.tagName = ''\n } else if (c === '?') {\n parser.state = S.PROC_INST\n parser.procInstName = parser.procInstBody = ''\n } else {\n strictFail(parser, 'Unencoded <')\n // if there was some whitespace, then add that in.\n if (parser.startTagPosition + 1 < parser.position) {\n var pad = parser.position - parser.startTagPosition\n c = new Array(pad).join(' ') + c\n }\n parser.textNode += '<' + c\n parser.state = S.TEXT\n }\n continue\n\n case S.SGML_DECL:\n if (parser.sgmlDecl + c === '--') {\n parser.state = S.COMMENT\n parser.comment = ''\n parser.sgmlDecl = ''\n continue\n }\n\n if (\n parser.doctype &&\n parser.doctype !== true &&\n parser.sgmlDecl\n ) {\n parser.state = S.DOCTYPE_DTD\n parser.doctype += '<!' + parser.sgmlDecl + c\n parser.sgmlDecl = ''\n } else if ((parser.sgmlDecl + c).toUpperCase() === CDATA) {\n emitNode(parser, 'onopencdata')\n parser.state = S.CDATA\n parser.sgmlDecl = ''\n parser.cdata = ''\n } else if ((parser.sgmlDecl + c).toUpperCase() === DOCTYPE) {\n parser.state = S.DOCTYPE\n if (parser.doctype || parser.sawRoot) {\n strictFail(\n parser,\n 'Inappropriately located doctype declaration'\n )\n }\n parser.doctype = ''\n parser.sgmlDecl = ''\n } else if (c === '>') {\n emitNode(parser, 'onsgmldeclaration', parser.sgmlDecl)\n parser.sgmlDecl = ''\n parser.state = S.TEXT\n } else if (isQuote(c)) {\n parser.state = S.SGML_DECL_QUOTED\n parser.sgmlDecl += c\n } else {\n parser.sgmlDecl += c\n }\n continue\n\n case S.SGML_DECL_QUOTED:\n if (c === parser.q) {\n parser.state = S.SGML_DECL\n parser.q = ''\n }\n parser.sgmlDecl += c\n continue\n\n case S.DOCTYPE:\n if (c === '>') {\n parser.state = S.TEXT\n emitNode(parser, 'ondoctype', parser.doctype)\n parser.doctype = true // just remember that we saw it.\n } else {\n parser.doctype += c\n if (c === '[') {\n parser.state = S.DOCTYPE_DTD\n } else if (isQuote(c)) {\n parser.state = S.DOCTYPE_QUOTED\n parser.q = c\n }\n }\n continue\n\n case S.DOCTYPE_QUOTED:\n parser.doctype += c\n if (c === parser.q) {\n parser.q = ''\n parser.state = S.DOCTYPE\n }\n continue\n\n case S.DOCTYPE_DTD:\n if (c === ']') {\n parser.doctype += c\n parser.state = S.DOCTYPE\n } else if (c === '<') {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else if (isQuote(c)) {\n parser.doctype += c\n parser.state = S.DOCTYPE_DTD_QUOTED\n parser.q = c\n } else {\n parser.doctype += c\n }\n continue\n\n case S.DOCTYPE_DTD_QUOTED:\n parser.doctype += c\n if (c === parser.q) {\n parser.state = S.DOCTYPE_DTD\n parser.q = ''\n }\n continue\n\n case S.COMMENT:\n if (c === '-') {\n parser.state = S.COMMENT_ENDING\n } else {\n parser.comment += c\n }\n continue\n\n case S.COMMENT_ENDING:\n if (c === '-') {\n parser.state = S.COMMENT_ENDED\n parser.comment = textopts(parser.opt, parser.comment)\n if (parser.comment) {\n emitNode(parser, 'oncomment', parser.comment)\n }\n parser.comment = ''\n } else {\n parser.comment += '-' + c\n parser.state = S.COMMENT\n }\n continue\n\n case S.COMMENT_ENDED:\n if (c !== '>') {\n strictFail(parser, 'Malformed comment')\n // allow <!-- blah -- bloo --> in non-strict mode,\n // which is a comment of \" blah -- bloo \"\n parser.comment += '--' + c\n parser.state = S.COMMENT\n } else if (parser.doctype && parser.doctype !== true) {\n parser.state = S.DOCTYPE_DTD\n } else {\n parser.state = S.TEXT\n }\n continue\n\n case S.CDATA:\n var starti = i - 1\n while (c && c !== ']') {\n c = charAt(chunk, i++)\n if (c && parser.trackPosition) {\n parser.position++\n if (c === '\\n') {\n parser.line++\n parser.column = 0\n } else {\n parser.column++\n }\n }\n }\n parser.cdata += chunk.substring(starti, i - 1)\n if (c === ']') {\n parser.state = S.CDATA_ENDING\n }\n continue\n\n case S.CDATA_ENDING:\n if (c === ']') {\n parser.state = S.CDATA_ENDING_2\n } else {\n parser.cdata += ']' + c\n parser.state = S.CDATA\n }\n continue\n\n case S.CDATA_ENDING_2:\n if (c === '>') {\n if (parser.cdata) {\n emitNode(parser, 'oncdata', parser.cdata)\n }\n emitNode(parser, 'onclosecdata')\n parser.cdata = ''\n parser.state = S.TEXT\n } else if (c === ']') {\n parser.cdata += ']'\n } else {\n parser.cdata += ']]' + c\n parser.state = S.CDATA\n }\n continue\n\n case S.PROC_INST:\n if (c === '?') {\n parser.state = S.PROC_INST_ENDING\n } else if (isWhitespace(c)) {\n parser.state = S.PROC_INST_BODY\n } else {\n parser.procInstName += c\n }\n continue\n\n case S.PROC_INST_BODY:\n if (!parser.procInstBody && isWhitespace(c)) {\n continue\n } else if (c === '?') {\n parser.state = S.PROC_INST_ENDING\n } else {\n parser.procInstBody += c\n }\n continue\n\n case S.PROC_INST_ENDING:\n if (c === '>') {\n const procInstEndData = {\n name: parser.procInstName,\n body: parser.procInstBody,\n }\n validateXmlDeclarationEncoding(parser, procInstEndData)\n emitNode(parser, 'onprocessinginstruction', procInstEndData)\n parser.procInstName = parser.procInstBody = ''\n parser.state = S.TEXT\n } else {\n parser.procInstBody += '?' + c\n parser.state = S.PROC_INST_BODY\n }\n continue\n\n case S.OPEN_TAG:\n if (isMatch(nameBody, c)) {\n parser.tagName += c\n } else {\n newTag(parser)\n if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else {\n if (!isWhitespace(c)) {\n strictFail(parser, 'Invalid character in tag name')\n }\n parser.state = S.ATTRIB\n }\n }\n continue\n\n case S.OPEN_TAG_SLASH:\n if (c === '>') {\n openTag(parser, true)\n closeTag(parser)\n } else {\n strictFail(\n parser,\n 'Forward-slash in opening tag not followed by >'\n )\n parser.state = S.ATTRIB\n }\n continue\n\n case S.ATTRIB:\n // haven't read the attribute name yet.\n if (isWhitespace(c)) {\n continue\n } else if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else if (isMatch(nameStart, c)) {\n parser.attribName = c\n parser.attribValue = ''\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_NAME:\n if (c === '=') {\n parser.state = S.ATTRIB_VALUE\n } else if (c === '>') {\n strictFail(parser, 'Attribute without value')\n parser.attribValue = parser.attribName\n attrib(parser)\n openTag(parser)\n } else if (isWhitespace(c)) {\n parser.state = S.ATTRIB_NAME_SAW_WHITE\n } else if (isMatch(nameBody, c)) {\n parser.attribName += c\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_NAME_SAW_WHITE:\n if (c === '=') {\n parser.state = S.ATTRIB_VALUE\n } else if (isWhitespace(c)) {\n continue\n } else {\n strictFail(parser, 'Attribute without value')\n parser.tag.attributes[parser.attribName] = ''\n parser.attribValue = ''\n emitNode(parser, 'onattribute', {\n name: parser.attribName,\n value: '',\n })\n parser.attribName = ''\n if (c === '>') {\n openTag(parser)\n } else if (isMatch(nameStart, c)) {\n parser.attribName = c\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n parser.state = S.ATTRIB\n }\n }\n continue\n\n case S.ATTRIB_VALUE:\n if (isWhitespace(c)) {\n continue\n } else if (isQuote(c)) {\n parser.q = c\n parser.state = S.ATTRIB_VALUE_QUOTED\n } else {\n if (!parser.opt.unquotedAttributeValues) {\n error(parser, 'Unquoted attribute value')\n }\n parser.state = S.ATTRIB_VALUE_UNQUOTED\n parser.attribValue = c\n }\n continue\n\n case S.ATTRIB_VALUE_QUOTED:\n if (c !== parser.q) {\n if (c === '&') {\n parser.state = S.ATTRIB_VALUE_ENTITY_Q\n } else {\n parser.attribValue += c\n }\n continue\n }\n attrib(parser)\n parser.q = ''\n parser.state = S.ATTRIB_VALUE_CLOSED\n continue\n\n case S.ATTRIB_VALUE_CLOSED:\n if (isWhitespace(c)) {\n parser.state = S.ATTRIB\n } else if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else if (isMatch(nameStart, c)) {\n strictFail(parser, 'No whitespace between attributes')\n parser.attribName = c\n parser.attribValue = ''\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_VALUE_UNQUOTED:\n if (!isAttribEnd(c)) {\n if (c === '&') {\n parser.state = S.ATTRIB_VALUE_ENTITY_U\n } else {\n parser.attribValue += c\n }\n continue\n }\n attrib(parser)\n if (c === '>') {\n openTag(parser)\n } else {\n parser.state = S.ATTRIB\n }\n continue\n\n case S.CLOSE_TAG:\n if (!parser.tagName) {\n if (isWhitespace(c)) {\n continue\n } else if (notMatch(nameStart, c)) {\n if (parser.script) {\n parser.script += '</' + c\n parser.state = S.SCRIPT\n } else {\n strictFail(parser, 'Invalid tagname in closing tag.')\n }\n } else {\n parser.tagName = c\n }\n } else if (c === '>') {\n closeTag(parser)\n } else if (isMatch(nameBody, c)) {\n parser.tagName += c\n } else if (parser.script) {\n parser.script += '</' + parser.tagName + c\n parser.tagName = ''\n parser.state = S.SCRIPT\n } else {\n if (!isWhitespace(c)) {\n strictFail(parser, 'Invalid tagname in closing tag')\n }\n parser.state = S.CLOSE_TAG_SAW_WHITE\n }\n continue\n\n case S.CLOSE_TAG_SAW_WHITE:\n if (isWhitespace(c)) {\n continue\n }\n if (c === '>') {\n closeTag(parser)\n } else {\n strictFail(parser, 'Invalid characters in closing tag')\n }\n continue\n\n case S.TEXT_ENTITY:\n case S.ATTRIB_VALUE_ENTITY_Q:\n case S.ATTRIB_VALUE_ENTITY_U:\n var returnState\n var buffer\n switch (parser.state) {\n case S.TEXT_ENTITY:\n returnState = S.TEXT\n buffer = 'textNode'\n break\n\n case S.ATTRIB_VALUE_ENTITY_Q:\n returnState = S.ATTRIB_VALUE_QUOTED\n buffer = 'attribValue'\n break\n\n case S.ATTRIB_VALUE_ENTITY_U:\n returnState = S.ATTRIB_VALUE_UNQUOTED\n buffer = 'attribValue'\n break\n }\n\n if (c === ';') {\n var parsedEntity = parseEntity(parser)\n if (\n parser.opt.unparsedEntities &&\n !Object.values(sax.XML_ENTITIES).includes(parsedEntity)\n ) {\n if ((parser.entityCount += 1) > parser.opt.maxEntityCount) {\n error(\n parser,\n 'Parsed entity count exceeds max entity count'\n )\n }\n\n if ((parser.entityDepth += 1) > parser.opt.maxEntityDepth) {\n error(\n parser,\n 'Parsed entity depth exceeds max entity depth'\n )\n }\n\n parser.entity = ''\n parser.state = returnState\n parser.write(parsedEntity)\n parser.entityDepth -= 1\n } else {\n parser[buffer] += parsedEntity\n parser.entity = ''\n parser.state = returnState\n }\n } else if (\n isMatch(parser.entity.length ? entityBody : entityStart, c)\n ) {\n parser.entity += c\n } else {\n strictFail(parser, 'Invalid character in entity name')\n parser[buffer] += '&' + parser.entity + c\n parser.entity = ''\n parser.state = returnState\n }\n\n continue\n\n default: /* istanbul ignore next */ {\n throw new Error(parser, 'Unknown state: ' + parser.state)\n }\n }\n } // while\n\n if (parser.position >= parser.bufferCheckPosition) {\n checkBufferLength(parser)\n }\n return parser\n }\n\n /*! http://mths.be/fromcodepoint v0.1.0 by @mathias */\n /* istanbul ignore next */\n if (!String.fromCodePoint) {\n ;(function () {\n var stringFromCharCode = String.fromCharCode\n var floor = Math.floor\n var fromCodePoint = function () {\n var MAX_SIZE = 0x4000\n var codeUnits = []\n var highSurrogate\n var lowSurrogate\n var index = -1\n var length = arguments.length\n if (!length) {\n return ''\n }\n var result = ''\n while (++index < length) {\n var codePoint = Number(arguments[index])\n if (\n !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 0x10ffff || // not a valid Unicode code point\n floor(codePoint) !== codePoint // not an integer\n ) {\n throw RangeError('Invalid code point: ' + codePoint)\n }\n if (codePoint <= 0xffff) {\n // BMP code point\n codeUnits.push(codePoint)\n } else {\n // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000\n highSurrogate = (codePoint >> 10) + 0xd800\n lowSurrogate = (codePoint % 0x400) + 0xdc00\n codeUnits.push(highSurrogate, lowSurrogate)\n }\n if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n result += stringFromCharCode.apply(null, codeUnits)\n codeUnits.length = 0\n }\n }\n return result\n }\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(String, 'fromCodePoint', {\n value: fromCodePoint,\n configurable: true,\n writable: true,\n })\n } else {\n String.fromCodePoint = fromCodePoint\n }\n })()\n }\n})(typeof exports === 'undefined' ? (this.sax = {}) : exports)\n","//////////////////////////////////////////\n// Defines mappings between content-type\n// and the appropriate parsers.\n//////////////////////////////////////////\n\nvar Transform = require('stream').Transform;\nvar sax = require('sax');\n\nfunction parseXML(str, cb) {\n var obj, current, parser = sax.parser(true, { trim: true, lowercase: true })\n parser.onerror = parser.onend = done;\n\n function done(err) {\n parser.onerror = parser.onend = function() { }\n cb(err, obj)\n }\n\n function newElement(name, attributes) {\n return {\n name: name || '',\n value: '',\n attributes: attributes || {},\n children: []\n }\n }\n\n parser.oncdata = parser.ontext = function(t) {\n if (current) current.value += t\n }\n\n parser.onopentag = function(node) {\n var element = newElement(node.name, node.attributes)\n if (current) {\n element.parent = current\n current.children.push(element)\n } else { // root object\n obj = element\n }\n\n current = element\n };\n\n parser.onclosetag = function() {\n if (typeof current.parent !== 'undefined') {\n var just_closed = current\n current = current.parent\n delete just_closed.parent\n }\n }\n\n parser.write(str).close()\n}\n\nfunction parserFactory(name, fn) {\n\n function parser() {\n var chunks = [],\n stream = new Transform({ objectMode: true });\n\n // Buffer all our data\n stream._transform = function(chunk, encoding, done) {\n chunks.push(chunk);\n done();\n }\n\n // And call the parser when all is there.\n stream._flush = function(done) {\n var self = this,\n data = Buffer.concat(chunks);\n\n try {\n fn(data, function(err, result) {\n if (err) throw err;\n self.push(result);\n });\n } catch (err) {\n self.push(data); // just pass the original data\n } finally {\n done();\n }\n }\n\n return stream;\n }\n\n return { fn: parser, name: name };\n}\n\nvar parsers = {}\n\nfunction buildParser(name, types, fn) {\n var parser = parserFactory(name, fn);\n types.forEach(function(type) {\n parsers[type] = parser;\n })\n}\n\nbuildParser('json', [\n 'application/json',\n 'text/javascript',\n 'application/vnd.api+json'\n], function(buffer, cb) {\n var err, data;\n try { data = JSON.parse(buffer); } catch (e) { err = e; }\n cb(err, data);\n});\n\nbuildParser('xml', [\n 'text/xml',\n 'application/xml',\n 'application/rdf+xml',\n 'application/rss+xml',\n 'application/atom+xml'\n], function(buffer, cb) {\n parseXML(buffer.toString(), function(err, obj) {\n cb(err, obj)\n })\n});\n\nmodule.exports = parsers;\nmodule.exports.use = buildParser;\n","'use strict'\n\n// Use non-'node:' prefixed require to avoid Webpack errors.\n// eslint-disable-next-line n/prefer-node-protocol\nconst builtinBufferExports = require('buffer')\n\nconst builtinBufferExportsDescMap = Object.fromEntries(\n Object.entries(Object.getOwnPropertyDescriptors(builtinBufferExports)).filter(\n ({ 0: key }) => key !== 'Buffer' && key !== 'SlowBuffer',\n ),\n)\n\nmodule.exports = {\n builtinBufferExportsDescMap,\n}\n","'use strict'\n\nconst {\n Blob: BlobCtor,\n Buffer: UnsafeBuffer,\n File: FileCtor,\n INSPECT_MAX_BYTES,\n atob: atobFn,\n btoa: btoaFn,\n constants,\n isAscii,\n isUtf8,\n kMaxLength,\n kStringMaxLength,\n resolveObjectURL,\n transcode,\n // Use non-'node:' prefixed require to avoid Webpack errors.\n // eslint-disable-next-line n/prefer-node-protocol\n} = require('buffer')\n\nconst { builtinBufferExportsDescMap } = require('./shared')\n\nconst Safer = {\n prototype: UnsafeBuffer.prototype,\n}\nfor (const key of Reflect.ownKeys(UnsafeBuffer)) {\n if (\n key !== 'allocUnsafe' &&\n key !== 'allocUnsafeSlow' &&\n key !== 'prototype'\n ) {\n Safer[key] = UnsafeBuffer[key]\n }\n}\n// Give Node ESM/CJS interop a chance to detect names of exports.\nmodule.exports = {\n INSPECT_MAX_BYTES,\n Blob: BlobCtor,\n File: FileCtor,\n atob: atobFn,\n btoa: btoaFn,\n constants,\n isAscii,\n isUtf8,\n kMaxLength,\n kStringMaxLength,\n resolveObjectURL,\n transcode,\n Buffer: Safer,\n}\n// Redefine INSPECT_MAX_BYTES, Blob, File, and resolveObjectURL as their\n// builtin getter/setters.\nObject.defineProperties(module.exports, builtinBufferExportsDescMap)\n","\"use strict\";\n\nvar BOMChar = '\\uFEFF';\n\nexports.PrependBOM = PrependBOMWrapper\nfunction PrependBOMWrapper(encoder, options) {\n this.encoder = encoder;\n this.addBOM = true;\n}\n\nPrependBOMWrapper.prototype.write = function(str) {\n if (this.addBOM) {\n str = BOMChar + str;\n this.addBOM = false;\n }\n\n return this.encoder.write(str);\n}\n\nPrependBOMWrapper.prototype.end = function() {\n return this.encoder.end();\n}\n\n\n//------------------------------------------------------------------------------\n\nexports.StripBOM = StripBOMWrapper;\nfunction StripBOMWrapper(decoder, options) {\n this.decoder = decoder;\n this.pass = false;\n this.options = options || {};\n}\n\nStripBOMWrapper.prototype.write = function(buf) {\n var res = this.decoder.write(buf);\n if (this.pass || !res)\n return res;\n\n if (res[0] === BOMChar) {\n res = res.slice(1);\n if (typeof this.options.stripBOM === 'function')\n this.options.stripBOM();\n }\n\n this.pass = true;\n return res;\n}\n\nStripBOMWrapper.prototype.end = function() {\n return this.decoder.end();\n}\n\n","\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Export Node.js internal encodings.\n\nmodule.exports = {\n // Encodings\n utf8: { type: \"_internal\", bomAware: true},\n cesu8: { type: \"_internal\", bomAware: true},\n unicode11utf8: \"utf8\",\n\n ucs2: { type: \"_internal\", bomAware: true},\n utf16le: \"ucs2\",\n\n binary: { type: \"_internal\" },\n base64: { type: \"_internal\" },\n hex: { type: \"_internal\" },\n\n // Codec.\n _internal: InternalCodec,\n};\n\n//------------------------------------------------------------------------------\n\nfunction InternalCodec(codecOptions, iconv) {\n this.enc = codecOptions.encodingName;\n this.bomAware = codecOptions.bomAware;\n\n if (this.enc === \"base64\")\n this.encoder = InternalEncoderBase64;\n else if (this.enc === \"cesu8\") {\n this.enc = \"utf8\"; // Use utf8 for decoding.\n this.encoder = InternalEncoderCesu8;\n\n // Add decoder for versions of Node not supporting CESU-8\n if (Buffer.from('eda0bdedb2a9', 'hex').toString() !== '💩') {\n this.decoder = InternalDecoderCesu8;\n this.defaultCharUnicode = iconv.defaultCharUnicode;\n }\n }\n}\n\nInternalCodec.prototype.encoder = InternalEncoder;\nInternalCodec.prototype.decoder = InternalDecoder;\n\n//------------------------------------------------------------------------------\n\n// We use node.js internal decoder. Its signature is the same as ours.\nvar StringDecoder = require('string_decoder').StringDecoder;\n\nif (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method.\n StringDecoder.prototype.end = function() {};\n\n\nfunction InternalDecoder(options, codec) {\n StringDecoder.call(this, codec.enc);\n}\n\nInternalDecoder.prototype = StringDecoder.prototype;\n\n\n//------------------------------------------------------------------------------\n// Encoder is mostly trivial\n\nfunction InternalEncoder(options, codec) {\n this.enc = codec.enc;\n}\n\nInternalEncoder.prototype.write = function(str) {\n return Buffer.from(str, this.enc);\n}\n\nInternalEncoder.prototype.end = function() {\n}\n\n\n//------------------------------------------------------------------------------\n// Except base64 encoder, which must keep its state.\n\nfunction InternalEncoderBase64(options, codec) {\n this.prevStr = '';\n}\n\nInternalEncoderBase64.prototype.write = function(str) {\n str = this.prevStr + str;\n var completeQuads = str.length - (str.length % 4);\n this.prevStr = str.slice(completeQuads);\n str = str.slice(0, completeQuads);\n\n return Buffer.from(str, \"base64\");\n}\n\nInternalEncoderBase64.prototype.end = function() {\n return Buffer.from(this.prevStr, \"base64\");\n}\n\n\n//------------------------------------------------------------------------------\n// CESU-8 encoder is also special.\n\nfunction InternalEncoderCesu8(options, codec) {\n}\n\nInternalEncoderCesu8.prototype.write = function(str) {\n var buf = Buffer.alloc(str.length * 3), bufIdx = 0;\n for (var i = 0; i < str.length; i++) {\n var charCode = str.charCodeAt(i);\n // Naive implementation, but it works because CESU-8 is especially easy\n // to convert from UTF-16 (which all JS strings are encoded in).\n if (charCode < 0x80)\n buf[bufIdx++] = charCode;\n else if (charCode < 0x800) {\n buf[bufIdx++] = 0xC0 + (charCode >>> 6);\n buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n }\n else { // charCode will always be < 0x10000 in javascript.\n buf[bufIdx++] = 0xE0 + (charCode >>> 12);\n buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f);\n buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n }\n }\n return buf.slice(0, bufIdx);\n}\n\nInternalEncoderCesu8.prototype.end = function() {\n}\n\n//------------------------------------------------------------------------------\n// CESU-8 decoder is not implemented in Node v4.0+\n\nfunction InternalDecoderCesu8(options, codec) {\n this.acc = 0;\n this.contBytes = 0;\n this.accBytes = 0;\n this.defaultCharUnicode = codec.defaultCharUnicode;\n}\n\nInternalDecoderCesu8.prototype.write = function(buf) {\n var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, \n res = '';\n for (var i = 0; i < buf.length; i++) {\n var curByte = buf[i];\n if ((curByte & 0xC0) !== 0x80) { // Leading byte\n if (contBytes > 0) { // Previous code is invalid\n res += this.defaultCharUnicode;\n contBytes = 0;\n }\n\n if (curByte < 0x80) { // Single-byte code\n res += String.fromCharCode(curByte);\n } else if (curByte < 0xE0) { // Two-byte code\n acc = curByte & 0x1F;\n contBytes = 1; accBytes = 1;\n } else if (curByte < 0xF0) { // Three-byte code\n acc = curByte & 0x0F;\n contBytes = 2; accBytes = 1;\n } else { // Four or more are not supported for CESU-8.\n res += this.defaultCharUnicode;\n }\n } else { // Continuation byte\n if (contBytes > 0) { // We're waiting for it.\n acc = (acc << 6) | (curByte & 0x3f);\n contBytes--; accBytes++;\n if (contBytes === 0) {\n // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80)\n if (accBytes === 2 && acc < 0x80 && acc > 0)\n res += this.defaultCharUnicode;\n else if (accBytes === 3 && acc < 0x800)\n res += this.defaultCharUnicode;\n else\n // Actually add character.\n res += String.fromCharCode(acc);\n }\n } else { // Unexpected continuation byte\n res += this.defaultCharUnicode;\n }\n }\n }\n this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes;\n return res;\n}\n\nInternalDecoderCesu8.prototype.end = function() {\n var res = 0;\n if (this.contBytes > 0)\n res += this.defaultCharUnicode;\n return res;\n}\n","\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js\n\n// == UTF16-BE codec. ==========================================================\n\nexports.utf16be = Utf16BECodec;\nfunction Utf16BECodec() {\n}\n\nUtf16BECodec.prototype.encoder = Utf16BEEncoder;\nUtf16BECodec.prototype.decoder = Utf16BEDecoder;\nUtf16BECodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf16BEEncoder() {\n}\n\nUtf16BEEncoder.prototype.write = function(str) {\n var buf = Buffer.from(str, 'ucs2');\n for (var i = 0; i < buf.length; i += 2) {\n var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp;\n }\n return buf;\n}\n\nUtf16BEEncoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf16BEDecoder() {\n this.overflowByte = -1;\n}\n\nUtf16BEDecoder.prototype.write = function(buf) {\n if (buf.length == 0)\n return '';\n\n var buf2 = Buffer.alloc(buf.length + 1),\n i = 0, j = 0;\n\n if (this.overflowByte !== -1) {\n buf2[0] = buf[0];\n buf2[1] = this.overflowByte;\n i = 1; j = 2;\n }\n\n for (; i < buf.length-1; i += 2, j+= 2) {\n buf2[j] = buf[i+1];\n buf2[j+1] = buf[i];\n }\n\n this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1;\n\n return buf2.slice(0, j).toString('ucs2');\n}\n\nUtf16BEDecoder.prototype.end = function() {\n}\n\n\n// == UTF-16 codec =============================================================\n// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic.\n// Defaults to UTF-16LE, as it's prevalent and default in Node.\n// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le\n// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'});\n\n// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false).\n\nexports.utf16 = Utf16Codec;\nfunction Utf16Codec(codecOptions, iconv) {\n this.iconv = iconv;\n}\n\nUtf16Codec.prototype.encoder = Utf16Encoder;\nUtf16Codec.prototype.decoder = Utf16Decoder;\n\n\n// -- Encoding (pass-through)\n\nfunction Utf16Encoder(options, codec) {\n options = options || {};\n if (options.addBOM === undefined)\n options.addBOM = true;\n this.encoder = codec.iconv.getEncoder('utf-16le', options);\n}\n\nUtf16Encoder.prototype.write = function(str) {\n return this.encoder.write(str);\n}\n\nUtf16Encoder.prototype.end = function() {\n return this.encoder.end();\n}\n\n\n// -- Decoding\n\nfunction Utf16Decoder(options, codec) {\n this.decoder = null;\n this.initialBytes = [];\n this.initialBytesLen = 0;\n\n this.options = options || {};\n this.iconv = codec.iconv;\n}\n\nUtf16Decoder.prototype.write = function(buf) {\n if (!this.decoder) {\n // Codec is not chosen yet. Accumulate initial bytes.\n this.initialBytes.push(buf);\n this.initialBytesLen += buf.length;\n \n if (this.initialBytesLen < 16) // We need more bytes to use space heuristic (see below)\n return '';\n\n // We have enough bytes -> detect endianness.\n var buf = Buffer.concat(this.initialBytes),\n encoding = detectEncoding(buf, this.options.defaultEncoding);\n this.decoder = this.iconv.getDecoder(encoding, this.options);\n this.initialBytes.length = this.initialBytesLen = 0;\n }\n\n return this.decoder.write(buf);\n}\n\nUtf16Decoder.prototype.end = function() {\n if (!this.decoder) {\n var buf = Buffer.concat(this.initialBytes),\n encoding = detectEncoding(buf, this.options.defaultEncoding);\n this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n var res = this.decoder.write(buf),\n trail = this.decoder.end();\n\n return trail ? (res + trail) : res;\n }\n return this.decoder.end();\n}\n\nfunction detectEncoding(buf, defaultEncoding) {\n var enc = defaultEncoding || 'utf-16le';\n\n if (buf.length >= 2) {\n // Check BOM.\n if (buf[0] == 0xFE && buf[1] == 0xFF) // UTF-16BE BOM\n enc = 'utf-16be';\n else if (buf[0] == 0xFF && buf[1] == 0xFE) // UTF-16LE BOM\n enc = 'utf-16le';\n else {\n // No BOM found. Try to deduce encoding from initial content.\n // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon.\n // So, we count ASCII as if it was LE or BE, and decide from that.\n var asciiCharsLE = 0, asciiCharsBE = 0, // Counts of chars in both positions\n _len = Math.min(buf.length - (buf.length % 2), 64); // Len is always even.\n\n for (var i = 0; i < _len; i += 2) {\n if (buf[i] === 0 && buf[i+1] !== 0) asciiCharsBE++;\n if (buf[i] !== 0 && buf[i+1] === 0) asciiCharsLE++;\n }\n\n if (asciiCharsBE > asciiCharsLE)\n enc = 'utf-16be';\n else if (asciiCharsBE < asciiCharsLE)\n enc = 'utf-16le';\n }\n }\n\n return enc;\n}\n\n\n","\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152\n// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3\n\nexports.utf7 = Utf7Codec;\nexports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7\nfunction Utf7Codec(codecOptions, iconv) {\n this.iconv = iconv;\n};\n\nUtf7Codec.prototype.encoder = Utf7Encoder;\nUtf7Codec.prototype.decoder = Utf7Decoder;\nUtf7Codec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nvar nonDirectChars = /[^A-Za-z0-9'\\(\\),-\\.\\/:\\? \\n\\r\\t]+/g;\n\nfunction Utf7Encoder(options, codec) {\n this.iconv = codec.iconv;\n}\n\nUtf7Encoder.prototype.write = function(str) {\n // Naive implementation.\n // Non-direct chars are encoded as \"+<base64>-\"; single \"+\" char is encoded as \"+-\".\n return Buffer.from(str.replace(nonDirectChars, function(chunk) {\n return \"+\" + (chunk === '+' ? '' : \n this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) \n + \"-\";\n }.bind(this)));\n}\n\nUtf7Encoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf7Decoder(options, codec) {\n this.iconv = codec.iconv;\n this.inBase64 = false;\n this.base64Accum = '';\n}\n\nvar base64Regex = /[A-Za-z0-9\\/+]/;\nvar base64Chars = [];\nfor (var i = 0; i < 256; i++)\n base64Chars[i] = base64Regex.test(String.fromCharCode(i));\n\nvar plusChar = '+'.charCodeAt(0), \n minusChar = '-'.charCodeAt(0),\n andChar = '&'.charCodeAt(0);\n\nUtf7Decoder.prototype.write = function(buf) {\n var res = \"\", lastI = 0,\n inBase64 = this.inBase64,\n base64Accum = this.base64Accum;\n\n // The decoder is more involved as we must handle chunks in stream.\n\n for (var i = 0; i < buf.length; i++) {\n if (!inBase64) { // We're in direct mode.\n // Write direct chars until '+'\n if (buf[i] == plusChar) {\n res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n lastI = i+1;\n inBase64 = true;\n }\n } else { // We decode base64.\n if (!base64Chars[buf[i]]) { // Base64 ended.\n if (i == lastI && buf[i] == minusChar) {// \"+-\" -> \"+\"\n res += \"+\";\n } else {\n var b64str = base64Accum + buf.slice(lastI, i).toString();\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n if (buf[i] != minusChar) // Minus is absorbed after base64.\n i--;\n\n lastI = i+1;\n inBase64 = false;\n base64Accum = '';\n }\n }\n }\n\n if (!inBase64) {\n res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n } else {\n var b64str = base64Accum + buf.slice(lastI).toString();\n\n var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n b64str = b64str.slice(0, canBeDecoded);\n\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n this.inBase64 = inBase64;\n this.base64Accum = base64Accum;\n\n return res;\n}\n\nUtf7Decoder.prototype.end = function() {\n var res = \"\";\n if (this.inBase64 && this.base64Accum.length > 0)\n res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n this.inBase64 = false;\n this.base64Accum = '';\n return res;\n}\n\n\n// UTF-7-IMAP codec.\n// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3)\n// Differences:\n// * Base64 part is started by \"&\" instead of \"+\"\n// * Direct characters are 0x20-0x7E, except \"&\" (0x26)\n// * In Base64, \",\" is used instead of \"/\"\n// * Base64 must not be used to represent direct characters.\n// * No implicit shift back from Base64 (should always end with '-')\n// * String must end in non-shifted position.\n// * \"-&\" while in base64 is not allowed.\n\n\nexports.utf7imap = Utf7IMAPCodec;\nfunction Utf7IMAPCodec(codecOptions, iconv) {\n this.iconv = iconv;\n};\n\nUtf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder;\nUtf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder;\nUtf7IMAPCodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf7IMAPEncoder(options, codec) {\n this.iconv = codec.iconv;\n this.inBase64 = false;\n this.base64Accum = Buffer.alloc(6);\n this.base64AccumIdx = 0;\n}\n\nUtf7IMAPEncoder.prototype.write = function(str) {\n var inBase64 = this.inBase64,\n base64Accum = this.base64Accum,\n base64AccumIdx = this.base64AccumIdx,\n buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0;\n\n for (var i = 0; i < str.length; i++) {\n var uChar = str.charCodeAt(i);\n if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'.\n if (inBase64) {\n if (base64AccumIdx > 0) {\n bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n base64AccumIdx = 0;\n }\n\n buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n inBase64 = false;\n }\n\n if (!inBase64) {\n buf[bufIdx++] = uChar; // Write direct character\n\n if (uChar === andChar) // Ampersand -> '&-'\n buf[bufIdx++] = minusChar;\n }\n\n } else { // Non-direct character\n if (!inBase64) {\n buf[bufIdx++] = andChar; // Write '&', then go to base64 mode.\n inBase64 = true;\n }\n if (inBase64) {\n base64Accum[base64AccumIdx++] = uChar >> 8;\n base64Accum[base64AccumIdx++] = uChar & 0xFF;\n\n if (base64AccumIdx == base64Accum.length) {\n bufIdx += buf.write(base64Accum.toString('base64').replace(/\\//g, ','), bufIdx);\n base64AccumIdx = 0;\n }\n }\n }\n }\n\n this.inBase64 = inBase64;\n this.base64AccumIdx = base64AccumIdx;\n\n return buf.slice(0, bufIdx);\n}\n\nUtf7IMAPEncoder.prototype.end = function() {\n var buf = Buffer.alloc(10), bufIdx = 0;\n if (this.inBase64) {\n if (this.base64AccumIdx > 0) {\n bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n this.base64AccumIdx = 0;\n }\n\n buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n this.inBase64 = false;\n }\n\n return buf.slice(0, bufIdx);\n}\n\n\n// -- Decoding\n\nfunction Utf7IMAPDecoder(options, codec) {\n this.iconv = codec.iconv;\n this.inBase64 = false;\n this.base64Accum = '';\n}\n\nvar base64IMAPChars = base64Chars.slice();\nbase64IMAPChars[','.charCodeAt(0)] = true;\n\nUtf7IMAPDecoder.prototype.write = function(buf) {\n var res = \"\", lastI = 0,\n inBase64 = this.inBase64,\n base64Accum = this.base64Accum;\n\n // The decoder is more involved as we must handle chunks in stream.\n // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end).\n\n for (var i = 0; i < buf.length; i++) {\n if (!inBase64) { // We're in direct mode.\n // Write direct chars until '&'\n if (buf[i] == andChar) {\n res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n lastI = i+1;\n inBase64 = true;\n }\n } else { // We decode base64.\n if (!base64IMAPChars[buf[i]]) { // Base64 ended.\n if (i == lastI && buf[i] == minusChar) { // \"&-\" -> \"&\"\n res += \"&\";\n } else {\n var b64str = base64Accum + buf.slice(lastI, i).toString().replace(/,/g, '/');\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n if (buf[i] != minusChar) // Minus may be absorbed after base64.\n i--;\n\n lastI = i+1;\n inBase64 = false;\n base64Accum = '';\n }\n }\n }\n\n if (!inBase64) {\n res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n } else {\n var b64str = base64Accum + buf.slice(lastI).toString().replace(/,/g, '/');\n\n var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n b64str = b64str.slice(0, canBeDecoded);\n\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n this.inBase64 = inBase64;\n this.base64Accum = base64Accum;\n\n return res;\n}\n\nUtf7IMAPDecoder.prototype.end = function() {\n var res = \"\";\n if (this.inBase64 && this.base64Accum.length > 0)\n res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n this.inBase64 = false;\n this.base64Accum = '';\n return res;\n}\n\n\n","\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that\n// correspond to encoded bytes (if 128 - then lower half is ASCII). \n\nexports._sbcs = SBCSCodec;\nfunction SBCSCodec(codecOptions, iconv) {\n if (!codecOptions)\n throw new Error(\"SBCS codec is called without the data.\")\n \n // Prepare char buffer for decoding.\n if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256))\n throw new Error(\"Encoding '\"+codecOptions.type+\"' has incorrect 'chars' (must be of len 128 or 256)\");\n \n if (codecOptions.chars.length === 128) {\n var asciiString = \"\";\n for (var i = 0; i < 128; i++)\n asciiString += String.fromCharCode(i);\n codecOptions.chars = asciiString + codecOptions.chars;\n }\n\n this.decodeBuf = Buffer.from(codecOptions.chars, 'ucs2');\n \n // Encoding buffer.\n var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0));\n\n for (var i = 0; i < codecOptions.chars.length; i++)\n encodeBuf[codecOptions.chars.charCodeAt(i)] = i;\n\n this.encodeBuf = encodeBuf;\n}\n\nSBCSCodec.prototype.encoder = SBCSEncoder;\nSBCSCodec.prototype.decoder = SBCSDecoder;\n\n\nfunction SBCSEncoder(options, codec) {\n this.encodeBuf = codec.encodeBuf;\n}\n\nSBCSEncoder.prototype.write = function(str) {\n var buf = Buffer.alloc(str.length);\n for (var i = 0; i < str.length; i++)\n buf[i] = this.encodeBuf[str.charCodeAt(i)];\n \n return buf;\n}\n\nSBCSEncoder.prototype.end = function() {\n}\n\n\nfunction SBCSDecoder(options, codec) {\n this.decodeBuf = codec.decodeBuf;\n}\n\nSBCSDecoder.prototype.write = function(buf) {\n // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.\n var decodeBuf = this.decodeBuf;\n var newBuf = Buffer.alloc(buf.length*2);\n var idx1 = 0, idx2 = 0;\n for (var i = 0; i < buf.length; i++) {\n idx1 = buf[i]*2; idx2 = i*2;\n newBuf[idx2] = decodeBuf[idx1];\n newBuf[idx2+1] = decodeBuf[idx1+1];\n }\n return newBuf.toString('ucs2');\n}\n\nSBCSDecoder.prototype.end = function() {\n}\n","\"use strict\";\n\n// Manually added data to be used by sbcs codec in addition to generated one.\n\nmodule.exports = {\n // Not supported by iconv, not sure why.\n \"10029\": \"maccenteuro\",\n \"maccenteuro\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ\"\n },\n\n \"808\": \"cp808\",\n \"ibm808\": \"cp808\",\n \"cp808\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ \"\n },\n\n \"mik\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя└┴┬├─┼╣║╚╔╩╦╠═╬┐░▒▓│┤№§╗╝┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n\n // Aliases of generated encodings.\n \"ascii8bit\": \"ascii\",\n \"usascii\": \"ascii\",\n \"ansix34\": \"ascii\",\n \"ansix341968\": \"ascii\",\n \"ansix341986\": \"ascii\",\n \"csascii\": \"ascii\",\n \"cp367\": \"ascii\",\n \"ibm367\": \"ascii\",\n \"isoir6\": \"ascii\",\n \"iso646us\": \"ascii\",\n \"iso646irv\": \"ascii\",\n \"us\": \"ascii\",\n\n \"latin1\": \"iso88591\",\n \"latin2\": \"iso88592\",\n \"latin3\": \"iso88593\",\n \"latin4\": \"iso88594\",\n \"latin5\": \"iso88599\",\n \"latin6\": \"iso885910\",\n \"latin7\": \"iso885913\",\n \"latin8\": \"iso885914\",\n \"latin9\": \"iso885915\",\n \"latin10\": \"iso885916\",\n\n \"csisolatin1\": \"iso88591\",\n \"csisolatin2\": \"iso88592\",\n \"csisolatin3\": \"iso88593\",\n \"csisolatin4\": \"iso88594\",\n \"csisolatincyrillic\": \"iso88595\",\n \"csisolatinarabic\": \"iso88596\",\n \"csisolatingreek\" : \"iso88597\",\n \"csisolatinhebrew\": \"iso88598\",\n \"csisolatin5\": \"iso88599\",\n \"csisolatin6\": \"iso885910\",\n\n \"l1\": \"iso88591\",\n \"l2\": \"iso88592\",\n \"l3\": \"iso88593\",\n \"l4\": \"iso88594\",\n \"l5\": \"iso88599\",\n \"l6\": \"iso885910\",\n \"l7\": \"iso885913\",\n \"l8\": \"iso885914\",\n \"l9\": \"iso885915\",\n \"l10\": \"iso885916\",\n\n \"isoir14\": \"iso646jp\",\n \"isoir57\": \"iso646cn\",\n \"isoir100\": \"iso88591\",\n \"isoir101\": \"iso88592\",\n \"isoir109\": \"iso88593\",\n \"isoir110\": \"iso88594\",\n \"isoir144\": \"iso88595\",\n \"isoir127\": \"iso88596\",\n \"isoir126\": \"iso88597\",\n \"isoir138\": \"iso88598\",\n \"isoir148\": \"iso88599\",\n \"isoir157\": \"iso885910\",\n \"isoir166\": \"tis620\",\n \"isoir179\": \"iso885913\",\n \"isoir199\": \"iso885914\",\n \"isoir203\": \"iso885915\",\n \"isoir226\": \"iso885916\",\n\n \"cp819\": \"iso88591\",\n \"ibm819\": \"iso88591\",\n\n \"cyrillic\": \"iso88595\",\n\n \"arabic\": \"iso88596\",\n \"arabic8\": \"iso88596\",\n \"ecma114\": \"iso88596\",\n \"asmo708\": \"iso88596\",\n\n \"greek\" : \"iso88597\",\n \"greek8\" : \"iso88597\",\n \"ecma118\" : \"iso88597\",\n \"elot928\" : \"iso88597\",\n\n \"hebrew\": \"iso88598\",\n \"hebrew8\": \"iso88598\",\n\n \"turkish\": \"iso88599\",\n \"turkish8\": \"iso88599\",\n\n \"thai\": \"iso885911\",\n \"thai8\": \"iso885911\",\n\n \"celtic\": \"iso885914\",\n \"celtic8\": \"iso885914\",\n \"isoceltic\": \"iso885914\",\n\n \"tis6200\": \"tis620\",\n \"tis62025291\": \"tis620\",\n \"tis62025330\": \"tis620\",\n\n \"10000\": \"macroman\",\n \"10006\": \"macgreek\",\n \"10007\": \"maccyrillic\",\n \"10079\": \"maciceland\",\n \"10081\": \"macturkish\",\n\n \"cspc8codepage437\": \"cp437\",\n \"cspc775baltic\": \"cp775\",\n \"cspc850multilingual\": \"cp850\",\n \"cspcp852\": \"cp852\",\n \"cspc862latinhebrew\": \"cp862\",\n \"cpgr\": \"cp869\",\n\n \"msee\": \"cp1250\",\n \"mscyrl\": \"cp1251\",\n \"msansi\": \"cp1252\",\n \"msgreek\": \"cp1253\",\n \"msturk\": \"cp1254\",\n \"mshebr\": \"cp1255\",\n \"msarab\": \"cp1256\",\n \"winbaltrim\": \"cp1257\",\n\n \"cp20866\": \"koi8r\",\n \"20866\": \"koi8r\",\n \"ibm878\": \"koi8r\",\n \"cskoi8r\": \"koi8r\",\n\n \"cp21866\": \"koi8u\",\n \"21866\": \"koi8u\",\n \"ibm1168\": \"koi8u\",\n\n \"strk10482002\": \"rk1048\",\n\n \"tcvn5712\": \"tcvn\",\n \"tcvn57121\": \"tcvn\",\n\n \"gb198880\": \"iso646cn\",\n \"cn\": \"iso646cn\",\n\n \"csiso14jisc6220ro\": \"iso646jp\",\n \"jisc62201969ro\": \"iso646jp\",\n \"jp\": \"iso646jp\",\n\n \"cshproman8\": \"hproman8\",\n \"r8\": \"hproman8\",\n \"roman8\": \"hproman8\",\n \"xroman8\": \"hproman8\",\n \"ibm1051\": \"hproman8\",\n\n \"mac\": \"macintosh\",\n \"csmacintosh\": \"macintosh\",\n};\n\n","\"use strict\";\n\n// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script.\nmodule.exports = {\n \"437\": \"cp437\",\n \"737\": \"cp737\",\n \"775\": \"cp775\",\n \"850\": \"cp850\",\n \"852\": \"cp852\",\n \"855\": \"cp855\",\n \"856\": \"cp856\",\n \"857\": \"cp857\",\n \"858\": \"cp858\",\n \"860\": \"cp860\",\n \"861\": \"cp861\",\n \"862\": \"cp862\",\n \"863\": \"cp863\",\n \"864\": \"cp864\",\n \"865\": \"cp865\",\n \"866\": \"cp866\",\n \"869\": \"cp869\",\n \"874\": \"windows874\",\n \"922\": \"cp922\",\n \"1046\": \"cp1046\",\n \"1124\": \"cp1124\",\n \"1125\": \"cp1125\",\n \"1129\": \"cp1129\",\n \"1133\": \"cp1133\",\n \"1161\": \"cp1161\",\n \"1162\": \"cp1162\",\n \"1163\": \"cp1163\",\n \"1250\": \"windows1250\",\n \"1251\": \"windows1251\",\n \"1252\": \"windows1252\",\n \"1253\": \"windows1253\",\n \"1254\": \"windows1254\",\n \"1255\": \"windows1255\",\n \"1256\": \"windows1256\",\n \"1257\": \"windows1257\",\n \"1258\": \"windows1258\",\n \"28591\": \"iso88591\",\n \"28592\": \"iso88592\",\n \"28593\": \"iso88593\",\n \"28594\": \"iso88594\",\n \"28595\": \"iso88595\",\n \"28596\": \"iso88596\",\n \"28597\": \"iso88597\",\n \"28598\": \"iso88598\",\n \"28599\": \"iso88599\",\n \"28600\": \"iso885910\",\n \"28601\": \"iso885911\",\n \"28603\": \"iso885913\",\n \"28604\": \"iso885914\",\n \"28605\": \"iso885915\",\n \"28606\": \"iso885916\",\n \"windows874\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\"\n },\n \"win874\": \"windows874\",\n \"cp874\": \"windows874\",\n \"windows1250\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙\"\n },\n \"win1250\": \"windows1250\",\n \"cp1250\": \"windows1250\",\n \"windows1251\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя\"\n },\n \"win1251\": \"windows1251\",\n \"cp1251\": \"windows1251\",\n \"windows1252\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"win1252\": \"windows1252\",\n \"cp1252\": \"windows1252\",\n \"windows1253\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�\"\n },\n \"win1253\": \"windows1253\",\n \"cp1253\": \"windows1253\",\n \"windows1254\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ\"\n },\n \"win1254\": \"windows1254\",\n \"cp1254\": \"windows1254\",\n \"windows1255\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת���\"\n },\n \"win1255\": \"windows1255\",\n \"cp1255\": \"windows1255\",\n \"windows1256\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œں ،¢£¤¥¦§¨©ھ«¬®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûüے\"\n },\n \"win1256\": \"windows1256\",\n \"cp1256\": \"windows1256\",\n \"windows1257\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙\"\n },\n \"win1257\": \"windows1257\",\n \"cp1257\": \"windows1257\",\n \"windows1258\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ\"\n },\n \"win1258\": \"windows1258\",\n \"cp1258\": \"windows1258\",\n \"iso88591\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"cp28591\": \"iso88591\",\n \"iso88592\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
Ą˘Ł¤ĽŚ§¨ŠŞŤŹŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙\"\n },\n \"cp28592\": \"iso88592\",\n \"iso88593\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
Ħ˘£¤�Ĥ§¨İŞĞĴ�ݰħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙\"\n },\n \"cp28593\": \"iso88593\",\n \"iso88594\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
ĄĸŖ¤Ĩϧ¨ŠĒĢŦޝ°ą˛ŗ´ĩšēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖרŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙\"\n },\n \"cp28594\": \"iso88594\",\n \"iso88595\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
ЁЂЃЄЅІЇЈЉЊЋЌЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ\"\n },\n \"cp28595\": \"iso88595\",\n \"iso88596\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
���¤�������،�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������\"\n },\n \"cp28596\": \"iso88596\",\n \"iso88597\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
‘’£€₯¦§¨©ͺ«¬�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�\"\n },\n \"cp28597\": \"iso88597\",\n \"iso88598\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
�¢£¤¥¦§¨©×«¬®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת���\"\n },\n \"cp28598\": \"iso88598\",\n \"iso88599\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ\"\n },\n \"cp28599\": \"iso88599\",\n \"iso885910\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
ĄĒĢĪĨͧĻĐŠŦŽŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ\"\n },\n \"cp28600\": \"iso885910\",\n \"iso885911\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\"\n },\n \"cp28601\": \"iso885911\",\n \"iso885913\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
”¢£¤„¦§Ø©Ŗ«¬®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’\"\n },\n \"cp28603\": \"iso885913\",\n \"iso885914\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ\"\n },\n \"cp28604\": \"iso885914\",\n \"iso885915\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"cp28605\": \"iso885915\",\n \"iso885916\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
ĄąŁ€„Чš©Ș«ŹźŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ\"\n },\n \"cp28606\": \"iso885916\",\n \"cp437\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm437\": \"cp437\",\n \"csibm437\": \"cp437\",\n \"cp737\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ \"\n },\n \"ibm737\": \"cp737\",\n \"csibm737\": \"cp737\",\n \"cp775\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’±“¾¶§÷„°∙·¹³²■ \"\n },\n \"ibm775\": \"cp775\",\n \"csibm775\": \"cp775\",\n \"cp850\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´±‗¾¶§÷¸°¨·¹³²■ \"\n },\n \"ibm850\": \"cp850\",\n \"csibm850\": \"cp850\",\n \"cp852\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´˝˛ˇ˘§÷¸°¨˙űŘř■ \"\n },\n \"ibm852\": \"cp852\",\n \"csibm852\": \"cp852\",\n \"cp855\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№ыЫзЗшШэЭщЩчЧ§■ \"\n },\n \"ibm855\": \"cp855\",\n \"csibm855\": \"cp855\",\n \"cp856\": {\n \"type\": \"_sbcs\",\n \"chars\": \"אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´±‗¾¶§÷¸°¨·¹³²■ \"\n },\n \"ibm856\": \"cp856\",\n \"csibm856\": \"cp856\",\n \"cp857\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞ𿮬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´±�¾¶§÷¸°¨·¹³²■ \"\n },\n \"ibm857\": \"cp857\",\n \"csibm857\": \"cp857\",\n \"cp858\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´±‗¾¶§÷¸°¨·¹³²■ \"\n },\n \"ibm858\": \"cp858\",\n \"csibm858\": \"cp858\",\n \"cp860\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñѪº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm860\": \"cp860\",\n \"csibm860\": \"cp860\",\n \"cp861\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm861\": \"cp861\",\n \"csibm861\": \"cp861\",\n \"cp862\": {\n \"type\": \"_sbcs\",\n \"chars\": \"אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm862\": \"cp862\",\n \"csibm862\": \"cp862\",\n \"cp863\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm863\": \"cp863\",\n \"csibm863\": \"cp863\",\n \"cp864\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�\"\n },\n \"ibm864\": \"cp864\",\n \"csibm864\": \"cp864\",\n \"cp865\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm865\": \"cp865\",\n \"csibm865\": \"cp865\",\n \"cp866\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ \"\n },\n \"ibm866\": \"cp866\",\n \"csibm866\": \"cp866\",\n \"cp869\": {\n \"type\": \"_sbcs\",\n \"chars\": \"������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄±υφχ§ψ΅°¨ωϋΰώ■ \"\n },\n \"ibm869\": \"cp869\",\n \"csibm869\": \"cp869\",\n \"cp922\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
¡¢£¤¥¦§¨©ª«¬®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖרÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ\"\n },\n \"ibm922\": \"cp922\",\n \"csibm922\": \"cp922\",\n \"cp1046\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ﺈ×÷ﹱ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�\"\n },\n \"ibm1046\": \"cp1046\",\n \"csibm1046\": \"cp1046\",\n \"cp1124\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
ЁЂҐЄЅІЇЈЉЊЋЌЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ\"\n },\n \"ibm1124\": \"cp1124\",\n \"csibm1124\": \"cp1124\",\n \"cp1125\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ \"\n },\n \"ibm1125\": \"cp1125\",\n \"csibm1125\": \"cp1125\",\n \"cp1129\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
¡¢£¤¥¦§œ©ª«¬®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ\"\n },\n \"ibm1129\": \"cp1129\",\n \"csibm1129\": \"cp1129\",\n \"cp1133\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�\"\n },\n \"ibm1133\": \"cp1133\",\n \"csibm1133\": \"cp1133\",\n \"cp1161\": {\n \"type\": \"_sbcs\",\n \"chars\": \"��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ \"\n },\n \"ibm1161\": \"cp1161\",\n \"csibm1161\": \"cp1161\",\n \"cp1162\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€…‘’“”•–— กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\"\n },\n \"ibm1162\": \"cp1162\",\n \"csibm1162\": \"cp1162\",\n \"cp1163\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
¡¢£€¥¦§œ©ª«¬®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ\"\n },\n \"ibm1163\": \"cp1163\",\n \"csibm1163\": \"cp1163\",\n \"maccroatian\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ\"\n },\n \"maccyrillic\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤\"\n },\n \"macgreek\": {\n \"type\": \"_sbcs\",\n \"chars\": \"Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�\"\n },\n \"maciceland\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\"\n },\n \"macroman\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\"\n },\n \"macromania\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\"\n },\n \"macthai\": {\n \"type\": \"_sbcs\",\n \"chars\": \"«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����\"\n },\n \"macturkish\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ\"\n },\n \"macukraine\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤\"\n },\n \"koi8r\": {\n \"type\": \"_sbcs\",\n \"chars\": \"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\"\n },\n \"koi8u\": {\n \"type\": \"_sbcs\",\n \"chars\": \"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\"\n },\n \"koi8ru\": {\n \"type\": \"_sbcs\",\n \"chars\": \"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\"\n },\n \"koi8t\": {\n \"type\": \"_sbcs\",\n \"chars\": \"қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\"\n },\n \"armscii8\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
�և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�\"\n },\n \"rk1048\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя\"\n },\n \"tcvn\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000ÚỤ\\u0003ỪỬỮ\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010ỨỰỲỶỸÝỴ\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ\"\n },\n \"georgianacademy\": {\n \"type\": \"_sbcs\",\n \"chars\": \"‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"georgianps\": {\n \"type\": \"_sbcs\",\n \"chars\": \"‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"pt154\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя\"\n },\n \"viscii\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001Ẳ\\u0003\\u0004ẴẪ\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Ỷ\\u0015\\u0016\\u0017\\u0018Ỹ\\u001a\\u001b\\u001c\\u001dỴ\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ\"\n },\n \"iso646cn\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������\"\n },\n \"iso646jp\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������\"\n },\n \"hproman8\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�\"\n },\n \"macintosh\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\"\n },\n \"ascii\": {\n \"type\": \"_sbcs\",\n \"chars\": \"��������������������������������������������������������������������������������������������������������������������������������\"\n },\n \"tis620\": {\n \"type\": \"_sbcs\",\n \"chars\": \"���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\"\n }\n}","\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Multibyte codec. In this scheme, a character is represented by 1 or more bytes.\n// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences.\n// To save memory and loading time, we read table files only when requested.\n\nexports._dbcs = DBCSCodec;\n\nvar UNASSIGNED = -1,\n GB18030_CODE = -2,\n SEQ_START = -10,\n NODE_START = -1000,\n UNASSIGNED_NODE = new Array(0x100),\n DEF_CHAR = -1;\n\nfor (var i = 0; i < 0x100; i++)\n UNASSIGNED_NODE[i] = UNASSIGNED;\n\n\n// Class DBCSCodec reads and initializes mapping tables.\nfunction DBCSCodec(codecOptions, iconv) {\n this.encodingName = codecOptions.encodingName;\n if (!codecOptions)\n throw new Error(\"DBCS codec is called without the data.\")\n if (!codecOptions.table)\n throw new Error(\"Encoding '\" + this.encodingName + \"' has no data.\");\n\n // Load tables.\n var mappingTable = codecOptions.table();\n\n\n // Decode tables: MBCS -> Unicode.\n\n // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256.\n // Trie root is decodeTables[0].\n // Values: >= 0 -> unicode character code. can be > 0xFFFF\n // == UNASSIGNED -> unknown/unassigned sequence.\n // == GB18030_CODE -> this is the end of a GB18030 4-byte sequence.\n // <= NODE_START -> index of the next node in our trie to process next byte.\n // <= SEQ_START -> index of the start of a character code sequence, in decodeTableSeq.\n this.decodeTables = [];\n this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node.\n\n // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. \n this.decodeTableSeq = [];\n\n // Actual mapping tables consist of chunks. Use them to fill up decode tables.\n for (var i = 0; i < mappingTable.length; i++)\n this._addDecodeChunk(mappingTable[i]);\n\n this.defaultCharUnicode = iconv.defaultCharUnicode;\n\n \n // Encode tables: Unicode -> DBCS.\n\n // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance.\n // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null.\n // Values: >= 0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.).\n // == UNASSIGNED -> no conversion found. Output a default char.\n // <= SEQ_START -> it's an index in encodeTableSeq, see below. The character starts a sequence.\n this.encodeTable = [];\n \n // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of\n // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key\n // means end of sequence (needed when one sequence is a strict subsequence of another).\n // Objects are kept separately from encodeTable to increase performance.\n this.encodeTableSeq = [];\n\n // Some chars can be decoded, but need not be encoded.\n var skipEncodeChars = {};\n if (codecOptions.encodeSkipVals)\n for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) {\n var val = codecOptions.encodeSkipVals[i];\n if (typeof val === 'number')\n skipEncodeChars[val] = true;\n else\n for (var j = val.from; j <= val.to; j++)\n skipEncodeChars[j] = true;\n }\n \n // Use decode trie to recursively fill out encode tables.\n this._fillEncodeTable(0, 0, skipEncodeChars);\n\n // Add more encoding pairs when needed.\n if (codecOptions.encodeAdd) {\n for (var uChar in codecOptions.encodeAdd)\n if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar))\n this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]);\n }\n\n this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)];\n if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?'];\n if (this.defCharSB === UNASSIGNED) this.defCharSB = \"?\".charCodeAt(0);\n\n\n // Load & create GB18030 tables when needed.\n if (typeof codecOptions.gb18030 === 'function') {\n this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges.\n\n // Add GB18030 decode tables.\n var thirdByteNodeIdx = this.decodeTables.length;\n var thirdByteNode = this.decodeTables[thirdByteNodeIdx] = UNASSIGNED_NODE.slice(0);\n\n var fourthByteNodeIdx = this.decodeTables.length;\n var fourthByteNode = this.decodeTables[fourthByteNodeIdx] = UNASSIGNED_NODE.slice(0);\n\n for (var i = 0x81; i <= 0xFE; i++) {\n var secondByteNodeIdx = NODE_START - this.decodeTables[0][i];\n var secondByteNode = this.decodeTables[secondByteNodeIdx];\n for (var j = 0x30; j <= 0x39; j++)\n secondByteNode[j] = NODE_START - thirdByteNodeIdx;\n }\n for (var i = 0x81; i <= 0xFE; i++)\n thirdByteNode[i] = NODE_START - fourthByteNodeIdx;\n for (var i = 0x30; i <= 0x39; i++)\n fourthByteNode[i] = GB18030_CODE\n } \n}\n\nDBCSCodec.prototype.encoder = DBCSEncoder;\nDBCSCodec.prototype.decoder = DBCSDecoder;\n\n// Decoder helpers\nDBCSCodec.prototype._getDecodeTrieNode = function(addr) {\n var bytes = [];\n for (; addr > 0; addr >>= 8)\n bytes.push(addr & 0xFF);\n if (bytes.length == 0)\n bytes.push(0);\n\n var node = this.decodeTables[0];\n for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie.\n var val = node[bytes[i]];\n\n if (val == UNASSIGNED) { // Create new node.\n node[bytes[i]] = NODE_START - this.decodeTables.length;\n this.decodeTables.push(node = UNASSIGNED_NODE.slice(0));\n }\n else if (val <= NODE_START) { // Existing node.\n node = this.decodeTables[NODE_START - val];\n }\n else\n throw new Error(\"Overwrite byte in \" + this.encodingName + \", addr: \" + addr.toString(16));\n }\n return node;\n}\n\n\nDBCSCodec.prototype._addDecodeChunk = function(chunk) {\n // First element of chunk is the hex mbcs code where we start.\n var curAddr = parseInt(chunk[0], 16);\n\n // Choose the decoding node where we'll write our chars.\n var writeTable = this._getDecodeTrieNode(curAddr);\n curAddr = curAddr & 0xFF;\n\n // Write all other elements of the chunk to the table.\n for (var k = 1; k < chunk.length; k++) {\n var part = chunk[k];\n if (typeof part === \"string\") { // String, write as-is.\n for (var l = 0; l < part.length;) {\n var code = part.charCodeAt(l++);\n if (0xD800 <= code && code < 0xDC00) { // Decode surrogate\n var codeTrail = part.charCodeAt(l++);\n if (0xDC00 <= codeTrail && codeTrail < 0xE000)\n writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00);\n else\n throw new Error(\"Incorrect surrogate pair in \" + this.encodingName + \" at chunk \" + chunk[0]);\n }\n else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used)\n var len = 0xFFF - code + 2;\n var seq = [];\n for (var m = 0; m < len; m++)\n seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq.\n\n writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length;\n this.decodeTableSeq.push(seq);\n }\n else\n writeTable[curAddr++] = code; // Basic char\n }\n } \n else if (typeof part === \"number\") { // Integer, meaning increasing sequence starting with prev character.\n var charCode = writeTable[curAddr - 1] + 1;\n for (var l = 0; l < part; l++)\n writeTable[curAddr++] = charCode++;\n }\n else\n throw new Error(\"Incorrect type '\" + typeof part + \"' given in \" + this.encodingName + \" at chunk \" + chunk[0]);\n }\n if (curAddr > 0xFF)\n throw new Error(\"Incorrect chunk in \" + this.encodingName + \" at addr \" + chunk[0] + \": too long\" + curAddr);\n}\n\n// Encoder helpers\nDBCSCodec.prototype._getEncodeBucket = function(uCode) {\n var high = uCode >> 8; // This could be > 0xFF because of astral characters.\n if (this.encodeTable[high] === undefined)\n this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand.\n return this.encodeTable[high];\n}\n\nDBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) {\n var bucket = this._getEncodeBucket(uCode);\n var low = uCode & 0xFF;\n if (bucket[low] <= SEQ_START)\n this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it.\n else if (bucket[low] == UNASSIGNED)\n bucket[low] = dbcsCode;\n}\n\nDBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) {\n \n // Get the root of character tree according to first character of the sequence.\n var uCode = seq[0];\n var bucket = this._getEncodeBucket(uCode);\n var low = uCode & 0xFF;\n\n var node;\n if (bucket[low] <= SEQ_START) {\n // There's already a sequence with - use it.\n node = this.encodeTableSeq[SEQ_START-bucket[low]];\n }\n else {\n // There was no sequence object - allocate a new one.\n node = {};\n if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence.\n bucket[low] = SEQ_START - this.encodeTableSeq.length;\n this.encodeTableSeq.push(node);\n }\n\n // Traverse the character tree, allocating new nodes as needed.\n for (var j = 1; j < seq.length-1; j++) {\n var oldVal = node[uCode];\n if (typeof oldVal === 'object')\n node = oldVal;\n else {\n node = node[uCode] = {}\n if (oldVal !== undefined)\n node[DEF_CHAR] = oldVal\n }\n }\n\n // Set the leaf to given dbcsCode.\n uCode = seq[seq.length-1];\n node[uCode] = dbcsCode;\n}\n\nDBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) {\n var node = this.decodeTables[nodeIdx];\n for (var i = 0; i < 0x100; i++) {\n var uCode = node[i];\n var mbCode = prefix + i;\n if (skipEncodeChars[mbCode])\n continue;\n\n if (uCode >= 0)\n this._setEncodeChar(uCode, mbCode);\n else if (uCode <= NODE_START)\n this._fillEncodeTable(NODE_START - uCode, mbCode << 8, skipEncodeChars);\n else if (uCode <= SEQ_START)\n this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode);\n }\n}\n\n\n\n// == Encoder ==================================================================\n\nfunction DBCSEncoder(options, codec) {\n // Encoder state\n this.leadSurrogate = -1;\n this.seqObj = undefined;\n \n // Static data\n this.encodeTable = codec.encodeTable;\n this.encodeTableSeq = codec.encodeTableSeq;\n this.defaultCharSingleByte = codec.defCharSB;\n this.gb18030 = codec.gb18030;\n}\n\nDBCSEncoder.prototype.write = function(str) {\n var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)),\n leadSurrogate = this.leadSurrogate,\n seqObj = this.seqObj, nextChar = -1,\n i = 0, j = 0;\n\n while (true) {\n // 0. Get next character.\n if (nextChar === -1) {\n if (i == str.length) break;\n var uCode = str.charCodeAt(i++);\n }\n else {\n var uCode = nextChar;\n nextChar = -1; \n }\n\n // 1. Handle surrogates.\n if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates.\n if (uCode < 0xDC00) { // We've got lead surrogate.\n if (leadSurrogate === -1) {\n leadSurrogate = uCode;\n continue;\n } else {\n leadSurrogate = uCode;\n // Double lead surrogate found.\n uCode = UNASSIGNED;\n }\n } else { // We've got trail surrogate.\n if (leadSurrogate !== -1) {\n uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00);\n leadSurrogate = -1;\n } else {\n // Incomplete surrogate pair - only trail surrogate found.\n uCode = UNASSIGNED;\n }\n \n }\n }\n else if (leadSurrogate !== -1) {\n // Incomplete surrogate pair - only lead surrogate found.\n nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char.\n leadSurrogate = -1;\n }\n\n // 2. Convert uCode character.\n var dbcsCode = UNASSIGNED;\n if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence\n var resCode = seqObj[uCode];\n if (typeof resCode === 'object') { // Sequence continues.\n seqObj = resCode;\n continue;\n\n } else if (typeof resCode == 'number') { // Sequence finished. Write it.\n dbcsCode = resCode;\n\n } else if (resCode == undefined) { // Current character is not part of the sequence.\n\n // Try default character for this sequence\n resCode = seqObj[DEF_CHAR];\n if (resCode !== undefined) {\n dbcsCode = resCode; // Found. Write it.\n nextChar = uCode; // Current character will be written too in the next iteration.\n\n } else {\n // TODO: What if we have no default? (resCode == undefined)\n // Then, we should write first char of the sequence as-is and try the rest recursively.\n // Didn't do it for now because no encoding has this situation yet.\n // Currently, just skip the sequence and write current char.\n }\n }\n seqObj = undefined;\n }\n else if (uCode >= 0) { // Regular character\n var subtable = this.encodeTable[uCode >> 8];\n if (subtable !== undefined)\n dbcsCode = subtable[uCode & 0xFF];\n \n if (dbcsCode <= SEQ_START) { // Sequence start\n seqObj = this.encodeTableSeq[SEQ_START-dbcsCode];\n continue;\n }\n\n if (dbcsCode == UNASSIGNED && this.gb18030) {\n // Use GB18030 algorithm to find character(s) to write.\n var idx = findIdx(this.gb18030.uChars, uCode);\n if (idx != -1) {\n var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]);\n newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600;\n newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260;\n newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10;\n newBuf[j++] = 0x30 + dbcsCode;\n continue;\n }\n }\n }\n\n // 3. Write dbcsCode character.\n if (dbcsCode === UNASSIGNED)\n dbcsCode = this.defaultCharSingleByte;\n \n if (dbcsCode < 0x100) {\n newBuf[j++] = dbcsCode;\n }\n else if (dbcsCode < 0x10000) {\n newBuf[j++] = dbcsCode >> 8; // high byte\n newBuf[j++] = dbcsCode & 0xFF; // low byte\n }\n else {\n newBuf[j++] = dbcsCode >> 16;\n newBuf[j++] = (dbcsCode >> 8) & 0xFF;\n newBuf[j++] = dbcsCode & 0xFF;\n }\n }\n\n this.seqObj = seqObj;\n this.leadSurrogate = leadSurrogate;\n return newBuf.slice(0, j);\n}\n\nDBCSEncoder.prototype.end = function() {\n if (this.leadSurrogate === -1 && this.seqObj === undefined)\n return; // All clean. Most often case.\n\n var newBuf = Buffer.alloc(10), j = 0;\n\n if (this.seqObj) { // We're in the sequence.\n var dbcsCode = this.seqObj[DEF_CHAR];\n if (dbcsCode !== undefined) { // Write beginning of the sequence.\n if (dbcsCode < 0x100) {\n newBuf[j++] = dbcsCode;\n }\n else {\n newBuf[j++] = dbcsCode >> 8; // high byte\n newBuf[j++] = dbcsCode & 0xFF; // low byte\n }\n } else {\n // See todo above.\n }\n this.seqObj = undefined;\n }\n\n if (this.leadSurrogate !== -1) {\n // Incomplete surrogate pair - only lead surrogate found.\n newBuf[j++] = this.defaultCharSingleByte;\n this.leadSurrogate = -1;\n }\n \n return newBuf.slice(0, j);\n}\n\n// Export for testing\nDBCSEncoder.prototype.findIdx = findIdx;\n\n\n// == Decoder ==================================================================\n\nfunction DBCSDecoder(options, codec) {\n // Decoder state\n this.nodeIdx = 0;\n this.prevBuf = Buffer.alloc(0);\n\n // Static data\n this.decodeTables = codec.decodeTables;\n this.decodeTableSeq = codec.decodeTableSeq;\n this.defaultCharUnicode = codec.defaultCharUnicode;\n this.gb18030 = codec.gb18030;\n}\n\nDBCSDecoder.prototype.write = function(buf) {\n var newBuf = Buffer.alloc(buf.length*2),\n nodeIdx = this.nodeIdx, \n prevBuf = this.prevBuf, prevBufOffset = this.prevBuf.length,\n seqStart = -this.prevBuf.length, // idx of the start of current parsed sequence.\n uCode;\n\n if (prevBufOffset > 0) // Make prev buf overlap a little to make it easier to slice later.\n prevBuf = Buffer.concat([prevBuf, buf.slice(0, 10)]);\n \n for (var i = 0, j = 0; i < buf.length; i++) {\n var curByte = (i >= 0) ? buf[i] : prevBuf[i + prevBufOffset];\n\n // Lookup in current trie node.\n var uCode = this.decodeTables[nodeIdx][curByte];\n\n if (uCode >= 0) { \n // Normal character, just use it.\n }\n else if (uCode === UNASSIGNED) { // Unknown char.\n // TODO: Callback with seq.\n //var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset);\n i = seqStart; // Try to parse again, after skipping first byte of the sequence ('i' will be incremented by 'for' cycle).\n uCode = this.defaultCharUnicode.charCodeAt(0);\n }\n else if (uCode === GB18030_CODE) {\n var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset);\n var ptr = (curSeq[0]-0x81)*12600 + (curSeq[1]-0x30)*1260 + (curSeq[2]-0x81)*10 + (curSeq[3]-0x30);\n var idx = findIdx(this.gb18030.gbChars, ptr);\n uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx];\n }\n else if (uCode <= NODE_START) { // Go to next trie node.\n nodeIdx = NODE_START - uCode;\n continue;\n }\n else if (uCode <= SEQ_START) { // Output a sequence of chars.\n var seq = this.decodeTableSeq[SEQ_START - uCode];\n for (var k = 0; k < seq.length - 1; k++) {\n uCode = seq[k];\n newBuf[j++] = uCode & 0xFF;\n newBuf[j++] = uCode >> 8;\n }\n uCode = seq[seq.length-1];\n }\n else\n throw new Error(\"iconv-lite internal error: invalid decoding table value \" + uCode + \" at \" + nodeIdx + \"/\" + curByte);\n\n // Write the character to buffer, handling higher planes using surrogate pair.\n if (uCode > 0xFFFF) { \n uCode -= 0x10000;\n var uCodeLead = 0xD800 + Math.floor(uCode / 0x400);\n newBuf[j++] = uCodeLead & 0xFF;\n newBuf[j++] = uCodeLead >> 8;\n\n uCode = 0xDC00 + uCode % 0x400;\n }\n newBuf[j++] = uCode & 0xFF;\n newBuf[j++] = uCode >> 8;\n\n // Reset trie node.\n nodeIdx = 0; seqStart = i+1;\n }\n\n this.nodeIdx = nodeIdx;\n this.prevBuf = (seqStart >= 0) ? buf.slice(seqStart) : prevBuf.slice(seqStart + prevBufOffset);\n return newBuf.slice(0, j).toString('ucs2');\n}\n\nDBCSDecoder.prototype.end = function() {\n var ret = '';\n\n // Try to parse all remaining chars.\n while (this.prevBuf.length > 0) {\n // Skip 1 character in the buffer.\n ret += this.defaultCharUnicode;\n var buf = this.prevBuf.slice(1);\n\n // Parse remaining as usual.\n this.prevBuf = Buffer.alloc(0);\n this.nodeIdx = 0;\n if (buf.length > 0)\n ret += this.write(buf);\n }\n\n this.nodeIdx = 0;\n return ret;\n}\n\n// Binary search for GB18030. Returns largest i such that table[i] <= val.\nfunction findIdx(table, val) {\n if (table[0] > val)\n return -1;\n\n var l = 0, r = table.length;\n while (l < r-1) { // always table[l] <= val < table[r]\n var mid = l + Math.floor((r-l+1)/2);\n if (table[mid] <= val)\n l = mid;\n else\n r = mid;\n }\n return l;\n}\n\n","","","","","","","","","\"use strict\";\n\n// Description of supported double byte encodings and aliases.\n// Tables are not require()-d until they are needed to speed up library load.\n// require()-s are direct to support Browserify.\n\nmodule.exports = {\n \n // == Japanese/ShiftJIS ====================================================\n // All japanese encodings are based on JIS X set of standards:\n // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF.\n // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. \n // Has several variations in 1978, 1983, 1990 and 1997.\n // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.\n // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.\n // 2 planes, first is superset of 0208, second - revised 0212.\n // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)\n\n // Byte encodings are:\n // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte\n // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.\n // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.\n // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes.\n // 0x00-0x7F - lower part of 0201\n // 0x8E, 0xA1-0xDF - upper part of 0201\n // (0xA1-0xFE)x2 - 0208 plane (94x94).\n // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).\n // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.\n // Used as-is in ISO2022 family.\n // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, \n // 0201-1976 Roman, 0208-1978, 0208-1983.\n // * ISO2022-JP-1: Adds esc seq for 0212-1990.\n // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.\n // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.\n // * ISO2022-JP-2004: Adds 0213-2004 Plane 1.\n //\n // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.\n //\n // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html\n\n 'shiftjis': {\n type: '_dbcs',\n table: function() { return require('./tables/shiftjis.json') },\n encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n encodeSkipVals: [{from: 0xED40, to: 0xF940}],\n },\n 'csshiftjis': 'shiftjis',\n 'mskanji': 'shiftjis',\n 'sjis': 'shiftjis',\n 'windows31j': 'shiftjis',\n 'ms31j': 'shiftjis',\n 'xsjis': 'shiftjis',\n 'windows932': 'shiftjis',\n 'ms932': 'shiftjis',\n '932': 'shiftjis',\n 'cp932': 'shiftjis',\n\n 'eucjp': {\n type: '_dbcs',\n table: function() { return require('./tables/eucjp.json') },\n encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n },\n\n // TODO: KDDI extension to Shift_JIS\n // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.\n // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.\n\n\n // == Chinese/GBK ==========================================================\n // http://en.wikipedia.org/wiki/GBK\n // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder\n\n // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936\n 'gb2312': 'cp936',\n 'gb231280': 'cp936',\n 'gb23121980': 'cp936',\n 'csgb2312': 'cp936',\n 'csiso58gb231280': 'cp936',\n 'euccn': 'cp936',\n\n // Microsoft's CP936 is a subset and approximation of GBK.\n 'windows936': 'cp936',\n 'ms936': 'cp936',\n '936': 'cp936',\n 'cp936': {\n type: '_dbcs',\n table: function() { return require('./tables/cp936.json') },\n },\n\n // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.\n 'gbk': {\n type: '_dbcs',\n table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },\n },\n 'xgbk': 'gbk',\n 'isoir58': 'gbk',\n\n // GB18030 is an algorithmic extension of GBK.\n // Main source: https://www.w3.org/TR/encoding/#gbk-encoder\n // http://icu-project.org/docs/papers/gb18030.html\n // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml\n // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0\n 'gb18030': {\n type: '_dbcs',\n table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },\n gb18030: function() { return require('./tables/gb18030-ranges.json') },\n encodeSkipVals: [0x80],\n encodeAdd: {'€': 0xA2E3},\n },\n\n 'chinese': 'gb18030',\n\n\n // == Korean ===============================================================\n // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.\n 'windows949': 'cp949',\n 'ms949': 'cp949',\n '949': 'cp949',\n 'cp949': {\n type: '_dbcs',\n table: function() { return require('./tables/cp949.json') },\n },\n\n 'cseuckr': 'cp949',\n 'csksc56011987': 'cp949',\n 'euckr': 'cp949',\n 'isoir149': 'cp949',\n 'korean': 'cp949',\n 'ksc56011987': 'cp949',\n 'ksc56011989': 'cp949',\n 'ksc5601': 'cp949',\n\n\n // == Big5/Taiwan/Hong Kong ================================================\n // There are lots of tables for Big5 and cp950. Please see the following links for history:\n // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html\n // Variations, in roughly number of defined chars:\n // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT\n // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/\n // * Big5-2003 (Taiwan standard) almost superset of cp950.\n // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.\n // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. \n // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.\n // Plus, it has 4 combining sequences.\n // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299\n // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.\n // Implementations are not consistent within browsers; sometimes labeled as just big5.\n // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.\n // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31\n // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.\n // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt\n // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt\n // \n // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder\n // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.\n\n 'windows950': 'cp950',\n 'ms950': 'cp950',\n '950': 'cp950',\n 'cp950': {\n type: '_dbcs',\n table: function() { return require('./tables/cp950.json') },\n },\n\n // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.\n 'big5': 'big5hkscs',\n 'big5hkscs': {\n type: '_dbcs',\n table: function() { return require('./tables/cp950.json').concat(require('./tables/big5-added.json')) },\n encodeSkipVals: [0xa2cc],\n },\n\n 'cnbig5': 'big5hkscs',\n 'csbig5': 'big5hkscs',\n 'xxbig5': 'big5hkscs',\n};\n","\"use strict\";\n\n// Update this array if you add/rename/remove files in this directory.\n// We support Browserify by skipping automatic module discovery and requiring modules directly.\nvar modules = [\n require(\"./internal\"),\n require(\"./utf16\"),\n require(\"./utf7\"),\n require(\"./sbcs-codec\"),\n require(\"./sbcs-data\"),\n require(\"./sbcs-data-generated\"),\n require(\"./dbcs-codec\"),\n require(\"./dbcs-data\"),\n];\n\n// Put all encoding/alias/codec definitions to single object and export it. \nfor (var i = 0; i < modules.length; i++) {\n var module = modules[i];\n for (var enc in module)\n if (Object.prototype.hasOwnProperty.call(module, enc))\n exports[enc] = module[enc];\n}\n","\"use strict\";\n\nvar Buffer = require(\"buffer\").Buffer,\n Transform = require(\"stream\").Transform;\n\n\n// == Exports ==================================================================\nmodule.exports = function(iconv) {\n \n // Additional Public API.\n iconv.encodeStream = function encodeStream(encoding, options) {\n return new IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options);\n }\n\n iconv.decodeStream = function decodeStream(encoding, options) {\n return new IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options);\n }\n\n iconv.supportsStreams = true;\n\n\n // Not published yet.\n iconv.IconvLiteEncoderStream = IconvLiteEncoderStream;\n iconv.IconvLiteDecoderStream = IconvLiteDecoderStream;\n iconv._collect = IconvLiteDecoderStream.prototype.collect;\n};\n\n\n// == Encoder stream =======================================================\nfunction IconvLiteEncoderStream(conv, options) {\n this.conv = conv;\n options = options || {};\n options.decodeStrings = false; // We accept only strings, so we don't need to decode them.\n Transform.call(this, options);\n}\n\nIconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {\n constructor: { value: IconvLiteEncoderStream }\n});\n\nIconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) {\n if (typeof chunk != 'string')\n return done(new Error(\"Iconv encoding stream needs strings as its input.\"));\n try {\n var res = this.conv.write(chunk);\n if (res && res.length) this.push(res);\n done();\n }\n catch (e) {\n done(e);\n }\n}\n\nIconvLiteEncoderStream.prototype._flush = function(done) {\n try {\n var res = this.conv.end();\n if (res && res.length) this.push(res);\n done();\n }\n catch (e) {\n done(e);\n }\n}\n\nIconvLiteEncoderStream.prototype.collect = function(cb) {\n var chunks = [];\n this.on('error', cb);\n this.on('data', function(chunk) { chunks.push(chunk); });\n this.on('end', function() {\n cb(null, Buffer.concat(chunks));\n });\n return this;\n}\n\n\n// == Decoder stream =======================================================\nfunction IconvLiteDecoderStream(conv, options) {\n this.conv = conv;\n options = options || {};\n options.encoding = this.encoding = 'utf8'; // We output strings.\n Transform.call(this, options);\n}\n\nIconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {\n constructor: { value: IconvLiteDecoderStream }\n});\n\nIconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) {\n if (!Buffer.isBuffer(chunk))\n return done(new Error(\"Iconv decoding stream needs buffers as its input.\"));\n try {\n var res = this.conv.write(chunk);\n if (res && res.length) this.push(res, this.encoding);\n done();\n }\n catch (e) {\n done(e);\n }\n}\n\nIconvLiteDecoderStream.prototype._flush = function(done) {\n try {\n var res = this.conv.end();\n if (res && res.length) this.push(res, this.encoding); \n done();\n }\n catch (e) {\n done(e);\n }\n}\n\nIconvLiteDecoderStream.prototype.collect = function(cb) {\n var res = '';\n this.on('error', cb);\n this.on('data', function(chunk) { res += chunk; });\n this.on('end', function() {\n cb(null, res);\n });\n return this;\n}\n\n","\"use strict\";\nvar Buffer = require(\"buffer\").Buffer;\n// Note: not polyfilled with safer-buffer on a purpose, as overrides Buffer\n\n// == Extend Node primitives to use iconv-lite =================================\n\nmodule.exports = function (iconv) {\n var original = undefined; // Place to keep original methods.\n\n // Node authors rewrote Buffer internals to make it compatible with\n // Uint8Array and we cannot patch key functions since then.\n // Note: this does use older Buffer API on a purpose\n iconv.supportsNodeEncodingsExtension = !(Buffer.from || new Buffer(0) instanceof Uint8Array);\n\n iconv.extendNodeEncodings = function extendNodeEncodings() {\n if (original) return;\n original = {};\n\n if (!iconv.supportsNodeEncodingsExtension) {\n console.error(\"ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node\");\n console.error(\"See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility\");\n return;\n }\n\n var nodeNativeEncodings = {\n 'hex': true, 'utf8': true, 'utf-8': true, 'ascii': true, 'binary': true, \n 'base64': true, 'ucs2': true, 'ucs-2': true, 'utf16le': true, 'utf-16le': true,\n };\n\n Buffer.isNativeEncoding = function(enc) {\n return enc && nodeNativeEncodings[enc.toLowerCase()];\n }\n\n // -- SlowBuffer -----------------------------------------------------------\n var SlowBuffer = require('buffer').SlowBuffer;\n\n original.SlowBufferToString = SlowBuffer.prototype.toString;\n SlowBuffer.prototype.toString = function(encoding, start, end) {\n encoding = String(encoding || 'utf8').toLowerCase();\n\n // Use native conversion when possible\n if (Buffer.isNativeEncoding(encoding))\n return original.SlowBufferToString.call(this, encoding, start, end);\n\n // Otherwise, use our decoding method.\n if (typeof start == 'undefined') start = 0;\n if (typeof end == 'undefined') end = this.length;\n return iconv.decode(this.slice(start, end), encoding);\n }\n\n original.SlowBufferWrite = SlowBuffer.prototype.write;\n SlowBuffer.prototype.write = function(string, offset, length, encoding) {\n // Support both (string, offset, length, encoding)\n // and the legacy (string, encoding, offset, length)\n if (isFinite(offset)) {\n if (!isFinite(length)) {\n encoding = length;\n length = undefined;\n }\n } else { // legacy\n var swap = encoding;\n encoding = offset;\n offset = length;\n length = swap;\n }\n\n offset = +offset || 0;\n var remaining = this.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = +length;\n if (length > remaining) {\n length = remaining;\n }\n }\n encoding = String(encoding || 'utf8').toLowerCase();\n\n // Use native conversion when possible\n if (Buffer.isNativeEncoding(encoding))\n return original.SlowBufferWrite.call(this, string, offset, length, encoding);\n\n if (string.length > 0 && (length < 0 || offset < 0))\n throw new RangeError('attempt to write beyond buffer bounds');\n\n // Otherwise, use our encoding method.\n var buf = iconv.encode(string, encoding);\n if (buf.length < length) length = buf.length;\n buf.copy(this, offset, 0, length);\n return length;\n }\n\n // -- Buffer ---------------------------------------------------------------\n\n original.BufferIsEncoding = Buffer.isEncoding;\n Buffer.isEncoding = function(encoding) {\n return Buffer.isNativeEncoding(encoding) || iconv.encodingExists(encoding);\n }\n\n original.BufferByteLength = Buffer.byteLength;\n Buffer.byteLength = SlowBuffer.byteLength = function(str, encoding) {\n encoding = String(encoding || 'utf8').toLowerCase();\n\n // Use native conversion when possible\n if (Buffer.isNativeEncoding(encoding))\n return original.BufferByteLength.call(this, str, encoding);\n\n // Slow, I know, but we don't have a better way yet.\n return iconv.encode(str, encoding).length;\n }\n\n original.BufferToString = Buffer.prototype.toString;\n Buffer.prototype.toString = function(encoding, start, end) {\n encoding = String(encoding || 'utf8').toLowerCase();\n\n // Use native conversion when possible\n if (Buffer.isNativeEncoding(encoding))\n return original.BufferToString.call(this, encoding, start, end);\n\n // Otherwise, use our decoding method.\n if (typeof start == 'undefined') start = 0;\n if (typeof end == 'undefined') end = this.length;\n return iconv.decode(this.slice(start, end), encoding);\n }\n\n original.BufferWrite = Buffer.prototype.write;\n Buffer.prototype.write = function(string, offset, length, encoding) {\n var _offset = offset, _length = length, _encoding = encoding;\n // Support both (string, offset, length, encoding)\n // and the legacy (string, encoding, offset, length)\n if (isFinite(offset)) {\n if (!isFinite(length)) {\n encoding = length;\n length = undefined;\n }\n } else { // legacy\n var swap = encoding;\n encoding = offset;\n offset = length;\n length = swap;\n }\n\n encoding = String(encoding || 'utf8').toLowerCase();\n\n // Use native conversion when possible\n if (Buffer.isNativeEncoding(encoding))\n return original.BufferWrite.call(this, string, _offset, _length, _encoding);\n\n offset = +offset || 0;\n var remaining = this.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = +length;\n if (length > remaining) {\n length = remaining;\n }\n }\n\n if (string.length > 0 && (length < 0 || offset < 0))\n throw new RangeError('attempt to write beyond buffer bounds');\n\n // Otherwise, use our encoding method.\n var buf = iconv.encode(string, encoding);\n if (buf.length < length) length = buf.length;\n buf.copy(this, offset, 0, length);\n return length;\n\n // TODO: Set _charsWritten.\n }\n\n\n // -- Readable -------------------------------------------------------------\n if (iconv.supportsStreams) {\n var Readable = require('stream').Readable;\n\n original.ReadableSetEncoding = Readable.prototype.setEncoding;\n Readable.prototype.setEncoding = function setEncoding(enc, options) {\n // Use our own decoder, it has the same interface.\n // We cannot use original function as it doesn't handle BOM-s.\n this._readableState.decoder = iconv.getDecoder(enc, options);\n this._readableState.encoding = enc;\n }\n\n Readable.prototype.collect = iconv._collect;\n }\n }\n\n // Remove iconv-lite Node primitive extensions.\n iconv.undoExtendNodeEncodings = function undoExtendNodeEncodings() {\n if (!iconv.supportsNodeEncodingsExtension)\n return;\n if (!original)\n throw new Error(\"require('iconv-lite').undoExtendNodeEncodings(): Nothing to undo; extendNodeEncodings() is not called.\")\n\n delete Buffer.isNativeEncoding;\n\n var SlowBuffer = require('buffer').SlowBuffer;\n\n SlowBuffer.prototype.toString = original.SlowBufferToString;\n SlowBuffer.prototype.write = original.SlowBufferWrite;\n\n Buffer.isEncoding = original.BufferIsEncoding;\n Buffer.byteLength = original.BufferByteLength;\n Buffer.prototype.toString = original.BufferToString;\n Buffer.prototype.write = original.BufferWrite;\n\n if (iconv.supportsStreams) {\n var Readable = require('stream').Readable;\n\n Readable.prototype.setEncoding = original.ReadableSetEncoding;\n delete Readable.prototype.collect;\n }\n\n original = undefined;\n }\n}\n","\"use strict\";\n\n// Some environments don't have global Buffer (e.g. React Native).\n// Solution would be installing npm modules \"buffer\" and \"stream\" explicitly.\nvar Buffer = require(\"safer-buffer\").Buffer;\n\nvar bomHandling = require(\"./bom-handling\"),\n iconv = module.exports;\n\n// All codecs and aliases are kept here, keyed by encoding name/alias.\n// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`.\niconv.encodings = null;\n\n// Characters emitted in case of error.\niconv.defaultCharUnicode = '�';\niconv.defaultCharSingleByte = '?';\n\n// Public API.\niconv.encode = function encode(str, encoding, options) {\n str = \"\" + (str || \"\"); // Ensure string.\n\n var encoder = iconv.getEncoder(encoding, options);\n\n var res = encoder.write(str);\n var trail = encoder.end();\n \n return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res;\n}\n\niconv.decode = function decode(buf, encoding, options) {\n if (typeof buf === 'string') {\n if (!iconv.skipDecodeWarning) {\n console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding');\n iconv.skipDecodeWarning = true;\n }\n\n buf = Buffer.from(\"\" + (buf || \"\"), \"binary\"); // Ensure buffer.\n }\n\n var decoder = iconv.getDecoder(encoding, options);\n\n var res = decoder.write(buf);\n var trail = decoder.end();\n\n return trail ? (res + trail) : res;\n}\n\niconv.encodingExists = function encodingExists(enc) {\n try {\n iconv.getCodec(enc);\n return true;\n } catch (e) {\n return false;\n }\n}\n\n// Legacy aliases to convert functions\niconv.toEncoding = iconv.encode;\niconv.fromEncoding = iconv.decode;\n\n// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache.\niconv._codecDataCache = {};\niconv.getCodec = function getCodec(encoding) {\n if (!iconv.encodings)\n iconv.encodings = require(\"../encodings\"); // Lazy load all encoding definitions.\n \n // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n var enc = iconv._canonicalizeEncoding(encoding);\n\n // Traverse iconv.encodings to find actual codec.\n var codecOptions = {};\n while (true) {\n var codec = iconv._codecDataCache[enc];\n if (codec)\n return codec;\n\n var codecDef = iconv.encodings[enc];\n\n switch (typeof codecDef) {\n case \"string\": // Direct alias to other encoding.\n enc = codecDef;\n break;\n\n case \"object\": // Alias with options. Can be layered.\n for (var key in codecDef)\n codecOptions[key] = codecDef[key];\n\n if (!codecOptions.encodingName)\n codecOptions.encodingName = enc;\n \n enc = codecDef.type;\n break;\n\n case \"function\": // Codec itself.\n if (!codecOptions.encodingName)\n codecOptions.encodingName = enc;\n\n // The codec function must load all tables and return object with .encoder and .decoder methods.\n // It'll be called only once (for each different options object).\n codec = new codecDef(codecOptions, iconv);\n\n iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later.\n return codec;\n\n default:\n throw new Error(\"Encoding not recognized: '\" + encoding + \"' (searched as: '\"+enc+\"')\");\n }\n }\n}\n\niconv._canonicalizeEncoding = function(encoding) {\n // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n return (''+encoding).toLowerCase().replace(/:\\d{4}$|[^0-9a-z]/g, \"\");\n}\n\niconv.getEncoder = function getEncoder(encoding, options) {\n var codec = iconv.getCodec(encoding),\n encoder = new codec.encoder(options, codec);\n\n if (codec.bomAware && options && options.addBOM)\n encoder = new bomHandling.PrependBOM(encoder, options);\n\n return encoder;\n}\n\niconv.getDecoder = function getDecoder(encoding, options) {\n var codec = iconv.getCodec(encoding),\n decoder = new codec.decoder(options, codec);\n\n if (codec.bomAware && !(options && options.stripBOM === false))\n decoder = new bomHandling.StripBOM(decoder, options);\n\n return decoder;\n}\n\n\n// Load extensions in Node. All of them are omitted in Browserify build via 'browser' field in package.json.\nvar nodeVer = typeof process !== 'undefined' && process.versions && process.versions.node;\nif (nodeVer) {\n\n // Load streaming support in Node v0.10+\n var nodeVerArr = nodeVer.split(\".\").map(Number);\n if (nodeVerArr[0] > 0 || nodeVerArr[1] >= 10) {\n require(\"./streams\")(iconv);\n }\n\n // Load Node primitive extensions.\n require(\"./extend-node\")(iconv);\n}\n\nif (\"Ā\" != \"\\u0100\") {\n console.error(\"iconv-lite warning: javascript files use encoding different from utf-8. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.\");\n}\n","var iconv,\n inherits = require('util').inherits,\n stream = require('stream');\n\nvar regex = /(?:charset|encoding)\\s*=\\s*['\"]? *([\\w\\-]+)/i;\n\ninherits(StreamDecoder, stream.Transform);\n\nfunction StreamDecoder(charset) {\n if (!(this instanceof StreamDecoder))\n return new StreamDecoder(charset);\n\n stream.Transform.call(this, charset);\n this.charset = charset;\n this.parsed_chunk = false;\n}\n\nStreamDecoder.prototype._transform = function(chunk, encoding, done) {\n var res, found;\n\n // try get charset from chunk, just once\n if (this.charset == 'utf8' && !this.parsed_chunk) {\n this.parsed_chunk = true;\n\n var matches = regex.exec(chunk.toString());\n if (matches) {\n found = matches[1].toLowerCase();\n this.charset = found == 'utf-8' ? 'utf8' : found;\n }\n }\n\n try {\n res = iconv.decode(chunk, this.charset);\n } catch(e) { // something went wrong, just return original chunk\n res = chunk;\n }\n\n this.push(res);\n done();\n}\n\nmodule.exports = function(charset) {\n try {\n if (!iconv) iconv = require('iconv-lite');\n } catch(e) {\n /* iconv not found */\n }\n\n if (iconv)\n return new StreamDecoder(charset);\n else\n return new stream.PassThrough;\n}\n","","//////////////////////////////////////////\n// Needle -- HTTP Client for Node.js\n// Written by Tomás Pollak <tomas@forkhq.com>\n// (c) 2012-2020 - Fork Ltd.\n// MIT Licensed\n//////////////////////////////////////////\n\nvar fs = require('fs'),\n http = require('http'),\n https = require('https'),\n url = require('url'),\n stream = require('stream'),\n debug = require('debug')('needle'),\n stringify = require('./querystring').build,\n multipart = require('./multipart'),\n auth = require('./auth'),\n cookies = require('./cookies'),\n parsers = require('./parsers'),\n decoder = require('./decoder');\n\n//////////////////////////////////////////\n// variabilia\n\nvar version = require('../package.json').version;\n\nvar user_agent = 'Needle/' + version;\nuser_agent += ' (Node.js ' + process.version + '; ' + process.platform + ' ' + process.arch + ')';\n\nvar tls_options = 'agent pfx key passphrase cert ca ciphers rejectUnauthorized secureProtocol checkServerIdentity family';\n\n// older versions of node (< 0.11.4) prevent the runtime from exiting\n// because of connections in keep-alive state. so if this is the case\n// we'll default new requests to set a Connection: close header.\nvar close_by_default = !http.Agent || http.Agent.defaultMaxSockets != Infinity;\n\n// see if we have Object.assign. otherwise fall back to util._extend\nvar extend = Object.assign ? Object.assign : require('util')._extend;\n\n// these are the status codes that Needle interprets as redirects.\nvar redirect_codes = [301, 302, 303, 307, 308];\n\n//////////////////////////////////////////\n// decompressors for gzip/deflate/br bodies\n\nfunction bind_opts(fn, options) {\n return fn.bind(null, options);\n}\n\nvar decompressors = {};\n\ntry {\n\n var zlib = require('zlib');\n\n // Enable Z_SYNC_FLUSH to avoid Z_BUF_ERROR errors (Node PR #2595)\n var zlib_options = {\n flush: zlib.Z_SYNC_FLUSH,\n finishFlush: zlib.Z_SYNC_FLUSH\n };\n\n var br_options = {\n flush: zlib.BROTLI_OPERATION_FLUSH,\n finishFlush: zlib.BROTLI_OPERATION_FLUSH\n };\n\n decompressors['x-deflate'] = bind_opts(zlib.Inflate, zlib_options);\n decompressors['deflate'] = bind_opts(zlib.Inflate, zlib_options);\n decompressors['x-gzip'] = bind_opts(zlib.Gunzip, zlib_options);\n decompressors['gzip'] = bind_opts(zlib.Gunzip, zlib_options);\n if (typeof zlib.BrotliDecompress === 'function') {\n decompressors['br'] = bind_opts(zlib.BrotliDecompress, br_options);\n }\n\n} catch(e) { /* zlib not available */ }\n\n//////////////////////////////////////////\n// options and aliases\n\nvar defaults = {\n // data\n boundary : '--------------------NODENEEDLEHTTPCLIENT',\n encoding : 'utf8',\n parse_response : 'all', // same as true. valid options: 'json', 'xml' or false/null\n proxy : null,\n\n // headers\n headers : {},\n accept : '*/*',\n user_agent : user_agent,\n\n // numbers\n open_timeout : 10000,\n response_timeout : 0,\n read_timeout : 0,\n follow_max : 0,\n stream_length : -1,\n\n // booleans\n compressed : false,\n decode_response : true,\n parse_cookies : true,\n follow_set_cookies : false,\n follow_set_referer : false,\n follow_keep_method : false,\n follow_if_same_host : false,\n follow_if_same_protocol : false,\n follow_if_same_location : false\n}\n\nvar aliased = {\n options: {\n decode : 'decode_response',\n parse : 'parse_response',\n timeout : 'open_timeout',\n follow : 'follow_max'\n },\n inverted: {}\n}\n\n// only once, invert aliased keys so we can get passed options.\nObject.keys(aliased.options).map(function(k) {\n var value = aliased.options[k];\n aliased.inverted[value] = k;\n});\n\n//////////////////////////////////////////\n// helpers\n\nfunction keys_by_type(type) {\n return Object.keys(defaults).map(function(el) {\n if (defaults[el] !== null && defaults[el].constructor == type)\n return el;\n }).filter(function(el) { return el })\n}\n\nfunction parse_content_type(header) {\n if (!header || header === '') return {};\n\n var found, charset = 'utf8', arr = header.split(';');\n\n if (arr.length > 1 && (found = arr[1].match(/charset=(.+)/)))\n charset = found[1];\n\n return { type: arr[0], charset: charset };\n}\n\nfunction is_stream(obj) {\n return typeof obj.pipe === 'function';\n}\n\nfunction get_stream_length(stream, given_length, cb) {\n if (given_length > 0)\n return cb(given_length);\n\n if (stream.end !== void 0 && stream.end !== Infinity && stream.start !== void 0)\n return cb((stream.end + 1) - (stream.start || 0));\n\n fs.stat(stream.path, function(err, stat) {\n cb(stat ? stat.size - (stream.start || 0) : null);\n });\n}\n\nfunction resolve_url(href, base) {\n if (url.URL)\n return new url.URL(href, base);\n\n // older Node version (< v6.13)\n return url.resolve(base, href);\n}\n\nfunction pump_streams(streams, cb) {\n if (stream.pipeline)\n return stream.pipeline.apply(null, streams.concat(cb));\n\n var tmp = streams.shift();\n while (streams.length) {\n tmp = tmp.pipe(streams.shift());\n tmp.once('error', function(e) {\n cb && cb(e);\n cb = null;\n })\n }\n}\n\n//////////////////////////////////////////\n// the main act\n\nfunction Needle(method, uri, data, options, callback) {\n // if (!(this instanceof Needle)) {\n // return new Needle(method, uri, data, options, callback);\n // }\n\n if (typeof uri !== 'string')\n throw new TypeError('URL must be a string, not ' + uri);\n\n this.method = method.toLowerCase();\n this.uri = uri;\n this.data = data;\n\n if (typeof options == 'function') {\n this.callback = options;\n this.options = {};\n } else {\n this.callback = callback;\n this.options = options;\n }\n\n}\n\nNeedle.prototype.setup = function(uri, options) {\n\n function get_option(key, fallback) {\n // if original is in options, return that value\n if (typeof options[key] != 'undefined') return options[key];\n\n // otherwise, return value from alias or fallback/undefined\n return typeof options[aliased.inverted[key]] != 'undefined'\n ? options[aliased.inverted[key]] : fallback;\n }\n\n function check_value(expected, key) {\n var value = get_option(key),\n type = typeof value;\n\n if (type != 'undefined' && type != expected)\n throw new TypeError(type + ' received for ' + key + ', but expected a ' + expected);\n\n return (type == expected) ? value : defaults[key];\n }\n\n //////////////////////////////////////////////////\n // the basics\n\n var config = {\n http_opts : {\n localAddress: get_option('localAddress', undefined),\n lookup: get_option('lookup', undefined)\n }, // passed later to http.request() directly\n headers : {},\n output : options.output,\n proxy : get_option('proxy', defaults.proxy),\n parser : get_option('parse_response', defaults.parse_response),\n encoding : options.encoding || (options.multipart ? 'binary' : defaults.encoding)\n }\n\n keys_by_type(Boolean).forEach(function(key) {\n config[key] = check_value('boolean', key);\n })\n\n keys_by_type(Number).forEach(function(key) {\n config[key] = check_value('number', key);\n })\n\n // populate http_opts with given TLS options\n tls_options.split(' ').forEach(function(key) {\n if (typeof options[key] != 'undefined') {\n config.http_opts[key] = options[key];\n if (typeof options.agent == 'undefined')\n config.http_opts.agent = false; // otherwise tls options are skipped\n }\n });\n\n //////////////////////////////////////////////////\n // headers, cookies\n\n for (var key in defaults.headers)\n config.headers[key] = defaults.headers[key];\n\n config.headers['accept'] = options.accept || defaults.accept;\n config.headers['user-agent'] = options.user_agent || defaults.user_agent;\n\n if (options.content_type)\n config.headers['content-type'] = options.content_type;\n\n // set connection header if opts.connection was passed, or if node < 0.11.4 (close)\n if (options.connection || close_by_default)\n config.headers['connection'] = options.connection || 'close';\n\n if ((options.compressed || defaults.compressed) && typeof zlib != 'undefined')\n config.headers['accept-encoding'] = decompressors['br'] ? 'gzip, deflate, br' : 'gzip, deflate';\n\n if (options.cookies)\n config.headers['cookie'] = cookies.write(options.cookies);\n\n //////////////////////////////////////////////////\n // basic/digest auth\n\n if (uri.match(/[^\\/]@/)) { // url contains user:pass@host, so parse it.\n var parts = (url.parse(uri).auth || '').split(':');\n options.username = parts[0];\n options.password = parts[1];\n }\n\n if (options.username) {\n if (options.auth && (options.auth == 'auto' || options.auth == 'digest')) {\n config.credentials = [options.username, options.password];\n } else {\n config.headers['authorization'] = auth.basic(options.username, options.password);\n }\n }\n\n // if proxy is present, set auth header from either url or proxy_user option.\n if (config.proxy) {\n if (config.proxy.indexOf('http') === -1)\n config.proxy = 'http://' + config.proxy;\n\n if (config.proxy.indexOf('@') !== -1) {\n var proxy = (url.parse(config.proxy).auth || '').split(':');\n options.proxy_user = proxy[0];\n options.proxy_pass = proxy[1];\n }\n\n if (options.proxy_user)\n config.headers['proxy-authorization'] = auth.basic(options.proxy_user, options.proxy_pass);\n }\n\n // now that all our headers are set, overwrite them if instructed.\n for (var h in options.headers)\n config.headers[h.toLowerCase()] = options.headers[h];\n\n config.uri_modifier = get_option('uri_modifier', null);\n\n return config;\n}\n\nNeedle.prototype.start = function() {\n\n var out = new stream.PassThrough({ objectMode: false }),\n uri = this.uri,\n data = this.data,\n method = this.method,\n callback = (typeof this.options == 'function') ? this.options : this.callback,\n options = this.options || {};\n\n // if no 'http' is found on URL, prepend it.\n if (uri.indexOf('http') === -1)\n uri = uri.replace(/^(\\/\\/)?/, 'http://');\n\n var self = this, body, waiting = false, config = this.setup(uri, options);\n\n // unless options.json was set to false, assume boss also wants JSON if content-type matches.\n var json = options.json || (options.json !== false && config.headers['content-type'] == 'application/json');\n\n if (data) {\n\n if (options.multipart) { // boss says we do multipart. so we do it.\n var boundary = options.boundary || defaults.boundary;\n\n waiting = true;\n multipart.build(data, boundary, function(err, parts) {\n if (err) throw(err);\n\n config.headers['content-type'] = 'multipart/form-data; boundary=' + boundary;\n next(parts);\n });\n\n } else if (is_stream(data)) {\n\n if (method == 'get')\n throw new Error('Refusing to pipe() a stream via GET. Did you mean .post?');\n\n if (config.stream_length > 0 || (config.stream_length === 0 && data.path)) {\n // ok, let's get the stream's length and set it as the content-length header.\n // this prevents some servers from cutting us off before all the data is sent.\n waiting = true;\n get_stream_length(data, config.stream_length, function(length) {\n data.length = length;\n next(data);\n })\n\n } else {\n // if the boss doesn't want us to get the stream's length, or if it doesn't\n // have a file descriptor for that purpose, then just head on.\n body = data;\n }\n\n } else if (Buffer.isBuffer(data)) {\n\n body = data; // use the raw buffer as request body.\n\n } else if (method == 'get' && !json) {\n\n // append the data to the URI as a querystring.\n uri = uri.replace(/\\?.*|$/, '?' + stringify(data));\n\n } else { // string or object data, no multipart.\n\n // if string, leave it as it is, otherwise, stringify.\n body = (typeof(data) === 'string') ? data\n : json ? JSON.stringify(data) : stringify(data);\n\n // ensure we have a buffer so bytecount is correct.\n body = Buffer.from(body, config.encoding);\n }\n\n }\n\n function next(body) {\n if (body) {\n if (body.length) config.headers['content-length'] = body.length;\n\n // if no content-type was passed, determine if json or not.\n if (!config.headers['content-type']) {\n config.headers['content-type'] = json\n ? 'application/json; charset=utf-8'\n : 'application/x-www-form-urlencoded'; // no charset says W3 spec.\n }\n }\n\n // unless a specific accept header was set, assume json: true wants JSON back.\n if (options.json && (!options.accept && !(options.headers || {}).accept))\n config.headers['accept'] = 'application/json';\n\n self.send_request(1, method, uri, config, body, out, callback);\n }\n\n if (!waiting) next(body);\n return out;\n}\n\nNeedle.prototype.get_request_opts = function(method, uri, config) {\n var opts = config.http_opts,\n proxy = config.proxy,\n remote = proxy ? url.parse(proxy) : url.parse(uri);\n\n opts.protocol = remote.protocol;\n opts.host = remote.hostname;\n opts.port = remote.port || (remote.protocol == 'https:' ? 443 : 80);\n opts.path = proxy ? uri : remote.pathname + (remote.search || '');\n opts.method = method;\n opts.headers = config.headers;\n\n if (!opts.headers['host']) {\n // if using proxy, make sure the host header shows the final destination\n var target = proxy ? url.parse(uri) : remote;\n opts.headers['host'] = target.hostname;\n\n // and if a non standard port was passed, append it to the port header\n if (target.port && [80, 443].indexOf(target.port) === -1) {\n opts.headers['host'] += ':' + target.port;\n }\n }\n\n return opts;\n}\n\nNeedle.prototype.should_follow = function(location, config, original) {\n if (!location) return false;\n\n // returns true if location contains matching property (host or protocol)\n function matches(property) {\n var property = original[property];\n return location.indexOf(property) !== -1;\n }\n\n // first, check whether the requested location is actually different from the original\n if (!config.follow_if_same_location && location === original)\n return false;\n\n if (config.follow_if_same_host && !matches('host'))\n return false; // host does not match, so not following\n\n if (config.follow_if_same_protocol && !matches('protocol'))\n return false; // procotol does not match, so not following\n\n return true;\n}\n\nNeedle.prototype.send_request = function(count, method, uri, config, post_data, out, callback) {\n\n if (typeof config.uri_modifier === 'function') {\n var modified_uri = config.uri_modifier(uri);\n debug('Modifying request URI', uri + ' => ' + modified_uri);\n uri = modified_uri;\n }\n\n var request,\n timer,\n returned = 0,\n self = this,\n request_opts = this.get_request_opts(method, uri, config),\n protocol = request_opts.protocol == 'https:' ? https : http;\n\n function done(err, resp) {\n if (returned++ > 0)\n return debug('Already finished, stopping here.');\n\n if (timer) clearTimeout(timer);\n request.removeListener('error', had_error);\n out.done = true;\n\n if (callback)\n return callback(err, resp, resp ? resp.body : undefined);\n\n // NOTE: this event used to be called 'end', but the behaviour was confusing\n // when errors ocurred, because the stream would still emit an 'end' event.\n out.emit('done', err);\n\n // trigger the 'done' event on streams we're being piped to, if any\n var pipes = out._readableState.pipes || [];\n if (!pipes.forEach) pipes = [pipes];\n pipes.forEach(function(st) { st.emit('done', err); })\n }\n\n function had_error(err) {\n debug('Request error', err);\n out.emit('err', err);\n done(err || new Error('Unknown error when making request.'));\n }\n\n function set_timeout(type, milisecs) {\n if (timer) clearTimeout(timer);\n if (milisecs <= 0) return;\n\n timer = setTimeout(function() {\n out.emit('timeout', type);\n request.abort();\n // also invoke done() to terminate job on read_timeout\n if (type == 'read') done(new Error(type + ' timeout'));\n }, milisecs);\n }\n\n // handle errors on the underlying socket, that may be closed while writing\n // for an example case, see test/long_string_spec.js. we make sure this\n // scenario ocurred by verifying the socket's writable & destroyed states.\n function on_socket_end() {\n if (returned && !this.writable && this.destroyed === false) {\n this.destroy();\n had_error(new Error('Remote end closed socket abruptly.'))\n }\n }\n\n debug('Making request #' + count, request_opts);\n request = protocol.request(request_opts, function(resp) {\n\n var headers = resp.headers;\n debug('Got response', resp.statusCode, headers);\n out.emit('response', resp);\n\n set_timeout('read', config.read_timeout);\n\n // if we got cookies, parse them unless we were instructed not to. make sure to include any\n // cookies that might have been set on previous redirects.\n if (config.parse_cookies && (headers['set-cookie'] || config.previous_resp_cookies)) {\n resp.cookies = extend(config.previous_resp_cookies || {}, cookies.read(headers['set-cookie']));\n debug('Got cookies', resp.cookies);\n }\n\n // if redirect code is found, determine if we should follow it according to the given options.\n if (redirect_codes.indexOf(resp.statusCode) !== -1 && self.should_follow(headers.location, config, uri)) {\n // clear timer before following redirects to prevent unexpected setTimeout consequence\n clearTimeout(timer);\n\n if (count <= config.follow_max) {\n out.emit('redirect', headers.location);\n\n // unless 'follow_keep_method' is true, rewrite the request to GET before continuing.\n if (!config.follow_keep_method) {\n method = 'GET';\n post_data = null;\n delete config.headers['content-length']; // in case the original was a multipart POST request.\n }\n\n // if follow_set_cookies is true, insert cookies in the next request's headers.\n // we set both the original request cookies plus any response cookies we might have received.\n if (config.follow_set_cookies) {\n var request_cookies = cookies.read(config.headers['cookie']);\n config.previous_resp_cookies = resp.cookies;\n if (Object.keys(request_cookies).length || Object.keys(resp.cookies || {}).length) {\n config.headers['cookie'] = cookies.write(extend(request_cookies, resp.cookies));\n }\n } else if (config.headers['cookie']) {\n debug('Clearing original request cookie', config.headers['cookie']);\n delete config.headers['cookie'];\n }\n\n if (config.follow_set_referer)\n config.headers['referer'] = encodeURI(uri); // the original, not the destination URL.\n\n config.headers['host'] = null; // clear previous Host header to avoid conflicts.\n\n var redirect_url = resolve_url(headers.location, uri);\n debug('Redirecting to ' + redirect_url.toString());\n return self.send_request(++count, method, redirect_url.toString(), config, post_data, out, callback);\n } else if (config.follow_max > 0) {\n return done(new Error('Max redirects reached. Possible loop in: ' + headers.location));\n }\n }\n\n // if auth is requested and credentials were not passed, resend request, provided we have user/pass.\n if (resp.statusCode == 401 && headers['www-authenticate'] && config.credentials) {\n if (!config.headers['authorization']) { // only if authentication hasn't been sent\n var auth_header = auth.header(headers['www-authenticate'], config.credentials, request_opts);\n\n if (auth_header) {\n config.headers['authorization'] = auth_header;\n return self.send_request(count, method, uri, config, post_data, out, callback);\n }\n }\n }\n\n // ok, so we got a valid (non-redirect & authorized) response. let's notify the stream guys.\n out.emit('header', resp.statusCode, headers);\n out.emit('headers', headers);\n\n var pipeline = [],\n mime = parse_content_type(headers['content-type']),\n text_response = mime.type && (mime.type.indexOf('text/') != -1 || !!mime.type.match(/(\\/|\\+)(xml|json)$/));\n\n // To start, if our body is compressed and we're able to inflate it, do it.\n if (headers['content-encoding'] && decompressors[headers['content-encoding']]) {\n\n var decompressor = decompressors[headers['content-encoding']]();\n\n // make sure we catch errors triggered by the decompressor.\n decompressor.on('error', had_error);\n pipeline.push(decompressor);\n }\n\n // If parse is enabled and we have a parser for it, then go for it.\n if (config.parser && parsers[mime.type]) {\n\n // If a specific parser was requested, make sure we don't parse other types.\n var parser_name = config.parser.toString().toLowerCase();\n if (['xml', 'json'].indexOf(parser_name) == -1 || parsers[mime.type].name == parser_name) {\n\n // OK, so either we're parsing all content types or the one requested matches.\n out.parser = parsers[mime.type].name;\n pipeline.push(parsers[mime.type].fn());\n\n // Set objectMode on out stream to improve performance.\n out._writableState.objectMode = true;\n out._readableState.objectMode = true;\n }\n\n // If we're not parsing, and unless decoding was disabled, we'll try\n // decoding non UTF-8 bodies to UTF-8, using the iconv-lite library.\n } else if (text_response && config.decode_response && mime.charset) {\n pipeline.push(decoder(mime.charset));\n }\n\n // And `out` is the stream we finally push the decoded/parsed output to.\n pipeline.push(out);\n\n // Now, release the kraken!\n pump_streams([resp].concat(pipeline), function(err) {\n if (err) debug(err)\n\n // on node v8.x, if an error ocurrs on the receiving end,\n // then we want to abort the request to avoid having dangling sockets\n if (err && err.message == 'write after end') request.destroy();\n });\n\n // If the user has requested and output file, pipe the output stream to it.\n // In stream mode, we will still get the response stream to play with.\n if (config.output && resp.statusCode == 200) {\n\n // for some reason, simply piping resp to the writable stream doesn't\n // work all the time (stream gets cut in the middle with no warning).\n // so we'll manually need to do the readable/write(chunk) trick.\n var file = fs.createWriteStream(config.output);\n file.on('error', had_error);\n\n out.on('end', function() {\n if (file.writable) file.end();\n });\n\n file.on('close', function() {\n delete out.file;\n })\n\n out.on('readable', function() {\n var chunk;\n while ((chunk = this.read()) !== null) {\n if (file.writable) file.write(chunk);\n\n // if callback was requested, also push it to resp.body\n if (resp.body) resp.body.push(chunk);\n }\n })\n\n out.file = file;\n }\n\n // Only aggregate the full body if a callback was requested.\n if (callback) {\n resp.raw = [];\n resp.body = [];\n resp.bytes = 0;\n\n // Gather and count the amount of (raw) bytes using a PassThrough stream.\n var clean_pipe = new stream.PassThrough();\n\n clean_pipe.on('readable', function() {\n var chunk;\n while ((chunk = this.read()) != null) {\n resp.bytes += chunk.length;\n resp.raw.push(chunk);\n }\n })\n\n pump_streams([resp, clean_pipe], function(err) {\n if (err) debug(err);\n });\n\n // Listen on the 'readable' event to aggregate the chunks, but only if\n // file output wasn't requested. Otherwise we'd have two stream readers.\n if (!config.output || resp.statusCode != 200) {\n out.on('readable', function() {\n var chunk;\n while ((chunk = this.read()) !== null) {\n // We're either pushing buffers or objects, never strings.\n if (typeof chunk == 'string') chunk = Buffer.from(chunk);\n\n // Push all chunks to resp.body. We'll bind them in resp.end().\n resp.body.push(chunk);\n }\n })\n }\n }\n\n // And set the .body property once all data is in.\n out.on('end', function() {\n if (resp.body) { // callback mode\n\n // we want to be able to access to the raw data later, so keep a reference.\n resp.raw = Buffer.concat(resp.raw);\n\n // if parse was successful, we should have an array with one object\n if (resp.body[0] !== undefined && !Buffer.isBuffer(resp.body[0])) {\n\n // that's our body right there.\n resp.body = resp.body[0];\n\n // set the parser property on our response. we may want to check.\n if (out.parser) resp.parser = out.parser;\n\n } else { // we got one or several buffers. string or binary.\n resp.body = Buffer.concat(resp.body);\n\n // if we're here and parsed is true, it means we tried to but it didn't work.\n // so given that we got a text response, let's stringify it.\n if (text_response || out.parser) {\n resp.body = resp.body.toString();\n }\n }\n }\n\n // if an output file is being written to, make sure the callback\n // is triggered after all data has been written to it.\n if (out.file) {\n out.file.on('close', function() {\n done(null, resp);\n })\n } else { // elvis has left the building.\n done(null, resp);\n }\n\n });\n\n // out.on('error', function(err) {\n // had_error(err);\n // if (err.code == 'ERR_STREAM_DESTROYED' || err.code == 'ERR_STREAM_PREMATURE_CLOSE') {\n // request.abort();\n // }\n // })\n\n }); // end request call\n\n // unless open_timeout was disabled, set a timeout to abort the request.\n set_timeout('open', config.open_timeout);\n\n // handle errors on the request object. things might get bumpy.\n request.on('error', had_error);\n\n // make sure timer is cleared if request is aborted (issue #257)\n request.once('abort', function() {\n if (timer) clearTimeout(timer);\n })\n\n // handle socket 'end' event to ensure we don't get delayed EPIPE errors.\n request.once('socket', function(socket) {\n if (socket.connecting) {\n socket.once('connect', function() {\n set_timeout('response', config.response_timeout);\n })\n } else {\n set_timeout('response', config.response_timeout);\n }\n\n // socket.once('close', function(e) {\n // console.log('socket closed!', e);\n // })\n\n if (!socket.on_socket_end) {\n socket.on_socket_end = on_socket_end;\n socket.once('end', function() { process.nextTick(on_socket_end.bind(socket)) });\n }\n })\n\n if (post_data) {\n if (is_stream(post_data)) {\n pump_streams([post_data, request], function(err) {\n if (err) debug(err);\n });\n } else {\n request.write(post_data, config.encoding);\n request.end();\n }\n } else {\n request.end();\n }\n\n out.abort = function() { request.abort() }; // easier access\n out.request = request;\n return out;\n}\n\n//////////////////////////////////////////\n// exports\n\nif (typeof Promise !== 'undefined') {\n module.exports = function() {\n var verb, args = [].slice.call(arguments);\n\n if (args[0].match(/\\.|\\//)) // first argument looks like a URL\n verb = (args.length > 2) ? 'post' : 'get';\n else\n verb = args.shift();\n\n if (verb.match(/get|head/i) && args.length == 2)\n args.splice(1, 0, null); // assume no data if head/get with two args (url, options)\n\n return new Promise(function(resolve, reject) {\n module.exports.request(verb, args[0], args[1], args[2], function(err, resp) {\n return err ? reject(err) : resolve(resp);\n });\n })\n }\n}\n\nmodule.exports.version = version;\n\nmodule.exports.defaults = function(obj) {\n for (var key in obj) {\n var target_key = aliased.options[key] || key;\n\n if (defaults.hasOwnProperty(target_key) && typeof obj[key] != 'undefined') {\n if (target_key != 'parse_response' && target_key != 'proxy') {\n // ensure type matches the original, except for proxy/parse_response that can be null/bool or string\n var valid_type = defaults[target_key].constructor.name;\n\n if (obj[key].constructor.name != valid_type)\n throw new TypeError('Invalid type for ' + key + ', should be ' + valid_type);\n }\n defaults[target_key] = obj[key];\n } else {\n throw new Error('Invalid property for defaults:' + target_key);\n }\n }\n\n return defaults;\n}\n\n'head get'.split(' ').forEach(function(method) {\n module.exports[method] = function(uri, options, callback) {\n return new Needle(method, uri, null, options, callback).start();\n }\n})\n\n'post put patch delete'.split(' ').forEach(function(method) {\n module.exports[method] = function(uri, data, options, callback) {\n return new Needle(method, uri, data, options, callback).start();\n }\n})\n\nmodule.exports.request = function(method, uri, data, opts, callback) {\n return new Needle(method, uri, data, opts, callback).start();\n};\n","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeMax = Math.max,\n nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = merge;\n","","'use strict';\n\n\nvar ProbeError = require('./lib/common').ProbeError;\nvar needle = require('needle');\nvar lodashMerge = require('lodash.merge');\nvar pkg = require('./package.json');\nvar probeStream = require('./stream');\nvar URL = require('url').URL;\n\nvar defaultAgent = pkg.name + '/' + pkg.version + '(+https://github.com/nodeca/probe-image-size)';\n\nvar defaults = {\n open_timeout: 10000,\n response_timeout: 60000,\n read_timeout: 60000,\n follow_max: 10,\n parse_response: false,\n // Use to ignore bad certificates.\n //rejectUnauthorized: false,\n headers: {\n 'User-Agent': defaultAgent\n }\n};\n\n\nmodule.exports = function probeHttp(src, options) {\n return new Promise(function (resolve, reject) {\n var stream, len, finalUrl = src;\n\n try {\n var needleOptions = lodashMerge({}, defaults, options);\n stream = needle.get(src, needleOptions);\n } catch (err) {\n reject(err);\n return;\n }\n\n stream.on('redirect', function (location) {\n try {\n finalUrl = new URL(location, finalUrl).href;\n } catch (err) {\n reject(err);\n stream.request.abort();\n }\n });\n\n stream.on('header', function (statusCode, headers) {\n if (statusCode !== 200) {\n reject(new ProbeError('bad status code: ' + statusCode, null, statusCode));\n stream.request.abort();\n return;\n }\n\n len = headers['content-length'];\n });\n\n stream.on('err', function (err) {\n reject(err);\n stream.request.abort();\n });\n\n probeStream(stream, true)\n .then(function (result) {\n if (len && len.match(/^\\d+$/)) result.length = +len;\n\n result.url = finalUrl;\n\n resolve(result);\n stream.request.abort();\n })\n .catch(function (err) {\n reject(err);\n stream.request.abort();\n });\n });\n};\n\n\nmodule.exports.parsers = require('./lib/parsers_stream');\n","'use strict';\n\n\nvar probeStream = require('./stream');\nvar probeHttp = require('./http');\n\n/* eslint-disable consistent-return */\n\nmodule.exports = function get_image_size(src, options) {\n\n if (typeof src.on === 'function' && typeof src.emit === 'function') {\n // looks like an EventEmitter, treating it as a stream\n return probeStream(src, options);\n }\n\n // HTTP (not stream)\n return probeHttp(src, options || {});\n};\n\n\nmodule.exports.parsers = require('./lib/parsers_stream');\nmodule.exports.sync = require('./sync');\nmodule.exports.Error = require('./lib/common').ProbeError;\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],"mappings":";;;;CAYA,IAAI,eAAA,eAAA,eAAA,CAAA,CAAoC;CACxC,IAAI,UAAA,eAAA,eAAA,CAAA,CAAoC;CACxC,IAAI,UAAA,eAAA,eAAA,CAAA,CAAoC;CACxC,IAAI,eAAA,eAAA,eAAA,CAAA,CAAoC;CACxC,IAAI,OAAA,eAAA,mBAAA;CACJ,IAAI,OAAA,eAAA,mBAAA;CAEJ,IAAI,WAAW,QAAQ,MAAM;CAG7B,SAAS,SAAS,QAAQ,OAAO,UAAU;EACzC,IAAI,UAAU,GAAG;GACf,SAAS;GACT;EACF;EAEA,OAAO,WAAW,OAAO,QAAQ;CACnC;CAGA,SAAS,oBAAoB,QAAQ,SAAS,UAAU;EACtD,IAAI,CAAC,QAAQ,iBAAiB,QAAQ,cAAc,UAAU,QAAQ,QAAQ;GAC5E,SAAS,CAAC;GACV;EACF;EAEA,OAAO,WAAW,QAAQ,cAAc,SAAS,QAAQ,QAAQ,WAAY;GAC3E,QAAQ,SAAS,QAAQ,cAAc;GAEvC,OAAO,OAAO,GAAG,SAAU,MAAM;IAC/B,QAAQ,UAAU;IAClB,IAAI,aAAa,aAAa,MAAM,CAAC;IAErC,SAAS,QAAQ,YAAY,WAAY;KACvC,QAAQ,UAAU;KAClB,IAAI,YAAY,QAAQ,cAAc,SAAS,aAAa;KAE5D,IAAI,aAAa,GAAG;MAClB,SAAS,CAAC;MACV;KACF;KAEA,OAAO,OAAO,WAAW,SAAU,WAAW;MAC5C,QAAQ,UAAU;MAClB,SAAS,KAAK,gBAAgB,SAAS,CAAC;KAC1C,CAAC;IACH,CAAC;GACH,CAAC;EACH,CAAC;CACH;CAIA,SAAS,aAAa,QAAQ,SAAS;EACrC,OAAO,OAAO,GAAG,SAAU,MAAM;GAC/B,QAAQ,UAAU;GAClB,IAAI,OAAO,aAAa,MAAM,CAAC,IAAI;GACnC,IAAI,OAAO,OAAO,aAAa,MAAM,MAAM,KAAK,MAAM,GAAG,CAAC,CAAC;GAE3D,IAAI,SAAS,QAAQ;IACnB,OAAO,WAAW,QAAQ;IAC1B,OAAO,KAAK,IAAI;IAChB;GACF,OAAO,IAAI,OAAO,GAAG;IACnB,OAAO,WAAW,QAAQ;IAC1B,OAAO,KAAK,IAAI;IAChB;GACF,OAAO,IAAI,SAAS,UAAU,OAAO,GACnC,OAAO,OAAO,MAAM,SAAU,MAAM;IAClC,QAAQ,UAAU;IAClB,IAAI,UAAU,KAAK,iBAAiB,IAAI;IAExC,IAAI,CAAC,SAAS;KACZ,OAAO,WAAW,QAAQ;KAC1B,OAAO,KAAK,IAAI;KAChB;IACF;IAEA,IAAI,SAAS;KACX,OAAU,QAAQ;KAClB,QAAU,QAAQ;KAClB,MAAU,QAAQ,SAAS;KAC3B,MAAU,QAAQ,SAAS;KAC3B,QAAU;KACV,QAAU;IACZ;IAEA,IAAI,QAAQ,SAAS,SAAS,GAC5B,OAAO,WAAW,QAAQ;IAG5B,IAAI,QAAQ,aACV,OAAO,cAAc,QAAQ;IAG/B,QAAQ,gBAAgB,QAAQ;IAEhC,oBAAoB,QAAQ,SAAS,SAAU,aAAa;KAC1D,IAAI,cAAc,GAAG,OAAO,cAAc;KAE1C,OAAO,WAAW,QAAQ;KAC1B,OAAO,KAAK,MAAM;KAClB,OAAO,KAAK,IAAI;IAClB,CAAC;GACH,CAAC;QAED,SAAS,QAAQ,MAAM,WAAY;IACjC,QAAQ,UAAU;IAClB,aAAa,QAAQ,OAAO;GAC9B,CAAC;EAEL,CAAC;CACH;CAGA,OAAO,UAAU,WAAY;EAC3B,IAAI,SAAS,IAAI,aAAa;EAC9B,IAAI,UAAU;GAAE,QAAQ;GAAG,UAAU;EAAK;EAE1C,OAAO,OAAO,GAAG,SAAU,MAAM;GAC/B,QAAQ,UAAU;GAClB,IAAI,CAAC,QAAQ,MAAM,GAAG,QAAQ,GAAG;IAC/B,OAAO,WAAW,QAAQ;IAC1B,OAAO,KAAK,IAAI;IAChB;GACF;GAEA,IAAI,OAAO,aAAa,MAAM,CAAC,IAAI;GAEnC,IAAI,QAAQ,GAAG;IACb,OAAO,WAAW,QAAQ;IAC1B,OAAO,KAAK,IAAI;IAChB;GACF;GAEA,OAAO,OAAO,MAAM,SAAU,MAAM;IAClC,QAAQ,UAAU;IAClB,QAAQ,WAAW,KAAK,YAAY,IAAI;IAExC,IAAI,CAAC,QAAQ,UAAU;KACrB,OAAO,WAAW,QAAQ;KAC1B,OAAO,KAAK,IAAI;KAChB;IACF;IAEA,aAAa,QAAQ,OAAO;GAC9B,CAAC;EACH,CAAC;EAED,OAAO;CACT;;;;;CC/JA,IAAI,eAAA,eAAA,eAAA,CAAA,CAAoC;CACxC,IAAI,UAAA,eAAA,eAAA,CAAA,CAAoC;CACxC,IAAI,UAAA,eAAA,eAAA,CAAA,CAAoC;CAGxC,IAAI,SAAS,QAAQ,IAAI;CAGzB,OAAO,UAAU,WAAY;EAC3B,IAAI,SAAS,IAAI,aAAa;EAE9B,OAAO,OAAO,IAAI,SAAU,MAAM;GAChC,OAAO,WAAW,QAAQ;GAE1B,IAAI,CAAC,QAAQ,MAAM,GAAG,MAAM,GAAG;IAC7B,OAAO,KAAK,IAAI;IAChB;GACF;GAEA,OAAO,KAAK;IACV,OAAQ,KAAK,aAAa,EAAE;IAC5B,QAAQ,KAAK,aAAa,EAAE;IAC5B,MAAM;IACN,MAAM;IACN,QAAQ;IACR,QAAQ;GACV,CAAC;GAED,OAAO,KAAK,IAAI;EAClB,CAAC;EAED,OAAO;CACT;;;;;CChCA,IAAI,eAAA,eAAA,eAAA,CAAA,CAAoC;CACxC,IAAI,UAAA,eAAA,eAAA,CAAA,CAAoC;CACxC,IAAI,UAAA,eAAA,eAAA,CAAA,CAAoC;CAGxC,IAAI,aAAa,QAAQ,QAAQ;CACjC,IAAI,aAAa,QAAQ,QAAQ;CAGjC,OAAO,UAAU,WAAY;EAC3B,IAAI,SAAS,IAAI,aAAa;EAE9B,OAAO,OAAO,IAAI,SAAU,MAAM;GAChC,OAAO,WAAW,QAAQ;GAE1B,IAAI,CAAC,QAAQ,MAAM,GAAG,UAAU,KAAK,CAAC,QAAQ,MAAM,GAAG,UAAU,GAAG;IAClE,OAAO,KAAK,IAAI;IAChB;GACF;GAEA,OAAO,KAAK;IACV,OAAQ,KAAK,aAAa,CAAC;IAC3B,QAAQ,KAAK,aAAa,CAAC;IAC3B,MAAM;IACN,MAAM;IACN,QAAQ;IACR,QAAQ;GACV,CAAC;GAED,OAAO,KAAK,IAAI;EAClB,CAAC;EAED,OAAO;CACT;;;;;CClCA,IAAI,eAAA,eAAA,eAAA,CAAA,CAAoC;CAExC,IAAI,SAAS;CACb,IAAI,WAAW;CACf,IAAI,aAAa;CAIjB,OAAO,UAAU,WAAY;EAC3B,IAAI,SAAS,IAAI,aAAa;EAE9B,OAAO,OAAO,GAAG,SAAU,MAAM;GAC/B,IAAI,SAAS,KAAK,aAAa,CAAC;GAChC,IAAI,OAAO,KAAK,aAAa,CAAC;GAC9B,IAAI,YAAY,KAAK,aAAa,CAAC;GAEnC,IAAI,WAAW,UAAU,SAAS,YAAY,CAAC,WAAW;IACxD,OAAO,WAAW,QAAQ;IAC1B,OAAO,KAAK,IAAI;IAChB;GACF;GAEA,OAAO,OAAO,YAAY,YAAY,SAAU,WAAW;IACzD,OAAO,WAAW,QAAQ;IAE1B,IAAI,WAAW,CAAC;IAChB,IAAI,UAAU;KAAE,OAAO;KAAG,QAAQ;IAAE;IAEpC,KAAK,IAAI,IAAI,GAAG,IAAI,WAAW,KAAK;KAClC,IAAI,QAAQ,UAAU,UAAU,aAAa,IAAI,CAAC,KAAK;KACvD,IAAI,SAAS,UAAU,UAAU,aAAa,IAAI,CAAC,KAAK;KACxD,IAAI,OAAO;MAAS;MAAe;KAAO;KAC1C,SAAS,KAAK,IAAI;KAElB,IAAI,QAAQ,QAAQ,SAAS,SAAS,QAAQ,QAC5C,UAAU;IAEd;IAEA,OAAO,KAAK;KACV,OAAO,QAAQ;KACf,QAAQ,QAAQ;KACN;KACV,MAAM;KACN,MAAM;KACN,QAAQ;KACR,QAAQ;IACV,CAAC;IACD,OAAO,KAAK,IAAI;GAClB,CAAC;EACH,CAAC;EAED,OAAO;CACT;;;;;CClDA,IAAI,eAAA,eAAA,eAAA,CAAA,CAAoC;CACxC,IAAI,UAAA,eAAA,eAAA,CAAA,CAAoC;CACxC,IAAI,UAAA,eAAA,eAAA,CAAA,CAAoC;CACxC,IAAI,OAAA,eAAA,mBAAA;CAGJ,IAAI,WAAY,QAAQ,UAAU;CAIlC,SAAS,wBAAwB,QAAQ,UAAU;EACjD,OAAO,OAAO,GAAG,SAAU,MAAM;GAC/B,IAAI,OAAO,KAAK;GAEhB,IAAI,SAAS,KAAM;IAEjB,wBAAwB,QAAQ,QAAQ;IACxC;GACF;GAIA,IAAK,OAAQ,QAAQ,QAAQ,OAAS,SAAS,GAAM;IACnD,SAAS,MAAM,CAAC;IAChB;GACF;GAGA,IAAI,OAAQ,QAAQ,QAAQ,KAAM;IAChC,OAAO,OAAO,GAAG,SAAU,QAAQ;KACjC,SAAS,MAAM,OAAO,aAAa,CAAC,IAAI,CAAC;IAC3C,CAAC;IACD;GACF;GAGA,SAAS;EACX,CAAC;CACH;CAGA,SAAS,gBAAgB,QAAQ,SAAS,UAAU;EAClD,IAAI,QAAQ,QAAQ;EACpB,QAAQ,QAAQ;EAEhB,OAAO,OAAO,GAAG,SAAU,MAAM;GAC/B,IAAI,KAAK,OAAO,KAAM;IAEpB,IAAI,OAGF,SAAS;SAGT,gBAAgB,QAAQ,SAAS,QAAQ;IAE3C;GACF;GAEA,wBAAwB,QAAQ,QAAQ;EAC1C,CAAC;CACH;CAIA,SAAS,YAAY,QAAQ,SAAS;EACpC,gBAAgB,QAAQ,SAAS,SAAU,MAAM,QAAQ;GACvD,IAAI,CAAC,QAAQ,SAAS,GAAG;IAEvB,OAAO,WAAW,QAAQ;IAC1B,OAAO,KAAK,IAAI;IAChB;GACF;GAEA,IAAI,SAAS,OAAkB,SAAS,KAAgB;IAEtD,OAAO,WAAW,QAAQ;IAC1B,OAAO,KAAK,IAAI;IAChB;GACF;GAGA,IAAI,SAAS,OAAQ,UAAU,IAAI;IACjC,OAAO,OAAO,QAAQ,SAAU,MAAM;KACpC,IAAI,QAAQ,MAAM,GAAG,QAAQ,GAC3B,QAAQ,cAAc,KAAK,gBAAgB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC;KAGtE,YAAY,QAAQ,OAAO;IAC7B,CAAC;IACD;GACF;GAEA,IAAI,UAAU,GAAG;IAEf,YAAY,QAAQ,OAAO;IAC3B;GACF;GAEA,IAAI,UAAU,KACT,OAAQ,QAAQ,QAAQ,OACzB,SAAS,OAAQ,SAAS,OAAQ,SAAS,KAAM;IAEnD,OAAO,OAAO,QAAQ,SAAU,MAAM;KACpC,OAAO,WAAW,QAAQ;KAE1B,IAAI,SAAS;MACX,OAAQ,KAAK,aAAa,CAAC;MAC3B,QAAQ,KAAK,aAAa,CAAC;MAC3B,MAAM;MACN,MAAM;MACN,QAAQ;MACR,QAAQ;KACV;KAEA,IAAI,QAAQ,cAAc,GAAG,OAAO,cAAc,QAAQ;KAE1D,OAAO,KAAK,MAAM;KAClB,OAAO,KAAK,IAAI;IAClB,CAAC;IACD;GACF;GAEA,OAAO,WAAW,QAAQ,WAAY;IACpC,YAAY,QAAQ,OAAO;GAC7B,CAAC;EACH,CAAC;CACH;CAGA,OAAO,UAAU,WAAY;EAC3B,IAAI,SAAW,IAAI,aAAa;EAEhC,OAAO,OAAO,GAAG,SAAU,MAAM;GAC/B,IAAI,KAAK,OAAO,OAAQ,KAAK,OAAO,KAAM;IAExC,OAAO,WAAW,QAAQ;IAC1B,OAAO,KAAK,IAAI;IAChB;GACF;GAEA,YAAY,QAAQ,EAAE,OAAO,KAAK,CAAC;EACrC,CAAC;EAED,OAAO;CACT;;;;;CCnJA,IAAI,eAAA,eAAA,eAAA,CAAA,CAAoC;CACxC,IAAI,UAAA,eAAA,eAAA,CAAA,CAAoC;CACxC,IAAI,UAAA,eAAA,eAAA,CAAA,CAAoC;CAGxC,IAAI,UAAW,QAAQ,aAAmB;CAC1C,IAAI,WAAW,QAAQ,MAAM;CAG7B,OAAO,UAAU,WAAY;EAC3B,IAAI,SAAS,IAAI,aAAa;EAE9B,OAAO,OAAO,IAAI,SAAU,MAAM;GAChC,OAAO,WAAW,QAAQ;GAG1B,IAAI,CAAC,QAAQ,MAAM,GAAG,OAAO,GAAG;IAC9B,OAAO,KAAK,IAAI;IAChB;GACF;GAGA,IAAI,CAAC,QAAQ,MAAM,IAAI,QAAQ,GAAG;IAChC,OAAO,KAAK,IAAI;IAChB;GACF;GAEA,OAAO,KAAK;IACV,OAAQ,KAAK,aAAa,EAAE;IAC5B,QAAQ,KAAK,aAAa,EAAE;IAC5B,MAAM;IACN,MAAM;IACN,QAAQ;IACR,QAAQ;GACV,CAAC;GAED,OAAO,KAAK,IAAI;EAClB,CAAC;EAED,OAAO;CACT;;;;;CCxCA,IAAI,eAAA,eAAA,eAAA,CAAA,CAAoC;CACxC,IAAI,UAAA,eAAA,eAAA,CAAA,CAAoC;CACxC,IAAI,UAAA,eAAA,eAAA,CAAA,CAAoC;CAGxC,IAAI,WAAY,QAAQ,SAAc;CAGtC,OAAO,UAAU,WAAY;EAC3B,IAAI,SAAS,IAAI,aAAa;EAE9B,OAAO,OAAO,GAAG,SAAU,MAAM;GAE/B,IAAI,CAAC,QAAQ,MAAM,GAAG,QAAQ,GAAG;IAC/B,OAAO,WAAW,QAAQ;IAC1B,OAAO,KAAK,IAAI;IAChB;GACF;GAEA,OAAO,OAAO,IAAI,SAAU,MAAM;IAChC,OAAO,WAAW,QAAQ;IAE1B,OAAO,KAAK;KACV,OAAQ,KAAK,aAAa,EAAE;KAC5B,QAAQ,KAAK,aAAa,CAAC;KAC3B,MAAM;KACN,MAAM;KACN,QAAQ;KACR,QAAQ;IACV,CAAC;IAED,OAAO,KAAK,IAAI;GAClB,CAAC;EACH,CAAC;EAED,OAAO;CACT;;;;;CCnCA,IAAIA,cAAY,QAAQ,QAAQ,CAAC,CAAC;CAElC,IAAI,iBAAkB;CACtB,IAAI,cAAkB;CACtB,IAAI,eAAkB;CAGtB,IAAI,kBAAkB;CAItB,IAAI,gBAAiB;CAIrB,IAAI,aAAiB;CAErB,IAAI,eAAiB;CACrB,IAAI,gBAAiB;CACrB,IAAI,iBAAiB;CACrB,IAAI,eAAiB;CAGrB,SAAS,aAAa,KAAK;EACzB,OAAO,QAAQ,MAAQ,QAAQ,KAAQ,QAAQ,MAAQ,QAAQ;CACjE;CAGA,SAAS,iBAAiB,KAAK;EAC7B,OAAO,OAAO,QAAQ,YAAY,SAAS,GAAG,KAAK,MAAM;CAC3D;CAEA,SAAS,SAAS,KAAK;EACrB,IAAI,QAAU,IAAI,MAAM,YAAY;EACpC,IAAI,SAAU,IAAI,MAAM,aAAa;EACrC,IAAI,UAAU,IAAI,MAAM,cAAc;EAEtC,OAAO;GACL,OAAS,UAAU,MAAM,MAAM,MAAM;GACrC,QAAS,WAAW,OAAO,MAAM,OAAO;GACxC,SAAS,YAAY,QAAQ,MAAM,QAAQ;EAC7C;CACF;CAGA,SAAS,MAAM,KAAK;EAClB,IAAI,CAAC,aAAa,KAAK,GAAG,GAAG,OAAO;EAEpC,OAAO,IAAI,MAAM,YAAY,CAAC,CAAC;CACjC;CAGA,SAAS,SAAS,KAAK;EAErB,IAAI,UAAU,IAAI,MAAM,aAAa,KAAK,CAAE,EAAG,EAAA,CAAG;EAGlD,IAAI,CAAC,WAAW,KAAK,MAAM,GAAG;EAE9B,IAAI,QAAS,SAAS,MAAM;EAC5B,IAAI,QAAS,WAAW,MAAM,KAAK;EACnC,IAAI,SAAS,WAAW,MAAM,MAAM;EAIpC,IAAI,MAAM,SAAS,MAAM,QAAQ;GAC/B,IAAI,CAAC,iBAAiB,KAAK,KAAK,CAAC,iBAAiB,MAAM,GAAG;GAE3D,OAAO;IACG;IACA;IACR,MAAQ;IACR,MAAQ;IACR,QAAQ,MAAM,MAAM,KAAK;IACzB,QAAQ,MAAM,MAAM,MAAM;GAC5B;EACF;EAIA,IAAI,SAAS,MAAM,WAAW,GAAA,CAAI,MAAM,GAAG;EAC3C,IAAI,UAAU;GACZ,OAAQ,MAAM;GACd,QAAQ,MAAM;EAChB;EACA,IAAI,UAAW,WAAW,QAAQ,KAAK;EACvC,IAAI,WAAW,WAAW,QAAQ,MAAM;EAExC,IAAI,CAAC,iBAAiB,OAAO,KAAK,CAAC,iBAAiB,QAAQ,GAAG;EAC/D,IAAI,MAAM,QAAQ,KAAK,MAAM,MAAM,QAAQ,MAAM,GAAG;EAEpD,IAAI,QAAQ,UAAU;EAEtB,IAAI,MAAM,OAAO;GACf,IAAI,CAAC,iBAAiB,KAAK,GAAG;GAE9B,OAAO;IACG;IACR,QAAQ,QAAQ;IAChB,MAAQ;IACR,MAAQ;IACR,QAAQ,MAAM,MAAM,KAAK;IACzB,QAAQ,MAAM,MAAM,KAAK;GAC3B;EACF;EAEA,IAAI,MAAM,QAAQ;GAChB,IAAI,CAAC,iBAAiB,MAAM,GAAG;GAE/B,OAAO;IACL,OAAQ,SAAS;IACT;IACR,MAAQ;IACR,MAAQ;IACR,QAAQ,MAAM,MAAM,MAAM;IAC1B,QAAQ,MAAM,MAAM,MAAM;GAC5B;EACF;EAEA,OAAO;GACL,OAAQ;GACR,QAAQ;GACR,MAAQ;GACR,MAAQ;GACR,QAAQ,MAAM,QAAQ,KAAK;GAC3B,QAAQ,MAAM,QAAQ,MAAM;EAC9B;CACF;CAGA,OAAO,UAAU,WAAY;EAC3B,IAAI,QAAW;EACf,IAAI,WAAW;EACf,IAAI,MAAW;EACf,IAAI,MAAW;EAEf,IAAI,SAAS,IAAIA,YAAU;GACzB,oBAAoB;GACpB,WAAW,SAAS,UAAU,OAAO,UAAU,MAAM;IACnD,QAAQ,OAAR;KAEE,KAAK;MACH,IAAI,KAAK;OAGP,QAAQ,OAAO,OAAO,CAAE,KAAK,KAAM,CAAC;OACpC,MAAM;MACR;MAEA,IAAI,aAAa,KAAK,MAAM,SAAS,GAAG;OAGtC,MAAM;OACN;MACF;MAEA,IAAI,IAAI,GAAG,MAAM,MAAM;MAGvB,IAAI,aAAa,KAAK,MAAM,OAAO,OAAQ,MAAM,OAAO,OAAQ,MAAM,OAAO,KAAM,IAAI;MAEvF,OAAO,IAAI,OAAO,aAAa,MAAM,EAAE,GAAG;MAE1C,IAAI,KAAK,KAAK;OACZ,YAAY,MAAM;OAElB,IAAI,WAAW,iBAAiB;QAC9B,QAAQ;QACR,OAAO,KAAK,IAAI;OAClB;MAEF,OAAO,IAAI,MAAM,OAAO,IAAc;OACpC,QAAQ;OACR,OAAO,UAAU,OAAO,UAAU,IAAI;MAExC,OAAO;OACL,QAAQ;OACR,OAAO,KAAK,IAAI;MAClB;MAEA;KAEF,KAAK;MACH,OAAO,MAAM,SAAS;MAEtB,IAAI,SAAS,SAAS,GAAG;MAEzB,IAAI,QAAQ;OACV,QAAQ;OACR,OAAO,KAAK,MAAM;OAClB,OAAO,KAAK,IAAI;OAChB;MACF;MAEA,YAAY,MAAM;MAElB,IAAI,WAAW,iBAAiB;OAC9B,QAAQ;OACR,OAAO,KAAK,IAAI;MAClB;MAEA;IACJ;IAEA,KAAK;GACP;GAEA,OAAO,WAAY;IACjB,QAAQ;IACR,OAAO,KAAK,IAAI;GAClB;EACF,CAAC;EAED,OAAO;CACT;;;;;CCvNA,IAAI,eAAA,eAAA,eAAA,CAAA,CAAoC;CACxC,IAAI,UAAA,eAAA,eAAA,CAAA,CAAoC;CACxC,IAAI,UAAA,eAAA,eAAA,CAAA,CAAoC;CAGxC,IAAI,QAAQ,QAAQ,OAAU;CAC9B,IAAI,QAAQ,QAAQ,OAAU;CAG9B,SAAS,WAAW,QAAQ,QAAQ,eAAe;EACjD,OAAO,gBAAgB,OAAO,aAAa,MAAM,IAAI,OAAO,aAAa,MAAM;CACjF;CAEA,SAAS,WAAW,QAAQ,QAAQ,eAAe;EACjD,OAAO,gBAAgB,OAAO,aAAa,MAAM,IAAI,OAAO,aAAa,MAAM;CACjF;CAEA,SAAS,aAAa,MAAM,aAAa,eAAe;EACtD,IAAI,OAAa,WAAW,MAAM,cAAc,GAAG,aAAa;EAGhE,IAFiB,WAAW,MAAM,cAAc,GAAG,aAE1C,MAAM,KAAM,SAAS,KAAK,SAAS,GAC1C,OAAO;EAGT,IAAI,SAAS,GACX,OAAO,WAAW,MAAM,cAAc,GAAG,aAAa;EAGxD,OAAO,WAAW,MAAM,cAAc,GAAG,aAAa;CACxD;CAEA,OAAO,UAAU,WAAY;EAC3B,IAAI,SAAS,IAAI,aAAa;EAG9B,OAAO,OAAO,GAAG,SAAU,MAAM;GAE/B,IAAI,CAAC,QAAQ,MAAM,GAAG,KAAK,KAAK,CAAC,QAAQ,MAAM,GAAG,KAAK,GAAG;IACxD,OAAO,WAAW,QAAQ;IAC1B,OAAO,KAAK,IAAI;IAChB;GACF;GAEA,IAAI,gBAAiB,KAAK,OAAO;GACjC,IAAI,QAAQ,WAAW,MAAM,GAAG,aAAa,IAAI;GAEjD,IAAI,QAAQ,GAAG;IACb,OAAO,WAAW,QAAQ;IAC1B,OAAO,KAAK,IAAI;IAChB;GACF;GAEA,SAAS,SAAS,QAAQ,OAAO,UAAU;IACzC,IAAI,UAAU,GAAG;KACf,SAAS;KACT;IACF;IAEA,OAAO,WAAW,OAAO,QAAQ;GACnC;GAGA,SAAS,QAAQ,OAAO,WAAY;IAElC,OAAO,OAAO,GAAG,SAAU,MAAM;KAC/B,IAAI,WAAW,WAAW,MAAM,GAAG,aAAa,IAAI;KAEpD,IAAI,YAAY,GAAG;MACjB,OAAO,WAAW,QAAQ;MAC1B,OAAO,KAAK,IAAI;MAChB;KACF;KAGA,OAAO,OAAO,UAAU,SAAU,MAAM;MACtC,OAAO,WAAW,QAAQ;MAE1B,IAAI,GAAG,OAAO,QAAQ;MAEtB,KAAK,IAAI,GAAG,IAAI,UAAU,KAAK,IAAI;OACjC,MAAM,WAAW,MAAM,GAAG,aAAa;OAEvC,IAAI,QAAQ,KACV,QAAQ,aAAa,MAAM,GAAG,aAAa;YACtC,IAAI,QAAQ,KACjB,SAAS,aAAa,MAAM,GAAG,aAAa;MAEhD;MAEA,IAAI,SAAS,QACX,OAAO,KAAK;OACF;OACA;OACR,MAAQ;OACR,MAAQ;OACR,QAAQ;OACR,QAAQ;MACV,CAAC;MAGH,OAAO,KAAK,IAAI;KAClB,CAAC;IACH,CAAC;GACH,CAAC;EACH,CAAC;EAED,OAAO;CACT;;;;;CC1GA,IAAI,eAAA,eAAA,eAAA,CAAA,CAAoC;CACxC,IAAI,UAAA,eAAA,eAAA,CAAA,CAAoC;CACxC,IAAI,UAAA,eAAA,eAAA,CAAA,CAAoC;CACxC,IAAI,OAAA,eAAA,mBAAA;CAGJ,IAAI,WAAW,QAAQ,MAAM;CAC7B,IAAI,WAAW,QAAQ,MAAM;CAG7B,SAAS,SAAS,QAAQ,OAAO,UAAU;EACzC,IAAI,UAAU,GAAG;GACf,SAAS;GACT;EACF;EAEA,OAAO,WAAW,OAAO,QAAQ;CACnC;CAGA,SAAS,SAAS,QAAQ,QAAQ,SAAS;EACzC,OAAO,OAAO,IAAI,SAAU,MAAM;GAEhC,IAAI,KAAK,OAAO,OAAQ,KAAK,OAAO,KAAQ,KAAK,OAAO,IACtD,QAAQ,SAAS,QAAQ,UAAU;IACjC,OAAQ,KAAK,aAAa,CAAC,IAAI;IAC/B,QAAQ,KAAK,aAAa,CAAC,IAAI;IAC/B,MAAQ;IACR,MAAQ;IACR,QAAQ;IACR,QAAQ;GACV;GAGF,SAAS,QAAQ,SAAS,IAAI,WAAY;IACxC,QAAQ,UAAU;IAClB,YAAY,QAAQ,OAAO;GAC7B,CAAC;EACH,CAAC;CACH;CAGA,SAAS,UAAU,QAAQ,QAAQ,SAAS;EAC1C,OAAO,OAAO,GAAG,SAAU,MAAM;GAE/B,IAAI,KAAK,OAAO,IAAM;IACpB,IAAI,OAAO,KAAK,aAAa,CAAC;IAE9B,QAAQ,SAAS,QAAQ,UAAU;KACjC,QAAS,OAAO,SAAU;KAC1B,SAAU,QAAQ,KAAM,SAAU;KAClC,MAAQ;KACR,MAAQ;KACR,QAAQ;KACR,QAAQ;IACV;GACF;GAEA,SAAS,QAAQ,SAAS,GAAG,WAAY;IACvC,QAAQ,UAAU;IAClB,YAAY,QAAQ,OAAO;GAC7B,CAAC;EACH,CAAC;CACH;CAGA,SAAS,UAAU,QAAQ,QAAQ,SAAS;EAC1C,OAAO,OAAO,IAAI,SAAU,MAAM;GAChC,QAAQ,SAAS,QAAQ,UAAU;IAGjC,QAAU,KAAK,MAAM,KAAO,KAAK,MAAM,IAAK,KAAK,MAAM;IACvD,SAAU,KAAK,MAAM,KAAO,KAAK,MAAM,IAAK,KAAK,MAAM;IACvD,MAAQ;IACR,MAAQ;IACR,QAAQ;IACR,QAAQ;GACV;GAEA,SAAS,QAAQ,SAAS,IAAI,WAAY;IACxC,QAAQ,UAAU;IAClB,YAAY,QAAQ,OAAO;GAC7B,CAAC;EACH,CAAC;CACH;CAGA,SAAS,UAAU,QAAQ,QAAQ,SAAS;EAC1C,OAAO,OAAO,QAAQ,SAAU,MAAM;GAEpC,QAAQ,SAAS;GACjB,QAAQ,mBAAmB,KAAK,gBAAgB,IAAI;GAEpD,YAAY,QAAQ,OAAO;EAC7B,CAAC;CACH;CAGA,SAAS,YAAY,QAAQ,SAAS;EACpC,IAAI,QAAQ,aAAa,KAAK,QAAQ,QAAQ;GAC5C,OAAO,WAAW,QAAQ;GAE1B,IAAI,QAAQ,QAAQ;IAClB,IAAI,SAAS,QAAQ;IAErB,IAAI,QAAQ,mBAAmB,GAC7B,OAAO,cAAc,QAAQ;IAG/B,OAAO,KAAK,MAAM;GACpB;GAEA,OAAO,KAAK,IAAI;GAChB;EACF;EAEA,OAAO,OAAO,IAAI,QAAQ,oBAAoB,QAAQ,SAAU,MAAM;GACpE,QAAQ,UAAU,IAAI,QAAQ,oBAAoB;GAClD,IAAI,SAAS,QAAQ,sBAAsB,OAAO,aAAa,MAAM,MAAM,IAAI;GAG/E,SAAS,OAAO,QAAQ,QAAQ,EAAE;GAElC,IAAI,OAAO,SAAS,GAAG;IACrB,QAAQ,sBAAsB;IAC9B,YAAY,QAAQ,OAAO;IAC3B;GACF;GAEA,QAAQ,sBAAsB;GAE9B,OAAO,OAAO,GAAG,SAAU,MAAM;IAC/B,QAAQ,UAAU;IAClB,IAAI,SAAS,KAAK,aAAa,CAAC;IAEhC,IAAI,WAAW,UAAU,UAAU,IACjC,SAAS,QAAQ,QAAQ,OAAO;SAC3B,IAAI,WAAW,UAAU,UAAU,GACxC,UAAU,QAAQ,QAAQ,OAAO;SAC5B,IAAI,WAAW,UAAU,UAAU,IACxC,UAAU,QAAQ,QAAQ,OAAO;SAC5B,IAAI,WAAW,UAAU,UAAU,GACxC,UAAU,QAAQ,QAAQ,OAAO;SAEjC,SAAS,QAAQ,QAAQ,WAAY;KACnC,QAAQ,UAAU;KAClB,YAAY,QAAQ,OAAO;IAC7B,CAAC;GAEL,CAAC;EACH,CAAC;CACH;CAGA,OAAO,UAAU,WAAY;EAC3B,IAAI,SAAS,IAAI,aAAa;EAE9B,OAAO,OAAO,IAAI,SAAU,MAAM;GAGhC,IAAI,QAAQ,MAAM,GAAG,QAAQ,KAAK,QAAQ,MAAM,GAAG,QAAQ,GACzD,YAAY,QAAQ;IAClB,YAAY,KAAK,aAAa,CAAC,IAAI;IACnC,QAAQ;IACR,kBAAkB;IAClB,qBAAqB;GACvB,CAAC;QACI;IACL,OAAO,WAAW,QAAQ;IAC1B,OAAO,KAAK,IAAI;GAClB;EACF,CAAC;EAED,OAAO;CACT;;;;;CCjLA,OAAO,UAAU;EACf,MAAA,aAAA;EACA,KAAA,YAAA;EACA,KAAA,YAAA;EACA,KAAA,YAAA;EACA,MAAA,aAAA;EACA,KAAA,YAAA;EACA,KAAA,YAAA;EACA,KAAA,YAAA;EACA,MAAA,aAAA;EACA,MAAA,aAAA;CACF;;;;;CCVA,IAAI,aAAA,eAAA,eAAA,CAAA,CAAsC;CAC1C,IAAI,UAAA,uBAAA;CACJ,IAAI,cAAc,QAAQ,QAAQ,CAAC,CAAC;CACpC,IAAI,WAAc,QAAQ,QAAQ,CAAC,CAAC;CAGpC,OAAO,UAAU,SAAS,YAAY,KAAK,UAAU;EACnD,IAAI,QAAQ,IAAI,YAAY;EAG5B,MAAM,gBAAgB,OAAO,KAAK,OAAO,CAAC,CAAC,SAAS,EAAE;EAEtD,IAAI,SAAS,IAAI,QAAQ,SAAU,SAAS,QAAQ;GAClD,IAAI,GAAG,SAAS,MAAM;GACtB,MAAM,GAAG,SAAS,MAAM;GAExB,IAAI,gBAAgB,CAAC;GACrB,IAAI;GAEJ,SAAS,UAAU,KAAK;IACtB,IAAI,MAAM,cAAc,QAAQ;;IAGhC,IAAI,MAAM,GAAG;;IAGb,IAAI,KAAK,aAAa;IAEtB,MAAM,OAAO,IAAI;IACjB,KAAK,mBAAmB;IACxB,cAAc,OAAO,KAAK,CAAC;IAE3B,IAAI,cAAc,QAAQ;IAG1B,OAAO,cAAc,IAAI,WAAW,4BAA4B,UAAU,CAAC;GAC7E;GAEA,OAAO,KAAK,OAAO,CAAC,CAAC,QAAQ,SAAU,MAAM;IAC3C,IAAI,UAAU,QAAQ,KAAK,CAAC;IAE5B,cAAc,KAAK,OAAO;IAE1B,QAAQ,KAAK,QAAQ,OAAO;IAC5B,QAAQ,KAAK,OAAO,SAAS;IAG7B,QAAQ,GAAG,SAAS,SAAS;IAE7B,MAAM,KAAK,OAAO;GACpB,CAAC;EACH,CAAC;EAED,SAAS,UAAU;GAEjB,IAAI,YAAY,OAAO,IAAI,WAAW,YAAY,IAAI,OAAO,KAAK;GAClE,MAAM,QAAQ;EAChB;EAEA,OAAO,KAAK,OAAO,CAAC,CAAC,MAAM,OAAO;EAElC,IAAI,UAAU,IAAI,KAAK,KAAK;OACvB,SAAS,KAAK,OAAO,WAAY,CAAC,CAAC;EAExC,OAAO;CACT;CAGA,OAAO,QAAQ,UAAU;;;;;;;;CCnEzB,IAAI,IAAI;CACR,IAAI,IAAI,IAAI;CACZ,IAAI,IAAI,IAAI;CACZ,IAAI,IAAI,IAAI;CACZ,IAAI,IAAI,IAAI;CACZ,IAAI,IAAI,IAAI;;;;;;;;;;;;;;CAgBZ,OAAO,UAAU,SAAU,KAAK,SAAS;EACvC,UAAU,WAAW,CAAC;EACtB,IAAI,OAAO,OAAO;EAClB,IAAI,SAAS,YAAY,IAAI,SAAS,GACpC,OAAO,MAAM,GAAG;OACX,IAAI,SAAS,YAAY,SAAS,GAAG,GAC1C,OAAO,QAAQ,OAAO,QAAQ,GAAG,IAAI,SAAS,GAAG;EAEnD,MAAM,IAAI,MACR,0DACE,KAAK,UAAU,GAAG,CACtB;CACF;;;;;;;;CAUA,SAAS,MAAM,KAAK;EAClB,MAAM,OAAO,GAAG;EAChB,IAAI,IAAI,SAAS,KACf;EAEF,IAAI,QAAQ,mIAAmI,KAC7I,GACF;EACA,IAAI,CAAC,OACH;EAEF,IAAI,IAAI,WAAW,MAAM,EAAE;EAE3B,SADY,MAAM,MAAM,KAAA,CAAM,YACnB,GAAX;GACE,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK,KACH,OAAO,IAAI;GACb,KAAK;GACL,KAAK;GACL,KAAK,KACH,OAAO,IAAI;GACb,KAAK;GACL,KAAK;GACL,KAAK,KACH,OAAO,IAAI;GACb,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK,KACH,OAAO,IAAI;GACb,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK,KACH,OAAO,IAAI;GACb,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK,KACH,OAAO,IAAI;GACb,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK,MACH,OAAO;GACT,SACE;EACJ;CACF;;;;;;;;CAUA,SAAS,SAAS,IAAI;EACpB,IAAI,QAAQ,KAAK,IAAI,EAAE;EACvB,IAAI,SAAS,GACX,OAAO,KAAK,MAAM,KAAK,CAAC,IAAI;EAE9B,IAAI,SAAS,GACX,OAAO,KAAK,MAAM,KAAK,CAAC,IAAI;EAE9B,IAAI,SAAS,GACX,OAAO,KAAK,MAAM,KAAK,CAAC,IAAI;EAE9B,IAAI,SAAS,GACX,OAAO,KAAK,MAAM,KAAK,CAAC,IAAI;EAE9B,OAAO,KAAK;CACd;;;;;;;;CAUA,SAAS,QAAQ,IAAI;EACnB,IAAI,QAAQ,KAAK,IAAI,EAAE;EACvB,IAAI,SAAS,GACX,OAAO,OAAO,IAAI,OAAO,GAAG,KAAK;EAEnC,IAAI,SAAS,GACX,OAAO,OAAO,IAAI,OAAO,GAAG,MAAM;EAEpC,IAAI,SAAS,GACX,OAAO,OAAO,IAAI,OAAO,GAAG,QAAQ;EAEtC,IAAI,SAAS,GACX,OAAO,OAAO,IAAI,OAAO,GAAG,QAAQ;EAEtC,OAAO,KAAK;CACd;;;;CAMA,SAAS,OAAO,IAAI,OAAO,GAAG,MAAM;EAClC,IAAI,WAAW,SAAS,IAAI;EAC5B,OAAO,KAAK,MAAM,KAAK,CAAC,IAAI,MAAM,QAAQ,WAAW,MAAM;CAC7D;;;;;;;;;CC3JA,SAAS,MAAM,KAAK;EAClB,YAAY,QAAQ;EACpB,YAAY,UAAU;EACtB,YAAY,SAAS;EACrB,YAAY,UAAU;EACtB,YAAY,SAAS;EACrB,YAAY,UAAU;EACtB,YAAY,WAAA,WAAA;EACZ,OAAO,KAAK,GAAG,CAAC,CAAC,QAAQ,SAAU,KAAK;GACtC,YAAY,OAAO,IAAI;EACzB,CAAC;;;;EAKD,YAAY,YAAY,CAAC;;;;EAKzB,YAAY,QAAQ,CAAC;EACrB,YAAY,QAAQ,CAAC;;;;;;EAOrB,YAAY,aAAa,CAAC;;;;;;;EAQ1B,SAAS,YAAY,WAAW;GAC9B,IAAI,OAAO;GAEX,KAAK,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;IACzC,QAAQ,QAAQ,KAAK,OAAO,UAAU,WAAW,CAAC;IAClD,QAAQ;GACV;GAEA,OAAO,YAAY,OAAO,KAAK,IAAI,IAAI,IAAI,YAAY,OAAO;EAChE;EAEA,YAAY,cAAc;;;;;;;;EAS1B,SAAS,YAAY,WAAW;GAC9B,IAAI;GAEJ,SAAS,QAAQ;IAEf,IAAI,CAAC,MAAM,SACT;IAGF,KAAK,IAAI,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAC/E,KAAK,QAAQ,UAAU;IAGzB,IAAI,OAAO;IAEX,IAAI,OAAO,uBAAO,IAAI,KAAK,CAAC;IAE5B,KAAK,OADI,QAAQ,YAAY;IAE7B,KAAK,OAAO;IACZ,KAAK,OAAO;IACZ,WAAW;IACX,KAAK,KAAK,YAAY,OAAO,KAAK,EAAE;IAEpC,IAAI,OAAO,KAAK,OAAO,UAErB,KAAK,QAAQ,IAAI;IAInB,IAAI,QAAQ;IACZ,KAAK,KAAK,KAAK,EAAE,CAAC,QAAQ,iBAAiB,SAAU,OAAO,QAAQ;KAElE,IAAI,UAAU,MACZ,OAAO;KAGT;KACA,IAAI,YAAY,YAAY,WAAW;KAEvC,IAAI,OAAO,cAAc,YAAY;MACnC,IAAI,MAAM,KAAK;MACf,QAAQ,UAAU,KAAK,MAAM,GAAG;MAEhC,KAAK,OAAO,OAAO,CAAC;MACpB;KACF;KAEA,OAAO;IACT,CAAC;IAED,YAAY,WAAW,KAAK,MAAM,IAAI;IAEtC,CADY,KAAK,OAAO,YAAY,IAAA,CAC9B,MAAM,MAAM,IAAI;GACxB;GAEA,MAAM,YAAY;GAClB,MAAM,UAAU,YAAY,QAAQ,SAAS;GAC7C,MAAM,YAAY,YAAY,UAAU;GACxC,MAAM,QAAQ,YAAY,SAAS;GACnC,MAAM,UAAU;GAChB,MAAM,SAAS;GAIf,IAAI,OAAO,YAAY,SAAS,YAC9B,YAAY,KAAK,KAAK;GAGxB,YAAY,UAAU,KAAK,KAAK;GAChC,OAAO;EACT;EAEA,SAAS,UAAU;GACjB,IAAI,QAAQ,YAAY,UAAU,QAAQ,IAAI;GAE9C,IAAI,UAAU,IAAI;IAChB,YAAY,UAAU,OAAO,OAAO,CAAC;IACrC,OAAO;GACT;GAEA,OAAO;EACT;EAEA,SAAS,OAAO,WAAW,WAAW;GACpC,OAAO,YAAY,KAAK,aAAa,OAAO,cAAc,cAAc,MAAM,aAAa,SAAS;EACtG;;;;;;;;EAUA,SAAS,OAAO,YAAY;GAC1B,YAAY,KAAK,UAAU;GAC3B,YAAY,QAAQ,CAAC;GACrB,YAAY,QAAQ,CAAC;GACrB,IAAI;GACJ,IAAI,SAAS,OAAO,eAAe,WAAW,aAAa,GAAA,CAAI,MAAM,QAAQ;GAC7E,IAAI,MAAM,MAAM;GAEhB,KAAK,IAAI,GAAG,IAAI,KAAK,KAAK;IACxB,IAAI,CAAC,MAAM,IAET;IAGF,aAAa,MAAM,EAAE,CAAC,QAAQ,OAAO,KAAK;IAE1C,IAAI,WAAW,OAAO,KACpB,YAAY,MAAM,KAAK,IAAI,OAAO,MAAM,WAAW,OAAO,CAAC,IAAI,GAAG,CAAC;SAEnE,YAAY,MAAM,KAAK,IAAI,OAAO,MAAM,aAAa,GAAG,CAAC;GAE7D;GAEA,KAAK,IAAI,GAAG,IAAI,YAAY,UAAU,QAAQ,KAAK;IACjD,IAAI,WAAW,YAAY,UAAU;IACrC,SAAS,UAAU,YAAY,QAAQ,SAAS,SAAS;GAC3D;EACF;;;;;;EAQA,SAAS,UAAU;GACjB,YAAY,OAAO,EAAE;EACvB;;;;;;;;EAUA,SAAS,QAAQ,MAAM;GACrB,IAAI,KAAK,KAAK,SAAS,OAAO,KAC5B,OAAO;GAGT,IAAI;GACJ,IAAI;GAEJ,KAAK,IAAI,GAAG,MAAM,YAAY,MAAM,QAAQ,IAAI,KAAK,KACnD,IAAI,YAAY,MAAM,EAAE,CAAC,KAAK,IAAI,GAChC,OAAO;GAIX,KAAK,IAAI,GAAG,MAAM,YAAY,MAAM,QAAQ,IAAI,KAAK,KACnD,IAAI,YAAY,MAAM,EAAE,CAAC,KAAK,IAAI,GAChC,OAAO;GAIX,OAAO;EACT;;;;;;;;EAUA,SAAS,OAAO,KAAK;GACnB,IAAI,eAAe,OACjB,OAAO,IAAI,SAAS,IAAI;GAG1B,OAAO;EACT;EAEA,YAAY,OAAO,YAAY,KAAK,CAAC;EACrC,OAAO;CACT;CAEA,OAAO,UAAU;;;;;CCrPjB,SAAS,QAAQ,KAAK;EAAE,IAAI,OAAO,WAAW,cAAc,OAAO,OAAO,aAAa,UAAY,UAAU,SAAS,QAAQ,KAAK;GAAE,OAAO,OAAO;EAAK;OAAY,UAAU,SAAS,QAAQ,KAAK;GAAE,OAAO,OAAO,OAAO,WAAW,cAAc,IAAI,gBAAgB,UAAU,QAAQ,OAAO,YAAY,WAAW,OAAO;EAAK;EAAK,OAAO,QAAQ,GAAG;CAAG;;;;CAO9V,QAAQ,MAAM;CACd,QAAQ,aAAa;CACrB,QAAQ,OAAO;CACf,QAAQ,OAAO;CACf,QAAQ,YAAY;CACpB,QAAQ,UAAU,aAAa;;;;CAK/B,QAAQ,SAAS;EAAC;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;EAAW;CAAS;;;;;;;;CAUp1B,SAAS,YAAY;EAInB,IAAI,OAAO,WAAW,eAAe,OAAO,YAAY,OAAO,QAAQ,SAAS,cAAc,OAAO,QAAQ,SAC3G,OAAO;EAIT,IAAI,OAAO,cAAc,eAAe,UAAU,aAAa,UAAU,UAAU,YAAY,CAAC,CAAC,MAAM,uBAAuB,GAC5H,OAAO;EAKT,OAAO,OAAO,aAAa,eAAe,SAAS,mBAAmB,SAAS,gBAAgB,SAAS,SAAS,gBAAgB,MAAM,oBACvI,OAAO,WAAW,eAAe,OAAO,YAAY,OAAO,QAAQ,WAAW,OAAO,QAAQ,aAAa,OAAO,QAAQ,UAEzH,OAAO,cAAc,eAAe,UAAU,aAAa,UAAU,UAAU,YAAY,CAAC,CAAC,MAAM,gBAAgB,KAAK,SAAS,OAAO,IAAI,EAAE,KAAK,MACnJ,OAAO,cAAc,eAAe,UAAU,aAAa,UAAU,UAAU,YAAY,CAAC,CAAC,MAAM,oBAAoB;CACzH;;;;;;CAQA,SAAS,WAAW,MAAM;EACxB,KAAK,MAAM,KAAK,YAAY,OAAO,MAAM,KAAK,aAAa,KAAK,YAAY,QAAQ,OAAO,KAAK,MAAM,KAAK,YAAY,QAAQ,OAAO,MAAM,OAAO,QAAQ,SAAS,KAAK,IAAI;EAE7K,IAAI,CAAC,KAAK,WACR;EAGF,IAAI,IAAI,YAAY,KAAK;EACzB,KAAK,OAAO,GAAG,GAAG,GAAG,gBAAgB;EAIrC,IAAI,QAAQ;EACZ,IAAI,QAAQ;EACZ,KAAK,EAAE,CAAC,QAAQ,eAAe,SAAU,OAAO;GAC9C,IAAI,UAAU,MACZ;GAGF;GAEA,IAAI,UAAU,MAGZ,QAAQ;EAEZ,CAAC;EACD,KAAK,OAAO,OAAO,GAAG,CAAC;CACzB;;;;;;;CASA,SAAS,MAAM;EACb,IAAI;EAIJ,QAAQ,OAAO,YAAY,cAAc,cAAc,QAAQ,OAAO,OAAO,YAAY,QAAQ,QAAQ,WAAW,QAAA,CAAS,IAAI,MAAM,UAAU,SAAS;CAC5J;;;;;;;CASA,SAAS,KAAK,YAAY;EACxB,IAAI;GACF,IAAI,YACF,QAAQ,QAAQ,QAAQ,SAAS,UAAU;QAE3C,QAAQ,QAAQ,WAAW,OAAO;EAEtC,SAAS,OAAO,CAEhB;CACF;;;;;;;CASA,SAAS,OAAO;EACd,IAAI;EAEJ,IAAI;GACF,IAAI,QAAQ,QAAQ,QAAQ,OAAO;EACrC,SAAS,OAAO,CAAC;EAKjB,IAAI,CAAC,KAAK,OAAO,YAAY,eAAe,SAAS,SACnD,IAAI,QAAQ,IAAI;EAGlB,OAAO;CACT;;;;;;;;;;;CAaA,SAAS,eAAe;EACtB,IAAI;GAGF,OAAO;EACT,SAAS,OAAO,CAEhB;CACF;CAEA,OAAO,UAAA,eAAA,CAAA,CAA8B,OAAO;CAC5C,IAAI,aAAa,OAAO,QAAQ;;;;CAKhC,WAAW,IAAI,SAAU,GAAG;EAC1B,IAAI;GACF,OAAO,KAAK,UAAU,CAAC;EACzB,SAAS,OAAO;GACd,OAAO,iCAAiC,MAAM;EAChD;CACF;;;;;;;;CC7KA,IAAI,MAAM,QAAQ,KAAK;CAEvB,IAAI,OAAO,QAAQ,MAAM;;;;CAMzB,QAAQ,OAAO;CACf,QAAQ,MAAM;CACd,QAAQ,aAAa;CACrB,QAAQ,OAAO;CACf,QAAQ,OAAO;CACf,QAAQ,YAAY;;;;CAKpB,QAAQ,SAAS;EAAC;EAAG;EAAG;EAAG;EAAG;EAAG;CAAC;CAElC,IAAI;EAGF,IAAI,gBAAgB,QAAQ,gBAAgB;EAE5C,IAAI,kBAAkB,cAAc,UAAU,cAAA,CAAe,SAAS,GACpE,QAAQ,SAAS;GAAC;GAAI;GAAI;GAAI;GAAI;GAAI;GAAI;GAAI;GAAI;GAAI;GAAI;GAAI;GAAI;GAAI;GAAI;GAAI;GAAI;GAAI;GAAI;GAAI;GAAI;GAAI;GAAI;GAAI;GAAI;GAAI;GAAI;GAAI;GAAI;GAAI;GAAI;GAAI;GAAI;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;GAAK;EAAG;CAEhX,SAAS,OAAO,CAAC;;;;;;CASjB,QAAQ,cAAc,OAAO,KAAK,QAAQ,GAAG,CAAC,CAAC,OAAO,SAAU,KAAK;EACnE,OAAO,WAAW,KAAK,GAAG;CAC5B,CAAC,CAAC,CAAC,OAAO,SAAU,KAAK,KAAK;EAE5B,IAAI,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,QAAQ,aAAa,SAAU,GAAG,GAAG;GAC7E,OAAO,EAAE,YAAY;EACvB,CAAC;EAED,IAAI,MAAM,QAAQ,IAAI;EAEtB,IAAI,2BAA2B,KAAK,GAAG,GACrC,MAAM;OACD,IAAI,6BAA6B,KAAK,GAAG,GAC9C,MAAM;OACD,IAAI,QAAQ,QACjB,MAAM;OAEN,MAAM,OAAO,GAAG;EAGlB,IAAI,QAAQ;EACZ,OAAO;CACT,GAAG,CAAC,CAAC;;;;CAKL,SAAS,YAAY;EACnB,OAAO,YAAY,QAAQ,cAAc,QAAQ,QAAQ,YAAY,MAAM,IAAI,IAAI,OAAO,QAAQ,OAAO,EAAE;CAC7G;;;;;;CAQA,SAAS,WAAW,MAAM;EACxB,IAAI,OAAO,KAAK;EAGhB,IAFgB,KAAK,WAEN;GACb,IAAI,IAAI,KAAK;GACb,IAAI,YAAY,YAAY,IAAI,IAAI,IAAI,SAAS;GACjD,IAAI,SAAS,KAAK,OAAO,WAAW,KAAK,CAAC,CAAC,OAAO,MAAM,UAAU;GAClE,KAAK,KAAK,SAAS,KAAK,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,OAAO,MAAM;GACzD,KAAK,KAAK,YAAY,OAAO,OAAO,QAAQ,SAAS,KAAK,IAAI,IAAI,SAAS;EAC7E,OACE,KAAK,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK;CAE5C;CAEA,SAAS,UAAU;EACjB,IAAI,QAAQ,YAAY,UACtB,OAAO;EAGT,wBAAO,IAAI,KAAK,EAAA,CAAE,YAAY,IAAI;CACpC;;;;CAMA,SAAS,MAAM;EACb,OAAO,QAAQ,OAAO,MAAM,KAAK,OAAO,MAAM,MAAM,SAAS,IAAI,IAAI;CACvE;;;;;;;CASA,SAAS,KAAK,YAAY;EACxB,IAAI,YACF,QAAQ,IAAI,QAAQ;OAIpB,OAAO,QAAQ,IAAI;CAEvB;;;;;;;CASA,SAAS,OAAO;EACd,OAAO,QAAQ,IAAI;CACrB;;;;;;;CASA,SAAS,KAAK,OAAO;EACnB,MAAM,cAAc,CAAC;EACrB,IAAI,OAAO,OAAO,KAAK,QAAQ,WAAW;EAE1C,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,KAC/B,MAAM,YAAY,KAAK,MAAM,QAAQ,YAAY,KAAK;CAE1D;CAEA,OAAO,UAAA,eAAA,CAAA,CAA8B,OAAO;CAC5C,IAAI,aAAa,OAAO,QAAQ;;;;CAKhC,WAAW,IAAI,SAAU,GAAG;EAC1B,KAAK,YAAY,SAAS,KAAK;EAC/B,OAAO,KAAK,QAAQ,GAAG,KAAK,WAAW,CAAC,CACrC,MAAM,IAAI,CAAC,CACX,IAAI,SAAU,KAAK;GAAE,OAAO,IAAI,KAAK;EAAG,CAAC,CAAC,CAC1C,KAAK,GAAG;CACb;;;;CAMA,WAAW,IAAI,SAAU,GAAG;EAC1B,KAAK,YAAY,SAAS,KAAK;EAC/B,OAAO,KAAK,QAAQ,GAAG,KAAK,WAAW;CACzC;;;;;;;;;CCzKA,IAAI,OAAO,YAAY,eAAe,QAAQ,SAAS,cAAc,QAAQ,YAAY,QAAQ,QAAQ,QACvG,OAAO,UAAA,gBAAA;MAEP,OAAO,UAAA,aAAA;;;;;CCNT,IAAI,WAAW,OAAO,UAAU;CAEhC,SAAS,UAAU,KAAK,QAAQ;EAC9B,IAAI,WAAW,QAAQ,QAAQ,OAAO,OAAO,cAC3C,OAAO,SAAS;OACX,IAAI,SAAS,KAAK,GAAG,KAAK,kBAC/B,OAAO,eAAe,KAAK,MAAM;OAC5B,IAAI,SAAS,KAAK,GAAG,KAAK,mBAC/B,OAAO,gBAAgB,KAAK,MAAM;OAC7B,IAAI,SAAS,KAAK,GAAG,KAAK,iBAC/B,OAAO,IAAI,YAAY;OAClB,IAAI,QACT,OAAO,SAAS,MAAM,mBAAmB,OAAO,GAAG,CAAC;OAC/C,IAAI,OAAO,GAAG,CAAC,CAAC,QAAQ,GAAG,MAAM,IACtC,OAAO,OAAO,GAAG;OAEjB,MAAM,IAAI,UAAU,wCAAwC,GAAG;CAEnE;CAEA,SAAS,eAAe,KAAK,QAAQ;EACnC,IAAI,MAAM,CAAC;EAEX,KAAK,IAAI,IAAI,GAAG,MAAM,IAAI,QAAQ,IAAI,KAAK,KACzC,IAAI,QACF,IAAI,KAAK,UAAU,IAAI,IAAI,SAAS,IAAI,CAAC;OAEzC,IAAI,KAAK,UAAU,IAAI,EAAE,CAAC;EAG9B,OAAO,IAAI,KAAK,GAAG;CACrB;CAEA,SAAS,gBAAgB,KAAK,QAAQ;EACpC,IAAI,MAAM,CAAC;EAEX,OAAO,KAAK,GAAG,CAAC,CAAC,QAAQ,SAAS,KAAK;GACrC,IAAI,KAAK,UAAU,IAAI,MAAM,SACzB,SAAS,MAAM,mBAAmB,GAAG,IAAI,MACzC,mBAAmB,GAAG,CAAC,CAAC;EAC9B,CAAC;EAED,OAAO,IAAI,KAAK,GAAG;CACrB;CAEA,QAAQ,QAAQ;;;;;CChDhB,IAAI,WAAW,QAAQ,IAAI,CAAC,CAAC;CACzB,IAAA,WAAW,QAAQ,MAAM,CAAC,CAAC;CAE/B,QAAQ,QAAQ,SAAS,MAAM,UAAU,UAAU;EAEjD,IAAI,OAAO,QAAQ,YAAY,OAAO,KAAK,QAAQ,YACjD,OAAO,yBAAS,IAAI,MAAM,mDAAmD,CAAC;EAEhF,IAAI,OAAS,IACT,SAAS,QAAQ,IAAI,GACrB,QAAS,OAAO,KAAK,MAAM,CAAC,CAAC;EAEjC,IAAI,UAAU,GACZ,OAAO,yBAAS,IAAI,MAAM,qCAAqC,CAAC;EAElE,SAAS,KAAK,KAAK,SAAS;GAC1B,IAAI,KAAK,OAAO,SAAS,GAAG;GAC5B,IAAI,SAAS,QAAQ;GACrB,EAAE,SAAS,SAAS,MAAM,OAAO,OAAO,WAAW,IAAI;EACzD;EAEA,KAAK,IAAI,OAAO,QAAQ;GACtB,IAAI,QAAQ,OAAO;GACnB,IAAI,UAAU,QAAQ,OAAO,SAAS,aACpC,KAAK;QACA,IAAI,OAAO,SAAS,KAAK,GAAG;IACjC,IAAI,OAAO;KAAE,QAAQ;KAAO,cAAc;IAA2B;IACrE,cAAc,KAAK,MAAM,UAAU,IAAI;GACzC,OAAO;IACL,IAAI,OAAQ,MAAM,UAAU,MAAM,QAAQ,MAAM,eAAgB,QAAQ,EAAS,MAAM;IACvF,cAAc,KAAK,MAAM,UAAU,IAAI;GACzC;EACF;CAEF;CAEA,SAAS,cAAc,MAAM,MAAM,UAAU,UAAU;EAErD,IAAI,cAAc,OAAO,WAAW;EACpC,eAAe,4CAA2C,OAAO;EAEjE,SAAS,OAAO,MAAM,UAAU;GAE9B,IAAI,MAAM;IACR,IAAI,SAAS,KAAK,aAAa,QAAQ,MAAM,KAAK;IAClD,eAAe,kBAAiB,mBAAmB,QAAQ,IAAI;IAC/D,IAAI,QAAQ,eAAe;IAC3B,eAAe,mBAAmB,KAAK,eAAe;IACtD,eAAe,SAAS,KAAK,SAAS,QAAQ,IAAI,KAAK,SAAS,MAAM;GACxE;GAEA,SAAS,MAAM,cAAc,MAAM;EACrC;EAEA,KAAK,KAAK,QAAQ,KAAK,WAAW,KAAK,cAAc;GAEnD,IAAI,WAAW,KAAK,WAAW,KAAK,WAAW,KAAK,OAAO,SAAS,KAAK,IAAI,IAAI;GACjF,IAAI,KAAK,QAAQ,OAAO,OAAO,KAAK,QAAQ,QAAQ;GAEpD,SAAS,KAAK,MAAM,SAAS,KAAK,MAAM;IACtC,IAAI,KAAK,OAAO,SAAS,GAAG;IAC5B,OAAO,MAAM,QAAQ;GACvB,CAAC;EAEH,OAAO;GAEL,IAAI,OAAO,KAAK,SAAS,UACvB,OAAO,yBAAS,IAAI,MAAM,yBAAyB,OAAO,oBAAoB,CAAC;GAEjF,IAAI,KAAK,cAAc;IACrB,eAAe;IACf,eAAe,mBAAmB,KAAK;GACzC;GAEA,eAAe;GACf,eAAe,OAAO,KAAK,OAAO,KAAK,KAAK,GAAG,MAAM,CAAC,CAAC,SAAS,QAAQ;GACxE,OAAO;EAET;CAEF;CAGA,SAAS,QAAQ,QAAQ,MAAM,QAAQ;EACrC,OAAO,QAAQ,CAAC;EAEhB,KAAI,IAAI,OAAO,QAAQ;GACrB,IAAI,aAAa,SAAS,SAAS,MAAM,MAAM,MAAM;GACrD,IAAI,OAAO,OAAO;GAElB,IAAI,QAAQ,OAAO,SAAS,YAAY,EAAE,KAAK,UAAU,KAAK,QAAQ,KAAK,eACzE,QAAQ,MAAM,MAAM,UAAU;QAE9B,KAAK,cAAc;EACvB;EAEA,OAAO;CACT;;;;;CCjGA,IAAI,aAAa,QAAQ,QAAQ,CAAC,CAAC;CAEnC,SAAS,WAAW,QAAQ,aAAa,MAAM;EAC7C,IAAI,OAAO,OAAO,MAAM,GAAG,CAAC,CAAC,IACzB,OAAO,YAAY,IACnB,OAAO,YAAY;EAEvB,IAAI,QAAQ,UACV,OAAO,OAAO,SAAS,QAAQ,MAAM,MAAM,KAAK,QAAQ,KAAK,IAAI;OAC5D,IAAI,QAAQ,SACjB,OAAO,MAAM,MAAM,IAAI;CAE3B;CAKA,SAAS,IAAI,QAAQ;EACnB,OAAO,WAAW,KAAK,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,OAAO,KAAK;CACtD;CAEA,SAAS,MAAM,MAAM,MAAM;EACzB,IAAI,MAAO,OAAO,QAAQ,cAAc,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,GAAG;EACpE,OAAO,WAAW,OAAO,KAAK,GAAG,CAAC,CAAC,SAAS,QAAQ;CACtD;CAMA,IAAI,SAAS,CAAC;CAEd,OAAO,eAAe,SAAS,QAAQ;EACrC,IAAI,YAAY,CAAC,GACb,UAAY,OAAO,MAAM,gDAAgD;EAE7E,KAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,QAAQ,IAAI,GAAG,KAAK;GAC9C,IAAI,QAAQ,QAAQ,EAAE,CAAC,MAAM,GAAG,GAC5B,MAAQ,MAAM,MAAM;GAGxB,UAAU,OAFE,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC,QAAQ,MAAM,EAEzC;EACrB;EAEA,OAAO;CACT;CAEA,OAAO,YAAY,SAAS,IAAI;EAC9B,IAAI,MAAM;EACV;EAEA,IAAI,KAAK,KACP,KAAK;EAEP,IAAI,UAAU,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI;EACvC,KAAK,KAAK;EACV,OAAO,QAAQ,OAAO,GAAG,IAAI,GAAG,MAAM,IAAI;CAC5C;CAEA,OAAO,WAAW,SAAS,QAAQ,MAAM,MAAM,QAAQ,MAAM;EAE3D,IAAI,KAAY,GACZ,SAAY,MACZ,YAAY,OAAO,aAAa,MAAM;EAE1C,IAAI,MAAO,IAAI,OAAO,MAAM,UAAU,QAAQ,MAAM,IAAI,GACpD,MAAO,IAAI,OAAO,YAAY,IAAI,MAAM,IAAI,GAC5C,OAAO,CAAC,KAAK,UAAU,KAAK;EAEhC,IAAI,OAAO,UAAU,QAAQ,UAAU;GACrC,SAAS,IAAI,KAAK,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC;GACpD,KAAS,OAAO,UAAU,EAAE;GAC5B,OAAS,KAAK,OAAO,IAAI,MAAM;GAC/B,OAAS,KAAK,OAAO,UAAU,KAAK,GAAG;EACzC,OACE,OAAS,KAAK,OAAO,GAAG;EAI1B,IAAI,SAAS;GACX,KAAW;GACX,OAAW,UAAU;GACrB,OAAW,UAAU;GACrB,UAAW;GACX,UAAW,IAAI,KAAK,KAAK,GAAG,CAAC;EAC/B;EAEA,IAAI,UAAU,KACZ,OAAO,MAAM,UAAU;EAGzB,IAAI,UAAU,QACZ,OAAO,SAAS,UAAU;EAG5B,IAAI,QAAQ;GACV,OAAO,KAAK;GACZ,OAAO,SAAS;EAClB;EAEA,SAAS,CAAC;EACV,KAAK,IAAI,KAAK,QACZ,OAAO,KAAK,IAAI,QAAO,OAAO,KAAK,IAAG;EAExC,OAAO,YAAY,OAAO,KAAK,IAAI;CACrC;CAEA,OAAO,UAAU;EACf,QAAS;EACA;EACT,QAAS,OAAO;CAClB;;;;;CCtGA,IAAI,WAAW,QAAQ,aAAa,CAAC,CAAC;CAEtC,IAAI,cAAqB;CACzB,IAAI,iBAAqB;CAOzB,IAAI,YAAc;CAClB,IAAI,cAAc;CAGlB,SAAS,kBAAkB,KAAK;EAC9B,OAAO,IAAI,KAAK,CAAC,CAAC,QAAQ,UAAU,EAAE;CACxC;CAEA,SAAS,aAAa,KAAK;EACzB,IAAI,QAAQ,IAAI,QAAQ,GAAM;EAC9B,OAAO,UAAU,KAAK,MAAM,IAAI,OAAO,GAAG,KAAK;CACjD;CAGA,SAAS,sBAAsB,KAAK;EAClC,OAAO,IAAI,SAAS,CAAC,CAAC,QAAQ,gBAAgB,kBAAkB;CAClE;CAGA,SAAS,qBAAqB,KAAK;EACjC,MAAM,kBAAkB,GAAG;EAC3B,MAAM,aAAa,GAAG;EAEtB,IAAI,MAAM,YAAY,KAAK,GAAG;EAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,cAAc,OAAO;EAEtC,OAAO;GACL,MAAQ,SAAS,IAAI,UAAU;GAC/B,OAAQ,SAAS,IAAI,YAAY;EACnC;CACF;CAIA,SAAS,qBAAqB,QAAQ;EACpC,IAAI,CAAC,QAAQ,OAAO,CAAC;EACrB,SAAS,MAAM,QAAQ,MAAM,IAAI,SAAS,CAAC,MAAM;EAEjD,OAAO,OAAO,OAAO,SAAS,KAAK,KAAK;GACtC,IAAI,SAAS,qBAAqB,GAAG;GACrC,IAAI,QAAQ,IAAI,OAAO,QAAQ,OAAO;GACtC,OAAO;EACT,GAAG,CAAC,CAAC;CACP;CAGA,SAAS,kBAAkB,KAAK;EAC9B,OAAO,OAAO,KAAK,GAAG,CAAC,CAAC,OAAO,SAAS,KAAK,MAAM;GACjD,IAAI,cAAe,sBAAsB,IAAI;GAC7C,IAAI,eAAe,sBAAsB,IAAI,KAAK;GAClD,QAAQ,MAAM,OAAO,MAAM,cAAc,MAAM;GAC/C,OAAO;EACT,GAAG,EAAE;CACP;CAGA,QAAQ,OAAO;CAGf,QAAQ,QAAQ;;;;;CC9Ef,CAAC,SAAU,KAAK;EAEf,IAAI,SAAS,SAAU,QAAQ,KAAK;GAClC,OAAO,IAAI,UAAU,QAAQ,GAAG;EAClC;EACA,IAAI,YAAY;EAChB,IAAI,YAAY;EAChB,IAAI,eAAe;EAWnB,IAAI,oBAAoB,KAAK;EAE7B,IAAI,UAAU;GACZ;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF;EAEA,IAAI,SAAS;GACX;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF;EAEA,SAAS,UAAU,QAAQ,KAAK;GAC9B,IAAI,EAAE,gBAAgB,YACpB,OAAO,IAAI,UAAU,QAAQ,GAAG;GAGlC,IAAI,SAAS;GACb,aAAa,MAAM;GACnB,OAAO,IAAI,OAAO,IAAI;GACtB,OAAO,sBAAsB,IAAI;GACjC,OAAO,WAAW;GAClB,OAAO,MAAM,OAAO,CAAC;GACrB,OAAO,IAAI,YAAY,OAAO,IAAI,aAAa,OAAO,IAAI;GAC1D,OAAO,YAAY,OAAO,IAAI,YAAY,gBAAgB;GAC1D,OAAO,IAAI,iBAAiB,OAAO,IAAI,kBAAkB;GACzD,OAAO,IAAI,iBAAiB,OAAO,IAAI,kBAAkB;GACzD,OAAO,cAAc,OAAO,cAAc;GAC1C,OAAO,OAAO,CAAC;GACf,OAAO,SAAS,OAAO,aAAa,OAAO,UAAU;GACrD,OAAO,MAAM,OAAO,QAAQ;GAC5B,OAAO,SAAS,CAAC,CAAC;GAClB,OAAO,WAAW,CAAC,EAAE,UAAU,OAAO,IAAI;GAC1C,OAAO,QAAQ,EAAE;GACjB,OAAO,iBAAiB,OAAO,IAAI;GACnC,OAAO,WACL,OAAO,iBACL,OAAO,OAAO,IAAI,YAAY,IAC9B,OAAO,OAAO,IAAI,QAAQ;GAC9B,OAAO,aAAa,CAAC;GAKrB,IAAI,OAAO,IAAI,OACb,OAAO,KAAK,OAAO,OAAO,MAAM;GAKlC,IAAI,OAAO,IAAI,4BAA4B,KAAA,GACzC,OAAO,IAAI,0BAA0B,CAAC;GAIxC,OAAO,gBAAgB,OAAO,IAAI,aAAa;GAC/C,IAAI,OAAO,eACT,OAAO,WAAW,OAAO,OAAO,OAAO,SAAS;GAElD,KAAK,QAAQ,SAAS;EACxB;EAEA,IAAI,CAAC,OAAO,QACV,OAAO,SAAS,SAAU,GAAG;GAC3B,SAAS,IAAI,CAAC;GACd,EAAE,YAAY;GAEd,OAAO,IADQ,EACL;EACZ;EAGF,IAAI,CAAC,OAAO,MACV,OAAO,OAAO,SAAU,GAAG;GACzB,IAAI,IAAI,CAAC;GACT,KAAK,IAAI,KAAK,GAAG,IAAI,EAAE,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC;GAClD,OAAO;EACT;EAGF,SAAS,kBAAkB,QAAQ;GACjC,IAAI,aAAa,KAAK,IAAI,IAAI,mBAAmB,EAAE;GACnD,IAAI,YAAY;GAChB,KAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,QAAQ,IAAI,GAAG,KAAK;IAC9C,IAAI,MAAM,OAAO,QAAQ,GAAG,CAAC;IAC7B,IAAI,MAAM,YAKR,QAAQ,QAAQ,IAAhB;KACE,KAAK;MACH,UAAU,MAAM;MAChB;KAEF,KAAK;MACH,SAAS,QAAQ,WAAW,OAAO,KAAK;MACxC,OAAO,QAAQ;MACf;KAEF,KAAK;MACH,SAAS,QAAQ,YAAY,OAAO,MAAM;MAC1C,OAAO,SAAS;MAChB;KAEF,SACE,MAAM,QAAQ,iCAAiC,QAAQ,EAAE;IAC7D;IAEF,YAAY,KAAK,IAAI,WAAW,GAAG;GACrC;GAGA,OAAO,sBADC,IAAI,oBAAoB,YACC,OAAO;EAC1C;EAEA,SAAS,aAAa,QAAQ;GAC5B,KAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,QAAQ,IAAI,GAAG,KACzC,OAAO,QAAQ,MAAM;EAEzB;EAEA,SAAS,aAAa,QAAQ;GAC5B,UAAU,MAAM;GAChB,IAAI,OAAO,UAAU,IAAI;IACvB,SAAS,QAAQ,WAAW,OAAO,KAAK;IACxC,OAAO,QAAQ;GACjB;GACA,IAAI,OAAO,WAAW,IAAI;IACxB,SAAS,QAAQ,YAAY,OAAO,MAAM;IAC1C,OAAO,SAAS;GAClB;EACF;EAEA,UAAU,YAAY;GACpB,KAAK,WAAY;IACf,IAAI,IAAI;GACV;GACO;GACP,QAAQ,WAAY;IAClB,KAAK,QAAQ;IACb,OAAO;GACT;GACA,OAAO,WAAY;IACjB,OAAO,KAAK,MAAM,IAAI;GACxB;GACA,OAAO,WAAY;IACjB,aAAa,IAAI;GACnB;EACF;EAEA,IAAI;EACJ,IAAI;GACF,SAAS,QAAQ,QAAQ,CAAC,CAAC;EAC7B,SAAS,IAAI;GACX,SAAS,WAAY,CAAC;EACxB;EACA,IAAI,CAAC,QAAQ,SAAS,WAAY,CAAC;EAEnC,IAAI,cAAc,IAAI,OAAO,OAAO,SAAU,IAAI;GAChD,OAAO,OAAO,WAAW,OAAO;EAClC,CAAC;EAED,SAAS,aAAa,QAAQ,KAAK;GACjC,OAAO,IAAI,UAAU,QAAQ,GAAG;EAClC;EAEA,SAAS,wBAAwB,MAAM,OAAO;GAE5C,IAAI,KAAK,UAAU,GAAG;IACpB,IAAI,KAAK,OAAO,OAAQ,KAAK,OAAO,KAClC,OAAO;IAGT,IAAI,KAAK,OAAO,OAAQ,KAAK,OAAO,KAClC,OAAO;GAEX;GAEA,IAAI,KAAK,UAAU,KAAK,KAAK,OAAO,OAAQ,KAAK,OAAO,OAAQ,KAAK,OAAO,KAC1E,OAAO;GAGT,IAAI,KAAK,UAAU,GAAG;IAGpB,IAAI,KAAK,OAAO,MAAQ,KAAK,OAAO,KAAQ,KAAK,OAAO,MAAQ,KAAK,OAAO,GAC1E,OAAO;IAGT,IAAI,KAAK,OAAO,KAAQ,KAAK,OAAO,MAAQ,KAAK,OAAO,KAAQ,KAAK,OAAO,IAC1E,OAAO;IAGT,OAAO;GACT;GAEA,OAAO,QAAQ,SAAS;EAC1B;EAEA,SAAS,UAAU,QAAQ,KAAK;GAC9B,IAAI,EAAE,gBAAgB,YACpB,OAAO,IAAI,UAAU,QAAQ,GAAG;GAGlC,OAAO,MAAM,IAAI;GAEjB,KAAK,UAAU,IAAI,UAAU,QAAQ,GAAG;GACxC,KAAK,WAAW;GAChB,KAAK,WAAW;GAEhB,IAAI,KAAK;GAET,KAAK,QAAQ,QAAQ,WAAY;IAC/B,GAAG,KAAK,KAAK;GACf;GAEA,KAAK,QAAQ,UAAU,SAAU,IAAI;IACnC,GAAG,KAAK,SAAS,EAAE;IAInB,GAAG,QAAQ,QAAQ;GACrB;GAEA,KAAK,WAAW;GAChB,KAAK,iBAAiB;GACtB,YAAY,QAAQ,SAAU,IAAI;IAChC,OAAO,eAAe,IAAI,OAAO,IAAI;KACnC,KAAK,WAAY;MACf,OAAO,GAAG,QAAQ,OAAO;KAC3B;KACA,KAAK,SAAU,GAAG;MAChB,IAAI,CAAC,GAAG;OACN,GAAG,mBAAmB,EAAE;OACxB,GAAG,QAAQ,OAAO,MAAM;OACxB,OAAO;MACT;MACA,GAAG,GAAG,IAAI,CAAC;KACb;KACA,YAAY;KACZ,cAAc;IAChB,CAAC;GACH,CAAC;EACH;EAEA,UAAU,YAAY,OAAO,OAAO,OAAO,WAAW,EACpD,aAAa,EACX,OAAO,UACT,EACF,CAAC;EAED,UAAU,UAAU,gBAAgB,SAAU,MAAM,OAAO;GACzD,IAAI,KAAK,gBAAgB;IAGvB,OAAO,OAAO,OAAO,CAAC,KAAK,gBAAgB,IAAI,CAAC;IAChD,KAAK,iBAAiB;GACxB;GAEA,IAAI,CAAC,KAAK,UAAU;IAClB,IAAI,WAAW,wBAAwB,MAAM,KAAK;IAClD,IAAI,CAAC,UAAU;KAGb,KAAK,iBAAiB;KACtB,OAAO;IACT;IAIA,KAAK,QAAQ,WAAW;IACxB,KAAK,WAAW,IAAI,YAAY,QAAQ;GAC1C;GAEA,OAAO,KAAK,SAAS,OAAO,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;EACtD;EAEA,UAAU,UAAU,QAAQ,SAAU,MAAM;GAC1C,IACE,OAAO,WAAW,cAClB,OAAO,OAAO,aAAa,cAC3B,OAAO,SAAS,IAAI,GAEpB,OAAO,KAAK,cAAc,MAAM,KAAK;QAChC,IAAI,KAAK,gBAAgB;IAG9B,IAAI,YAAY,KAAK,cAAc,OAAO,MAAM,CAAC,GAAG,IAAI;IACxD,IAAI,WAAW;KACb,KAAK,QAAQ,MAAM,SAAS;KAC5B,KAAK,KAAK,QAAQ,SAAS;IAC7B;GACF;GAEA,KAAK,QAAQ,MAAM,KAAK,SAAS,CAAC;GAClC,KAAK,KAAK,QAAQ,IAAI;GACtB,OAAO;EACT;EAEA,UAAU,UAAU,MAAM,SAAU,OAAO;GACzC,IAAI,SAAS,MAAM,QACjB,KAAK,MAAM,KAAK;GAGlB,IAAI,KAAK,gBAAgB;IACvB,IAAI,aAAa,KAAK,cAAc,OAAO,MAAM,CAAC,GAAG,IAAI;IACzD,IAAI,YAAY;KACd,KAAK,QAAQ,MAAM,UAAU;KAC7B,KAAK,KAAK,QAAQ,UAAU;IAC9B;GACF,OAAO,IAAI,KAAK,UAAU;IACxB,IAAI,YAAY,KAAK,SAAS,OAAO;IACrC,IAAI,WAAW;KACb,KAAK,QAAQ,MAAM,SAAS;KAC5B,KAAK,KAAK,QAAQ,SAAS;IAC7B;GACF;GACA,KAAK,QAAQ,IAAI;GACjB,OAAO;EACT;EAEA,UAAU,UAAU,KAAK,SAAU,IAAI,SAAS;GAC9C,IAAI,KAAK;GACT,IAAI,CAAC,GAAG,QAAQ,OAAO,OAAO,YAAY,QAAQ,EAAE,MAAM,IACxD,GAAG,QAAQ,OAAO,MAAM,WAAY;IAClC,IAAI,OACF,UAAU,WAAW,IACnB,CAAC,UAAU,EAAE,IACb,MAAM,MAAM,MAAM,SAAS;IAC/B,KAAK,OAAO,GAAG,GAAG,EAAE;IACpB,GAAG,KAAK,MAAM,IAAI,IAAI;GACxB;GAGF,OAAO,OAAO,UAAU,GAAG,KAAK,IAAI,IAAI,OAAO;EACjD;EAIA,IAAI,QAAQ;EACZ,IAAI,UAAU;EACd,IAAI,gBAAgB;EACpB,IAAI,kBAAkB;EACtB,IAAI,SAAS;GAAE,KAAK;GAAe,OAAO;EAAgB;EAQ1D,IAAI,YACF;EAEF,IAAI,WACF;EAEF,IAAI,cACF;EACF,IAAI,aACF;EAEF,SAAS,aAAa,GAAG;GACvB,OAAO,MAAM,OAAO,MAAM,QAAQ,MAAM,QAAQ,MAAM;EACxD;EAEA,SAAS,QAAQ,GAAG;GAClB,OAAO,MAAM,QAAO,MAAM;EAC5B;EAEA,SAAS,YAAY,GAAG;GACtB,OAAO,MAAM,OAAO,aAAa,CAAC;EACpC;EAEA,SAAS,QAAQ,OAAO,GAAG;GACzB,OAAO,MAAM,KAAK,CAAC;EACrB;EAEA,SAAS,SAAS,OAAO,GAAG;GAC1B,OAAO,CAAC,QAAQ,OAAO,CAAC;EAC1B;EAEA,IAAI,IAAI;EACR,IAAI,QAAQ;GACV,OAAO;GACP,kBAAkB;GAClB,MAAM;GACN,aAAa;GACb,WAAW;GACX,WAAW;GACX,kBAAkB;GAClB,SAAS;GACT,gBAAgB;GAChB,aAAa;GACb,oBAAoB;GACpB,kBAAkB;GAClB,SAAS;GACT,gBAAgB;GAChB,eAAe;GACf,OAAO;GACP,cAAc;GACd,gBAAgB;GAChB,WAAW;GACX,gBAAgB;GAChB,kBAAkB;GAClB,UAAU;GACV,gBAAgB;GAChB,QAAQ;GACR,aAAa;GACb,uBAAuB;GACvB,cAAc;GACd,qBAAqB;GACrB,qBAAqB;GACrB,uBAAuB;GACvB,uBAAuB;GACvB,uBAAuB;GACvB,WAAW;GACX,qBAAqB;GACrB,QAAQ;GACR,eAAe;EACjB;EAEA,IAAI,eAAe;GACjB,KAAK;GACL,IAAI;GACJ,IAAI;GACJ,MAAM;GACN,MAAM;EACR;EAEA,IAAI,WAAW;GACb,KAAK;GACL,IAAI;GACJ,IAAI;GACJ,MAAM;GACN,MAAM;GACN,OAAO;GACP,QAAQ;GACR,OAAO;GACP,QAAQ;GACR,OAAO;GACP,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,KAAK;GACL,QAAQ;GACR,OAAO;GACP,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,OAAO;GACP,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACR,OAAO;GACP,QAAQ;GACR,QAAQ;GACR,QAAQ;GACR,MAAM;GACN,OAAO;GACP,QAAQ;GACR,OAAO;GACP,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACR,OAAO;GACP,OAAO;GACP,QAAQ;GACR,OAAO;GACP,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACR,OAAO;GACP,QAAQ;GACR,KAAK;GACL,MAAM;GACN,QAAQ;GACR,OAAO;GACP,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACR,OAAO;GACP,QAAQ;GACR,QAAQ;GACR,QAAQ;GACR,MAAM;GACN,OAAO;GACP,OAAO;GACP,QAAQ;GACR,OAAO;GACP,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,MAAM;GACN,MAAM;GACN,KAAK;GACL,MAAM;GACN,OAAO;GACP,MAAM;GACN,OAAO;GACP,QAAQ;GACR,KAAK;GACL,QAAQ;GACR,MAAM;GACN,KAAK;GACL,MAAM;GACN,OAAO;GACP,KAAK;GACL,KAAK;GACL,MAAM;GACN,KAAK;GACL,QAAQ;GACR,MAAM;GACN,MAAM;GACN,MAAM;GACN,OAAO;GACP,OAAO;GACP,MAAM;GACN,QAAQ;GACR,OAAO;GACP,MAAM;GACN,OAAO;GACP,QAAQ;GACR,QAAQ;GACR,QAAQ;GACR,QAAQ;GACR,OAAO;GACP,QAAQ;GACR,OAAO;GACP,OAAO;GACP,QAAQ;GACR,QAAQ;GACR,MAAM;GACN,MAAM;GACN,MAAM;GACN,OAAO;GACP,OAAO;GACP,MAAM;GACN,OAAO;GACP,OAAO;GACP,SAAS;GACT,MAAM;GACN,KAAK;GACL,OAAO;GACP,MAAM;GACN,OAAO;GACP,QAAQ;GACR,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,SAAS;GACT,IAAI;GACJ,KAAK;GACL,OAAO;GACP,KAAK;GACL,SAAS;GACT,KAAK;GACL,KAAK;GACL,KAAK;GACL,OAAO;GACP,OAAO;GACP,MAAM;GACN,OAAO;GACP,OAAO;GACP,SAAS;GACT,MAAM;GACN,KAAK;GACL,OAAO;GACP,MAAM;GACN,OAAO;GACP,QAAQ;GACR,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,SAAS;GACT,IAAI;GACJ,KAAK;GACL,QAAQ;GACR,OAAO;GACP,KAAK;GACL,SAAS;GACT,KAAK;GACL,KAAK;GACL,KAAK;GACL,OAAO;GACP,UAAU;GACV,OAAO;GACP,KAAK;GACL,MAAM;GACN,MAAM;GACN,QAAQ;GACR,MAAM;GACN,KAAK;GACL,KAAK;GACL,KAAK;GACL,OAAO;GACP,OAAO;GACP,OAAO;GACP,OAAO;GACP,OAAO;GACP,OAAO;GACP,OAAO;GACP,OAAO;GACP,QAAQ;GACR,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACR,OAAO;GACP,OAAO;GACP,QAAQ;GACR,QAAQ;GACR,OAAO;GACP,OAAO;GACP,MAAM;GACN,OAAO;GACP,QAAQ;GACR,MAAM;GACN,OAAO;GACP,SAAS;GACT,MAAM;GACN,MAAM;GACN,MAAM;GACN,MAAM;GACN,MAAM;GACN,OAAO;GACP,MAAM;GACN,MAAM;GACN,MAAM;GACN,MAAM;GACN,MAAM;GACN,QAAQ;GACR,MAAM;GACN,OAAO;GACP,OAAO;GACP,OAAO;GACP,MAAM;GACN,OAAO;GACP,IAAI;GACJ,MAAM;GACN,KAAK;GACL,OAAO;GACP,QAAQ;GACR,OAAO;GACP,MAAM;GACN,OAAO;GACP,KAAK;GACL,KAAK;GACL,IAAI;GACJ,KAAK;GACL,KAAK;GACL,KAAK;GACL,QAAQ;GACR,KAAK;GACL,MAAM;GACN,OAAO;GACP,IAAI;GACJ,OAAO;GACP,IAAI;GACJ,IAAI;GACJ,KAAK;GACL,KAAK;GACL,MAAM;GACN,MAAM;GACN,MAAM;GACN,OAAO;GACP,QAAQ;GACR,MAAM;GACN,MAAM;GACN,OAAO;GACP,OAAO;GACP,QAAQ;GACR,QAAQ;GACR,MAAM;GACN,MAAM;GACN,KAAK;GACL,QAAQ;GACR,OAAO;GACP,QAAQ;GACR,OAAO;EACT;EAEA,OAAO,KAAK,IAAI,QAAQ,CAAC,CAAC,QAAQ,SAAU,KAAK;GAC/C,IAAI,IAAI,IAAI,SAAS;GACrB,IAAI,IAAI,OAAO,MAAM,WAAW,OAAO,aAAa,CAAC,IAAI;GACzD,IAAI,SAAS,OAAO;EACtB,CAAC;EAED,KAAK,IAAI,KAAK,IAAI,OAChB,IAAI,MAAM,IAAI,MAAM,MAAM;EAI5B,IAAI,IAAI;EAER,SAAS,KAAK,QAAQ,OAAO,MAAM;GACjC,OAAO,UAAU,OAAO,MAAM,CAAC,IAAI;EACrC;EAEA,SAAS,oBAAoB,MAAM;GACjC,IAAI,QAAQ,QAAQ,KAAK,MAAM,0CAA0C;GACzE,OAAO,QAAQ,MAAM,KAAK;EAC5B;EAEA,SAAS,sBAAsB,UAAU;GACvC,IAAI,CAAC,UACH,OAAO;GAGT,OAAO,SAAS,YAAY,CAAC,CAAC,QAAQ,cAAc,EAAE;EACxD;EAEA,SAAS,eAAe,kBAAkB,kBAAkB;GAC1D,MAAM,WAAW,sBAAsB,gBAAgB;GACvD,MAAM,WAAW,sBAAsB,gBAAgB;GAEvD,IAAI,CAAC,YAAY,CAAC,UAChB,OAAO;GAGT,IAAI,aAAa,SACf,OAAO,aAAa,aAAa,aAAa;GAGhD,OAAO,aAAa;EACtB;EAEA,SAAS,+BAA+B,QAAQ,MAAM;GACpD,IACE,CAAC,OAAO,UACR,CAAC,OAAO,YACR,CAAC,QACD,KAAK,SAAS,OAEd;GAGF,IAAI,mBAAmB,oBAAoB,KAAK,IAAI;GACpD,IACE,oBACA,CAAC,eAAe,OAAO,UAAU,gBAAgB,GAEjD,WACE,QACA,8BACE,mBACA,8CACA,OAAO,SAAS,YAAY,CAChC;EAEJ;EAEA,SAAS,SAAS,QAAQ,UAAU,MAAM;GACxC,IAAI,OAAO,UAAU,UAAU,MAAM;GACrC,KAAK,QAAQ,UAAU,IAAI;EAC7B;EAEA,SAAS,UAAU,QAAQ;GACzB,OAAO,WAAW,SAAS,OAAO,KAAK,OAAO,QAAQ;GACtD,IAAI,OAAO,UAAU,KAAK,QAAQ,UAAU,OAAO,QAAQ;GAC3D,OAAO,WAAW;EACpB;EAEA,SAAS,SAAS,KAAK,MAAM;GAC3B,IAAI,IAAI,MAAM,OAAO,KAAK,KAAK;GAC/B,IAAI,IAAI,WAAW,OAAO,KAAK,QAAQ,QAAQ,GAAG;GAClD,OAAO;EACT;EAEA,SAAS,MAAM,QAAQ,IAAI;GACzB,UAAU,MAAM;GAChB,IAAI,OAAO,eACT,MACE,aACA,OAAO,OACP,eACA,OAAO,SACP,aACA,OAAO;GAEX,KAAK,IAAI,MAAM,EAAE;GACjB,OAAO,QAAQ;GACf,KAAK,QAAQ,WAAW,EAAE;GAC1B,OAAO;EACT;EAEA,SAAS,IAAI,QAAQ;GACnB,IAAI,OAAO,WAAW,CAAC,OAAO,YAC5B,WAAW,QAAQ,mBAAmB;GACxC,IACE,OAAO,UAAU,EAAE,SACnB,OAAO,UAAU,EAAE,oBACnB,OAAO,UAAU,EAAE,MAEnB,MAAM,QAAQ,gBAAgB;GAEhC,UAAU,MAAM;GAChB,OAAO,IAAI;GACX,OAAO,SAAS;GAChB,KAAK,QAAQ,OAAO;GACpB,UAAU,KAAK,QAAQ,OAAO,QAAQ,OAAO,GAAG;GAChD,OAAO;EACT;EAEA,SAAS,WAAW,QAAQ,SAAS;GACnC,IAAI,OAAO,WAAW,YAAY,EAAE,kBAAkB,YACpD,MAAM,IAAI,MAAM,wBAAwB;GAE1C,IAAI,OAAO,QACT,MAAM,QAAQ,OAAO;EAEzB;EAEA,SAAS,OAAO,QAAQ;GACtB,IAAI,CAAC,OAAO,QAAQ,OAAO,UAAU,OAAO,QAAQ,OAAO,UAAU,CAAC;GACtE,IAAI,SAAS,OAAO,KAAK,OAAO,KAAK,SAAS,MAAM;GACpD,IAAI,MAAO,OAAO,MAAM;IAAE,MAAM,OAAO;IAAS,YAAY,CAAC;GAAE;GAG/D,IAAI,OAAO,IAAI,OACb,IAAI,KAAK,OAAO;GAElB,OAAO,WAAW,SAAS;GAC3B,SAAS,QAAQ,kBAAkB,GAAG;EACxC;EAEA,SAAS,MAAM,MAAM,WAAW;GAE9B,IAAI,WADI,KAAK,QAAQ,GACN,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,MAAM,GAAG;GAClD,IAAI,SAAS,SAAS;GACtB,IAAI,QAAQ,SAAS;GAGrB,IAAI,aAAa,SAAS,SAAS;IACjC,SAAS;IACT,QAAQ;GACV;GAEA,OAAO;IAAU;IAAe;GAAM;EACxC;EAEA,SAAS,OAAO,QAAQ;GACtB,IAAI,CAAC,OAAO,QACV,OAAO,aAAa,OAAO,WAAW,OAAO,UAAU,CAAC;GAG1D,IACE,OAAO,WAAW,QAAQ,OAAO,UAAU,MAAM,MACjD,OAAO,IAAI,WAAW,eAAe,OAAO,UAAU,GACtD;IACA,OAAO,aAAa,OAAO,cAAc;IACzC;GACF;GAEA,IAAI,OAAO,IAAI,OAAO;IACpB,IAAI,KAAK,MAAM,OAAO,YAAY,IAAI;IACtC,IAAI,SAAS,GAAG;IAChB,IAAI,QAAQ,GAAG;IAEf,IAAI,WAAW,SAEb,IAAI,UAAU,SAAS,OAAO,gBAAgB,eAC5C,WACE,QACA,kCACE,gBACA,eAEA,OAAO,WACX;SACK,IACL,UAAU,WACV,OAAO,gBAAgB,iBAEvB,WACE,QACA,oCACE,kBACA,eAEA,OAAO,WACX;SACK;KACL,IAAI,MAAM,OAAO;KACjB,IAAI,SAAS,OAAO,KAAK,OAAO,KAAK,SAAS,MAAM;KACpD,IAAI,IAAI,OAAO,OAAO,IACpB,IAAI,KAAK,OAAO,OAAO,OAAO,EAAE;KAElC,IAAI,GAAG,SAAS,OAAO;IACzB;IAMF,OAAO,WAAW,KAAK,CAAC,OAAO,YAAY,OAAO,WAAW,CAAC;GAChE,OAAO;IAEL,OAAO,IAAI,WAAW,OAAO,cAAc,OAAO;IAClD,SAAS,QAAQ,eAAe;KAC9B,MAAM,OAAO;KACb,OAAO,OAAO;IAChB,CAAC;GACH;GAEA,OAAO,aAAa,OAAO,cAAc;EAC3C;EAEA,SAAS,QAAQ,QAAQ,aAAa;GACpC,IAAI,OAAO,IAAI,OAAO;IAEpB,IAAI,MAAM,OAAO;IAGjB,IAAI,KAAK,MAAM,OAAO,OAAO;IAC7B,IAAI,SAAS,GAAG;IAChB,IAAI,QAAQ,GAAG;IACf,IAAI,MAAM,IAAI,GAAG,GAAG,WAAW;IAE/B,IAAI,IAAI,UAAU,CAAC,IAAI,KAAK;KAC1B,WACE,QACA,+BAA+B,KAAK,UAAU,OAAO,OAAO,CAC9D;KACA,IAAI,MAAM,GAAG;IACf;IAEA,IAAI,SAAS,OAAO,KAAK,OAAO,KAAK,SAAS,MAAM;IACpD,IAAI,IAAI,MAAM,OAAO,OAAO,IAAI,IAC9B,OAAO,KAAK,IAAI,EAAE,CAAC,CAAC,QAAQ,SAAU,GAAG;KACvC,SAAS,QAAQ,mBAAmB;MAClC,QAAQ;MACR,KAAK,IAAI,GAAG;KACd,CAAC;IACH,CAAC;IAMH,KAAK,IAAI,IAAI,GAAG,IAAI,OAAO,WAAW,QAAQ,IAAI,GAAG,KAAK;KACxD,IAAI,KAAK,OAAO,WAAW;KAC3B,IAAI,OAAO,GAAG;KACd,IAAI,QAAQ,GAAG;KACf,IAAI,WAAW,MAAM,MAAM,IAAI;KAC/B,IAAI,SAAS,SAAS;KACtB,IAAI,QAAQ,SAAS;KACrB,IAAI,MAAM,WAAW,KAAK,KAAK,IAAI,GAAG,WAAW;KACjD,IAAI,IAAI;MACA;MACC;MACC;MACD;MACF;KACP;KAIA,IAAI,UAAU,WAAW,WAAW,CAAC,KAAK;MACxC,WACE,QACA,+BAA+B,KAAK,UAAU,MAAM,CACtD;MACA,EAAE,MAAM;KACV;KACA,OAAO,IAAI,WAAW,QAAQ;KAC9B,SAAS,QAAQ,eAAe,CAAC;IACnC;IACA,OAAO,WAAW,SAAS;GAC7B;GAEA,OAAO,IAAI,gBAAgB,CAAC,CAAC;GAG7B,OAAO,UAAU;GACjB,OAAO,KAAK,KAAK,OAAO,GAAG;GAC3B,SAAS,QAAQ,aAAa,OAAO,GAAG;GACxC,IAAI,CAAC,aAAa;IAEhB,IAAI,CAAC,OAAO,YAAY,OAAO,QAAQ,YAAY,MAAM,UACvD,OAAO,QAAQ,EAAE;SAEjB,OAAO,QAAQ,EAAE;IAEnB,OAAO,MAAM;IACb,OAAO,UAAU;GACnB;GACA,OAAO,aAAa,OAAO,cAAc;GACzC,OAAO,WAAW,SAAS;EAC7B;EAEA,SAAS,SAAS,QAAQ;GACxB,IAAI,CAAC,OAAO,SAAS;IACnB,WAAW,QAAQ,wBAAwB;IAC3C,OAAO,YAAY;IACnB,OAAO,QAAQ,EAAE;IACjB;GACF;GAEA,IAAI,OAAO,QAAQ;IACjB,IAAI,OAAO,YAAY,UAAU;KAC/B,OAAO,UAAU,OAAO,OAAO,UAAU;KACzC,OAAO,UAAU;KACjB,OAAO,QAAQ,EAAE;KACjB;IACF;IACA,SAAS,QAAQ,YAAY,OAAO,MAAM;IAC1C,OAAO,SAAS;GAClB;GAIA,IAAI,IAAI,OAAO,KAAK;GACpB,IAAI,UAAU,OAAO;GACrB,IAAI,CAAC,OAAO,QACV,UAAU,QAAQ,OAAO,UAAU,CAAC;GAEtC,IAAI,UAAU;GACd,OAAO,KAEL,IADY,OAAO,KAAK,EACf,CAAC,SAAS,SAEjB,WAAW,QAAQ,sBAAsB;QAEzC;GAKJ,IAAI,IAAI,GAAG;IACT,WAAW,QAAQ,4BAA4B,OAAO,OAAO;IAC7D,OAAO,YAAY,OAAO,OAAO,UAAU;IAC3C,OAAO,QAAQ,EAAE;IACjB;GACF;GACA,OAAO,UAAU;GACjB,IAAI,IAAI,OAAO,KAAK;GACpB,OAAO,MAAM,GAAG;IACd,IAAI,MAAO,OAAO,MAAM,OAAO,KAAK,IAAI;IACxC,OAAO,UAAU,OAAO,IAAI;IAC5B,SAAS,QAAQ,cAAc,OAAO,OAAO;IAE7C,IAAI,IAAI,CAAC;IACT,KAAK,IAAI,KAAK,IAAI,IAChB,EAAE,KAAK,IAAI,GAAG;IAGhB,IAAI,SAAS,OAAO,KAAK,OAAO,KAAK,SAAS,MAAM;IACpD,IAAI,OAAO,IAAI,SAAS,IAAI,OAAO,OAAO,IAExC,OAAO,KAAK,IAAI,EAAE,CAAC,CAAC,QAAQ,SAAU,GAAG;KACvC,IAAI,IAAI,IAAI,GAAG;KACf,SAAS,QAAQ,oBAAoB;MAAE,QAAQ;MAAG,KAAK;KAAE,CAAC;IAC5D,CAAC;GAEL;GACA,IAAI,MAAM,GAAG,OAAO,aAAa;GACjC,OAAO,UAAU,OAAO,cAAc,OAAO,aAAa;GAC1D,OAAO,WAAW,SAAS;GAC3B,OAAO,QAAQ,EAAE;EACnB;EAEA,SAAS,YAAY,QAAQ;GAC3B,IAAI,SAAS,OAAO;GACpB,IAAI,WAAW,OAAO,YAAY;GAClC,IAAI;GACJ,IAAI,SAAS;GAEb,IAAI,OAAO,SAAS,SAClB,OAAO,OAAO,SAAS;GAEzB,IAAI,OAAO,SAAS,WAClB,OAAO,OAAO,SAAS;GAEzB,SAAS;GACT,IAAI,OAAO,OAAO,CAAC,MAAM,KACvB,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK;IAC5B,SAAS,OAAO,MAAM,CAAC;IACvB,MAAM,SAAS,QAAQ,EAAE;IACzB,SAAS,IAAI,SAAS,EAAE;GAC1B,OAAO;IACL,SAAS,OAAO,MAAM,CAAC;IACvB,MAAM,SAAS,QAAQ,EAAE;IACzB,SAAS,IAAI,SAAS,EAAE;GAC1B;GAEF,SAAS,OAAO,QAAQ,OAAO,EAAE;GACjC,IACE,MAAM,GAAG,KACT,OAAO,YAAY,MAAM,UACzB,MAAM,KACN,MAAM,SACN;IACA,WAAW,QAAQ,0BAA0B;IAC7C,OAAO,MAAM,OAAO,SAAS;GAC/B;GAEA,OAAO,OAAO,cAAc,GAAG;EACjC;EAEA,SAAS,gBAAgB,QAAQ,GAAG;GAClC,IAAI,MAAM,KAAK;IACb,OAAO,QAAQ,EAAE;IACjB,OAAO,mBAAmB,OAAO;GACnC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG;IAG3B,WAAW,QAAQ,kCAAkC;IACrD,OAAO,WAAW;IAClB,OAAO,QAAQ,EAAE;GACnB;EACF;EAEA,SAAS,OAAO,OAAO,GAAG;GACxB,IAAI,SAAS;GACb,IAAI,IAAI,MAAM,QACZ,SAAS,MAAM,OAAO,CAAC;GAEzB,OAAO;EACT;EAEA,SAAS,MAAM,OAAO;GACpB,IAAI,SAAS;GACb,IAAI,KAAK,OACP,MAAM,KAAK;GAEb,IAAI,OAAO,QACT,OAAO,MACL,QACA,sDACF;GAEF,IAAI,UAAU,MACZ,OAAO,IAAI,MAAM;GAEnB,IAAI,OAAO,UAAU,UACnB,QAAQ,MAAM,SAAS;GAEzB,IAAI,IAAI;GACR,IAAI,IAAI;GACR,OAAO,MAAM;IACX,IAAI,OAAO,OAAO,GAAG;IACrB,OAAO,IAAI;IAEX,IAAI,CAAC,GACH;IAGF,IAAI,OAAO,eAAe;KACxB,OAAO;KACP,IAAI,MAAM,MAAM;MACd,OAAO;MACP,OAAO,SAAS;KAClB,OACE,OAAO;IAEX;IAEA,QAAQ,OAAO,OAAf;KACE,KAAK,EAAE;MACL,OAAO,QAAQ,EAAE;MACjB,IAAI,MAAM,KACR;MAEF,gBAAgB,QAAQ,CAAC;MACzB;KAEF,KAAK,EAAE;MACL,gBAAgB,QAAQ,CAAC;MACzB;KAEF,KAAK,EAAE;MACL,IAAI,OAAO,WAAW,CAAC,OAAO,YAAY;OACxC,IAAI,SAAS,IAAI;OACjB,OAAO,KAAK,MAAM,OAAO,MAAM,KAAK;QAClC,IAAI,OAAO,OAAO,GAAG;QACrB,IAAI,KAAK,OAAO,eAAe;SAC7B,OAAO;SACP,IAAI,MAAM,MAAM;UACd,OAAO;UACP,OAAO,SAAS;SAClB,OACE,OAAO;QAEX;OACF;OACA,OAAO,YAAY,MAAM,UAAU,QAAQ,IAAI,CAAC;MAClD;MACA,IACE,MAAM,OACN,EAAE,OAAO,WAAW,OAAO,cAAc,CAAC,OAAO,SACjD;OACA,OAAO,QAAQ,EAAE;OACjB,OAAO,mBAAmB,OAAO;MACnC,OAAO;OACL,IACE,CAAC,aAAa,CAAC,MACd,CAAC,OAAO,WAAW,OAAO,aAE3B,WAAW,QAAQ,iCAAiC;OAEtD,IAAI,MAAM,KACR,OAAO,QAAQ,EAAE;YAEjB,OAAO,YAAY;MAEvB;MACA;KAEF,KAAK,EAAE;MAEL,IAAI,MAAM,KACR,OAAO,QAAQ,EAAE;WAEjB,OAAO,UAAU;MAEnB;KAEF,KAAK,EAAE;MACL,IAAI,MAAM,KACR,OAAO,QAAQ,EAAE;WACZ;OACL,OAAO,UAAU,MAAM;OACvB,OAAO,QAAQ,EAAE;MACnB;MACA;KAEF,KAAK,EAAE;MAEL,IAAI,MAAM,KAAK;OACb,OAAO,QAAQ,EAAE;OACjB,OAAO,WAAW;MACpB,OAAO,IAAI,aAAa,CAAC,GAAG,CAE5B,OAAO,IAAI,QAAQ,WAAW,CAAC,GAAG;OAChC,OAAO,QAAQ,EAAE;OACjB,OAAO,UAAU;MACnB,OAAO,IAAI,MAAM,KAAK;OACpB,OAAO,QAAQ,EAAE;OACjB,OAAO,UAAU;MACnB,OAAO,IAAI,MAAM,KAAK;OACpB,OAAO,QAAQ,EAAE;OACjB,OAAO,eAAe,OAAO,eAAe;MAC9C,OAAO;OACL,WAAW,QAAQ,aAAa;OAEhC,IAAI,OAAO,mBAAmB,IAAI,OAAO,UAAU;QACjD,IAAI,MAAM,OAAO,WAAW,OAAO;QACnC,IAAI,IAAI,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI;OACjC;OACA,OAAO,YAAY,MAAM;OACzB,OAAO,QAAQ,EAAE;MACnB;MACA;KAEF,KAAK,EAAE;MACL,IAAI,OAAO,WAAW,MAAM,MAAM;OAChC,OAAO,QAAQ,EAAE;OACjB,OAAO,UAAU;OACjB,OAAO,WAAW;OAClB;MACF;MAEA,IACE,OAAO,WACP,OAAO,YAAY,QACnB,OAAO,UACP;OACA,OAAO,QAAQ,EAAE;OACjB,OAAO,WAAW,OAAO,OAAO,WAAW;OAC3C,OAAO,WAAW;MACpB,OAAO,KAAK,OAAO,WAAW,EAAA,CAAG,YAAY,MAAM,OAAO;OACxD,SAAS,QAAQ,aAAa;OAC9B,OAAO,QAAQ,EAAE;OACjB,OAAO,WAAW;OAClB,OAAO,QAAQ;MACjB,OAAO,KAAK,OAAO,WAAW,EAAA,CAAG,YAAY,MAAM,SAAS;OAC1D,OAAO,QAAQ,EAAE;OACjB,IAAI,OAAO,WAAW,OAAO,SAC3B,WACE,QACA,6CACF;OAEF,OAAO,UAAU;OACjB,OAAO,WAAW;MACpB,OAAO,IAAI,MAAM,KAAK;OACpB,SAAS,QAAQ,qBAAqB,OAAO,QAAQ;OACrD,OAAO,WAAW;OAClB,OAAO,QAAQ,EAAE;MACnB,OAAO,IAAI,QAAQ,CAAC,GAAG;OACrB,OAAO,QAAQ,EAAE;OACjB,OAAO,YAAY;MACrB,OACE,OAAO,YAAY;MAErB;KAEF,KAAK,EAAE;MACL,IAAI,MAAM,OAAO,GAAG;OAClB,OAAO,QAAQ,EAAE;OACjB,OAAO,IAAI;MACb;MACA,OAAO,YAAY;MACnB;KAEF,KAAK,EAAE;MACL,IAAI,MAAM,KAAK;OACb,OAAO,QAAQ,EAAE;OACjB,SAAS,QAAQ,aAAa,OAAO,OAAO;OAC5C,OAAO,UAAU;MACnB,OAAO;OACL,OAAO,WAAW;OAClB,IAAI,MAAM,KACR,OAAO,QAAQ,EAAE;YACZ,IAAI,QAAQ,CAAC,GAAG;QACrB,OAAO,QAAQ,EAAE;QACjB,OAAO,IAAI;OACb;MACF;MACA;KAEF,KAAK,EAAE;MACL,OAAO,WAAW;MAClB,IAAI,MAAM,OAAO,GAAG;OAClB,OAAO,IAAI;OACX,OAAO,QAAQ,EAAE;MACnB;MACA;KAEF,KAAK,EAAE;MACL,IAAI,MAAM,KAAK;OACb,OAAO,WAAW;OAClB,OAAO,QAAQ,EAAE;MACnB,OAAO,IAAI,MAAM,KAAK;OACpB,OAAO,QAAQ,EAAE;OACjB,OAAO,mBAAmB,OAAO;MACnC,OAAO,IAAI,QAAQ,CAAC,GAAG;OACrB,OAAO,WAAW;OAClB,OAAO,QAAQ,EAAE;OACjB,OAAO,IAAI;MACb,OACE,OAAO,WAAW;MAEpB;KAEF,KAAK,EAAE;MACL,OAAO,WAAW;MAClB,IAAI,MAAM,OAAO,GAAG;OAClB,OAAO,QAAQ,EAAE;OACjB,OAAO,IAAI;MACb;MACA;KAEF,KAAK,EAAE;MACL,IAAI,MAAM,KACR,OAAO,QAAQ,EAAE;WAEjB,OAAO,WAAW;MAEpB;KAEF,KAAK,EAAE;MACL,IAAI,MAAM,KAAK;OACb,OAAO,QAAQ,EAAE;OACjB,OAAO,UAAU,SAAS,OAAO,KAAK,OAAO,OAAO;OACpD,IAAI,OAAO,SACT,SAAS,QAAQ,aAAa,OAAO,OAAO;OAE9C,OAAO,UAAU;MACnB,OAAO;OACL,OAAO,WAAW,MAAM;OACxB,OAAO,QAAQ,EAAE;MACnB;MACA;KAEF,KAAK,EAAE;MACL,IAAI,MAAM,KAAK;OACb,WAAW,QAAQ,mBAAmB;OAGtC,OAAO,WAAW,OAAO;OACzB,OAAO,QAAQ,EAAE;MACnB,OAAO,IAAI,OAAO,WAAW,OAAO,YAAY,MAC9C,OAAO,QAAQ,EAAE;WAEjB,OAAO,QAAQ,EAAE;MAEnB;KAEF,KAAK,EAAE;MACL,IAAI,SAAS,IAAI;MACjB,OAAO,KAAK,MAAM,KAAK;OACrB,IAAI,OAAO,OAAO,GAAG;OACrB,IAAI,KAAK,OAAO,eAAe;QAC7B,OAAO;QACP,IAAI,MAAM,MAAM;SACd,OAAO;SACP,OAAO,SAAS;QAClB,OACE,OAAO;OAEX;MACF;MACA,OAAO,SAAS,MAAM,UAAU,QAAQ,IAAI,CAAC;MAC7C,IAAI,MAAM,KACR,OAAO,QAAQ,EAAE;MAEnB;KAEF,KAAK,EAAE;MACL,IAAI,MAAM,KACR,OAAO,QAAQ,EAAE;WACZ;OACL,OAAO,SAAS,MAAM;OACtB,OAAO,QAAQ,EAAE;MACnB;MACA;KAEF,KAAK,EAAE;MACL,IAAI,MAAM,KAAK;OACb,IAAI,OAAO,OACT,SAAS,QAAQ,WAAW,OAAO,KAAK;OAE1C,SAAS,QAAQ,cAAc;OAC/B,OAAO,QAAQ;OACf,OAAO,QAAQ,EAAE;MACnB,OAAO,IAAI,MAAM,KACf,OAAO,SAAS;WACX;OACL,OAAO,SAAS,OAAO;OACvB,OAAO,QAAQ,EAAE;MACnB;MACA;KAEF,KAAK,EAAE;MACL,IAAI,MAAM,KACR,OAAO,QAAQ,EAAE;WACZ,IAAI,aAAa,CAAC,GACvB,OAAO,QAAQ,EAAE;WAEjB,OAAO,gBAAgB;MAEzB;KAEF,KAAK,EAAE;MACL,IAAI,CAAC,OAAO,gBAAgB,aAAa,CAAC,GACxC;WACK,IAAI,MAAM,KACf,OAAO,QAAQ,EAAE;WAEjB,OAAO,gBAAgB;MAEzB;KAEF,KAAK,EAAE;MACL,IAAI,MAAM,KAAK;OACb,MAAM,kBAAkB;QACtB,MAAM,OAAO;QACb,MAAM,OAAO;OACf;OACA,+BAA+B,QAAQ,eAAe;OACtD,SAAS,QAAQ,2BAA2B,eAAe;OAC3D,OAAO,eAAe,OAAO,eAAe;OAC5C,OAAO,QAAQ,EAAE;MACnB,OAAO;OACL,OAAO,gBAAgB,MAAM;OAC7B,OAAO,QAAQ,EAAE;MACnB;MACA;KAEF,KAAK,EAAE;MACL,IAAI,QAAQ,UAAU,CAAC,GACrB,OAAO,WAAW;WACb;OACL,OAAO,MAAM;OACb,IAAI,MAAM,KACR,QAAQ,MAAM;YACT,IAAI,MAAM,KACf,OAAO,QAAQ,EAAE;YACZ;QACL,IAAI,CAAC,aAAa,CAAC,GACjB,WAAW,QAAQ,+BAA+B;QAEpD,OAAO,QAAQ,EAAE;OACnB;MACF;MACA;KAEF,KAAK,EAAE;MACL,IAAI,MAAM,KAAK;OACb,QAAQ,QAAQ,IAAI;OACpB,SAAS,MAAM;MACjB,OAAO;OACL,WACE,QACA,gDACF;OACA,OAAO,QAAQ,EAAE;MACnB;MACA;KAEF,KAAK,EAAE;MAEL,IAAI,aAAa,CAAC,GAChB;WACK,IAAI,MAAM,KACf,QAAQ,MAAM;WACT,IAAI,MAAM,KACf,OAAO,QAAQ,EAAE;WACZ,IAAI,QAAQ,WAAW,CAAC,GAAG;OAChC,OAAO,aAAa;OACpB,OAAO,cAAc;OACrB,OAAO,QAAQ,EAAE;MACnB,OACE,WAAW,QAAQ,wBAAwB;MAE7C;KAEF,KAAK,EAAE;MACL,IAAI,MAAM,KACR,OAAO,QAAQ,EAAE;WACZ,IAAI,MAAM,KAAK;OACpB,WAAW,QAAQ,yBAAyB;OAC5C,OAAO,cAAc,OAAO;OAC5B,OAAO,MAAM;OACb,QAAQ,MAAM;MAChB,OAAO,IAAI,aAAa,CAAC,GACvB,OAAO,QAAQ,EAAE;WACZ,IAAI,QAAQ,UAAU,CAAC,GAC5B,OAAO,cAAc;WAErB,WAAW,QAAQ,wBAAwB;MAE7C;KAEF,KAAK,EAAE;MACL,IAAI,MAAM,KACR,OAAO,QAAQ,EAAE;WACZ,IAAI,aAAa,CAAC,GACvB;WACK;OACL,WAAW,QAAQ,yBAAyB;OAC5C,OAAO,IAAI,WAAW,OAAO,cAAc;OAC3C,OAAO,cAAc;OACrB,SAAS,QAAQ,eAAe;QAC9B,MAAM,OAAO;QACb,OAAO;OACT,CAAC;OACD,OAAO,aAAa;OACpB,IAAI,MAAM,KACR,QAAQ,MAAM;YACT,IAAI,QAAQ,WAAW,CAAC,GAAG;QAChC,OAAO,aAAa;QACpB,OAAO,QAAQ,EAAE;OACnB,OAAO;QACL,WAAW,QAAQ,wBAAwB;QAC3C,OAAO,QAAQ,EAAE;OACnB;MACF;MACA;KAEF,KAAK,EAAE;MACL,IAAI,aAAa,CAAC,GAChB;WACK,IAAI,QAAQ,CAAC,GAAG;OACrB,OAAO,IAAI;OACX,OAAO,QAAQ,EAAE;MACnB,OAAO;OACL,IAAI,CAAC,OAAO,IAAI,yBACd,MAAM,QAAQ,0BAA0B;OAE1C,OAAO,QAAQ,EAAE;OACjB,OAAO,cAAc;MACvB;MACA;KAEF,KAAK,EAAE;MACL,IAAI,MAAM,OAAO,GAAG;OAClB,IAAI,MAAM,KACR,OAAO,QAAQ,EAAE;YAEjB,OAAO,eAAe;OAExB;MACF;MACA,OAAO,MAAM;MACb,OAAO,IAAI;MACX,OAAO,QAAQ,EAAE;MACjB;KAEF,KAAK,EAAE;MACL,IAAI,aAAa,CAAC,GAChB,OAAO,QAAQ,EAAE;WACZ,IAAI,MAAM,KACf,QAAQ,MAAM;WACT,IAAI,MAAM,KACf,OAAO,QAAQ,EAAE;WACZ,IAAI,QAAQ,WAAW,CAAC,GAAG;OAChC,WAAW,QAAQ,kCAAkC;OACrD,OAAO,aAAa;OACpB,OAAO,cAAc;OACrB,OAAO,QAAQ,EAAE;MACnB,OACE,WAAW,QAAQ,wBAAwB;MAE7C;KAEF,KAAK,EAAE;MACL,IAAI,CAAC,YAAY,CAAC,GAAG;OACnB,IAAI,MAAM,KACR,OAAO,QAAQ,EAAE;YAEjB,OAAO,eAAe;OAExB;MACF;MACA,OAAO,MAAM;MACb,IAAI,MAAM,KACR,QAAQ,MAAM;WAEd,OAAO,QAAQ,EAAE;MAEnB;KAEF,KAAK,EAAE;MACL,IAAI,CAAC,OAAO,SACV,IAAI,aAAa,CAAC,GAChB;WACK,IAAI,SAAS,WAAW,CAAC,GAC9B,IAAI,OAAO,QAAQ;OACjB,OAAO,UAAU,OAAO;OACxB,OAAO,QAAQ,EAAE;MACnB,OACE,WAAW,QAAQ,iCAAiC;WAGtD,OAAO,UAAU;WAEd,IAAI,MAAM,KACf,SAAS,MAAM;WACV,IAAI,QAAQ,UAAU,CAAC,GAC5B,OAAO,WAAW;WACb,IAAI,OAAO,QAAQ;OACxB,OAAO,UAAU,OAAO,OAAO,UAAU;OACzC,OAAO,UAAU;OACjB,OAAO,QAAQ,EAAE;MACnB,OAAO;OACL,IAAI,CAAC,aAAa,CAAC,GACjB,WAAW,QAAQ,gCAAgC;OAErD,OAAO,QAAQ,EAAE;MACnB;MACA;KAEF,KAAK,EAAE;MACL,IAAI,aAAa,CAAC,GAChB;MAEF,IAAI,MAAM,KACR,SAAS,MAAM;WAEf,WAAW,QAAQ,mCAAmC;MAExD;KAEF,KAAK,EAAE;KACP,KAAK,EAAE;KACP,KAAK,EAAE;MACL,IAAI;MACJ,IAAI;MACJ,QAAQ,OAAO,OAAf;OACE,KAAK,EAAE;QACL,cAAc,EAAE;QAChB,SAAS;QACT;OAEF,KAAK,EAAE;QACL,cAAc,EAAE;QAChB,SAAS;QACT;OAEF,KAAK,EAAE;QACL,cAAc,EAAE;QAChB,SAAS;QACT;MACJ;MAEA,IAAI,MAAM,KAAK;OACb,IAAI,eAAe,YAAY,MAAM;OACrC,IACE,OAAO,IAAI,oBACX,CAAC,OAAO,OAAO,IAAI,YAAY,CAAC,CAAC,SAAS,YAAY,GACtD;QACA,KAAK,OAAO,eAAe,KAAK,OAAO,IAAI,gBACzC,MACE,QACA,8CACF;QAGF,KAAK,OAAO,eAAe,KAAK,OAAO,IAAI,gBACzC,MACE,QACA,8CACF;QAGF,OAAO,SAAS;QAChB,OAAO,QAAQ;QACf,OAAO,MAAM,YAAY;QACzB,OAAO,eAAe;OACxB,OAAO;QACL,OAAO,WAAW;QAClB,OAAO,SAAS;QAChB,OAAO,QAAQ;OACjB;MACF,OAAO,IACL,QAAQ,OAAO,OAAO,SAAS,aAAa,aAAa,CAAC,GAE1D,OAAO,UAAU;WACZ;OACL,WAAW,QAAQ,kCAAkC;OACrD,OAAO,WAAW,MAAM,OAAO,SAAS;OACxC,OAAO,SAAS;OAChB,OAAO,QAAQ;MACjB;MAEA;KAEF,SACE,MAAM,IAAI,MAAM,QAAQ,oBAAoB,OAAO,KAAK;IAE5D;GACF;GAEA,IAAI,OAAO,YAAY,OAAO,qBAC5B,kBAAkB,MAAM;GAE1B,OAAO;EACT;;;EAIA,IAAI,CAAC,OAAO,eACT,CAAC,WAAY;GACZ,IAAI,qBAAqB,OAAO;GAChC,IAAI,QAAQ,KAAK;GACjB,IAAI,gBAAgB,WAAY;IAC9B,IAAI,WAAW;IACf,IAAI,YAAY,CAAC;IACjB,IAAI;IACJ,IAAI;IACJ,IAAI,QAAQ;IACZ,IAAI,SAAS,UAAU;IACvB,IAAI,CAAC,QACH,OAAO;IAET,IAAI,SAAS;IACb,OAAO,EAAE,QAAQ,QAAQ;KACvB,IAAI,YAAY,OAAO,UAAU,MAAM;KACvC,IACE,CAAC,SAAS,SAAS,KACnB,YAAY,KACZ,YAAY,WACZ,MAAM,SAAS,MAAM,WAErB,MAAM,WAAW,yBAAyB,SAAS;KAErD,IAAI,aAAa,OAEf,UAAU,KAAK,SAAS;UACnB;MAGL,aAAa;MACb,iBAAiB,aAAa,MAAM;MACpC,eAAgB,YAAY,OAAS;MACrC,UAAU,KAAK,eAAe,YAAY;KAC5C;KACA,IAAI,QAAQ,MAAM,UAAU,UAAU,SAAS,UAAU;MACvD,UAAU,mBAAmB,MAAM,MAAM,SAAS;MAClD,UAAU,SAAS;KACrB;IACF;IACA,OAAO;GACT;;GAEA,IAAI,OAAO,gBACT,OAAO,eAAe,QAAQ,iBAAiB;IAC7C,OAAO;IACP,cAAc;IACd,UAAU;GACZ,CAAC;QAED,OAAO,gBAAgB;EAE3B,EAAA,CAAG;CAEP,EAAA,CAAG,OAAO,YAAY,cAAe,QAAK,MAAM,CAAC,IAAK,OAAO;;;;;CClzD7D,IAAIC,cAAY,QAAQ,QAAQ,CAAC,CAAC;CAClC,IAAI,MAAA,YAAA;CAEJ,SAAS,SAAS,KAAK,IAAI;EACzB,IAAI,KAAK,SAAS,SAAS,IAAI,OAAO,MAAM;GAAE,MAAM;GAAM,WAAW;EAAK,CAAC;EAC3E,OAAO,UAAU,OAAO,QAAQ;EAEhC,SAAS,KAAK,KAAK;GACjB,OAAO,UAAU,OAAO,QAAQ,WAAW,CAAE;GAC7C,GAAG,KAAK,GAAG;EACb;EAEA,SAAS,WAAW,MAAM,YAAY;GACpC,OAAO;IACL,MAAM,QAAQ;IACd,OAAO;IACP,YAAY,cAAc,CAAC;IAC3B,UAAU,CAAC;GACb;EACF;EAEA,OAAO,UAAU,OAAO,SAAS,SAAS,GAAG;GAC3C,IAAI,SAAS,QAAQ,SAAS;EAChC;EAEA,OAAO,YAAY,SAAS,MAAM;GAChC,IAAI,UAAU,WAAW,KAAK,MAAM,KAAK,UAAU;GACnD,IAAI,SAAS;IACX,QAAQ,SAAS;IACjB,QAAQ,SAAS,KAAK,OAAO;GAC/B,OACE,MAAM;GAGR,UAAU;EACZ;EAEA,OAAO,aAAa,WAAW;GAC7B,IAAI,OAAO,QAAQ,WAAW,aAAa;IACzC,IAAI,cAAc;IAClB,UAAU,QAAQ;IAClB,OAAO,YAAY;GACrB;EACF;EAEA,OAAO,MAAM,GAAG,CAAC,CAAC,MAAM;CAC1B;CAEA,SAAS,cAAc,MAAM,IAAI;EAE/B,SAAS,SAAS;GAChB,IAAI,SAAS,CAAC,GACV,SAAS,IAAIA,YAAU,EAAE,YAAY,KAAK,CAAC;GAG/C,OAAO,aAAa,SAAS,OAAO,UAAU,MAAM;IAClD,OAAO,KAAK,KAAK;IACjB,KAAK;GACP;GAGA,OAAO,SAAS,SAAS,MAAM;IAC7B,IAAI,OAAO,MACP,OAAO,OAAO,OAAO,MAAM;IAE/B,IAAI;KACF,GAAG,MAAM,SAAS,KAAK,QAAQ;MAC7B,IAAI,KAAK,MAAM;MACf,KAAK,KAAK,MAAM;KAClB,CAAC;IACH,SAAS,KAAK;KACZ,KAAK,KAAK,IAAI;IAChB,UAAU;KACR,KAAK;IACP;GACF;GAEA,OAAO;EACT;EAEA,OAAO;GAAE,IAAI;GAAc;EAAK;CAClC;CAEA,IAAI,UAAU,CAAC;CAEf,SAAS,YAAY,MAAM,OAAO,IAAI;EACpC,IAAI,SAAS,cAAc,MAAM,EAAE;EACnC,MAAM,QAAQ,SAAS,MAAM;GAC3B,QAAQ,QAAQ;EAClB,CAAC;CACH;CAEA,YAAY,QAAQ;EAClB;EACA;EACA;CACF,GAAG,SAAS,QAAQ,IAAI;EACtB,IAAI,KAAK;EACT,IAAI;GAAE,OAAO,KAAK,MAAM,MAAM;EAAG,SAAS,GAAG;GAAE,MAAM;EAAG;EACxD,GAAG,KAAK,IAAI;CACd,CAAC;CAED,YAAY,OAAO;EACjB;EACA;EACA;EACA;EACA;CACF,GAAG,SAAS,QAAQ,IAAI;EACtB,SAAS,OAAO,SAAS,GAAG,SAAS,KAAK,KAAK;GAC7C,GAAG,KAAK,GAAG;EACb,CAAC;CACH,CAAC;CAED,OAAO,UAAU;CACjB,OAAO,QAAQ,MAAM;;;;;CCpHrB,MAAM,uBAAuB,QAAQ,QAAQ;CAQ7C,OAAO,UAAU,EACf,6BAPkC,OAAO,YACzC,OAAO,QAAQ,OAAO,0BAA0B,oBAAoB,CAAC,CAAC,CAAC,QACpE,EAAE,GAAG,UAAU,QAAQ,YAAY,QAAQ,YAC9C,CAIA,EACF;;;;;CCZA,MAAM,EACJ,MAAM,UACN,QAAQ,cACR,MAAM,UACN,mBACA,MAAM,QACN,MAAM,QACN,WACA,SACA,QACA,YACA,kBACA,kBACA,cAGE,QAAQ,QAAQ;CAEpB,MAAM,EAAE,gCAAA,eAAA;CAER,MAAM,QAAQ,EACZ,WAAW,aAAa,UAC1B;CACA,KAAK,MAAM,OAAO,QAAQ,QAAQ,YAAY,GAC5C,IACE,QAAQ,iBACR,QAAQ,qBACR,QAAQ,aAER,MAAM,OAAO,aAAa;CAI9B,OAAO,UAAU;EACf;EACA,MAAM;EACN,MAAM;EACN,MAAM;EACN,MAAM;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;CACV;CAGA,OAAO,iBAAiB,OAAO,SAAS,2BAA2B;;;;;CClDnE,IAAI,UAAU;CAEd,QAAQ,aAAa;CACrB,SAAS,kBAAkB,SAAS,SAAS;EACzC,KAAK,UAAU;EACf,KAAK,SAAS;CAClB;CAEA,kBAAkB,UAAU,QAAQ,SAAS,KAAK;EAC9C,IAAI,KAAK,QAAQ;GACb,MAAM,UAAU;GAChB,KAAK,SAAS;EAClB;EAEA,OAAO,KAAK,QAAQ,MAAM,GAAG;CACjC;CAEA,kBAAkB,UAAU,MAAM,WAAW;EACzC,OAAO,KAAK,QAAQ,IAAI;CAC5B;CAKA,QAAQ,WAAW;CACnB,SAAS,gBAAgB,SAAS,SAAS;EACvC,KAAK,UAAU;EACf,KAAK,OAAO;EACZ,KAAK,UAAU,WAAW,CAAC;CAC/B;CAEA,gBAAgB,UAAU,QAAQ,SAAS,KAAK;EAC5C,IAAI,MAAM,KAAK,QAAQ,MAAM,GAAG;EAChC,IAAI,KAAK,QAAQ,CAAC,KACd,OAAO;EAEX,IAAI,IAAI,OAAO,SAAS;GACpB,MAAM,IAAI,MAAM,CAAC;GACjB,IAAI,OAAO,KAAK,QAAQ,aAAa,YACjC,KAAK,QAAQ,SAAS;EAC9B;EAEA,KAAK,OAAO;EACZ,OAAO;CACX;CAEA,gBAAgB,UAAU,MAAM,WAAW;EACvC,OAAO,KAAK,QAAQ,IAAI;CAC5B;;;;;CCjDA,IAAI,SAAA,cAAA,CAAA,CAAiC;CAIrC,OAAO,UAAU;EAEb,MAAQ;GAAE,MAAM;GAAa,UAAU;EAAI;EAC3C,OAAQ;GAAE,MAAM;GAAa,UAAU;EAAI;EAC3C,eAAe;EAEf,MAAQ;GAAE,MAAM;GAAa,UAAU;EAAI;EAC3C,SAAS;EAET,QAAQ,EAAE,MAAM,YAAY;EAC5B,QAAQ,EAAE,MAAM,YAAY;EAC5B,KAAQ,EAAE,MAAM,YAAY;EAG5B,WAAW;CACf;CAIA,SAAS,cAAc,cAAc,OAAO;EACxC,KAAK,MAAM,aAAa;EACxB,KAAK,WAAW,aAAa;EAE7B,IAAI,KAAK,QAAQ,UACb,KAAK,UAAU;OACd,IAAI,KAAK,QAAQ,SAAS;GAC3B,KAAK,MAAM;GACX,KAAK,UAAU;GAGf,IAAI,OAAO,KAAK,gBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,MAAM;IACxD,KAAK,UAAU;IACf,KAAK,qBAAqB,MAAM;GACpC;EACJ;CACJ;CAEA,cAAc,UAAU,UAAU;CAClC,cAAc,UAAU,UAAU;CAKlC,IAAI,gBAAgB,QAAQ,gBAAgB,CAAC,CAAC;CAE9C,IAAI,CAAC,cAAc,UAAU,KACzB,cAAc,UAAU,MAAM,WAAW,CAAC;CAG9C,SAAS,gBAAgB,SAAS,OAAO;EACrC,cAAc,KAAK,MAAM,MAAM,GAAG;CACtC;CAEA,gBAAgB,YAAY,cAAc;CAM1C,SAAS,gBAAgB,SAAS,OAAO;EACrC,KAAK,MAAM,MAAM;CACrB;CAEA,gBAAgB,UAAU,QAAQ,SAAS,KAAK;EAC5C,OAAO,OAAO,KAAK,KAAK,KAAK,GAAG;CACpC;CAEA,gBAAgB,UAAU,MAAM,WAAW,CAC3C;CAMA,SAAS,sBAAsB,SAAS,OAAO;EAC3C,KAAK,UAAU;CACnB;CAEA,sBAAsB,UAAU,QAAQ,SAAS,KAAK;EAClD,MAAM,KAAK,UAAU;EACrB,IAAI,gBAAgB,IAAI,SAAU,IAAI,SAAS;EAC/C,KAAK,UAAU,IAAI,MAAM,aAAa;EACtC,MAAM,IAAI,MAAM,GAAG,aAAa;EAEhC,OAAO,OAAO,KAAK,KAAK,QAAQ;CACpC;CAEA,sBAAsB,UAAU,MAAM,WAAW;EAC7C,OAAO,OAAO,KAAK,KAAK,SAAS,QAAQ;CAC7C;CAMA,SAAS,qBAAqB,SAAS,OAAO,CAC9C;CAEA,qBAAqB,UAAU,QAAQ,SAAS,KAAK;EACjD,IAAI,MAAM,OAAO,MAAM,IAAI,SAAS,CAAC,GAAG,SAAS;EACjD,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;GACjC,IAAI,WAAW,IAAI,WAAW,CAAC;GAG/B,IAAI,WAAW,KACX,IAAI,YAAY;QACf,IAAI,WAAW,MAAO;IACvB,IAAI,YAAY,OAAQ,aAAa;IACrC,IAAI,YAAY,OAAQ,WAAW;GACvC,OACK;IACD,IAAI,YAAY,OAAQ,aAAa;IACrC,IAAI,YAAY,OAAS,aAAa,IAAK;IAC3C,IAAI,YAAY,OAAQ,WAAW;GACvC;EACJ;EACA,OAAO,IAAI,MAAM,GAAG,MAAM;CAC9B;CAEA,qBAAqB,UAAU,MAAM,WAAW,CAChD;CAKA,SAAS,qBAAqB,SAAS,OAAO;EAC1C,KAAK,MAAM;EACX,KAAK,YAAY;EACjB,KAAK,WAAW;EAChB,KAAK,qBAAqB,MAAM;CACpC;CAEA,qBAAqB,UAAU,QAAQ,SAAS,KAAK;EACjD,IAAI,MAAM,KAAK,KAAK,YAAY,KAAK,WAAW,WAAW,KAAK,UAC5D,MAAM;EACV,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;GACjC,IAAI,UAAU,IAAI;GAClB,KAAK,UAAU,SAAU,KAAM;IAC3B,IAAI,YAAY,GAAG;KACf,OAAO,KAAK;KACZ,YAAY;IAChB;IAEA,IAAI,UAAU,KACV,OAAO,OAAO,aAAa,OAAO;SAC/B,IAAI,UAAU,KAAM;KACvB,MAAM,UAAU;KAChB,YAAY;KAAG,WAAW;IAC9B,OAAO,IAAI,UAAU,KAAM;KACvB,MAAM,UAAU;KAChB,YAAY;KAAG,WAAW;IAC9B,OACI,OAAO,KAAK;GAEpB,OACI,IAAI,YAAY,GAAG;IACf,MAAO,OAAO,IAAM,UAAU;IAC9B;IAAa;IACb,IAAI,cAAc,GAEd,IAAI,aAAa,KAAK,MAAM,OAAQ,MAAM,GACtC,OAAO,KAAK;SACX,IAAI,aAAa,KAAK,MAAM,MAC7B,OAAO,KAAK;SAGZ,OAAO,OAAO,aAAa,GAAG;GAE1C,OACI,OAAO,KAAK;EAGxB;EACA,KAAK,MAAM;EAAK,KAAK,YAAY;EAAW,KAAK,WAAW;EAC5D,OAAO;CACX;CAEA,qBAAqB,UAAU,MAAM,WAAW;EAC5C,IAAI,MAAM;EACV,IAAI,KAAK,YAAY,GACjB,OAAO,KAAK;EAChB,OAAO;CACX;;;;;CC1LA,IAAI,SAAA,cAAA,CAAA,CAAiC;CAMrC,QAAQ,UAAU;CAClB,SAAS,eAAe,CACxB;CAEA,aAAa,UAAU,UAAU;CACjC,aAAa,UAAU,UAAU;CACjC,aAAa,UAAU,WAAW;CAKlC,SAAS,iBAAiB,CAC1B;CAEA,eAAe,UAAU,QAAQ,SAAS,KAAK;EAC3C,IAAI,MAAM,OAAO,KAAK,KAAK,MAAM;EACjC,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK,GAAG;GACpC,IAAI,MAAM,IAAI;GAAI,IAAI,KAAK,IAAI,IAAE;GAAI,IAAI,IAAE,KAAK;EACpD;EACA,OAAO;CACX;CAEA,eAAe,UAAU,MAAM,WAAW,CAC1C;CAKA,SAAS,iBAAiB;EACtB,KAAK,eAAe;CACxB;CAEA,eAAe,UAAU,QAAQ,SAAS,KAAK;EAC3C,IAAI,IAAI,UAAU,GACd,OAAO;EAEX,IAAI,OAAO,OAAO,MAAM,IAAI,SAAS,CAAC,GAClC,IAAI,GAAG,IAAI;EAEf,IAAI,KAAK,iBAAiB,IAAI;GAC1B,KAAK,KAAK,IAAI;GACd,KAAK,KAAK,KAAK;GACf,IAAI;GAAG,IAAI;EACf;EAEA,OAAO,IAAI,IAAI,SAAO,GAAG,KAAK,GAAG,KAAI,GAAG;GACpC,KAAK,KAAK,IAAI,IAAE;GAChB,KAAK,IAAE,KAAK,IAAI;EACpB;EAEA,KAAK,eAAgB,KAAK,IAAI,SAAO,IAAK,IAAI,IAAI,SAAO,KAAK;EAE9D,OAAO,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS,MAAM;CAC3C;CAEA,eAAe,UAAU,MAAM,WAAW,CAC1C;CAWA,QAAQ,QAAQ;CAChB,SAAS,WAAW,cAAc,OAAO;EACrC,KAAK,QAAQ;CACjB;CAEA,WAAW,UAAU,UAAU;CAC/B,WAAW,UAAU,UAAU;CAK/B,SAAS,aAAa,SAAS,OAAO;EAClC,UAAU,WAAW,CAAC;EACtB,IAAI,QAAQ,WAAW,KAAA,GACnB,QAAQ,SAAS;EACrB,KAAK,UAAU,MAAM,MAAM,WAAW,YAAY,OAAO;CAC7D;CAEA,aAAa,UAAU,QAAQ,SAAS,KAAK;EACzC,OAAO,KAAK,QAAQ,MAAM,GAAG;CACjC;CAEA,aAAa,UAAU,MAAM,WAAW;EACpC,OAAO,KAAK,QAAQ,IAAI;CAC5B;CAKA,SAAS,aAAa,SAAS,OAAO;EAClC,KAAK,UAAU;EACf,KAAK,eAAe,CAAC;EACrB,KAAK,kBAAkB;EAEvB,KAAK,UAAU,WAAW,CAAC;EAC3B,KAAK,QAAQ,MAAM;CACvB;CAEA,aAAa,UAAU,QAAQ,SAAS,KAAK;EACzC,IAAI,CAAC,KAAK,SAAS;GAEf,KAAK,aAAa,KAAK,GAAG;GAC1B,KAAK,mBAAmB,IAAI;GAE5B,IAAI,KAAK,kBAAkB,IACvB,OAAO;GAGX,IAAI,MAAM,OAAO,OAAO,KAAK,YAAY,GACrC,WAAW,eAAe,KAAK,KAAK,QAAQ,eAAe;GAC/D,KAAK,UAAU,KAAK,MAAM,WAAW,UAAU,KAAK,OAAO;GAC3D,KAAK,aAAa,SAAS,KAAK,kBAAkB;EACtD;EAEA,OAAO,KAAK,QAAQ,MAAM,GAAG;CACjC;CAEA,aAAa,UAAU,MAAM,WAAW;EACpC,IAAI,CAAC,KAAK,SAAS;GACf,IAAI,MAAM,OAAO,OAAO,KAAK,YAAY,GACrC,WAAW,eAAe,KAAK,KAAK,QAAQ,eAAe;GAC/D,KAAK,UAAU,KAAK,MAAM,WAAW,UAAU,KAAK,OAAO;GAE3D,IAAI,MAAM,KAAK,QAAQ,MAAM,GAAG,GAC5B,QAAQ,KAAK,QAAQ,IAAI;GAE7B,OAAO,QAAS,MAAM,QAAS;EACnC;EACA,OAAO,KAAK,QAAQ,IAAI;CAC5B;CAEA,SAAS,eAAe,KAAK,iBAAiB;EAC1C,IAAI,MAAM,mBAAmB;EAE7B,IAAI,IAAI,UAAU,GAEd,IAAI,IAAI,MAAM,OAAQ,IAAI,MAAM,KAC5B,MAAM;OACL,IAAI,IAAI,MAAM,OAAQ,IAAI,MAAM,KACjC,MAAM;OACL;GAID,IAAI,eAAe,GAAG,eAAe,GACjC,OAAO,KAAK,IAAI,IAAI,SAAU,IAAI,SAAS,GAAI,EAAE;GAErD,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,KAAK,GAAG;IAC9B,IAAI,IAAI,OAAO,KAAK,IAAI,IAAE,OAAO,GAAG;IACpC,IAAI,IAAI,OAAO,KAAK,IAAI,IAAE,OAAO,GAAG;GACxC;GAEA,IAAI,eAAe,cACf,MAAM;QACL,IAAI,eAAe,cACpB,MAAM;EACd;EAGJ,OAAO;CACX;;;;;CC7KA,IAAI,SAAA,cAAA,CAAA,CAAiC;CAKrC,QAAQ,OAAO;CACf,QAAQ,gBAAgB;CACxB,SAAS,UAAU,cAAc,OAAO;EACpC,KAAK,QAAQ;CACjB;CAEA,UAAU,UAAU,UAAU;CAC9B,UAAU,UAAU,UAAU;CAC9B,UAAU,UAAU,WAAW;CAK/B,IAAI,iBAAiB;CAErB,SAAS,YAAY,SAAS,OAAO;EACjC,KAAK,QAAQ,MAAM;CACvB;CAEA,YAAY,UAAU,QAAQ,SAAS,KAAK;EAGxC,OAAO,OAAO,KAAK,IAAI,QAAQ,gBAAgB,SAAS,OAAO;GAC3D,OAAO,OAAO,UAAU,MAAM,KAC1B,KAAK,MAAM,OAAO,OAAO,UAAU,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,QAAQ,OAAO,EAAE,KACvE;EACV,EAAE,KAAK,IAAI,CAAC,CAAC;CACjB;CAEA,YAAY,UAAU,MAAM,WAAW,CACvC;CAKA,SAAS,YAAY,SAAS,OAAO;EACjC,KAAK,QAAQ,MAAM;EACnB,KAAK,WAAW;EAChB,KAAK,cAAc;CACvB;CAEA,IAAI,cAAc;CAClB,IAAI,cAAc,CAAC;CACnB,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,KACrB,YAAY,KAAK,YAAY,KAAK,OAAO,aAAa,CAAC,CAAC;CAE5D,IAAI,WAAW,IAAI,WAAW,CAAC;CAC3B,IAAA,YAAY,IAAI,WAAW,CAAC;CAC5B,IAAA,UAAU,IAAI,WAAW,CAAC;CAE9B,YAAY,UAAU,QAAQ,SAAS,KAAK;EACxC,IAAI,MAAM,IAAI,QAAQ,GAClB,WAAW,KAAK,UAChB,cAAc,KAAK;EAIvB,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAC5B,IAAI,CAAC,UAEG;OAAA,IAAI,MAAM,UAAU;IACpB,OAAO,KAAK,MAAM,OAAO,IAAI,MAAM,OAAO,CAAC,GAAG,OAAO;IACrD,QAAQ,IAAE;IACV,WAAW;GACf;SAEA,IAAI,CAAC,YAAY,IAAI,KAAK;GACtB,IAAI,KAAK,SAAS,IAAI,MAAM,WACxB,OAAO;QACJ;IACH,IAAI,SAAS,cAAc,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,SAAS;IACxD,OAAO,KAAK,MAAM,OAAO,OAAO,KAAK,QAAQ,QAAQ,GAAG,UAAU;GACtE;GAEA,IAAI,IAAI,MAAM,WACV;GAEJ,QAAQ,IAAE;GACV,WAAW;GACX,cAAc;EAClB;EAIR,IAAI,CAAC,UACD,OAAO,KAAK,MAAM,OAAO,IAAI,MAAM,KAAK,GAAG,OAAO;OAC/C;GACH,IAAI,SAAS,cAAc,IAAI,MAAM,KAAK,CAAC,CAAC,SAAS;GAErD,IAAI,eAAe,OAAO,SAAU,OAAO,SAAS;GACpD,cAAc,OAAO,MAAM,YAAY;GACvC,SAAS,OAAO,MAAM,GAAG,YAAY;GAErC,OAAO,KAAK,MAAM,OAAO,OAAO,KAAK,QAAQ,QAAQ,GAAG,UAAU;EACtE;EAEA,KAAK,WAAW;EAChB,KAAK,cAAc;EAEnB,OAAO;CACX;CAEA,YAAY,UAAU,MAAM,WAAW;EACnC,IAAI,MAAM;EACV,IAAI,KAAK,YAAY,KAAK,YAAY,SAAS,GAC3C,MAAM,KAAK,MAAM,OAAO,OAAO,KAAK,KAAK,aAAa,QAAQ,GAAG,UAAU;EAE/E,KAAK,WAAW;EAChB,KAAK,cAAc;EACnB,OAAO;CACX;CAeA,QAAQ,WAAW;CACnB,SAAS,cAAc,cAAc,OAAO;EACxC,KAAK,QAAQ;CACjB;CAEA,cAAc,UAAU,UAAU;CAClC,cAAc,UAAU,UAAU;CAClC,cAAc,UAAU,WAAW;CAKnC,SAAS,gBAAgB,SAAS,OAAO;EACrC,KAAK,QAAQ,MAAM;EACnB,KAAK,WAAW;EAChB,KAAK,cAAc,OAAO,MAAM,CAAC;EACjC,KAAK,iBAAiB;CAC1B;CAEA,gBAAgB,UAAU,QAAQ,SAAS,KAAK;EAC5C,IAAI,WAAW,KAAK,UAChB,cAAc,KAAK,aACnB,iBAAiB,KAAK,gBACtB,MAAM,OAAO,MAAM,IAAI,SAAO,IAAI,EAAE,GAAG,SAAS;EAEpD,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;GACjC,IAAI,QAAQ,IAAI,WAAW,CAAC;GAC5B,IAAI,MAAQ,SAAS,SAAS,KAAM;IAChC,IAAI,UAAU;KACV,IAAI,iBAAiB,GAAG;MACpB,UAAU,IAAI,MAAM,YAAY,MAAM,GAAG,cAAc,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,QAAQ,OAAO,GAAG,CAAC,CAAC,QAAQ,OAAO,EAAE,GAAG,MAAM;MAC1H,iBAAiB;KACrB;KAEA,IAAI,YAAY;KAChB,WAAW;IACf;IAEA,IAAI,CAAC,UAAU;KACX,IAAI,YAAY;KAEhB,IAAI,UAAU,SACV,IAAI,YAAY;IACxB;GAEJ,OAAO;IACH,IAAI,CAAC,UAAU;KACX,IAAI,YAAY;KAChB,WAAW;IACf;IACA,IAAI,UAAU;KACV,YAAY,oBAAoB,SAAS;KACzC,YAAY,oBAAoB,QAAQ;KAExC,IAAI,kBAAkB,YAAY,QAAQ;MACtC,UAAU,IAAI,MAAM,YAAY,SAAS,QAAQ,CAAC,CAAC,QAAQ,OAAO,GAAG,GAAG,MAAM;MAC9E,iBAAiB;KACrB;IACJ;GACJ;EACJ;EAEA,KAAK,WAAW;EAChB,KAAK,iBAAiB;EAEtB,OAAO,IAAI,MAAM,GAAG,MAAM;CAC9B;CAEA,gBAAgB,UAAU,MAAM,WAAW;EACvC,IAAI,MAAM,OAAO,MAAM,EAAE,GAAG,SAAS;EACrC,IAAI,KAAK,UAAU;GACf,IAAI,KAAK,iBAAiB,GAAG;IACzB,UAAU,IAAI,MAAM,KAAK,YAAY,MAAM,GAAG,KAAK,cAAc,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,QAAQ,OAAO,GAAG,CAAC,CAAC,QAAQ,OAAO,EAAE,GAAG,MAAM;IACpI,KAAK,iBAAiB;GAC1B;GAEA,IAAI,YAAY;GAChB,KAAK,WAAW;EACpB;EAEA,OAAO,IAAI,MAAM,GAAG,MAAM;CAC9B;CAKA,SAAS,gBAAgB,SAAS,OAAO;EACrC,KAAK,QAAQ,MAAM;EACnB,KAAK,WAAW;EAChB,KAAK,cAAc;CACvB;CAEA,IAAI,kBAAkB,YAAY,MAAM;CACxC,gBAAgB,IAAI,WAAW,CAAC,KAAK;CAErC,gBAAgB,UAAU,QAAQ,SAAS,KAAK;EAC5C,IAAI,MAAM,IAAI,QAAQ,GAClB,WAAW,KAAK,UAChB,cAAc,KAAK;EAKvB,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAC5B,IAAI,CAAC,UAEG;OAAA,IAAI,MAAM,SAAS;IACnB,OAAO,KAAK,MAAM,OAAO,IAAI,MAAM,OAAO,CAAC,GAAG,OAAO;IACrD,QAAQ,IAAE;IACV,WAAW;GACf;SAEA,IAAI,CAAC,gBAAgB,IAAI,KAAK;GAC1B,IAAI,KAAK,SAAS,IAAI,MAAM,WACxB,OAAO;QACJ;IACH,IAAI,SAAS,cAAc,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,MAAM,GAAG;IAC3E,OAAO,KAAK,MAAM,OAAO,OAAO,KAAK,QAAQ,QAAQ,GAAG,UAAU;GACtE;GAEA,IAAI,IAAI,MAAM,WACV;GAEJ,QAAQ,IAAE;GACV,WAAW;GACX,cAAc;EAClB;EAIR,IAAI,CAAC,UACD,OAAO,KAAK,MAAM,OAAO,IAAI,MAAM,KAAK,GAAG,OAAO;OAC/C;GACH,IAAI,SAAS,cAAc,IAAI,MAAM,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,MAAM,GAAG;GAExE,IAAI,eAAe,OAAO,SAAU,OAAO,SAAS;GACpD,cAAc,OAAO,MAAM,YAAY;GACvC,SAAS,OAAO,MAAM,GAAG,YAAY;GAErC,OAAO,KAAK,MAAM,OAAO,OAAO,KAAK,QAAQ,QAAQ,GAAG,UAAU;EACtE;EAEA,KAAK,WAAW;EAChB,KAAK,cAAc;EAEnB,OAAO;CACX;CAEA,gBAAgB,UAAU,MAAM,WAAW;EACvC,IAAI,MAAM;EACV,IAAI,KAAK,YAAY,KAAK,YAAY,SAAS,GAC3C,MAAM,KAAK,MAAM,OAAO,OAAO,KAAK,KAAK,aAAa,QAAQ,GAAG,UAAU;EAE/E,KAAK,WAAW;EAChB,KAAK,cAAc;EACnB,OAAO;CACX;;;;;CC9RA,IAAI,SAAA,cAAA,CAAA,CAAiC;CAKrC,QAAQ,QAAQ;CAChB,SAAS,UAAU,cAAc,OAAO;EACpC,IAAI,CAAC,cACD,MAAM,IAAI,MAAM,wCAAwC;EAG5D,IAAI,CAAC,aAAa,SAAU,aAAa,MAAM,WAAW,OAAO,aAAa,MAAM,WAAW,KAC3F,MAAM,IAAI,MAAM,eAAa,aAAa,OAAK,qDAAqD;EAExG,IAAI,aAAa,MAAM,WAAW,KAAK;GACnC,IAAI,cAAc;GAClB,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,KACrB,eAAe,OAAO,aAAa,CAAC;GACxC,aAAa,QAAQ,cAAc,aAAa;EACpD;EAEA,KAAK,YAAY,OAAO,KAAK,aAAa,OAAO,MAAM;EAGvD,IAAI,YAAY,OAAO,MAAM,OAAO,MAAM,sBAAsB,WAAW,CAAC,CAAC;EAE7E,KAAK,IAAI,IAAI,GAAG,IAAI,aAAa,MAAM,QAAQ,KAC3C,UAAU,aAAa,MAAM,WAAW,CAAC,KAAK;EAElD,KAAK,YAAY;CACrB;CAEA,UAAU,UAAU,UAAU;CAC9B,UAAU,UAAU,UAAU;CAG9B,SAAS,YAAY,SAAS,OAAO;EACjC,KAAK,YAAY,MAAM;CAC3B;CAEA,YAAY,UAAU,QAAQ,SAAS,KAAK;EACxC,IAAI,MAAM,OAAO,MAAM,IAAI,MAAM;EACjC,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAC5B,IAAI,KAAK,KAAK,UAAU,IAAI,WAAW,CAAC;EAE5C,OAAO;CACX;CAEA,YAAY,UAAU,MAAM,WAAW,CACvC;CAGA,SAAS,YAAY,SAAS,OAAO;EACjC,KAAK,YAAY,MAAM;CAC3B;CAEA,YAAY,UAAU,QAAQ,SAAS,KAAK;EAExC,IAAI,YAAY,KAAK;EACrB,IAAI,SAAS,OAAO,MAAM,IAAI,SAAO,CAAC;EACtC,IAAI,OAAO,GAAG,OAAO;EACrB,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;GACjC,OAAO,IAAI,KAAG;GAAG,OAAO,IAAE;GAC1B,OAAO,QAAQ,UAAU;GACzB,OAAO,OAAK,KAAK,UAAU,OAAK;EACpC;EACA,OAAO,OAAO,SAAS,MAAM;CACjC;CAEA,YAAY,UAAU,MAAM,WAAW,CACvC;;;;;CCnEA,OAAO,UAAU;EAEb,SAAS;EACT,eAAe;GACX,QAAQ;GACR,SAAS;EACb;EAEA,OAAO;EACP,UAAU;EACV,SAAS;GACL,QAAQ;GACR,SAAS;EACb;EAEA,OAAO;GACH,QAAQ;GACR,SAAS;EACb;EAGA,aAAa;EACb,WAAW;EACX,WAAW;EACX,eAAe;EACf,eAAe;EACf,WAAW;EACX,SAAS;EACT,UAAU;EACV,UAAU;EACV,YAAY;EACZ,aAAa;EACb,MAAM;EAEN,UAAU;EACV,UAAU;EACV,UAAU;EACV,UAAU;EACV,UAAU;EACV,UAAU;EACV,UAAU;EACV,UAAU;EACV,UAAU;EACV,WAAW;EAEX,eAAe;EACf,eAAe;EACf,eAAe;EACf,eAAe;EACf,sBAAsB;EACtB,oBAAoB;EACpB,mBAAoB;EACpB,oBAAoB;EACpB,eAAe;EACf,eAAe;EAEf,MAAM;EACN,MAAM;EACN,MAAM;EACN,MAAM;EACN,MAAM;EACN,MAAM;EACN,MAAM;EACN,MAAM;EACN,MAAM;EACN,OAAO;EAEP,WAAW;EACX,WAAW;EACX,YAAY;EACZ,YAAY;EACZ,YAAY;EACZ,YAAY;EACZ,YAAY;EACZ,YAAY;EACZ,YAAY;EACZ,YAAY;EACZ,YAAY;EACZ,YAAY;EACZ,YAAY;EACZ,YAAY;EACZ,YAAY;EACZ,YAAY;EACZ,YAAY;EAEZ,SAAS;EACT,UAAU;EAEV,YAAY;EAEZ,UAAU;EACV,WAAW;EACX,WAAW;EACX,WAAW;EAEX,SAAU;EACV,UAAW;EACX,WAAY;EACZ,WAAY;EAEZ,UAAU;EACV,WAAW;EAEX,WAAW;EACX,YAAY;EAEZ,QAAQ;EACR,SAAS;EAET,UAAU;EACV,WAAW;EACX,aAAa;EAEb,WAAW;EACX,eAAe;EACf,eAAe;EAEf,SAAS;EACT,SAAS;EACT,SAAS;EACT,SAAS;EACT,SAAS;EAET,oBAAoB;EACpB,iBAAiB;EACjB,uBAAuB;EACvB,YAAY;EACZ,sBAAsB;EACtB,QAAQ;EAER,QAAQ;EACR,UAAU;EACV,UAAU;EACV,WAAW;EACX,UAAU;EACV,UAAU;EACV,UAAU;EACV,cAAc;EAEd,WAAW;EACX,SAAS;EACT,UAAU;EACV,WAAW;EAEX,WAAW;EACX,SAAS;EACT,WAAW;EAEX,gBAAgB;EAEhB,YAAY;EACZ,aAAa;EAEb,YAAY;EACZ,MAAM;EAEN,qBAAqB;EACrB,kBAAkB;EAClB,MAAM;EAEN,cAAc;EACd,MAAM;EACN,UAAU;EACV,WAAW;EACX,WAAW;EAEX,OAAO;EACP,eAAe;CACnB;;;;;CCzKA,OAAO,UAAU;EACf,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,SAAS;EACT,SAAS;EACT,SAAS;EACT,SAAS;EACT,SAAS;EACT,SAAS;EACT,SAAS;EACT,SAAS;EACT,SAAS;EACT,SAAS;EACT,SAAS;EACT,SAAS;EACT,SAAS;EACT,SAAS;EACT,SAAS;EACT,cAAc;GACZ,QAAQ;GACR,SAAS;EACX;EACA,UAAU;EACV,SAAS;EACT,eAAe;GACb,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,UAAU;EACV,eAAe;GACb,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,UAAU;EACV,eAAe;GACb,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,UAAU;EACV,eAAe;GACb,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,UAAU;EACV,eAAe;GACb,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,UAAU;EACV,eAAe;GACb,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,UAAU;EACV,eAAe;GACb,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,UAAU;EACV,eAAe;GACb,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,UAAU;EACV,eAAe;GACb,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,UAAU;EACV,YAAY;GACV,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,YAAY;GACV,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,YAAY;GACV,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,YAAY;GACV,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,YAAY;GACV,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,YAAY;GACV,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,YAAY;GACV,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,YAAY;GACV,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,YAAY;GACV,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,aAAa;GACX,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,aAAa;GACX,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,aAAa;GACX,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,aAAa;GACX,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,aAAa;GACX,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,aAAa;GACX,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,SAAS;GACP,QAAQ;GACR,SAAS;EACX;EACA,UAAU;EACV,YAAY;EACZ,SAAS;GACP,QAAQ;GACR,SAAS;EACX;EACA,UAAU;EACV,YAAY;EACZ,SAAS;GACP,QAAQ;GACR,SAAS;EACX;EACA,UAAU;EACV,YAAY;EACZ,SAAS;GACP,QAAQ;GACR,SAAS;EACX;EACA,UAAU;EACV,YAAY;EACZ,SAAS;GACP,QAAQ;GACR,SAAS;EACX;EACA,UAAU;EACV,YAAY;EACZ,SAAS;GACP,QAAQ;GACR,SAAS;EACX;EACA,UAAU;EACV,YAAY;EACZ,SAAS;GACP,QAAQ;GACR,SAAS;EACX;EACA,UAAU;EACV,YAAY;EACZ,SAAS;GACP,QAAQ;GACR,SAAS;EACX;EACA,UAAU;EACV,YAAY;EACZ,SAAS;GACP,QAAQ;GACR,SAAS;EACX;EACA,UAAU;EACV,YAAY;EACZ,SAAS;GACP,QAAQ;GACR,SAAS;EACX;EACA,UAAU;EACV,YAAY;EACZ,SAAS;GACP,QAAQ;GACR,SAAS;EACX;EACA,UAAU;EACV,YAAY;EACZ,SAAS;GACP,QAAQ;GACR,SAAS;EACX;EACA,UAAU;EACV,YAAY;EACZ,SAAS;GACP,QAAQ;GACR,SAAS;EACX;EACA,UAAU;EACV,YAAY;EACZ,SAAS;GACP,QAAQ;GACR,SAAS;EACX;EACA,UAAU;EACV,YAAY;EACZ,SAAS;GACP,QAAQ;GACR,SAAS;EACX;EACA,UAAU;EACV,YAAY;EACZ,SAAS;GACP,QAAQ;GACR,SAAS;EACX;EACA,UAAU;EACV,YAAY;EACZ,SAAS;GACP,QAAQ;GACR,SAAS;EACX;EACA,UAAU;EACV,YAAY;EACZ,SAAS;GACP,QAAQ;GACR,SAAS;EACX;EACA,UAAU;EACV,YAAY;EACZ,UAAU;GACR,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,aAAa;EACb,UAAU;GACR,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,aAAa;EACb,UAAU;GACR,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,aAAa;EACb,UAAU;GACR,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,aAAa;EACb,UAAU;GACR,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,aAAa;EACb,UAAU;GACR,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,aAAa;EACb,UAAU;GACR,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,aAAa;EACb,UAAU;GACR,QAAQ;GACR,SAAS;EACX;EACA,WAAW;EACX,aAAa;EACb,eAAe;GACb,QAAQ;GACR,SAAS;EACX;EACA,eAAe;GACb,QAAQ;GACR,SAAS;EACX;EACA,YAAY;GACV,QAAQ;GACR,SAAS;EACX;EACA,cAAc;GACZ,QAAQ;GACR,SAAS;EACX;EACA,YAAY;GACV,QAAQ;GACR,SAAS;EACX;EACA,cAAc;GACZ,QAAQ;GACR,SAAS;EACX;EACA,WAAW;GACT,QAAQ;GACR,SAAS;EACX;EACA,cAAc;GACZ,QAAQ;GACR,SAAS;EACX;EACA,cAAc;GACZ,QAAQ;GACR,SAAS;EACX;EACA,SAAS;GACP,QAAQ;GACR,SAAS;EACX;EACA,SAAS;GACP,QAAQ;GACR,SAAS;EACX;EACA,UAAU;GACR,QAAQ;GACR,SAAS;EACX;EACA,SAAS;GACP,QAAQ;GACR,SAAS;EACX;EACA,YAAY;GACV,QAAQ;GACR,SAAS;EACX;EACA,UAAU;GACR,QAAQ;GACR,SAAS;EACX;EACA,QAAQ;GACN,QAAQ;GACR,SAAS;EACX;EACA,mBAAmB;GACjB,QAAQ;GACR,SAAS;EACX;EACA,cAAc;GACZ,QAAQ;GACR,SAAS;EACX;EACA,SAAS;GACP,QAAQ;GACR,SAAS;EACX;EACA,UAAU;GACR,QAAQ;GACR,SAAS;EACX;EACA,YAAY;GACV,QAAQ;GACR,SAAS;EACX;EACA,YAAY;GACV,QAAQ;GACR,SAAS;EACX;EACA,YAAY;GACV,QAAQ;GACR,SAAS;EACX;EACA,aAAa;GACX,QAAQ;GACR,SAAS;EACX;EACA,SAAS;GACP,QAAQ;GACR,SAAS;EACX;EACA,UAAU;GACR,QAAQ;GACR,SAAS;EACX;CACF;;;;;CCjcA,IAAI,SAAA,cAAA,CAAA,CAAiC;CAMrC,QAAQ,QAAQ;CAEhB,IAAI,aAAa;CACb,IAAA,eAAe;CACf,IAAA,YAAa;CACb,IAAA,aAAa;CACb,IAAA,kBAAkB,IAAI,MAAM,GAAK;CACjC,IAAA,WAAW;CAEf,KAAK,IAAI,IAAI,GAAG,IAAI,KAAO,KACvB,gBAAgB,KAAK;CAIzB,SAAS,UAAU,cAAc,OAAO;EACpC,KAAK,eAAe,aAAa;EACjC,IAAI,CAAC,cACD,MAAM,IAAI,MAAM,wCAAwC;EAC5D,IAAI,CAAC,aAAa,OACd,MAAM,IAAI,MAAM,eAAe,KAAK,eAAe,gBAAgB;EAGvE,IAAI,eAAe,aAAa,MAAM;EAYtC,KAAK,eAAe,CAAC;EACrB,KAAK,aAAa,KAAK,gBAAgB,MAAM,CAAC;EAG9C,KAAK,iBAAiB,CAAC;EAGvB,KAAK,IAAI,IAAI,GAAG,IAAI,aAAa,QAAQ,KACrC,KAAK,gBAAgB,aAAa,EAAE;EAExC,KAAK,qBAAqB,MAAM;EAUhC,KAAK,cAAc,CAAC;EAMpB,KAAK,iBAAiB,CAAC;EAGvB,IAAI,kBAAkB,CAAC;EACvB,IAAI,aAAa,gBACb,KAAK,IAAI,IAAI,GAAG,IAAI,aAAa,eAAe,QAAQ,KAAK;GACzD,IAAI,MAAM,aAAa,eAAe;GACtC,IAAI,OAAO,QAAQ,UACf,gBAAgB,OAAO;QAEvB,KAAK,IAAI,IAAI,IAAI,MAAM,KAAK,IAAI,IAAI,KAChC,gBAAgB,KAAK;EACjC;EAGJ,KAAK,iBAAiB,GAAG,GAAG,eAAe;EAG3C,IAAI,aAAa,WACR;QAAA,IAAI,SAAS,aAAa,WAC3B,IAAI,OAAO,UAAU,eAAe,KAAK,aAAa,WAAW,KAAK,GAClE,KAAK,eAAe,MAAM,WAAW,CAAC,GAAG,aAAa,UAAU,MAAM;EAAA;EAGlF,KAAK,YAAa,KAAK,YAAY,EAAE,CAAC,MAAM,sBAAsB,WAAW,CAAC;EAC9E,IAAI,KAAK,cAAc,YAAY,KAAK,YAAY,KAAK,YAAY,EAAE,CAAC;EACxE,IAAI,KAAK,cAAc,YAAY,KAAK,YAAY,IAAI,WAAW,CAAC;EAIpE,IAAI,OAAO,aAAa,YAAY,YAAY;GAC5C,KAAK,UAAU,aAAa,QAAQ;GAGpC,IAAI,mBAAmB,KAAK,aAAa;GACzC,IAAI,gBAAgB,KAAK,aAAa,oBAAoB,gBAAgB,MAAM,CAAC;GAEjF,IAAI,oBAAoB,KAAK,aAAa;GAC1C,IAAI,iBAAiB,KAAK,aAAa,qBAAqB,gBAAgB,MAAM,CAAC;GAEnF,KAAK,IAAI,IAAI,KAAM,KAAK,KAAM,KAAK;IAC/B,IAAI,oBAAoB,aAAa,KAAK,aAAa,EAAE,CAAC;IAC1D,IAAI,iBAAiB,KAAK,aAAa;IACvC,KAAK,IAAI,IAAI,IAAM,KAAK,IAAM,KAC1B,eAAe,KAAK,aAAa;GACzC;GACA,KAAK,IAAI,IAAI,KAAM,KAAK,KAAM,KAC1B,cAAc,KAAK,aAAa;GACpC,KAAK,IAAI,IAAI,IAAM,KAAK,IAAM,KAC1B,eAAe,KAAK;EAC5B;CACJ;CAEA,UAAU,UAAU,UAAU;CAC9B,UAAU,UAAU,UAAU;CAG9B,UAAU,UAAU,qBAAqB,SAAS,MAAM;EACpD,IAAI,QAAQ,CAAC;EACb,OAAO,OAAO,GAAG,SAAS,GACtB,MAAM,KAAK,OAAO,GAAI;EAC1B,IAAI,MAAM,UAAU,GAChB,MAAM,KAAK,CAAC;EAEhB,IAAI,OAAO,KAAK,aAAa;EAC7B,KAAK,IAAI,IAAI,MAAM,SAAO,GAAG,IAAI,GAAG,KAAK;GACrC,IAAI,MAAM,KAAK,MAAM;GAErB,IAAI,OAAO,YAAY;IACnB,KAAK,MAAM,MAAM,aAAa,KAAK,aAAa;IAChD,KAAK,aAAa,KAAK,OAAO,gBAAgB,MAAM,CAAC,CAAC;GAC1D,OACK,IAAI,OAAO,YACZ,OAAO,KAAK,aAAa,aAAa;QAGtC,MAAM,IAAI,MAAM,uBAAuB,KAAK,eAAe,aAAa,KAAK,SAAS,EAAE,CAAC;EACjG;EACA,OAAO;CACX;CAGA,UAAU,UAAU,kBAAkB,SAAS,OAAO;EAElD,IAAI,UAAU,SAAS,MAAM,IAAI,EAAE;EAGnC,IAAI,aAAa,KAAK,mBAAmB,OAAO;EAChD,UAAU,UAAU;EAGpB,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;GACnC,IAAI,OAAO,MAAM;GACjB,IAAI,OAAO,SAAS,UAChB,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,SAAS;IAC9B,IAAI,OAAO,KAAK,WAAW,GAAG;IAC9B,IAAI,SAAU,QAAQ,OAAO,OAAQ;KACjC,IAAI,YAAY,KAAK,WAAW,GAAG;KACnC,IAAI,SAAU,aAAa,YAAY,OACnC,WAAW,aAAa,SAAW,OAAO,SAAU,QAAS,YAAY;UAEzE,MAAM,IAAI,MAAM,iCAAkC,KAAK,eAAe,eAAe,MAAM,EAAE;IACrG,OACK,IAAI,OAAS,QAAQ,QAAQ,MAAQ;KACtC,IAAI,MAAM,OAAQ,OAAO;KACzB,IAAI,MAAM,CAAC;KACX,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,KACrB,IAAI,KAAK,KAAK,WAAW,GAAG,CAAC;KAEjC,WAAW,aAAa,YAAY,KAAK,eAAe;KACxD,KAAK,eAAe,KAAK,GAAG;IAChC,OAEI,WAAW,aAAa;GAChC;QAEC,IAAI,OAAO,SAAS,UAAU;IAC/B,IAAI,WAAW,WAAW,UAAU,KAAK;IACzC,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,KACtB,WAAW,aAAa;GAChC,OAEI,MAAM,IAAI,MAAM,qBAAqB,OAAO,OAAO,gBAAiB,KAAK,eAAe,eAAe,MAAM,EAAE;EACvH;EACA,IAAI,UAAU,KACV,MAAM,IAAI,MAAM,wBAAyB,KAAK,eAAe,cAAc,MAAM,KAAK,eAAe,OAAO;CACpH;CAGA,UAAU,UAAU,mBAAmB,SAAS,OAAO;EACnD,IAAI,OAAO,SAAS;EACpB,IAAI,KAAK,YAAY,UAAU,KAAA,GAC3B,KAAK,YAAY,QAAQ,gBAAgB,MAAM,CAAC;EACpD,OAAO,KAAK,YAAY;CAC5B;CAEA,UAAU,UAAU,iBAAiB,SAAS,OAAO,UAAU;EAC3D,IAAI,SAAS,KAAK,iBAAiB,KAAK;EACxC,IAAI,MAAM,QAAQ;EAClB,IAAI,OAAO,QAAQ,WACf,KAAK,eAAe,YAAU,OAAO,KAAK,CAAC,YAAY;OACtD,IAAI,OAAO,QAAQ,YACpB,OAAO,OAAO;CACtB;CAEA,UAAU,UAAU,qBAAqB,SAAS,KAAK,UAAU;EAG7D,IAAI,QAAQ,IAAI;EAChB,IAAI,SAAS,KAAK,iBAAiB,KAAK;EACxC,IAAI,MAAM,QAAQ;EAElB,IAAI;EACJ,IAAI,OAAO,QAAQ,WAEf,OAAO,KAAK,eAAe,YAAU,OAAO;OAE3C;GAED,OAAO,CAAC;GACR,IAAI,OAAO,SAAS,YAAY,KAAK,YAAY,OAAO;GACxD,OAAO,OAAO,YAAY,KAAK,eAAe;GAC9C,KAAK,eAAe,KAAK,IAAI;EACjC;EAGA,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,SAAO,GAAG,KAAK;GACnC,IAAI,SAAS,KAAK;GAClB,IAAI,OAAO,WAAW,UAClB,OAAO;QACN;IACD,OAAO,KAAK,SAAS,CAAC;IACtB,IAAI,WAAW,KAAA,GACX,KAAK,YAAY;GACzB;EACJ;EAGA,QAAQ,IAAI,IAAI,SAAO;EACvB,KAAK,SAAS;CAClB;CAEA,UAAU,UAAU,mBAAmB,SAAS,SAAS,QAAQ,iBAAiB;EAC9E,IAAI,OAAO,KAAK,aAAa;EAC7B,KAAK,IAAI,IAAI,GAAG,IAAI,KAAO,KAAK;GAC5B,IAAI,QAAQ,KAAK;GACjB,IAAI,SAAS,SAAS;GACtB,IAAI,gBAAgB,SAChB;GAEJ,IAAI,SAAS,GACT,KAAK,eAAe,OAAO,MAAM;QAChC,IAAI,SAAS,YACd,KAAK,iBAAiB,aAAa,OAAO,UAAU,GAAG,eAAe;QACrE,IAAI,SAAS,WACd,KAAK,mBAAmB,KAAK,eAAe,YAAY,QAAQ,MAAM;EAC9E;CACJ;CAMA,SAAS,YAAY,SAAS,OAAO;EAEjC,KAAK,gBAAgB;EACrB,KAAK,SAAS,KAAA;EAGd,KAAK,cAAc,MAAM;EACzB,KAAK,iBAAiB,MAAM;EAC5B,KAAK,wBAAwB,MAAM;EACnC,KAAK,UAAU,MAAM;CACzB;CAEA,YAAY,UAAU,QAAQ,SAAS,KAAK;EACxC,IAAI,SAAS,OAAO,MAAM,IAAI,UAAU,KAAK,UAAU,IAAI,EAAE,GACzD,gBAAgB,KAAK,eACrB,SAAS,KAAK,QAAQ,WAAW,IACjC,IAAI,GAAG,IAAI;EAEf,OAAO,MAAM;GAET,IAAI,aAAa,IAAI;IACjB,IAAI,KAAK,IAAI,QAAQ;IACrB,IAAI,QAAQ,IAAI,WAAW,GAAG;GAClC,OACK;IACD,IAAI,QAAQ;IACZ,WAAW;GACf;GAGA,IAAI,SAAU,SAAS,QAAQ,OAC3B,IAAI,QAAQ,OACR,IAAI,kBAAkB,IAAI;IACtB,gBAAgB;IAChB;GACJ,OAAO;IACH,gBAAgB;IAEhB,QAAQ;GACZ;QAEA,IAAI,kBAAkB,IAAI;IACtB,QAAQ,SAAW,gBAAgB,SAAU,QAAS,QAAQ;IAC9D,gBAAgB;GACpB,OAEI,QAAQ;QAKf,IAAI,kBAAkB,IAAI;IAE3B,WAAW;IAAO,QAAQ;IAC1B,gBAAgB;GACpB;GAGA,IAAI,WAAW;GACf,IAAI,WAAW,KAAA,KAAa,SAAS,YAAY;IAC7C,IAAI,UAAU,OAAO;IACrB,IAAI,OAAO,YAAY,UAAU;KAC7B,SAAS;KACT;IAEJ,OAAO,IAAI,OAAO,WAAW,UACzB,WAAW;SAER,IAAI,WAAW,KAAA,GAAW;KAG7B,UAAU,OAAO;KACjB,IAAI,YAAY,KAAA,GAAW;MACvB,WAAW;MACX,WAAW;KAEf;IAMJ;IACA,SAAS,KAAA;GACb,OACK,IAAI,SAAS,GAAG;IACjB,IAAI,WAAW,KAAK,YAAY,SAAS;IACzC,IAAI,aAAa,KAAA,GACb,WAAW,SAAS,QAAQ;IAEhC,IAAI,YAAY,WAAW;KACvB,SAAS,KAAK,eAAe,YAAU;KACvC;IACJ;IAEA,IAAI,YAAY,cAAc,KAAK,SAAS;KAExC,IAAI,MAAM,QAAQ,KAAK,QAAQ,QAAQ,KAAK;KAC5C,IAAI,OAAO,IAAI;MACX,IAAI,WAAW,KAAK,QAAQ,QAAQ,QAAQ,QAAQ,KAAK,QAAQ,OAAO;MACxE,OAAO,OAAO,MAAO,KAAK,MAAM,WAAW,KAAK;MAAG,WAAW,WAAW;MACzE,OAAO,OAAO,KAAO,KAAK,MAAM,WAAW,IAAI;MAAG,WAAW,WAAW;MACxE,OAAO,OAAO,MAAO,KAAK,MAAM,WAAW,EAAE;MAAG,WAAW,WAAW;MACtE,OAAO,OAAO,KAAO;MACrB;KACJ;IACJ;GACJ;GAGA,IAAI,aAAa,YACb,WAAW,KAAK;GAEpB,IAAI,WAAW,KACX,OAAO,OAAO;QAEb,IAAI,WAAW,OAAS;IACzB,OAAO,OAAO,YAAY;IAC1B,OAAO,OAAO,WAAW;GAC7B,OACK;IACD,OAAO,OAAO,YAAY;IAC1B,OAAO,OAAQ,YAAY,IAAK;IAChC,OAAO,OAAO,WAAW;GAC7B;EACJ;EAEA,KAAK,SAAS;EACd,KAAK,gBAAgB;EACrB,OAAO,OAAO,MAAM,GAAG,CAAC;CAC5B;CAEA,YAAY,UAAU,MAAM,WAAW;EACnC,IAAI,KAAK,kBAAkB,MAAM,KAAK,WAAW,KAAA,GAC7C;EAEJ,IAAI,SAAS,OAAO,MAAM,EAAE,GAAG,IAAI;EAEnC,IAAI,KAAK,QAAQ;GACb,IAAI,WAAW,KAAK,OAAO;GAC3B,IAAI,aAAa,KAAA,GACb,IAAI,WAAW,KACX,OAAO,OAAO;QAEb;IACD,OAAO,OAAO,YAAY;IAC1B,OAAO,OAAO,WAAW;GAC7B;GAIJ,KAAK,SAAS,KAAA;EAClB;EAEA,IAAI,KAAK,kBAAkB,IAAI;GAE3B,OAAO,OAAO,KAAK;GACnB,KAAK,gBAAgB;EACzB;EAEA,OAAO,OAAO,MAAM,GAAG,CAAC;CAC5B;CAGA,YAAY,UAAU,UAAU;CAKhC,SAAS,YAAY,SAAS,OAAO;EAEjC,KAAK,UAAU;EACf,KAAK,UAAU,OAAO,MAAM,CAAC;EAG7B,KAAK,eAAe,MAAM;EAC1B,KAAK,iBAAiB,MAAM;EAC5B,KAAK,qBAAqB,MAAM;EAChC,KAAK,UAAU,MAAM;CACzB;CAEA,YAAY,UAAU,QAAQ,SAAS,KAAK;EACxC,IAAI,SAAS,OAAO,MAAM,IAAI,SAAO,CAAC,GAClC,UAAU,KAAK,SACf,UAAU,KAAK,SAAS,gBAAgB,KAAK,QAAQ,QACrD,WAAW,CAAC,KAAK,QAAQ,QACzB;EAEJ,IAAI,gBAAgB,GAChB,UAAU,OAAO,OAAO,CAAC,SAAS,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC;EAEvD,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;GACxC,IAAI,UAAW,KAAK,IAAK,IAAI,KAAK,QAAQ,IAAI;GAG9C,IAAI,QAAQ,KAAK,aAAa,QAAQ,CAAC;GAEvC,IAAI,SAAS,GAAG,CAEhB,OACK,IAAI,UAAU,YAAY;IAG3B,IAAI;IACJ,QAAQ,KAAK,mBAAmB,WAAW,CAAC;GAChD,OACK,IAAI,UAAU,cAAc;IAC7B,IAAI,SAAU,YAAY,IAAK,IAAI,MAAM,UAAU,IAAE,CAAC,IAAI,QAAQ,MAAM,WAAW,eAAe,IAAE,IAAI,aAAa;IACrH,IAAI,OAAO,OAAO,KAAG,OAAM,SAAS,OAAO,KAAG,MAAM,QAAQ,OAAO,KAAG,OAAM,MAAM,OAAO,KAAG;IAC5F,IAAI,MAAM,QAAQ,KAAK,QAAQ,SAAS,GAAG;IAC3C,QAAQ,KAAK,QAAQ,OAAO,OAAO,MAAM,KAAK,QAAQ,QAAQ;GAClE,OACK,IAAI,SAAS,YAAY;IAC1B,UAAU,aAAa;IACvB;GACJ,OACK,IAAI,SAAS,WAAW;IACzB,IAAI,MAAM,KAAK,eAAe,YAAY;IAC1C,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,SAAS,GAAG,KAAK;KACrC,QAAQ,IAAI;KACZ,OAAO,OAAO,QAAQ;KACtB,OAAO,OAAO,SAAS;IAC3B;IACA,QAAQ,IAAI,IAAI,SAAO;GAC3B,OAEI,MAAM,IAAI,MAAM,6DAA6D,QAAQ,SAAS,UAAU,MAAM,OAAO;GAGzH,IAAI,QAAQ,OAAQ;IAChB,SAAS;IACT,IAAI,YAAY,QAAS,KAAK,MAAM,QAAQ,IAAK;IACjD,OAAO,OAAO,YAAY;IAC1B,OAAO,OAAO,aAAa;IAE3B,QAAQ,QAAS,QAAQ;GAC7B;GACA,OAAO,OAAO,QAAQ;GACtB,OAAO,OAAO,SAAS;GAGvB,UAAU;GAAG,WAAW,IAAE;EAC9B;EAEA,KAAK,UAAU;EACf,KAAK,UAAW,YAAY,IAAK,IAAI,MAAM,QAAQ,IAAI,QAAQ,MAAM,WAAW,aAAa;EAC7F,OAAO,OAAO,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS,MAAM;CAC7C;CAEA,YAAY,UAAU,MAAM,WAAW;EACnC,IAAI,MAAM;EAGV,OAAO,KAAK,QAAQ,SAAS,GAAG;GAE5B,OAAO,KAAK;GACZ,IAAI,MAAM,KAAK,QAAQ,MAAM,CAAC;GAG9B,KAAK,UAAU,OAAO,MAAM,CAAC;GAC7B,KAAK,UAAU;GACf,IAAI,IAAI,SAAS,GACb,OAAO,KAAK,MAAM,GAAG;EAC7B;EAEA,KAAK,UAAU;EACf,OAAO;CACX;CAGA,SAAS,QAAQ,OAAO,KAAK;EACzB,IAAI,MAAM,KAAK,KACX,OAAO;EAEX,IAAI,IAAI,GAAG,IAAI,MAAM;EACrB,OAAO,IAAI,IAAE,GAAG;GACZ,IAAI,MAAM,IAAI,KAAK,OAAO,IAAE,IAAE,KAAG,CAAC;GAClC,IAAI,MAAM,QAAQ,KACd,IAAI;QAEJ,IAAI;EACZ;EACA,OAAO;CACX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|