From 606ca4a1d5915f053484c9d6133e89ca581400f3 Mon Sep 17 00:00:00 2001 From: Shinexy <643854343@qq.com> Date: Fri, 15 Dec 2023 16:38:02 +0800 Subject: [PATCH] Feature auth 20231127 (#939) Co-authored-by: aries_ckt <916701291@qq.com> Co-authored-by: yhjun1026 <460342015@qq.com> Co-authored-by: chengxi <1729168290@qq.com> Co-authored-by: FangYin Cheng Co-authored-by: magic.chen Co-authored-by: cm-liushaodong Co-authored-by: Ikko Eltociear Ashimine Co-authored-by: Aditya Aryaman Das <128703909+alienishi@users.noreply.github.com> Co-authored-by: wangzaistone Co-authored-by: hairyputtar <148847552+hairyputtar@users.noreply.github.com> Co-authored-by: Abhishekgupta204 <116148980+Abhishekgupta204@users.noreply.github.com> Co-authored-by: chinmay7016 <75988613+chinmay7016@users.noreply.github.com> Co-authored-by: 0xrahul6 <113128186+0xrahul6@users.noreply.github.com> Co-authored-by: nobunagaaa <146952817+nobunagaaa@users.noreply.github.com> Co-authored-by: csunny Co-authored-by: Alpha Hinex Co-authored-by: dulin <1909703981@qq.com> Co-authored-by: oushu1zhangxiangxuan1 Co-authored-by: luchun <71970539+zhanghy-sketchzh@users.noreply.github.com> Co-authored-by: Danrui Qi --- .env.template | 21 + CODE_OF_CONDUCT | 126 +++ README.md | 163 ++- README.zh.md | 150 ++- assets/schema/history.sql | 18 - assets/schema/knowledge_management.sql | 111 ++- assets/schema/prompt_management.sql | 16 - assets/wechat.jpg | Bin 243499 -> 136373 bytes docker/base/Dockerfile | 4 +- .../cluster-docker-compose.yml | 10 + .../benchmarks/benchmarks_llm_11k_prompt.txt | 10 +- .../dashboard/test_case_mysql_data.py | 219 +++++ docs/_static/css/custom.css | 928 ++++++++++++++++++ docs/_static/css/examples.css | 218 ++++ docs/_static/css/termynal.css | 108 ++ docs/_static/css/use_cases.css | 23 + docs/conf.py | 28 +- .../application/chatdb/chatdb.md | 6 + .../application/chatexcel/chatexcel.md | 5 + .../application/dashboard/dashboard.md | 5 + docs/getting_started/faq/deploy/deploy_faq.md | 43 +- docs/getting_started/faq/kbqa/kbqa_faq.md | 7 +- docs/getting_started/faq/llm/llm_faq.md | 28 +- docs/getting_started/install.rst | 2 +- .../install/cluster/cluster.rst | 1 + .../getting_started/install/cluster/openai.md | 51 + docs/getting_started/install/deploy.rst | 425 ++++++++ docs/getting_started/install/deploy/deploy.md | 2 +- .../install/environment/environment.md | 21 +- docs/getting_started/install/llm/llm.rst | 1 + .../install/llm/proxyllm/proxyllm.md | 78 ++ docs/index.rst | 124 +-- .../application/chatdb/chatdb.po | 137 +-- .../application/chatexcel/chatexcel.po | 66 +- .../application/dashboard/dashboard.po | 100 +- .../getting_started/faq/deploy/deploy_faq.po | 102 +- .../getting_started/faq/kbqa/kbqa_faq.po | 53 +- .../getting_started/faq/llm/llm_faq.po | 126 ++- .../getting_started/install/cluster/openai.po | 71 ++ .../getting_started/install/deploy.po | 652 ++++++++++++ .../getting_started/install/deploy/deploy.po | 171 ++-- .../install/environment/environment.po | 273 +++--- .../install/llm/proxyllm/proxyllm.po | 97 ++ docs/locales/zh_CN/LC_MESSAGES/index.po | 595 ++++++++--- .../zh_CN/LC_MESSAGES/modules/knowledge.po | 260 +++-- .../zh_CN/LC_MESSAGES/modules/plugins.po | 43 +- .../zh_CN/LC_MESSAGES/modules/prompts.po | 129 ++- docs/modules/{knownledge.md => knowledge.md} | 4 +- docs/modules/plugins.md | 5 + docs/modules/prompts.md | 45 +- docs/reference.md | 1 - docs/requirements.txt | 2 +- examples/app.py | 74 -- examples/awel/simple_chat_dag_example.py | 56 ++ examples/awel/simple_dag_example.py | 34 + examples/awel/simple_rag_example.py | 73 ++ examples/embdserver.py | 82 -- examples/gpt_index.py | 19 - examples/gradio_test.py | 21 - .../knowledge_embedding/csv_embedding_test.py | 18 - .../knowledge_embedding/pdf_embedding_test.py | 18 - .../knowledge_embedding/url_embedding_test.py | 17 - examples/proxy_example.py | 67 -- examples/t5_example.py | 257 ----- pilot/awel/__init__.py | 87 ++ pilot/awel/base.py | 7 + .../dag/__init__.py} | 0 pilot/awel/dag/base.py | 364 +++++++ pilot/awel/dag/dag_manager.py | 42 + pilot/awel/dag/loader.py | 93 ++ pilot/awel/dag/tests/__init__.py | 0 pilot/awel/dag/tests/test_dag.py | 51 + pilot/awel/operator/__init__.py | 0 pilot/awel/operator/base.py | 206 ++++ pilot/awel/operator/common_operator.py | 246 +++++ pilot/awel/operator/stream_operator.py | 90 ++ pilot/awel/resource/__init__.py | 0 pilot/awel/resource/base.py | 8 + pilot/awel/runner/__init__.py | 0 pilot/awel/runner/job_manager.py | 82 ++ pilot/awel/runner/local_runner.py | 106 ++ pilot/awel/task/__init__.py | 0 pilot/awel/task/base.py | 367 +++++++ pilot/awel/task/task_impl.py | 339 +++++++ pilot/awel/tests/__init__.py | 0 pilot/awel/tests/conftest.py | 102 ++ pilot/awel/tests/test_http_operator.py | 51 + pilot/awel/tests/test_run_dag.py | 141 +++ pilot/awel/trigger/__init__.py | 0 pilot/awel/trigger/base.py | 11 + pilot/awel/trigger/http_trigger.py | 137 +++ pilot/awel/trigger/trigger_manager.py | 74 ++ .../agent/commands/command_mange.py | 149 ++- .../commands/disply_type/show_chart_gen.py | 1 - pilot/base_modules/agent/controller.py | 8 +- pilot/base_modules/agent/db/__init__.py | 0 pilot/base_modules/agent/db/my_plugin_db.py | 16 +- pilot/base_modules/agent/db/plugin_hub_db.py | 22 +- pilot/base_modules/agent/hub/agent_hub.py | 2 +- pilot/base_modules/agent/plugins_util.py | 6 +- pilot/base_modules/meta_data/meta_data.py | 34 +- pilot/base_modules/meta_data/requirement.txt | 1 - pilot/cache/__init__.py | 10 + pilot/cache/base.py | 161 +++ pilot/cache/embedding_cache.py | 0 pilot/cache/llm_cache.py | 148 +++ pilot/cache/manager.py | 126 +++ pilot/cache/protocal/__init__.py | 0 pilot/cache/protocal/json_protocal.py | 44 + pilot/cache/storage/__init__.py | 0 pilot/cache/storage/base.py | 252 +++++ pilot/cache/storage/disk/__init__.py | 0 pilot/cache/storage/disk/disk_storage.py | 93 ++ pilot/cache/storage/tests/__init__.py | 0 pilot/cache/storage/tests/test_storage.py | 53 + pilot/common/chat_util.py | 47 + pilot/common/global_helper.py | 448 +++++++++ pilot/common/json_utils.py | 7 + pilot/common/llm_metadata.py | 43 + pilot/common/prompt_util.py | 239 +++++ pilot/component.py | 48 +- pilot/configs/config.py | 17 +- pilot/configs/model_config.py | 51 +- .../connections/manages/connect_config_db.py | 15 +- pilot/connections/rdbms/conn_clickhouse.py | 10 + pilot/datasets/mysql/url.md | 1 - pilot/embedding_engine/knowledge_type.py | 6 +- .../embedding_engine/loader/splitter_utils.py | 81 ++ .../embedding_engine/loader/token_splitter.py | 184 ++++ pilot/embedding_engine/source_embedding.py | 4 +- pilot/embedding_engine/url_embedding.py | 2 +- pilot/graph_engine/__init__.py | 0 pilot/graph_engine/graph_engine.py | 207 ++++ pilot/graph_engine/graph_factory.py | 34 + pilot/graph_engine/graph_search.py | 197 ++++ pilot/graph_engine/index_struct.py | 259 +++++ pilot/graph_engine/index_type.py | 48 + pilot/graph_engine/kv_index.py | 74 ++ pilot/graph_engine/node.py | 570 +++++++++++ pilot/graph_engine/search.py | 44 + pilot/logs.py | 3 +- .../chat_history/chat_hisotry_factory.py | 11 +- pilot/memory/chat_history/chat_history_db.py | 42 +- .../store_type/meta_db_history.py | 6 +- pilot/mock_datas/db-gpt-test.db | Bin 1060864 -> 0 bytes pilot/model/adapter.py | 14 + pilot/model/base.py | 95 +- pilot/model/cli.py | 23 +- pilot/model/cluster/__init__.py | 2 + pilot/model/cluster/apiserver/__init__.py | 0 pilot/model/cluster/apiserver/api.py | 443 +++++++++ .../model/cluster/apiserver/tests/__init__.py | 0 .../model/cluster/apiserver/tests/test_api.py | 248 +++++ pilot/model/cluster/base.py | 4 + pilot/model/cluster/controller/controller.py | 16 +- pilot/model/cluster/registry.py | 42 +- pilot/model/cluster/tests/__init__.py | 0 .../tests/base_tests.py => tests/conftest.py} | 73 +- pilot/model/cluster/worker/default_worker.py | 190 +++- .../model/cluster/worker/embedding_worker.py | 2 +- pilot/model/cluster/worker/manager.py | 32 +- pilot/model/cluster/worker/remote_manager.py | 5 +- pilot/model/cluster/worker/remote_worker.py | 2 +- .../cluster/worker/tests/test_manager.py | 34 +- pilot/model/conversation.py | 21 + pilot/model/llm_out/hf_chat_llm.py | 54 + pilot/model/llm_out/vllm_llm.py | 45 +- pilot/model/loader.py | 2 +- pilot/model/model_adapter.py | 264 ++++- pilot/model/operator/__init__.py | 0 pilot/model/operator/model_operator.py | 311 ++++++ pilot/model/parameter.py | 107 +- pilot/model/proxy/llms/chatgpt.py | 164 +++- pilot/model/proxy/llms/tongyi.py | 62 +- pilot/model/proxy/llms/wenxin.py | 104 +- pilot/model/proxy/llms/zhipu.py | 95 +- pilot/openapi/api_v1/api_v1.py | 118 ++- pilot/openapi/api_v1/editor/api_editor_v1.py | 22 +- pilot/openapi/api_v1/feedback/feed_back_db.py | 12 +- pilot/openapi/api_view_model.py | 4 +- pilot/openapi/base.py | 2 +- pilot/out_parser/base.py | 21 +- pilot/scene/base.py | 24 + pilot/scene/base_chat.py | 530 +++++++--- pilot/scene/base_message.py | 81 +- pilot/scene/chat_agent/chat.py | 16 +- pilot/scene/chat_agent/out_parser.py | 7 +- pilot/scene/chat_agent/prompt.py | 3 +- pilot/scene/chat_dashboard/chat.py | 16 +- pilot/scene/chat_dashboard/data_loader.py | 4 +- pilot/scene/chat_dashboard/out_parser.py | 2 +- pilot/scene/chat_dashboard/prompt.py | 6 +- .../chat_excel/excel_analyze/chat.py | 74 +- .../chat_excel/excel_analyze/out_parser.py | 2 +- .../chat_excel/excel_analyze/prompt.py | 40 +- .../chat_excel/excel_learning/chat.py | 35 +- .../chat_excel/excel_learning/out_parser.py | 52 +- .../chat_excel/excel_learning/prompt.py | 47 +- .../chat_excel/excel_learning/test.py | 271 ----- .../chat_data/chat_excel/excel_reader.py | 48 +- pilot/scene/chat_db/auto_execute/chat.py | 43 +- .../scene/chat_db/auto_execute/out_parser.py | 89 +- pilot/scene/chat_db/auto_execute/prompt.py | 70 +- .../chat_db/auto_execute/prompt_baichuan.py | 6 +- pilot/scene/chat_db/data_loader.py | 59 +- pilot/scene/chat_db/professional_qa/chat.py | 21 +- pilot/scene/chat_db/professional_qa/prompt.py | 6 +- pilot/scene/chat_execution/chat.py | 4 +- pilot/scene/chat_execution/out_parser.py | 2 +- pilot/scene/chat_factory.py | 11 +- .../chat_knowledge/extract_entity/__init__.py | 0 .../chat_knowledge/extract_entity/chat.py | 35 + .../extract_entity/out_parser.py | 39 + .../chat_knowledge/extract_entity/prompt.py | 52 + .../extract_triplet/__init__.py | 0 .../chat_knowledge/extract_triplet/chat.py | 35 + .../extract_triplet/out_parser.py | 57 ++ .../chat_knowledge/extract_triplet/prompt.py | 57 ++ .../chat_knowledge/inner_db_summary/chat.py | 5 +- .../chat_knowledge/inner_db_summary/prompt.py | 6 +- .../chat_knowledge/refine_summary/__init__.py | 0 .../chat_knowledge/refine_summary/chat.py | 39 + .../refine_summary/out_parser.py | 57 ++ .../chat_knowledge/refine_summary/prompt.py | 49 + .../scene/chat_knowledge/summary/__init__.py | 0 pilot/scene/chat_knowledge/summary/chat.py | 34 + .../chat_knowledge/summary/out_parser.py | 32 + pilot/scene/chat_knowledge/summary/prompt.py | 53 + pilot/scene/chat_knowledge/v1/chat.py | 95 +- pilot/scene/chat_knowledge/v1/prompt.py | 14 +- .../scene/chat_knowledge/v1/prompt_chatglm.py | 6 +- pilot/scene/chat_normal/chat.py | 4 +- pilot/scene/chat_normal/prompt.py | 6 +- pilot/scene/operator/__init__.py | 0 pilot/scene/operator/_experimental.py | 255 +++++ pilot/server/base.py | 17 +- pilot/server/chat_adapter.py | 11 + pilot/server/component_configs.py | 31 + pilot/server/dbgpt_server.py | 12 +- pilot/server/knowledge/api.py | 99 +- pilot/server/knowledge/chunk_db.py | 14 +- pilot/server/knowledge/document_db.py | 15 +- pilot/server/knowledge/request/request.py | 18 + pilot/server/knowledge/request/response.py | 2 + pilot/server/knowledge/service.py | 195 +++- pilot/server/knowledge/space_db.py | 12 +- pilot/server/llm_manage/api.py | 14 +- pilot/server/prompt/api.py | 10 +- pilot/server/prompt/prompt_manage_db.py | 12 +- pilot/server/static/404.html | 2 +- pilot/server/static/404/index.html | 2 +- pilot/server/static/LOGO.png | Bin 133365 -> 31388 bytes pilot/server/static/LOGO_1.png | Bin 9979 -> 4904 bytes pilot/server/static/LOGO_SMALL.png | Bin 28272 -> 13894 bytes pilot/server/static/WHITE_LOGO.png | Bin 59160 -> 21248 bytes .../_next/static/chunks/0.3a0efeb4ac52ec8f.js | 1 + .../static/chunks/104-953a3907bb8d7bfd.js | 1 - .../static/chunks/304.b9722ef34a01988f.js | 1 - .../chunks/355a6ca7.e6035af22360251e.js | 1 + .../static/chunks/365-2cad3676ccbb1b1a.js | 14 - .../static/chunks/367-5b7ab3e8e2777607.js | 78 -- ...e9c52cbcbe7.js => 396.2cca7f693431f729.js} | 4 +- .../static/chunks/412-b911d4a677c64b70.js | 4 + .../static/chunks/44-941ba89e47567ba3.js | 16 - .../static/chunks/45-9ff739c09925ea35.js | 2 - .../static/chunks/479-68b22ee2b7a47fb3.js | 9 - .../static/chunks/479-b20198841f9a6a1e.js | 9 + .../static/chunks/539-dcd22f1f6b99ebee.js | 4 - .../static/chunks/551-266086fbfa0925ec.js | 1 + .../static/chunks/553-df5701294eedae07.js | 14 + .../static/chunks/604.0b6534ada5e802bc.js | 1 - .../static/chunks/607-b224c640f6907e4b.js | 78 ++ .../static/chunks/61-d2f6cba798a49339.js | 10 - .../static/chunks/64-91b49d45b9846775.js | 16 + .../static/chunks/643-d2492f894de95084.js | 1 - ...d63a2e1860f.js => 739.82283c4d1eea95ee.js} | 79 +- .../static/chunks/747-ec60adab93bb6758.js | 1 - .../chunks/75fc9c18-36ac6f5a83376cd3.js | 2 - .../static/chunks/815-fa0a8da2d0a72116.js | 1 - .../static/chunks/837-e6d4d1eb9e057050.js | 5 + .../static/chunks/932.7b0affeba86ae523.js | 1 - .../static/chunks/932.8f85ebe16870f7ba.js | 1 + .../static/chunks/947-5980a3ff49069ddd.js | 7 + .../static/chunks/955.228fa9fef23b31a4.js | 1 + .../static/chunks/981-ff77d5cc3ab95298.js | 1 + .../chunks/pages/_app-1c6d57125654d6ab.js | 173 ++++ .../chunks/pages/_app-e86697c1b3c2f440.js | 173 ---- ...19a2c71c2.js => agent-92e9dce47267e88d.js} | 2 +- ...d512cc5b14.js => chat-84fbba4764166684.js} | 2 +- ...85f9639f4f.js => [id]-f665336966e79cc9.js} | 2 +- .../chunks/pages/database-3140f507fe61ccb8.js | 1 + .../chunks/pages/database-ee0ff45d60094b3c.js | 1 - .../chunks/pages/index-02331aee6ba6a7fc.js | 1 - .../chunks/pages/index-d1740e3bc6dba7f5.js | 1 + .../pages/knowledge-8ada4ce8fa909bf5.js | 1 + .../pages/knowledge-fe88b529e40b0db6.js | 1 - .../[knowledgeName]/[id]-288d3a43e60ca611.js | 4 - .../pages/knowledge/chunk-9f117a5ed799edd3.js | 4 + .../chunks/pages/models-58b1d88132bdc672.js | 7 - .../chunks/pages/models-80218c46bc1d8cfa.js | 1 + .../chunks/pages/prompt-741cf72801523b25.js | 1 - .../chunks/pages/prompt-7f839dfd56bc4c20.js | 1 + .../static/chunks/webpack-0be5f9261371f232.js | 1 + .../static/chunks/webpack-d3a85272b0e75370.js | 1 - .../_next/static/css/3380fc16c2dbf0f6.css | 3 - .../_next/static/css/c921bbabe4b71b75.css | 3 + .../dXon0w257TT7JmleeTcnX/_buildManifest.js | 1 + .../_ssgManifest.js | 0 .../ip766cXopjZ_vl18rrSLK/_buildManifest.js | 1 - pilot/server/static/agent/index.html | 2 +- .../static/chat/[scene]/[id]/index.html | 2 +- pilot/server/static/chat/index.html | 2 +- pilot/server/static/database/index.html | 2 +- pilot/server/static/empty.png | Bin 80063 -> 21789 bytes pilot/server/static/favicon.ico | Bin 270398 -> 4286 bytes pilot/server/static/icons/knowledge.png | Bin 0 -> 3636 bytes pilot/server/static/index.html | 2 +- .../knowledge/[knowledgeName]/[id]/index.html | 1 - .../server/static/knowledge/chunk/index.html | 2 +- pilot/server/static/knowledge/index.html | 2 +- pilot/server/static/models/baichuan.png | Bin 553 -> 324 bytes pilot/server/static/models/chatglm.png | Bin 177042 -> 110331 bytes pilot/server/static/models/chatgpt.png | Bin 4149 -> 3127 bytes pilot/server/static/models/chroma-logo.png | Bin 4688 -> 1635 bytes pilot/server/static/models/claude.png | Bin 391 -> 375 bytes pilot/server/static/models/falcon.jpeg | Bin 2732 -> 1638 bytes pilot/server/static/models/google.png | Bin 3492 -> 3092 bytes pilot/server/static/models/gorilla.png | Bin 9688 -> 4806 bytes pilot/server/static/models/huggingface.svg | 4 +- pilot/server/static/models/index.html | 2 +- pilot/server/static/models/internlm.png | Bin 4919 -> 1634 bytes .../static/models/knowledge-default.jpg | Bin 26315 -> 12229 bytes pilot/server/static/models/llama-cpp.png | Bin 0 -> 10872 bytes pilot/server/static/models/qwen2.png | Bin 5223 -> 3617 bytes pilot/server/static/models/salesforce.jpeg | Bin 3546 -> 2240 bytes pilot/server/static/models/vicuna.jpeg | Bin 1872 -> 1390 bytes pilot/server/static/models/vllm.png | Bin 0 -> 22117 bytes pilot/server/static/models/wizardlm.png | Bin 11812 -> 9230 bytes pilot/server/static/prompt/index.html | 2 +- pilot/utils/benchmarks/__init__.py | 0 pilot/utils/benchmarks/llm/__init__.py | 0 .../llm/fastchat_benchmarks_inference.py | 296 ++++++ pilot/utils/benchmarks/llm/llm_benchmarks.py | 284 ++++++ pilot/utils/executor_utils.py | 41 + pilot/utils/memory_utils.py | 11 + pilot/utils/model_utils.py | 45 + pilot/utils/openai_utils.py | 99 ++ pilot/utils/parameter_utils.py | 86 +- pilot/utils/tracer/__init__.py | 9 +- pilot/utils/tracer/base.py | 7 +- pilot/utils/tracer/span_storage.py | 117 ++- pilot/utils/tracer/tests/test_span_storage.py | 95 +- pilot/utils/tracer/tracer_cli.py | 72 +- pilot/utils/tracer/tracer_impl.py | 52 +- pilot/utils/utils.py | 47 +- pilot/vector_store/milvus_store.py | 80 +- requirements/dev-requirements.txt | 3 +- scripts/run_llm_benchmarks.sh | 20 + scripts/setup_autodl_env.sh | 9 +- setup.py | 38 +- 360 files changed, 17529 insertions(+), 3301 deletions(-) create mode 100644 CODE_OF_CONDUCT delete mode 100644 assets/schema/history.sql delete mode 100644 assets/schema/prompt_management.sql rename pilot/datasets/oceanbase/OceanBase_Introduction.md => docker/examples/benchmarks/benchmarks_llm_11k_prompt.txt (97%) create mode 100644 docker/examples/dashboard/test_case_mysql_data.py create mode 100644 docs/_static/css/custom.css create mode 100644 docs/_static/css/examples.css create mode 100644 docs/_static/css/termynal.css create mode 100644 docs/_static/css/use_cases.css create mode 100644 docs/getting_started/install/cluster/openai.md create mode 100644 docs/getting_started/install/deploy.rst create mode 100644 docs/getting_started/install/llm/proxyllm/proxyllm.md create mode 100644 docs/locales/zh_CN/LC_MESSAGES/getting_started/install/cluster/openai.po create mode 100644 docs/locales/zh_CN/LC_MESSAGES/getting_started/install/deploy.po create mode 100644 docs/locales/zh_CN/LC_MESSAGES/getting_started/install/llm/proxyllm/proxyllm.po rename docs/modules/{knownledge.md => knowledge.md} (97%) delete mode 100644 docs/reference.md delete mode 100644 examples/app.py create mode 100644 examples/awel/simple_chat_dag_example.py create mode 100644 examples/awel/simple_dag_example.py create mode 100644 examples/awel/simple_rag_example.py delete mode 100644 examples/embdserver.py delete mode 100644 examples/gpt_index.py delete mode 100644 examples/gradio_test.py delete mode 100644 examples/knowledge_embedding/csv_embedding_test.py delete mode 100644 examples/knowledge_embedding/pdf_embedding_test.py delete mode 100644 examples/knowledge_embedding/url_embedding_test.py delete mode 100644 examples/proxy_example.py delete mode 100644 examples/t5_example.py create mode 100644 pilot/awel/__init__.py create mode 100644 pilot/awel/base.py rename pilot/{server/componet_configs.py => awel/dag/__init__.py} (100%) create mode 100644 pilot/awel/dag/base.py create mode 100644 pilot/awel/dag/dag_manager.py create mode 100644 pilot/awel/dag/loader.py create mode 100644 pilot/awel/dag/tests/__init__.py create mode 100644 pilot/awel/dag/tests/test_dag.py create mode 100644 pilot/awel/operator/__init__.py create mode 100644 pilot/awel/operator/base.py create mode 100644 pilot/awel/operator/common_operator.py create mode 100644 pilot/awel/operator/stream_operator.py create mode 100644 pilot/awel/resource/__init__.py create mode 100644 pilot/awel/resource/base.py create mode 100644 pilot/awel/runner/__init__.py create mode 100644 pilot/awel/runner/job_manager.py create mode 100644 pilot/awel/runner/local_runner.py create mode 100644 pilot/awel/task/__init__.py create mode 100644 pilot/awel/task/base.py create mode 100644 pilot/awel/task/task_impl.py create mode 100644 pilot/awel/tests/__init__.py create mode 100644 pilot/awel/tests/conftest.py create mode 100644 pilot/awel/tests/test_http_operator.py create mode 100644 pilot/awel/tests/test_run_dag.py create mode 100644 pilot/awel/trigger/__init__.py create mode 100644 pilot/awel/trigger/base.py create mode 100644 pilot/awel/trigger/http_trigger.py create mode 100644 pilot/awel/trigger/trigger_manager.py create mode 100644 pilot/base_modules/agent/db/__init__.py delete mode 100644 pilot/base_modules/meta_data/requirement.txt create mode 100644 pilot/cache/__init__.py create mode 100644 pilot/cache/base.py create mode 100644 pilot/cache/embedding_cache.py create mode 100644 pilot/cache/llm_cache.py create mode 100644 pilot/cache/manager.py create mode 100644 pilot/cache/protocal/__init__.py create mode 100644 pilot/cache/protocal/json_protocal.py create mode 100644 pilot/cache/storage/__init__.py create mode 100644 pilot/cache/storage/base.py create mode 100644 pilot/cache/storage/disk/__init__.py create mode 100644 pilot/cache/storage/disk/disk_storage.py create mode 100644 pilot/cache/storage/tests/__init__.py create mode 100644 pilot/cache/storage/tests/test_storage.py create mode 100644 pilot/common/chat_util.py create mode 100644 pilot/common/global_helper.py create mode 100644 pilot/common/json_utils.py create mode 100644 pilot/common/llm_metadata.py create mode 100644 pilot/common/prompt_util.py delete mode 100644 pilot/datasets/mysql/url.md create mode 100644 pilot/embedding_engine/loader/splitter_utils.py create mode 100644 pilot/embedding_engine/loader/token_splitter.py create mode 100644 pilot/graph_engine/__init__.py create mode 100644 pilot/graph_engine/graph_engine.py create mode 100644 pilot/graph_engine/graph_factory.py create mode 100644 pilot/graph_engine/graph_search.py create mode 100644 pilot/graph_engine/index_struct.py create mode 100644 pilot/graph_engine/index_type.py create mode 100644 pilot/graph_engine/kv_index.py create mode 100644 pilot/graph_engine/node.py create mode 100644 pilot/graph_engine/search.py delete mode 100644 pilot/mock_datas/db-gpt-test.db create mode 100644 pilot/model/cluster/apiserver/__init__.py create mode 100644 pilot/model/cluster/apiserver/api.py create mode 100644 pilot/model/cluster/apiserver/tests/__init__.py create mode 100644 pilot/model/cluster/apiserver/tests/test_api.py create mode 100644 pilot/model/cluster/tests/__init__.py rename pilot/model/cluster/{worker/tests/base_tests.py => tests/conftest.py} (71%) create mode 100644 pilot/model/llm_out/hf_chat_llm.py create mode 100644 pilot/model/operator/__init__.py create mode 100644 pilot/model/operator/model_operator.py delete mode 100644 pilot/scene/chat_data/chat_excel/excel_learning/test.py create mode 100644 pilot/scene/chat_knowledge/extract_entity/__init__.py create mode 100644 pilot/scene/chat_knowledge/extract_entity/chat.py create mode 100644 pilot/scene/chat_knowledge/extract_entity/out_parser.py create mode 100644 pilot/scene/chat_knowledge/extract_entity/prompt.py create mode 100644 pilot/scene/chat_knowledge/extract_triplet/__init__.py create mode 100644 pilot/scene/chat_knowledge/extract_triplet/chat.py create mode 100644 pilot/scene/chat_knowledge/extract_triplet/out_parser.py create mode 100644 pilot/scene/chat_knowledge/extract_triplet/prompt.py create mode 100644 pilot/scene/chat_knowledge/refine_summary/__init__.py create mode 100644 pilot/scene/chat_knowledge/refine_summary/chat.py create mode 100644 pilot/scene/chat_knowledge/refine_summary/out_parser.py create mode 100644 pilot/scene/chat_knowledge/refine_summary/prompt.py create mode 100644 pilot/scene/chat_knowledge/summary/__init__.py create mode 100644 pilot/scene/chat_knowledge/summary/chat.py create mode 100644 pilot/scene/chat_knowledge/summary/out_parser.py create mode 100644 pilot/scene/chat_knowledge/summary/prompt.py create mode 100644 pilot/scene/operator/__init__.py create mode 100644 pilot/scene/operator/_experimental.py create mode 100644 pilot/server/static/_next/static/chunks/0.3a0efeb4ac52ec8f.js delete mode 100644 pilot/server/static/_next/static/chunks/104-953a3907bb8d7bfd.js delete mode 100644 pilot/server/static/_next/static/chunks/304.b9722ef34a01988f.js create mode 100644 pilot/server/static/_next/static/chunks/355a6ca7.e6035af22360251e.js delete mode 100644 pilot/server/static/_next/static/chunks/365-2cad3676ccbb1b1a.js delete mode 100644 pilot/server/static/_next/static/chunks/367-5b7ab3e8e2777607.js rename pilot/server/static/_next/static/chunks/{266.b9b43e9c52cbcbe7.js => 396.2cca7f693431f729.js} (98%) create mode 100644 pilot/server/static/_next/static/chunks/412-b911d4a677c64b70.js delete mode 100644 pilot/server/static/_next/static/chunks/44-941ba89e47567ba3.js delete mode 100644 pilot/server/static/_next/static/chunks/45-9ff739c09925ea35.js delete mode 100644 pilot/server/static/_next/static/chunks/479-68b22ee2b7a47fb3.js create mode 100644 pilot/server/static/_next/static/chunks/479-b20198841f9a6a1e.js delete mode 100644 pilot/server/static/_next/static/chunks/539-dcd22f1f6b99ebee.js create mode 100644 pilot/server/static/_next/static/chunks/551-266086fbfa0925ec.js create mode 100644 pilot/server/static/_next/static/chunks/553-df5701294eedae07.js delete mode 100644 pilot/server/static/_next/static/chunks/604.0b6534ada5e802bc.js create mode 100644 pilot/server/static/_next/static/chunks/607-b224c640f6907e4b.js delete mode 100644 pilot/server/static/_next/static/chunks/61-d2f6cba798a49339.js create mode 100644 pilot/server/static/_next/static/chunks/64-91b49d45b9846775.js delete mode 100644 pilot/server/static/_next/static/chunks/643-d2492f894de95084.js rename pilot/server/static/_next/static/chunks/{207.60c86d63a2e1860f.js => 739.82283c4d1eea95ee.js} (53%) delete mode 100644 pilot/server/static/_next/static/chunks/747-ec60adab93bb6758.js delete mode 100644 pilot/server/static/_next/static/chunks/75fc9c18-36ac6f5a83376cd3.js delete mode 100644 pilot/server/static/_next/static/chunks/815-fa0a8da2d0a72116.js create mode 100644 pilot/server/static/_next/static/chunks/837-e6d4d1eb9e057050.js delete mode 100644 pilot/server/static/_next/static/chunks/932.7b0affeba86ae523.js create mode 100644 pilot/server/static/_next/static/chunks/932.8f85ebe16870f7ba.js create mode 100644 pilot/server/static/_next/static/chunks/947-5980a3ff49069ddd.js create mode 100644 pilot/server/static/_next/static/chunks/955.228fa9fef23b31a4.js create mode 100644 pilot/server/static/_next/static/chunks/981-ff77d5cc3ab95298.js create mode 100644 pilot/server/static/_next/static/chunks/pages/_app-1c6d57125654d6ab.js delete mode 100644 pilot/server/static/_next/static/chunks/pages/_app-e86697c1b3c2f440.js rename pilot/server/static/_next/static/chunks/pages/{agent-dbb8ff019a2c71c2.js => agent-92e9dce47267e88d.js} (98%) rename pilot/server/static/_next/static/chunks/pages/{chat-197b88d512cc5b14.js => chat-84fbba4764166684.js} (83%) rename pilot/server/static/_next/static/chunks/pages/chat/[scene]/{[id]-ac949685f9639f4f.js => [id]-f665336966e79cc9.js} (84%) create mode 100644 pilot/server/static/_next/static/chunks/pages/database-3140f507fe61ccb8.js delete mode 100644 pilot/server/static/_next/static/chunks/pages/database-ee0ff45d60094b3c.js delete mode 100644 pilot/server/static/_next/static/chunks/pages/index-02331aee6ba6a7fc.js create mode 100644 pilot/server/static/_next/static/chunks/pages/index-d1740e3bc6dba7f5.js create mode 100644 pilot/server/static/_next/static/chunks/pages/knowledge-8ada4ce8fa909bf5.js delete mode 100644 pilot/server/static/_next/static/chunks/pages/knowledge-fe88b529e40b0db6.js delete mode 100644 pilot/server/static/_next/static/chunks/pages/knowledge/[knowledgeName]/[id]-288d3a43e60ca611.js create mode 100644 pilot/server/static/_next/static/chunks/pages/knowledge/chunk-9f117a5ed799edd3.js delete mode 100644 pilot/server/static/_next/static/chunks/pages/models-58b1d88132bdc672.js create mode 100644 pilot/server/static/_next/static/chunks/pages/models-80218c46bc1d8cfa.js delete mode 100644 pilot/server/static/_next/static/chunks/pages/prompt-741cf72801523b25.js create mode 100644 pilot/server/static/_next/static/chunks/pages/prompt-7f839dfd56bc4c20.js create mode 100644 pilot/server/static/_next/static/chunks/webpack-0be5f9261371f232.js delete mode 100644 pilot/server/static/_next/static/chunks/webpack-d3a85272b0e75370.js delete mode 100644 pilot/server/static/_next/static/css/3380fc16c2dbf0f6.css create mode 100644 pilot/server/static/_next/static/css/c921bbabe4b71b75.css create mode 100644 pilot/server/static/_next/static/dXon0w257TT7JmleeTcnX/_buildManifest.js rename pilot/server/static/_next/static/{ip766cXopjZ_vl18rrSLK => dXon0w257TT7JmleeTcnX}/_ssgManifest.js (100%) delete mode 100644 pilot/server/static/_next/static/ip766cXopjZ_vl18rrSLK/_buildManifest.js create mode 100644 pilot/server/static/icons/knowledge.png delete mode 100644 pilot/server/static/knowledge/[knowledgeName]/[id]/index.html create mode 100644 pilot/server/static/models/llama-cpp.png create mode 100644 pilot/server/static/models/vllm.png create mode 100644 pilot/utils/benchmarks/__init__.py create mode 100644 pilot/utils/benchmarks/llm/__init__.py create mode 100644 pilot/utils/benchmarks/llm/fastchat_benchmarks_inference.py create mode 100644 pilot/utils/benchmarks/llm/llm_benchmarks.py create mode 100644 pilot/utils/memory_utils.py create mode 100644 pilot/utils/openai_utils.py create mode 100755 scripts/run_llm_benchmarks.sh diff --git a/.env.template b/.env.template index 3b7c8e887..ba7f752db 100644 --- a/.env.template +++ b/.env.template @@ -23,6 +23,15 @@ WEB_SERVER_PORT=7860 #*******************************************************************# # LLM_MODEL, see /pilot/configs/model_config.LLM_MODEL_CONFIG LLM_MODEL=vicuna-13b-v1.5 +## LLM model path, by default, DB-GPT will read the model path from LLM_MODEL_CONFIG based on the LLM_MODEL. +## Of course you can specify your model path according to LLM_MODEL_PATH +## In DB-GPT, the priority from high to low to read model path: +## 1. environment variable with key: {LLM_MODEL}_MODEL_PATH (Avoid multi-model conflicts) +## 2. environment variable with key: MODEL_PATH +## 3. environment variable with key: LLM_MODEL_PATH +## 4. the config in /pilot/configs/model_config.LLM_MODEL_CONFIG +# LLM_MODEL_PATH=/app/models/vicuna-13b-v1.5 +# LLM_PROMPT_TEMPLATE=vicuna_v1.1 MODEL_SERVER=http://127.0.0.1:8000 LIMIT_MODEL_CONCURRENCY=5 MAX_POSITION_EMBEDDINGS=4096 @@ -46,6 +55,17 @@ QUANTIZE_8bit=True ## Model path # llama_cpp_model_path=/data/models/TheBloke/vicuna-13B-v1.5-GGUF/vicuna-13b-v1.5.Q4_K_M.gguf +### LLM cache +## Enable Model cache +# MODEL_CACHE_ENABLE=True +## The storage type of model cache, now supports: memory, disk +# MODEL_CACHE_STORAGE_TYPE=disk +## The max cache data in memory, we always store cache data in memory fist for high speed. +# MODEL_CACHE_MAX_MEMORY_MB=256 +## The dir to save cache data, this configuration is only valid when MODEL_CACHE_STORAGE_TYPE=disk +## The default dir is pilot/data/model_cache +# MODEL_CACHE_STORAGE_DISK_DIR= + #*******************************************************************# #** EMBEDDING SETTINGS **# #*******************************************************************# @@ -84,6 +104,7 @@ LOCAL_DB_TYPE=sqlite # LOCAL_DB_PASSWORD=aa12345678 # LOCAL_DB_HOST=127.0.0.1 # LOCAL_DB_PORT=3306 +# LOCAL_DB_NAME=dbgpt ### This option determines the storage location of conversation records. The default is not configured to the old version of duckdb. It can be optionally db or file (if the value is db, the database configured by LOCAL_DB will be used) #CHAT_HISTORY_STORE_TYPE=db diff --git a/CODE_OF_CONDUCT b/CODE_OF_CONDUCT new file mode 100644 index 000000000..b7efcc0b3 --- /dev/null +++ b/CODE_OF_CONDUCT @@ -0,0 +1,126 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall + community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or advances of + any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, + without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +[INSERT CONTACT METHOD]. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +*Community Impact*: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +*Consequence*: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +*Community Impact*: A violation through a single incident or series of +actions. + +*Consequence*: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +### 3. Temporary Ban + +*Community Impact*: A serious violation of community standards, including +sustained inappropriate behavior. + +*Consequence*: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +*Community Impact*: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +*Consequence*: A permanent ban from any sort of public interaction within the +community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.1, available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at +[https://www.contributor-covenant.org/translations][translations]. diff --git a/README.md b/README.md index 49b006a7b..524541209 100644 --- a/README.md +++ b/README.md @@ -13,9 +13,6 @@ forks - - License: MIT - License: MIT @@ -25,8 +22,8 @@ Open Issues - - Discord + + Discord Open in GitHub Codespaces @@ -34,17 +31,27 @@

-[**简体中文**](README.zh.md) |[**Discord**](https://discord.gg/vqBrcV7Nd) |[**Documents**](https://db-gpt.readthedocs.io/en/latest/)|[**Wechat**](https://github.com/eosphoros-ai/DB-GPT/blob/main/README.zh.md#%E8%81%94%E7%B3%BB%E6%88%91%E4%BB%AC)|[**Community**](https://github.com/eosphoros-ai/community) +[**简体中文**](README.zh.md) | [**Discord**](https://discord.gg/nASQyBjvY) | [**Documents**](https://db-gpt.readthedocs.io/en/latest/) | [**Wechat**](https://github.com/eosphoros-ai/DB-GPT/blob/main/README.zh.md#%E8%81%94%E7%B3%BB%E6%88%91%E4%BB%AC) | [**Community**](https://github.com/eosphoros-ai/community) ## What is DB-GPT? -DB-GPT is an experimental open-source project that uses localized GPT large models to interact with your data and environment. With this solution, you can be assured that there is no risk of data leakage, and your data is 100% private and secure. +DB-GPT is an open-source framework designed for the realm of large language models (LLMs) within the database field. Its primary purpose is to provide infrastructure that simplifies and streamlines the development of database-related applications. This is accomplished through the development of various technical capabilities, including: + +1. **SMMF(Service-oriented Multi-model Management Framework)** +2. **Text2SQL Fine-tuning** +3. **RAG(Retrieval Augmented Generation) framework and optimization** +4. **Data-Driven Agents framework collaboration** +5. **GBI(Generative Business intelligence)** + +DB-GPT simplifies the creation of these applications based on large language models (LLMs) and databases. + +In the era of Data 3.0, enterprises and developers can take the ability to create customized applications with minimal coding, which harnesses the power of large language models (LLMs) and databases. ## Contents -- [install](#install) -- [demo](#demo) +- [Install](#install) +- [Demo](#demo) - [introduction](#introduction) - [features](#features) - [contribution](#contribution) @@ -54,19 +61,11 @@ DB-GPT is an experimental open-source project that uses localized GPT large mode [DB-GPT Youtube Video](https://www.youtube.com/watch?v=f5_g0OObZBQ) ## Demo -Run on an RTX 4090 GPU. +##### Chat Data +![chatdata](https://github.com/eosphoros-ai/DB-GPT/assets/13723926/1f77079e-d018-4eee-982b-9b6a66bf1063) + ##### Chat Excel -![excel](https://github.com/eosphoros-ai/DB-GPT/assets/13723926/0474d220-2a9f-449f-a940-92c8a25af390) -##### Chat Plugin -![auto_plugin_new](https://github.com/eosphoros-ai/DB-GPT/assets/13723926/7d95c347-f4b7-4fb6-8dd2-c1c02babaa56) -##### LLM Management -![llm_manage](https://github.com/eosphoros-ai/DB-GPT/assets/13723926/501d6b3f-c4ce-4197-9a6f-f016f8150a11) -##### FastChat && vLLM -![vllm](https://github.com/eosphoros-ai/DB-GPT/assets/13723926/0c9475d2-45ee-4573-aa5a-814f7fd40213) -##### Trace -![trace_new](https://github.com/eosphoros-ai/DB-GPT/assets/13723926/69bd14b8-14d0-4ca9-9cb7-6cef44a2bc93) -##### Chat Knowledge -![kbqa_new](https://github.com/eosphoros-ai/DB-GPT/assets/13723926/72266a48-edef-4c6d-88c6-fbb1a24a6c3e) +![excel](https://github.com/eosphoros-ai/DB-GPT/assets/13723926/3044e83b-a71e-41fe-a1e2-98e479e0ab59) ## Install ![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge&logo=docker&logoColor=white) @@ -75,8 +74,8 @@ Run on an RTX 4090 GPU. ![Windows](https://img.shields.io/badge/Windows-0078D6?style=for-the-badge&logo=windows&logoColor=white) [**Usage Tutorial**](https://db-gpt.readthedocs.io/en/latest/getting_started/install/deploy/deploy.html) -- [**Install**](https://db-gpt.readthedocs.io/en/latest/getting_started/install/deploy/deploy.html) - - [**Install Step by Step**](https://db-gpt.readthedocs.io/en/latest/getting_started/install/deploy/deploy.html) +- [**Install**](https://db-gpt.readthedocs.io/en/latest/getting_started/install/deploy.html) + - [**Install Step by Step**](https://db-gpt.readthedocs.io/en/latest/getting_started/install/deploy.html) - [**Docker Install**](https://db-gpt.readthedocs.io/en/latest/getting_started/install/docker/docker.html) - [**Docker Compose**](https://db-gpt.readthedocs.io/en/latest/getting_started/install/docker_compose/docker_compose.html) - [**How to Use**](https://db-gpt.readthedocs.io/en/latest/getting_started/application/chatdb/chatdb.html) @@ -96,52 +95,47 @@ Run on an RTX 4090 GPU. ## Features -Currently, we have released multiple key features, which are listed below to demonstrate our current capabilities: -- Private KBQA & data processing +At present, we have introduced several key features to showcase our current capabilities: +- **Private Domain Q&A & Data Processing** - The DB-GPT project offers a range of features to enhance knowledge base construction and enable efficient storage and retrieval of both structured and unstructured data. These include built-in support for uploading multiple file formats, the ability to integrate plug-ins for custom data extraction, and unified vector storage and retrieval capabilities for managing large volumes of information. + The DB-GPT project offers a range of functionalities designed to improve knowledge base construction and enable efficient storage and retrieval of both structured and unstructured data. These functionalities include built-in support for uploading multiple file formats, the ability to integrate custom data extraction plug-ins, and unified vector storage and retrieval capabilities for effectively managing large volumes of information. -- Multiple data sources & visualization - - The DB-GPT project enables seamless natural language interaction with various data sources, including Excel, databases, and data warehouses. It facilitates effortless querying and retrieval of information from these sources, allowing users to engage in intuitive conversations and obtain insights. Additionally, DB-GPT supports the generation of analysis reports, providing users with valuable summaries and interpretations of the data. +- **Multi-Data Source & GBI(Generative Business intelligence)** + + The DB-GPT project facilitates seamless natural language interaction with diverse data sources, including Excel, databases, and data warehouses. It simplifies the process of querying and retrieving information from these sources, empowering users to engage in intuitive conversations and gain insights. Moreover, DB-GPT supports the generation of analytical reports, providing users with valuable data summaries and interpretations. -- Multi-Agents&Plugins +- **Multi-Agents&Plugins** - Supports custom plug-ins to perform tasks, natively supports the Auto-GPT plug-in model, and the Agents protocol adopts the Agent Protocol standard + It offers support for custom plug-ins to perform various tasks and natively integrates the Auto-GPT plug-in model. The Agents protocol adheres to the Agent Protocol standard. -- Fine-tuning text2SQL +- **Automated Fine-tuning text2SQL** - An automated fine-tuning lightweight framework built around large language models, Text2SQL data sets, LoRA/QLoRA/Pturning and other fine-tuning methods, making TextSQL fine-tuning as convenient as an assembly line. [DB-GPT-Hub](https://github.com/eosphoros-ai/DB-GPT-Hub) + We've also developed an automated fine-tuning lightweight framework centred on large language models (LLMs), Text2SQL datasets, LoRA/QLoRA/Pturning, and other fine-tuning methods. This framework simplifies Text-to-SQL fine-tuning, making it as straightforward as an assembly line process. [DB-GPT-Hub](https://github.com/eosphoros-ai/DB-GPT-Hub) -- Multi LLMs Support, Supports multiple large language models, currently supporting +- **SMMF(Service-oriented Multi-model Management Framework)** - Massive model support, including dozens of large language models such as open source and API agents. Such as LLaMA/LLaMA2, Baichuan, ChatGLM, Wenxin, Tongyi, Zhipu, etc. + We offer extensive model support, including dozens of large language models (LLMs) from both open-source and API agents, such as LLaMA/LLaMA2, Baichuan, ChatGLM, Wenxin, Tongyi, Zhipu, and many more. + - [Vicuna](https://huggingface.co/Tribbiani/vicuna-13b) - [vicuna-13b-v1.5](https://huggingface.co/lmsys/vicuna-13b-v1.5) - [LLama2](https://huggingface.co/meta-llama/Llama-2-7b-chat-hf) - - [baichuan2-13b](https://huggingface.co/baichuan-inc) - - [baichuan-7B](https://huggingface.co/baichuan-inc/baichuan-7B) + - [baichuan2-13b](https://huggingface.co/baichuan-inc/Baichuan2-13B-Chat) + - [baichuan2-7b](https://huggingface.co/baichuan-inc/Baichuan2-7B-Chat) - [chatglm-6b](https://huggingface.co/THUDM/chatglm-6b) - [chatglm2-6b](https://huggingface.co/THUDM/chatglm2-6b) + - [chatglm3-6b](https://huggingface.co/THUDM/chatglm3-6b) - [falcon-40b](https://huggingface.co/tiiuae/falcon-40b) - [internlm-chat-7b](https://huggingface.co/internlm/internlm-chat-7b) - - [Qwen-7B-Chat/Qwen-14B-Chat](https://huggingface.co/Qwen/) - - [RWKV-4-Raven](https://huggingface.co/BlinkDL/rwkv-4-raven) - - [CAMEL-13B-Combined-Data](https://huggingface.co/camel-ai/CAMEL-13B-Combined-Data) - - [dolly-v2-12b](https://huggingface.co/databricks/dolly-v2-12b) - - [h2ogpt-gm-oasst1-en-2048-open-llama-7b](https://huggingface.co/h2oai/h2ogpt-gm-oasst1-en-2048-open-llama-7b) - - [fastchat-t5-3b-v1.0](https://huggingface.co/lmsys/fastchat-t5) - - [mpt-7b-chat](https://huggingface.co/mosaicml/mpt-7b-chat) - - [gpt4all-13b-snoozy](https://huggingface.co/nomic-ai/gpt4all-13b-snoozy) - - [Nous-Hermes-13b](https://huggingface.co/NousResearch/Nous-Hermes-13b) - - [codet5p-6b](https://huggingface.co/Salesforce/codet5p-6b) - - [guanaco-33b-merged](https://huggingface.co/timdettmers/guanaco-33b-merged) - - [WizardLM-13B-V1.0](https://huggingface.co/WizardLM/WizardLM-13B-V1.0) - - [WizardLM/WizardCoder-15B-V1.0](https://huggingface.co/WizardLM/WizardCoder-15B-V1.0) - - [Llama2-Chinese-13b-Chat](https://huggingface.co/FlagAlpha/Llama2-Chinese-13b-Chat) - - [OpenLLaMa OpenInstruct](https://huggingface.co/VMware/open-llama-7b-open-instruct) - - etc. + - [internlm-chat-20b](https://huggingface.co/internlm/internlm-chat-20b) + - [qwen-7b-chat](https://huggingface.co/Qwen/Qwen-7B-Chat) + - [qwen-14b-chat](https://huggingface.co/Qwen/Qwen-14B-Chat) + - [wizardlm-13b](https://huggingface.co/WizardLM/WizardLM-13B-V1.2) + - [orca-2-7b](https://huggingface.co/microsoft/Orca-2-7b) + - [orca-2-13b](https://huggingface.co/microsoft/Orca-2-13b) + - [openchat_3.5](https://huggingface.co/openchat/openchat_3.5) + - [zephyr-7b-alpha](https://huggingface.co/HuggingFaceH4/zephyr-7b-alpha) + - [mistral-7b-instruct-v0.1](https://huggingface.co/mistralai/Mistral-7B-Instruct-v0.1) + - [Yi-34B-Chat](https://huggingface.co/01-ai/Yi-34B-Chat) - Support API Proxy LLMs - [x] [ChatGPT](https://api.openai.com/) @@ -149,16 +143,16 @@ Currently, we have released multiple key features, which are listed below to dem - [x] [Wenxin](https://cloud.baidu.com/product/wenxinworkshop?track=dingbutonglan) - [x] [ChatGLM](http://open.bigmodel.cn/) -- Privacy and security +- **Privacy and Security** - The privacy and security of data are ensured through various technologies such as privatized large models and proxy desensitization. + We ensure the privacy and security of data through the implementation of various technologies, including privatized large models and proxy desensitization. - Support Datasources | DataSource | support | Notes | | ------------------------------------------------------------------------------ | ----------- | ------------------------------------------- | | [MySQL](https://www.mysql.com/) | Yes | | -| [PostgresSQL](https://www.postgresql.org/) | Yes | | +| [PostgreSQL](https://www.postgresql.org/) | Yes | | | [Spark](https://github.com/apache/spark) | Yes | | | [DuckDB](https://github.com/duckdb/duckdb) | Yes | | | [Sqlite](https://github.com/sqlite/sqlite) | Yes | | @@ -177,43 +171,37 @@ Currently, we have released multiple key features, which are listed below to dem | [StarRocks](https://github.com/StarRocks/starrocks) | No | TODO | ## Introduction -Is the architecture of the entire DB-GPT shown in the following figure: +The architecture of DB-GPT is shown in the following figure:

-The core capabilities mainly consist of the following parts: -1. Multi-Models: Support multi-LLMs, such as LLaMA/LLaMA2、CodeLLaMA、ChatGLM, QWen、Vicuna and proxy model ChatGPT、Baichuan、tongyi、wenxin etc -2. Knowledge Based QA: You can perform high-quality intelligent Q&A based on local documents such as pdf, word, excel and other data. -3. Embedding: Unified data vector storage and indexing, Embed data as vectors and store them in vector databases, providing content similarity search. -4. Multi-Datasources: Used to connect different modules and data sources to achieve data flow and interaction. -5. Multi-Agents: Provides Agent and plugin mechanisms, allowing users to customize and enhance the system's behavior. -6. Privacy & Secure: You can be assured that there is no risk of data leakage, and your data is 100% private and secure. -7. Text2SQL: We enhance the Text-to-SQL performance by applying Supervised Fine-Tuning (SFT) on large language models - -### RAG-IN-Action -

- -

+The core capabilities primarily consist of the following components: +1. Multi-Models: We support multiple Large Language Models (LLMs) such as LLaMA/LLaMA2, CodeLLaMA, ChatGLM, QWen, Vicuna, and proxy models like ChatGPT, Baichuan, Tongyi, Wenxin, and more. +2. Knowledge-Based QA: Our system enables high-quality intelligent Q&A based on local documents such as PDFs, Word documents, Excel files, and other data sources. +3. Embedding: We offer unified data vector storage and indexing. Data is embedded as vectors and stored in vector databases, allowing for content similarity search. +4. Multi-Datasources: This feature connects different modules and data sources, facilitating data flow and interaction. +5. Multi-Agents: Our platform provides Agent and plugin mechanisms, empowering users to customize and enhance the system's behaviour. +6. Privacy & Security: Rest assured that there is no risk of data leakage, and your data is 100% private and secure. +7. Text2SQL: We enhance Text-to-SQL performance through Supervised Fine-Tuning (SFT) applied to Large Language Models (LLMs). ### SubModule -- [DB-GPT-Hub](https://github.com/eosphoros-ai/DB-GPT-Hub) Text-to-SQL performance by applying Supervised Fine-Tuning (SFT) on large language models. -- [DB-GPT-Plugins](https://github.com/eosphoros-ai/DB-GPT-Plugins) DB-GPT Plugins, Can run autogpt plugin directly +- [DB-GPT-Hub](https://github.com/eosphoros-ai/DB-GPT-Hub) Text-to-SQL workflow with high performance by applying Supervised Fine-Tuning (SFT) on Large Language Models (LLMs). +- [DB-GPT-Plugins](https://github.com/eosphoros-ai/DB-GPT-Plugins) DB-GPT Plugins that can run Auto-GPT plugin directly - [DB-GPT-Web](https://github.com/eosphoros-ai/DB-GPT-Web) ChatUI for DB-GPT ## Image 🌐 [AutoDL Image](https://www.codewithgpu.com/i/eosphoros-ai/DB-GPT/dbgpt) - - ### Language Switching In the .env configuration file, modify the LANGUAGE parameter to switch to different languages. The default is English (Chinese: zh, English: en, other languages to be added later). ## Contribution -- Please run `black .` before submitting the code. contributing guidelines, [how to contribution](https://github.com/csunny/DB-GPT/blob/main/CONTRIBUTING.md) +- Please run `black .` before submitting the code. +- To check detailed guidelines for new contributions, please refer [how to contribute](https://github.com/csunny/DB-GPT/blob/main/CONTRIBUTING.md) ## RoadMap @@ -224,7 +212,7 @@ The core capabilities mainly consist of the following parts: ### KBQA RAG optimization - [x] Multi Documents - [x] PDF - - [x] Excel, csv + - [x] Excel, CSV - [x] Word - [x] Text - [x] MarkDown @@ -235,7 +223,7 @@ The core capabilities mainly consist of the following parts: - [ ] Graph Database - [ ] Neo4j Graph - [ ] Nebula Graph -- [x] Multi Vector Database +- [x] Multi-Vector Database - [x] Chroma - [x] Milvus - [x] Weaviate @@ -254,7 +242,7 @@ The core capabilities mainly consist of the following parts: - Multi Datasource Support - [x] MySQL - - [x] PostgresSQL + - [x] PostgreSQL - [x] Spark - [x] DuckDB - [x] Sqlite @@ -310,18 +298,7 @@ The core capabilities mainly consist of the following parts: - [x] ChatGLM2 - SFT Accuracy - -As of October 10, 2023, by fine-tuning an open-source model of 13 billion parameters using this project, the execution accuracy on the Spider evaluation dataset has surpassed that of GPT-4! - -| name | Execution Accuracy | reference | -| ----------------------------------| ------------------ | ------------------------------------------------------------------------------------------------------------------------------ | -| **GPT-4** | **0.762** | [numbersstation-eval-res](https://www.numbersstation.ai/post/nsql-llama-2-7b) | -| ChatGPT | 0.728 | [numbersstation-eval-res](https://www.numbersstation.ai/post/nsql-llama-2-7b) | -| **CodeLlama-13b-Instruct-hf_lora**| **0.789** | sft train by our this project,only used spider train dataset ,the same eval way in this project with lora SFT | -| CodeLlama-13b-Instruct-hf_qlora | 0.774 | sft train by our this project,only used spider train dataset ,the same eval way in this project with qlora and nf4,bit4 SFT | -| wizardcoder | 0.610 | [text-to-sql-wizardcoder](https://github.com/cuplv/text-to-sql-wizardcoder/tree/main) | -| CodeLlama-13b-Instruct-hf | 0.556 | eval in this project default param | -| llama2_13b_hf_lora_best | 0.744 | sft train by our this project,only used spider train dataset ,the same eval way in this project | +As of October 10, 2023, through the fine-tuning of an open-source model with 13 billion parameters using this project, we have achieved execution accuracy on the Spider dataset that surpasses even GPT-4! [More Information about Text2SQL finetune](https://github.com/eosphoros-ai/DB-GPT-Hub) @@ -330,8 +307,8 @@ As of October 10, 2023, by fine-tuning an open-source model of 13 billion parame The MIT License (MIT) ## Contact Information -We are working on building a community, if you have any ideas about building the community, feel free to contact us. -[![](https://dcbadge.vercel.app/api/server/vqBrcV7Nd?compact=true&style=flat)](https://discord.gg/vqBrcV7Nd) +We are working on building a community, if you have any ideas for building the community, feel free to contact us. +[![](https://dcbadge.vercel.app/api/server/nASQyBjvY?compact=true&style=flat)](https://discord.gg/nASQyBjvY)

diff --git a/README.zh.md b/README.zh.md index a6119663d..00ead0cc8 100644 --- a/README.zh.md +++ b/README.zh.md @@ -22,24 +22,21 @@ Open Issues - - Discord + + Discord Open in GitHub Codespaces

-[**English**](README.md)|[**Discord**](https://discord.gg/vqBrcV7Nd)|[**文档**](https://db-gpt.readthedocs.io/projects/db-gpt-docs-zh-cn/zh_CN/latest/)|[**微信**](https://github.com/csunny/DB-GPT/blob/main/README.zh.md#%E8%81%94%E7%B3%BB%E6%88%91%E4%BB%AC)|[**社区**](https://github.com/eosphoros-ai/community) +[**English**](README.md)|[**Discord**](https://discord.gg/nASQyBjvY)|[**文档**](https://db-gpt.readthedocs.io/projects/db-gpt-docs-zh-cn/zh_CN/latest/)|[**微信**](https://github.com/csunny/DB-GPT/blob/main/README.zh.md#%E8%81%94%E7%B3%BB%E6%88%91%E4%BB%AC)|[**社区**](https://github.com/eosphoros-ai/community) ## DB-GPT 是什么? +DB-GPT是一个开源的数据库领域大模型框架。目的是构建大模型领域的基础设施,通过开发多模型管理、Text2SQL效果优化、RAG框架以及优化、Multi-Agents框架协作等多种技术能力,让围绕数据库构建大模型应用更简单,更方便。 -随着大模型的发布迭代,大模型变得越来越智能,在使用大模型的过程当中,遇到极大的数据安全与隐私挑战。在利用大模型能力的过程中我们的私密数据跟环境需要掌握自己的手里,完全可控,避免任何的数据隐私泄露以及安全风险。基于此,我们发起了DB-GPT项目,为所有以数据库为基础的场景,构建一套完整的私有大模型解决方案。 此方案因为支持本地部署,所以不仅仅可以应用于独立私有环境,而且还可以根据业务模块独立部署隔离,让大模型的能力绝对私有、安全、可控。我们的愿景是让围绕数据库构建大模型应用更简单,更方便。 - -DB-GPT 是一个开源的以数据库为基础的GPT实验项目,使用本地化的GPT大模型与您的数据和环境进行交互,无数据泄露风险,100% 私密 - - +数据3.0 时代,基于模型、数据库,企业/开发者可以用更少的代码搭建自己的专属应用。 ## 目录 @@ -55,23 +52,13 @@ DB-GPT 是一个开源的以数据库为基础的GPT实验项目,使用本地 ## 效果演示 -示例通过 RTX 4090 GPU 演示 +##### Chat Data +![chatdata](https://github.com/eosphoros-ai/DB-GPT/assets/13723926/1f77079e-d018-4eee-982b-9b6a66bf1063) ##### Chat Excel -![excel](https://github.com/eosphoros-ai/DB-GPT/assets/13723926/0474d220-2a9f-449f-a940-92c8a25af390) -#### Chat Plugin -![auto_plugin_new](https://github.com/eosphoros-ai/DB-GPT/assets/13723926/7d95c347-f4b7-4fb6-8dd2-c1c02babaa56) -#### LLM Management -![llm_manage](https://github.com/eosphoros-ai/DB-GPT/assets/13723926/501d6b3f-c4ce-4197-9a6f-f016f8150a11) -#### FastChat && vLLM -![vllm](https://github.com/eosphoros-ai/DB-GPT/assets/13723926/0c9475d2-45ee-4573-aa5a-814f7fd40213) -#### Trace -![trace_new](https://github.com/eosphoros-ai/DB-GPT/assets/13723926/69bd14b8-14d0-4ca9-9cb7-6cef44a2bc93) -#### Chat Knowledge -![kbqa_new](https://github.com/eosphoros-ai/DB-GPT/assets/13723926/72266a48-edef-4c6d-88c6-fbb1a24a6c3e) +![excel](https://github.com/eosphoros-ai/DB-GPT/assets/13723926/3044e83b-a71e-41fe-a1e2-98e479e0ab59) #### 根据自然语言对话生成分析图表 -

@@ -80,10 +67,6 @@ DB-GPT 是一个开源的以数据库为基础的GPT实验项目,使用本地

-

- -

- ## 安装 ![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge&logo=docker&logoColor=white) @@ -91,80 +74,74 @@ DB-GPT 是一个开源的以数据库为基础的GPT实验项目,使用本地 ![macOS](https://img.shields.io/badge/mac%20os-000000?style=for-the-badge&logo=macos&logoColor=F0F0F0) ![Windows](https://img.shields.io/badge/Windows-0078D6?style=for-the-badge&logo=windows&logoColor=white) -[**教程**](https://db-gpt.readthedocs.io/en/latest/getting_started/install/deploy/deploy.html) -- [**安装**](https://db-gpt.readthedocs.io/projects/db-gpt-docs-zh-cn/zh_CN/latest/getting_started/install/deploy/deploy.html) - - [**Install Step by Step**](https://db-gpt.readthedocs.io/projects/db-gpt-docs-zh-cn/zh_CN/latest/getting_started/install/deploy/deploy.html) - - [**Docker安装**](https://db-gpt.readthedocs.io/projects/db-gpt-docs-zh-cn/zh_CN/latest/getting_started/install/docker/docker.html) - - [**Docker Compose安装**](https://db-gpt.readthedocs.io/projects/db-gpt-docs-zh-cn/zh_CN/latest/getting_started/install/docker_compose/docker_compose.html) -- [**产品使用手册**](https://db-gpt.readthedocs.io/projects/db-gpt-docs-zh-cn/zh_CN/latest/getting_started/application/chatdb/chatdb.html) - - [**ChatData**](https://db-gpt.readthedocs.io/projects/db-gpt-docs-zh-cn/zh_CN/latest/getting_started/application/chatdb/chatdb.html) - - [**ChatKnowledge**](https://db-gpt.readthedocs.io/projects/db-gpt-docs-zh-cn/zh_CN/latest/getting_started/application/kbqa/kbqa.html) - - [**ChatExcel**](https://db-gpt.readthedocs.io/projects/db-gpt-docs-zh-cn/zh_CN/latest/getting_started/application/chatexcel/chatexcel.html) - - [**Dashboard**](https://db-gpt.readthedocs.io/projects/db-gpt-docs-zh-cn/zh_CN/latest/getting_started/application/dashboard/dashboard.html) - - [**LLM 管理**](https://db-gpt.readthedocs.io/projects/db-gpt-docs-zh-cn/zh_CN/latest/getting_started/application/model/model.html) - - [**Chat Agent**](https://db-gpt.readthedocs.io/projects/db-gpt-docs-zh-cn/zh_CN/latest/getting_started/application/chatagent/chatagent.html) -- [**如何部署LLM**](https://db-gpt.readthedocs.io/projects/db-gpt-docs-zh-cn/zh_CN/latest/getting_started/install/cluster/cluster.html) - - [**Standalone**](https://db-gpt.readthedocs.io/projects/db-gpt-docs-zh-cn/zh_CN/latest/getting_started/install/cluster/vms/standalone.html#) - - [**Cluster**](https://db-gpt.readthedocs.io/projects/db-gpt-docs-zh-cn/zh_CN/latest/getting_started/install/cluster/vms/index.html) - - [**vLLM**](https://db-gpt.readthedocs.io/projects/db-gpt-docs-zh-cn/zh_CN/latest/getting_started/install/llm/vllm/vllm.html) +[**教程**](https://www.yuque.com/eosphoros/dbgpt-docs/bex30nsv60ru0fmx) +- [**快速开始**](https://www.yuque.com/eosphoros/dbgpt-docs/ew0kf1plm0bru2ga) + - [**源码安装**](https://www.yuque.com/eosphoros/dbgpt-docs/urh3fcx8tu0s9xmb) + - [**Docker安装**](https://www.yuque.com/eosphoros/dbgpt-docs/glf87qg4xxcyrp89) + - [**Docker Compose安装**](https://www.yuque.com/eosphoros/dbgpt-docs/wwdu11e0v5nkfzin) +- [**产品使用手册**](https://www.yuque.com/eosphoros/dbgpt-docs/tkspdd0tcy2vlnu4) + - [**数据对话**](https://www.yuque.com/eosphoros/dbgpt-docs/gd9hbhi1dextqgbz) + - [**知识库**](https://www.yuque.com/eosphoros/dbgpt-docs/ycyz3d9b62fccqxh) + - [**ChatExcel**](https://www.yuque.com/eosphoros/dbgpt-docs/prugoype0xd2g4bb) + - [**数据库对话**](https://www.yuque.com/eosphoros/dbgpt-docs/wswpv3zcm2c9snmg) + - [**报表分析**](https://www.yuque.com/eosphoros/dbgpt-docs/vsv49p33eg4p5xc1) + - [**插件**](https://www.yuque.com/eosphoros/dbgpt-docs/pom41m7oqtdd57hm) +- [**如何部署模型服务**](https://www.yuque.com/eosphoros/dbgpt-docs/vubxiv9cqed5mc6o) + - [**单机部署**](https://www.yuque.com/eosphoros/dbgpt-docs/kwg1ed88lu5fgawb) + - [**集群部署**](https://www.yuque.com/eosphoros/dbgpt-docs/gmbp9619ytyn2v1s) + - [**vLLM**](https://www.yuque.com/eosphoros/dbgpt-docs/bhy9igdvanx1uluf) - [**如何Debug**](https://db-gpt.readthedocs.io/en/latest/getting_started/observability.html) - [**FAQ**](https://db-gpt.readthedocs.io/en/latest/getting_started/faq/deploy/deploy_faq.html) ## 特性一览 - -目前我们已经发布了多种关键的特性,这里一一列举展示一下当前发布的能力。 - -- 私域问答&数据处理 +- **私域问答&数据处理&RAG** 支持内置、多文件格式上传、插件自抓取等方式自定义构建知识库,对海量结构化,非结构化数据做统一向量存储与检索 - -- 多数据源&可视化 + +- **多数据源&GBI** 支持自然语言与Excel、数据库、数仓等多种数据源交互,并支持分析报告。 -- 自动化微调 +- **自动化微调** 围绕大语言模型、Text2SQL数据集、LoRA/QLoRA/Pturning等微调方法构建的自动化微调轻量框架, 让TextSQL微调像流水线一样方便。详见: [DB-GPT-Hub](https://github.com/eosphoros-ai/DB-GPT-Hub) -- Multi-Agents&Plugins +- **Data-Driven Multi-Agents&Plugins** 支持自定义插件执行任务,原生支持Auto-GPT插件模型,Agents协议采用Agent Protocol标准 -- 多模型支持与管理 +- **多模型支持与管理** + + 海量模型支持,包括开源、API代理等几十种大语言模型。如LLaMA/LLaMA2、Baichuan、ChatGLM、文心、通义、智谱等。当前已支持如下模型: - 海量模型支持,包括开源、API代理等几十种大语言模型。如LLaMA/LLaMA2、Baichuan、ChatGLM、文心、通义、智谱等。 - - 支持多种大语言模型, 当前已支持如下模型: - [Vicuna](https://huggingface.co/Tribbiani/vicuna-13b) - [vicuna-13b-v1.5](https://huggingface.co/lmsys/vicuna-13b-v1.5) - [LLama2](https://huggingface.co/meta-llama/Llama-2-7b-chat-hf) - - [baichuan2-13b](https://huggingface.co/baichuan-inc) - - [baichuan-7B](https://huggingface.co/baichuan-inc/baichuan-7B) + - [baichuan2-13b](https://huggingface.co/baichuan-inc/Baichuan2-13B-Chat) + - [baichuan2-7b](https://huggingface.co/baichuan-inc/Baichuan2-7B-Chat) - [chatglm-6b](https://huggingface.co/THUDM/chatglm-6b) - [chatglm2-6b](https://huggingface.co/THUDM/chatglm2-6b) + - [chatglm3-6b](https://huggingface.co/THUDM/chatglm3-6b) - [falcon-40b](https://huggingface.co/tiiuae/falcon-40b) - [internlm-chat-7b](https://huggingface.co/internlm/internlm-chat-7b) - - [Qwen-7B-Chat/Qwen-14B-Chat](https://huggingface.co/Qwen/) - - [RWKV-4-Raven](https://huggingface.co/BlinkDL/rwkv-4-raven) - - [CAMEL-13B-Combined-Data](https://huggingface.co/camel-ai/CAMEL-13B-Combined-Data) - - [dolly-v2-12b](https://huggingface.co/databricks/dolly-v2-12b) - - [h2ogpt-gm-oasst1-en-2048-open-llama-7b](https://huggingface.co/h2oai/h2ogpt-gm-oasst1-en-2048-open-llama-7b) - - [fastchat-t5-3b-v1.0](https://huggingface.co/lmsys/fastchat-t5) - - [mpt-7b-chat](https://huggingface.co/mosaicml/mpt-7b-chat) - - [gpt4all-13b-snoozy](https://huggingface.co/nomic-ai/gpt4all-13b-snoozy) - - [Nous-Hermes-13b](https://huggingface.co/NousResearch/Nous-Hermes-13b) - - [codet5p-6b](https://huggingface.co/Salesforce/codet5p-6b) - - [guanaco-33b-merged](https://huggingface.co/timdettmers/guanaco-33b-merged) - - [WizardLM-13B-V1.0](https://huggingface.co/WizardLM/WizardLM-13B-V1.0) - - [WizardLM/WizardCoder-15B-V1.0](https://huggingface.co/WizardLM/WizardCoder-15B-V1.0) - - [Llama2-Chinese-13b-Chat](https://huggingface.co/FlagAlpha/Llama2-Chinese-13b-Chat) - - [OpenLLaMa OpenInstruct](https://huggingface.co/VMware/open-llama-7b-open-instruct) + - [internlm-chat-20b](https://huggingface.co/internlm/internlm-chat-20b) + - [qwen-7b-chat](https://huggingface.co/Qwen/Qwen-7B-Chat) + - [qwen-14b-chat](https://huggingface.co/Qwen/Qwen-14B-Chat) + - [wizardlm-13b](https://huggingface.co/WizardLM/WizardLM-13B-V1.2) + - [orca-2-7b](https://huggingface.co/microsoft/Orca-2-7b) + - [orca-2-13b](https://huggingface.co/microsoft/Orca-2-13b) + - [openchat_3.5](https://huggingface.co/openchat/openchat_3.5) + - [zephyr-7b-alpha](https://huggingface.co/HuggingFaceH4/zephyr-7b-alpha) + - [mistral-7b-instruct-v0.1](https://huggingface.co/mistralai/Mistral-7B-Instruct-v0.1) + - [Yi-34B-Chat](https://huggingface.co/01-ai/Yi-34B-Chat) + - 支持在线代理模型 - [x] [ChatGPT](https://api.openai.com/) - [x] [Tongyi](https://www.aliyun.com/product/dashscope) - [x] [Wenxin](https://cloud.baidu.com/product/wenxinworkshop?track=dingbutonglan) - [x] [ChatGLM](http://open.bigmodel.cn/) -- 隐私安全 +- **隐私安全** 通过私有化大模型、代理脱敏等多种技术保障数据的隐私安全。 @@ -192,22 +169,23 @@ DB-GPT 是一个开源的以数据库为基础的GPT实验项目,使用本地 | [StarRocks](https://github.com/StarRocks/starrocks) | No | TODO | ## 架构方案 -DB-GPT基于 [FastChat](https://github.com/lm-sys/FastChat) 构建大模型运行环境。此外,我们通过LangChain提供私域知识库问答能力。同时我们支持插件模式, 在设计上原生支持Auto-GPT插件。我们的愿景是让围绕数据库和LLM构建应用程序更加简便和便捷。 - 整个DB-GPT的架构,如下图所示 -

-核心能力主要有以下几个部分。 -1. 多模型:支持多LLM,如LLaMA/LLaMA2、CodeLLaMA、ChatGLM、QWen、Vicuna以及代理模型ChatGPT、Baichuan、tongyi、wenxin等 -2. 私域知识库问答: 可以根据本地文档(如pdf、word、excel等数据)进行高质量的智能问答。 -3. 统一数据向量存储和索引: 将数据嵌入为向量并存储在向量数据库中,提供内容相似性搜索。 -4. 多数据源: 用于连接不同的模块和数据源,实现数据的流动和交互。 -5. Agent与插件: 提供Agent和插件机制,使得用户可以自定义并增强系统的行为。 -6. 隐私和安全: 您可以放心,没有数据泄露的风险,您的数据100%私密和安全。 -7. Text2SQL: 我们通过在大型语言模型监督微调(SFT)来增强文本到SQL的性能 +核心能力主要有以下几个部分: +- **RAG(Retrieval Augmented Generation)**,RAG是当下落地实践最多,也是最迫切的领域,DB-GPT目前已经实现了一套基于RAG的框架,用户可以基于DB-GPT的RAG能力构建知识类应用。 + +- **GBI**:生成式BI是DB-GPT项目的核心能力之一,为构建企业报表分析、业务洞察提供基础的数智化技术保障。 + +- **Fine-tune框架**: 模型微调是任何一个企业在垂直、细分领域落地不可或缺的能力,DB-GPT提供了完整的微调框架,实现与DB-GPT项目的无缝打通,在最近的微调中,基于spider的准确率已经做到了82.5% + +- **数据驱动的Multi-Agents框架**: DB-GPT提供了数据驱动的自进化微调框架,目标是可以持续基于数据做决策与执行。 + +- **数据工厂**: 数据工厂主要是在大模型时代,做可信知识、数据的清洗加工。 + +- **数据源**: 对接各类数据源,实现生产业务数据无缝对接到DB-GPT核心能力。 ### RAG生产落地实践架构

@@ -345,16 +323,6 @@ The MIT License (MIT) - SFT模型准确率 截止20231010,我们利用本项目基于开源的13B大小的模型微调后,在Spider的评估集上的执行准确率,已经超越GPT-4! -| 模型名称 | 执行准确率 | 说明 | -| ----------------------------------| ------------------ | ------------------------------------------------------------------------------------------------------------------------------ | -| **GPT-4** | **0.762** | [numbersstation-eval-res](https://www.numbersstation.ai/post/nsql-llama-2-7b) | -| ChatGPT | 0.728 | [numbersstation-eval-res](https://www.numbersstation.ai/post/nsql-llama-2-7b) | -| **CodeLlama-13b-Instruct-hf_lora**| **0.789** | sft train by our this project,only used spider train dataset ,the same eval way in this project with lora SFT | -| CodeLlama-13b-Instruct-hf_qlora | 0.774 | sft train by our this project,only used spider train dataset ,the same eval way in this project with qlora and nf4,bit4 SFT | -| wizardcoder | 0.610 | [text-to-sql-wizardcoder](https://github.com/cuplv/text-to-sql-wizardcoder/tree/main) | -| CodeLlama-13b-Instruct-hf | 0.556 | eval in this project default param | -| llama2_13b_hf_lora_best | 0.744 | sft train by our this project,only used spider train dataset ,the same eval way in this project | - [More Information about Text2SQL finetune](https://github.com/eosphoros-ai/DB-GPT-Hub) ## 联系我们 diff --git a/assets/schema/history.sql b/assets/schema/history.sql deleted file mode 100644 index 3323b73a0..000000000 --- a/assets/schema/history.sql +++ /dev/null @@ -1,18 +0,0 @@ -CREATE DATABASE history; -use history; -CREATE TABLE `chat_feed_back` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `conv_uid` varchar(128) DEFAULT NULL COMMENT '会话id', - `conv_index` int(4) DEFAULT NULL COMMENT '第几轮会话', - `score` int(1) DEFAULT NULL COMMENT '评分', - `ques_type` varchar(32) DEFAULT NULL COMMENT '用户问题类别', - `question` longtext DEFAULT NULL COMMENT '用户问题', - `knowledge_space` varchar(128) DEFAULT NULL COMMENT '知识库', - `messages` longtext DEFAULT NULL COMMENT '评价详情', - `user_name` varchar(128) DEFAULT NULL COMMENT '评价人', - `gmt_created` datetime DEFAULT NULL, - `gmt_modified` datetime DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `uk_conv` (`conv_uid`,`conv_index`), - KEY `idx_conv` (`conv_uid`,`conv_index`) -) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COMMENT='用户评分反馈表'; \ No newline at end of file diff --git a/assets/schema/knowledge_management.sql b/assets/schema/knowledge_management.sql index 95ed760e6..18f632b14 100644 --- a/assets/schema/knowledge_management.sql +++ b/assets/schema/knowledge_management.sql @@ -1,5 +1,15 @@ -CREATE DATABASE knowledge_management; -use knowledge_management; +-- You can change `dbgpt` to your actual metadata database name in your `.env` file +-- eg. `LOCAL_DB_NAME=dbgpt` + +CREATE DATABASE IF NOT EXISTS dbgpt; +use dbgpt; + +-- For alembic migration tool +CREATE TABLE `alembic_version` ( + version_num VARCHAR(32) NOT NULL, + CONSTRAINT alembic_version_pkc PRIMARY KEY (version_num) +); + CREATE TABLE `knowledge_space` ( `id` int NOT NULL AUTO_INCREMENT COMMENT 'auto increment id', `name` varchar(100) NOT NULL COMMENT 'knowledge space name', @@ -26,6 +36,7 @@ CREATE TABLE `knowledge_document` ( `content` LONGTEXT NOT NULL COMMENT 'knowledge embedding sync result', `result` TEXT NULL COMMENT 'knowledge content', `vector_ids` LONGTEXT NULL COMMENT 'vector_ids', + `summary` LONGTEXT NULL COMMENT 'knowledge summary', `gmt_created` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT 'created time', `gmt_modified` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'update time', PRIMARY KEY (`id`), @@ -45,6 +56,102 @@ CREATE TABLE `document_chunk` ( KEY `idx_document_id` (`document_id`) COMMENT 'index:document_id' ) ENGINE=InnoDB AUTO_INCREMENT=100001 DEFAULT CHARSET=utf8mb4 COMMENT='knowledge document chunk detail'; + + +CREATE TABLE `connect_config` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'autoincrement id', + `db_type` varchar(255) NOT NULL COMMENT 'db type', + `db_name` varchar(255) NOT NULL COMMENT 'db name', + `db_path` varchar(255) DEFAULT NULL COMMENT 'file db path', + `db_host` varchar(255) DEFAULT NULL COMMENT 'db connect host(not file db)', + `db_port` varchar(255) DEFAULT NULL COMMENT 'db cnnect port(not file db)', + `db_user` varchar(255) DEFAULT NULL COMMENT 'db user', + `db_pwd` varchar(255) DEFAULT NULL COMMENT 'db password', + `comment` text COMMENT 'db comment', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_db` (`db_name`), + KEY `idx_q_db_type` (`db_type`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT 'Connection confi'; + +CREATE TABLE `chat_history` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'autoincrement id', + `conv_uid` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Conversation record unique id', + `chat_mode` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Conversation scene mode', + `summary` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Conversation record summary', + `user_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'interlocutor', + `messages` text COLLATE utf8mb4_unicode_ci COMMENT 'Conversation details', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT 'Chat history'; + +CREATE TABLE `chat_feed_back` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `conv_uid` varchar(128) DEFAULT NULL COMMENT 'Conversation ID', + `conv_index` int(4) DEFAULT NULL COMMENT 'Round of conversation', + `score` int(1) DEFAULT NULL COMMENT 'Score of user', + `ques_type` varchar(32) DEFAULT NULL COMMENT 'User question category', + `question` longtext DEFAULT NULL COMMENT 'User question', + `knowledge_space` varchar(128) DEFAULT NULL COMMENT 'Knowledge space name', + `messages` longtext DEFAULT NULL COMMENT 'The details of user feedback', + `user_name` varchar(128) DEFAULT NULL COMMENT 'User name', + `gmt_created` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'created time', + `gmt_modified` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'update time', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_conv` (`conv_uid`,`conv_index`), + KEY `idx_conv` (`conv_uid`,`conv_index`) +) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COMMENT='User feedback table'; + + +CREATE TABLE `my_plugin` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'autoincrement id', + `tenant` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'user tenant', + `user_code` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'user code', + `user_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'user name', + `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'plugin name', + `file_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'plugin package file name', + `type` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'plugin type', + `version` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'plugin version', + `use_count` int DEFAULT NULL COMMENT 'plugin total use count', + `succ_count` int DEFAULT NULL COMMENT 'plugin total success count', + `gmt_created` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT 'plugin install time', + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='User plugin table'; + +CREATE TABLE `plugin_hub` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'autoincrement id', + `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'plugin name', + `description` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'plugin description', + `author` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'plugin author', + `email` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'plugin author email', + `type` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'plugin type', + `version` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'plugin version', + `storage_channel` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'plugin storage channel', + `storage_url` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'plugin download url', + `download_param` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'plugin download param', + `gmt_created` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT 'plugin upload time', + `installed` int DEFAULT NULL COMMENT 'plugin already installed count', + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Plugin Hub table'; + + +CREATE TABLE `prompt_manage` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `chat_scene` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Chat scene', + `sub_chat_scene` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Sub chat scene', + `prompt_type` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Prompt type: common or private', + `prompt_name` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'prompt name', + `content` longtext COLLATE utf8mb4_unicode_ci COMMENT 'Prompt content', + `user_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'User name', + `gmt_created` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'created time', + `gmt_modified` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'update time', + PRIMARY KEY (`id`), + UNIQUE KEY `prompt_name_uiq` (`prompt_name`), + KEY `gmt_created_idx` (`gmt_created`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Prompt management table'; + + + CREATE DATABASE EXAMPLE_1; use EXAMPLE_1; CREATE TABLE `users` ( diff --git a/assets/schema/prompt_management.sql b/assets/schema/prompt_management.sql deleted file mode 100644 index b2ed6de23..000000000 --- a/assets/schema/prompt_management.sql +++ /dev/null @@ -1,16 +0,0 @@ -CREATE DATABASE prompt_management; -use prompt_management; -CREATE TABLE `prompt_manage` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `chat_scene` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '场景', - `sub_chat_scene` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '子场景', - `prompt_type` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '类型: common or private', - `prompt_name` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'prompt的名字', - `content` longtext COLLATE utf8mb4_unicode_ci COMMENT 'prompt的内容', - `user_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户名', - `gmt_created` datetime DEFAULT NULL, - `gmt_modified` datetime DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `prompt_name_uiq` (`prompt_name`), - KEY `gmt_created_idx` (`gmt_created`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='prompt管理表'; \ No newline at end of file diff --git a/assets/wechat.jpg b/assets/wechat.jpg index 641de1489f9e2eef25a725d479aff5e3ca55693f..7a2ce6dd5ea7df6e33f6a2199901be9533cd4de5 100644 GIT binary patch literal 136373 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

o$%IUruf>M$YbH+HZO0| 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

DNCh-q|Bll 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 List: + countries = ["China", "US", "India", "Indonesia", "Pakistan"] # 国家列表 + cities = { + "China": ["Beijing", "Shanghai", "Guangzhou", "Shenzhen", "Hangzhou"], + "US": ["New York", "Los Angeles", "Chicago", "Houston", "Phoenix"], + "India": ["Mumbai", "Delhi", "Bangalore", "Hyderabad", "Chennai"], + "Indonesia": ["Jakarta", "Surabaya", "Medan", "Bandung", "Makassar"], + "Pakistan": ["Karachi", "Lahore", "Faisalabad", "Rawalpindi", "Multan"], + } + + users = [] + for i in range(1, len(names) + 1): + if grander == "Male": + id = int(str(countries.index(country) + 1) + "10") + i + else: + id = int(str(countries.index(country) + 1) + "20") + i + + name = names[i - 1] + email = f"{name}@example.com" + mobile = "".join(random.choices(string.digits, k=10)) + gender = grander + birth = f"19{random.randint(60, 99)}-{random.randint(1, 12):02d}-{random.randint(1, 28):02d}" + country = country + city = random.choice(cities[country]) + + now = datetime.now() + year = now.year + + start = datetime(year, 1, 1) + end = datetime(year, 12, 31) + random_date = start + timedelta(days=random.randint(0, (end - start).days)) + random_time = datetime.combine(random_date, datetime.min.time()) + timedelta( + seconds=random.randint(0, 24 * 60 * 60 - 1) + ) + + random_datetime_str = random_time.strftime("%Y-%m-%d %H:%M:%S") + create_time = random_datetime_str + users.append( + ( + id, + name, + email, + mobile, + gender, + birth, + country, + city, + create_time, + create_time, + ) + ) + return users + + +def gnerate_all_users(cursor): + users = [] + users_f = ["ZhangWei", "LiQiang", "ZhangSan", "LiSi"] + users.extend(user_build(users_f, "China", "Male")) + users_m = ["Hanmeimei", "LiMeiMei", "LiNa", "ZhangLi", "ZhangMing"] + users.extend(user_build(users_m, "China", "Female")) + + users1_f = ["James", "John", "David", "Richard"] + users.extend(user_build(users1_f, "US", "Male")) + users1_m = ["Mary", "Patricia", "Sarah"] + users.extend(user_build(users1_m, "US", "Female")) + + users2_f = ["Ravi", "Rajesh", "Ajay", "Arjun", "Sanjay"] + users.extend(user_build(users2_f, "India", "Male")) + users2_m = ["Priya", "Sushma", "Pooja", "Swati"] + users.extend(user_build(users2_m, "India", "Female")) + for user in users: + cursor.execute( + "INSERT INTO user (id, name, email, mobile, gender, birth, country, city, create_time, update_time) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", + user, + ) + + return users + + +def gnerate_all_orders(users, cursor): + orders = [] + orders_num = 200 + categories = ["Clothing", "Food", "Home Appliance", "Mother and Baby", "Travel"] + + categories_product = { + "Clothing": ["T-shirt", "Jeans", "Skirt", "Other"], + "Food": ["Snack", "Fruit"], + "Home Appliance": ["Refrigerator", "Television", "Air conditioner"], + "Mother and Baby": ["Diapers", "Milk Powder", "Stroller", "Toy"], + "Travel": ["Tent", "Fishing Rod", "Bike", "Rawalpindi", "Multan"], + } + + for i in range(1, orders_num + 1): + id = i + order_no = "".join(random.choices(string.ascii_uppercase, k=3)) + "".join( + random.choices(string.digits, k=10) + ) + product_category = random.choice(categories) + product_name = random.choice(categories_product[product_category]) + amount = round(random.uniform(0, 10000), 2) + pay_status = random.choice(["SUCCESS", "FAILD", "CANCEL", "REFUND"]) + user_id = random.choice(users)[0] + user_name = random.choice(users)[1] + + now = datetime.now() + year = now.year + + start = datetime(year, 1, 1) + end = datetime(year, 12, 31) + random_date = start + timedelta(days=random.randint(0, (end - start).days)) + random_time = datetime.combine(random_date, datetime.min.time()) + timedelta( + seconds=random.randint(0, 24 * 60 * 60 - 1) + ) + + random_datetime_str = random_time.strftime("%Y-%m-%d %H:%M:%S") + create_time = random_datetime_str + + order = ( + id, + order_no, + product_category, + product_name, + amount, + pay_status, + user_id, + user_name, + create_time, + ) + cursor.execute( + "INSERT INTO transaction_order (id, order_no, product_name, product_category, amount, pay_status, user_id, user_name, create_time) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)", + order, + ) + + +if __name__ == "__main__": + connection = pymysql.connect( + host=os.getenv("DB_HOST", "127.0.0.1"), + port=int( + os.getenv("DB_PORT", 3306), + ), + user=os.getenv("DB_USER", "root"), + password=os.getenv("DB_PASSWORD", "aa12345678"), + database=os.getenv("DB_DATABASE", "dbgpt_test"), + charset="utf8mb4", + ssl_ca=None, + ) + + build_table(connection) + + connection.commit() + + cursor = connection.cursor() + + users = gnerate_all_users(cursor) + connection.commit() + + gnerate_all_orders(users, cursor) + connection.commit() + + cursor.execute("SELECT * FROM user") + data = cursor.fetchall() + print(data) + + cursor.execute("SELECT count(*) FROM transaction_order") + data = cursor.fetchall() + print("orders:" + str(data)) + + cursor.close() + connection.close() diff --git a/docs/_static/css/custom.css b/docs/_static/css/custom.css new file mode 100644 index 000000000..f3bcfe7b5 --- /dev/null +++ b/docs/_static/css/custom.css @@ -0,0 +1,928 @@ +/* override default colors used in the Sphinx theme */ +:root { + --tabs-color-label-active: #0475DE; + --tabs-color-label-hover: #0475DE; + --buttons-color-blue: #0475DE; + --tabs-color-label-inactive: #9E9E9E; + --tabs-color-overline: #e0e0e0; + --tabs-color-underline: #e0e0e0; + --border-color-gray: #e0e0e0; + --background-color-light-gray:#fafafa; + --background-color-disabled: #9E9E9E; + --pst-color-link: 4, 117, 222; + --pst-color-primary: 4, 117, 222; + --pst-color-text-secondary: #616161; + --blue: #0475DE; + --sidebar-top: 5em; +} + +/* Remove flicker for announcement top bar replacement */ +.header-item.announcement { + background-color: white; + color: white; + padding: 0; +} + +/* Make the book theme secondary nav stick below the new main top nav */ +.header-article { + top: 58px; + z-index: 900 !important; +} + +.toctree-l1.has-children { + font-weight: bold; +} + +.toctree-l2 { + font-weight: normal; +} + +div.navbar-brand-box { + padding-top: 4em; +} + +td p { + margin-left: 0.75rem; +} + +table.longtable.table.autosummary { + table-layout: fixed; +} + +.table.autosummary td { + width: 100%; +} + +tr.row-odd { + background-color: #f9fafb; +} + +/* For Algolia search box + * overflow-y: to flow-over horizontally into main content + * height: to prevent topbar overlap +*/ +#site-navigation { + overflow-y: auto; + height: calc(100vh - var(--sidebar-top)); + position: sticky; + top: var(--sidebar-top) !important; +} + +/* Center the algolia search bar*/ +#search-input { + text-align: center; +} +.algolia-autocomplete { + width: 100%; + margin: auto; +} + +/* Hide confusing "<-" back arrow in navigation for larger displays */ +@media (min-width: 768px) { + #navbar-toggler { + display: none; + } +} + +/* Make navigation scrollable on mobile, by making algolia not overflow */ +@media (max-width: 768px) { + #site-navigation { + overflow-y: scroll; + } + + .algolia-autocomplete .ds-dropdown-menu{ + min-width: 250px; + } +} + +/* sphinx-panels overrides the content width to 1140 for large displays.*/ +@media (min-width: 1200px) { + .container, .container-lg, .container-md, .container-sm, .container-xl { + max-width: 1400px !important; + } +} + +.bottom-right-promo-banner { + position: fixed; + bottom: 100px; + right: 20px; + width: 270px; +} + +@media (max-width: 1500px) { + .bottom-right-promo-banner { + display: none; + } +} + +@media screen and (max-width: 767px) { + .remove-mobile { + display: none; + } + } + + @media screen and (max-width: 767px) { + .row-2-column { + flex-direction: column; + margin-top: 20px; + } + } + +/* Make Algolia search box scrollable */ +.algolia-autocomplete .ds-dropdown-menu { + height: 60vh !important; + overflow-y: scroll !important; +} + +.bd-sidebar__content { + overflow-y: unset !important; +} + +.bd-sidebar__top { + display: flex; + flex-direction: column; +} + +.bd-sidebar li { + position: relative; + word-wrap: break-word; +} + +nav.bd-links { + flex: 1; +} + +nav.bd-links::-webkit-scrollbar-thumb { + background-color: #ccc; +} + +nav.bd-links::-webkit-scrollbar { + width: 5px; +} + +dt:target, span.highlighted { + background-color: white; +} + +div.sphx-glr-bigcontainer { + display: inline-block; + width: 100%; +} + +td.tune-colab, +th.tune-colab { + border: 1px solid #dddddd; + text-align: left; + padding: 8px; +} + +/* Adjustment to Sphinx Book Theme */ +.table td { + /* Remove row spacing on the left */ + padding-left: 0; +} + +.table thead th { + /* Remove row spacing on the left */ + padding-left: 0; +} + +img.inline-figure { + /* Override the display: block for img */ + display: inherit !important; +} + +#version-warning-banner { + /* Make version warning clickable */ + z-index: 1; + margin-left: 0; + /* 20% is for ToC rightbar */ + /* 2 * 1.5625em is for horizontal margins */ + width: calc(100% - 20% - 2 * 1.5625em); +} + +/* allow scrollable images */ +.figure { + max-width: 100%; + overflow-x: auto; +} +img.horizontal-scroll { + max-width: none; +} + +.clear-both { + clear: both; + min-height: 100px; + margin-top: 15px; +} + +.buttons-float-left { + width: 150px; + float: left; +} + +.buttons-float-right { + width: 150px; + float: right; +} + +.card-body { + padding: 0.5rem !important; +} + +/* custom css for pre elements */ +pre { + /* Wrap code blocks instead of horizontal scrolling. */ + white-space: pre-wrap; + box-shadow: none; + border-color: var(--border-color-gray); + background-color: var(--background-color-light-gray); + border-radius:0.25em; +} + +/* notebook formatting */ +.cell .cell_output { + max-height: 250px; + overflow-y: auto; + font-weight: bold; +} + +/* Yellow doesn't render well on light background */ +.cell .cell_output pre .-Color-Yellow { + color: #785840; +} + +/* Newlines (\a) and spaces (\20) before each parameter */ +.sig-param::before { + content: "\a\20\20\20\20"; + white-space: pre; +} + +/* custom css for outlined buttons */ +.btn-outline-info:hover span, .btn-outline-primary:hover span { + color: #fff; +} + +.btn-outline-info, .btn-outline-primary{ + border-color: var(--buttons-color-blue); +} + +.btn-outline-info:hover, .btn-outline-primary:hover{ + border-color: var(--buttons-color-blue); + background-color: var(--buttons-color-blue); +} + +.btn-outline-info.active:not(:disabled):not(.disabled), .btn-outline-info:not(:disabled):not(.disabled):active, .show>.btn-outline-info.dropdown-toggle { + border-color: var(--buttons-color-blue); + background-color: var(--buttons-color-blue); + color: #fff; +} + +.btn-info, .btn-info:hover, .btn-info:focus { + border-color: var(--buttons-color-blue); + background-color: var(--buttons-color-blue); +} + +.btn-info:hover{ + opacity: 90%; +} + +.btn-info:disabled{ + border-color: var(--background-color-disabled); + background-color: var(--background-color-disabled); + opacity: 100%; +} + +.btn-info.active:not(:disabled):not(.disabled), .btn-info:not(:disabled):not(.disabled):active, .show>.btn-info.dropdown-toggle { + border-color: var(--buttons-color-blue); + background-color: var(--buttons-color-blue); +} + + +.topnav { + background-color: white; + border-bottom: 1px solid rgba(0, 0, 0, .1); + display: flex; + align-items: center; +} + +/* Content wrapper for the unified nav link / menus */ +.top-nav-content { + max-width: 1400px; + width: 100%; + margin-left: auto; + margin-right: auto; + padding: 0 1.5rem; + display: flex; + align-items: center; + justify-content: space-between; +} + +@media (max-width: 900px) { + /* If the window is too small, hide the custom sticky navigation bar at the top of the page. + Also make the pydata-sphinx-theme nav bar, which usually sits below the top nav bar, stick + to the top of the page. + */ + .top-nav-content { + display: none; + } + div.header-article.row.sticky-top.noprint { + position: sticky; + top: 0; + } +} + +/* Styling the links and menus in the top nav */ +.top-nav-content a { + text-decoration: none; + color: black; + font-size: 17px; +} + +.top-nav-content a:hover { + color: #007bff; +} + +/* The left part are the links and menus */ +.top-nav-content > .left { + display: flex; + white-space: nowrap; +} + +.top-nav-content .left > * { + margin-right: 8px; +} + +.top-nav-content .left > a, +.top-nav-content .left > .menu > a { + text-align: center; + padding: 14px 16px; + border-bottom: 2px solid white; +} + +.top-nav-content .menu:hover > a, +.top-nav-content .left > a:hover { + border-bottom: 2px solid #007bff; +} + +/* Special styling for the Ray logo */ +.top-nav-content .left > a.ray-logo { + width: 90px; + padding: 10px 0; +} +.top-nav-content .left > a.ray-logo:hover { + border-bottom: 2px solid white; +} + +/* Styling the dropdown menus */ +.top-nav-content .menu { + display: flex; +} +.top-nav-content .menu > a > .down-caret { + margin-left: 8px; +} +.top-nav-content .menu > ul { + display: none; +} + +.top-nav-content > button.try-anyscale > span { + margin: 0 12px; +} + +.top-nav-content .menu:hover > ul { + display: flex; + flex-direction: column; + align-items: flex-start; + box-shadow: 0 5px 15px 0 rgb(0 0 0 / 10%); + padding: 15px; + width: 330px; + position: absolute; + z-index: 2000; + background-color: white; + top: 58px; +} + +.top-nav-content .menu:hover > ul > li { + list-style: none; + padding: 5px 0; +} + +.top-nav-content .menu:hover > ul > li span { + display: block; +} + +.top-nav-content .menu:hover > ul > li span.secondary { + color: #787878; +} + +/* Styling the "Try Anyscale" button */ +.top-nav-content > button.try-anyscale { + float: right; + border-radius: 6px; + background-color: #e7f2fa; + padding-left: 12px; + padding-right: 12px; + margin-left: 12px; + height: 40px; + border: none; + white-space: nowrap; +} + +@media (max-width: 1000px) { + .top-nav-content > button.try-anyscale { + display: none; + } +} + +/* custom css for tabs*/ +.tabbed-set>label,.tabbed-set>label:hover { + border-bottom: 1px solid var(--border-color-gray); + color:var(--tabs-color-label-inactive); + font-weight: 500; +} + +.tabbed-set>input:checked+label{ + border-bottom: 0.125em solid; + color:var(--tabs-color-label-active); +} + + +.tabbed-label{ + margin-bottom:0; +} + +/* custom css for jupyter cells */ +div.cell div.cell_input{ + border: 1px var(--border-color-gray) solid; + background-color: var(--background-color-light-gray); + border-radius:0.25em; + border-left-color: var(--green); + border-left-width: medium; +} + +/* custom css for table */ +table { + border-color: var(--border-color-gray); +} + +/* custom css for topic component */ +div.topic{ + border: 1px solid var(--border-color-gray); + border-radius:0.25em; +} + +.topic { + background-color: var(--background-color-light-gray); +} + +/* custom css for card component */ +.card{ + border-color: var(--border-color-gray); +} + +.card-footer{ + background-color: var(--background-color-light-gray); + border-top-color: var(--border-color-gray); +} + +/* custom css for section navigation component */ +.bd-toc nav>.nav { + border-left-color: var(--border-color-gray); +} + +/* custom css for up and down arrows in collapsible cards */ +details.dropdown .summary-up, details.dropdown .summary-down { + top: 1em; +} + +/* remove focus border in collapsible admonition buttons */ +.toggle.admonition button.toggle-button:focus { + outline: none; +} + +/* custom css for shadow class */ +.shadow { + box-shadow: 0 0.2rem 0.5rem rgb(0 0 0 / 5%), 0 0 0.0625rem rgb(0 0 0 / 10%) !important; +} + +/* custom css for text area */ +textarea { + border-color: var(--border-color-gray); +} + +/* custom css for footer */ +footer { + margin-top: 1rem; + padding:1em 0; + border-top-color: var(--border-color-gray); +} + +.footer p{ + color: var(--pst-color-text-secondary); +} + +/* Make the hover color of tag/gallery buttons differ from "active" */ +.tag.btn-outline-primary:hover { + background-color: rgba(20, 99, 208, 0.62) !important; +} + +span.rst-current-version > span.fa.fa-book { + /* Move the book icon away from the top right + * corner of the version flyout menu */ + margin: 10px 0px 0px 5px; +} + + +/*Extends the docstring signature box.*/ +.rst-content dl:not(.docutils) dt { + display: block; + padding: 10px; + word-wrap: break-word; + padding-right: 100px; +} + +/*Lists in an admonition note do not have awkward whitespace below.*/ +.rst-content .admonition-note .section ul { + margin-bottom: 0; +} + +/*Properties become blue (classmethod, staticmethod, property)*/ +.rst-content dl dt em.property { + color: #2980b9; + text-transform: uppercase; +} + +.rst-content .section ol p, +.rst-content .section ul p { + margin-bottom: 0; +} + + +/* Adjustment to Version block */ +.rst-versions { + z-index: 1200 !important; +} + +.image-header { + display: flex; + flex-direction: row; + align-items: center; + padding-left: 16px; + padding-right:16px; + gap: 16px; +} + +.info-box { + box-shadow: 0px 4px 20px rgba(0, 0, 0, 0.05); + border-radius: 8px; + padding: 20px; +} + +.info-box:hover{ + box-shadow: 0px 4px 20px rgba(0, 0, 0, 0.1); +} + +.no-underline{ + text-decoration: none; +} +.no-underline:hover{ + text-decoration: none; +} + +.icon-hover:hover{ + height: 30px ; + width: 30px; +} + +.info-box-2 { + background-color: #F9FAFB; + border-radius: 8px; + padding-right: 16px; + padding-left: 16px; + padding-bottom: 24px; + padding-top: 4px; +} + + +.bold-link { + color: #000000 !important; + font-weight: 600; +} + +.community-box { + border: 1px solid #D2DCE6; + border-radius: 8px; + display: flex; + margin-bottom: 16px; +} + +.community-box:hover { + box-shadow: 0px 4px 20px rgba(0, 0, 0, 0.05); + text-decoration: none; +} + +.community-box p { + margin-top: 1rem !important; +} + +.tab-pane pre { + margin: 0; + padding: 0; + max-height: 252px; + overflow-y: auto; +} + +.grid-container { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px,1fr)); + grid-gap: 16px; +} + +.grid-item { +padding: 20px; +} + + +.nav-pills { + background-color: #F9FAFB; + color: #000000; + padding: 8px; + border-bottom:none; + border-radius: 8px; +} + +.nav-pills .nav-link.active { + background-color: #FFFFFF !important; + box-shadow: 0px 3px 14px 2px rgba(3,28,74,0.12); + border-radius: 8px; + padding: 20px; + color: #000000; + font-weight: 500; +} + +.searchDiv { + width: 100%; + position: relative; + display: block; +} + +.searchTerm { + width: 80%; + border: 2px solid var(--blue); + padding: 5px; + height: 45px; + border-radius: 5px; + outline: none; +} + +.searchButton { + width: 40px; + height: 45px; + border: 1px solid var(--blue); + background: var(--blue); + color: #fff; + border-radius: 5px; + cursor: pointer; + font-size: 20px; +} + +/*Resize the wrap to see the search bar change!*/ +.searchWrap { + width: 100%; + position: relative; + margin: 15px; + top: 50%; + left: 50%; + transform: translate(-50%, -10%); + text-align: center; +} + +.sd-card { + border: none !important; +} + +.tag { + margin-bottom: 5px; + font-size: small; +} + +/* Override float positioning of next-prev buttons so that + they take up space normally, and we can put other stuff at + the bottom of the page. */ +.prev-next-area { + display: flex; + flex-direction: row; +} +.prev-next-area a.left-prev { + margin-right: auto; + width: fit-content; + float: none; +} +.prev-next-area a.right-next { + margin-left: auto; + width: fit-content; + float: none; +} + +/* CSAT widgets */ +#csat-inputs { + display: flex; + flex-direction: row; + align-items: center; +} + +.csat-hidden { + display: none !important; +} + +#csat-feedback-label { + color: #000; + font-weight: 500; +} + +.csat-button { + margin-left: 16px; + padding: 8px 16px 8px 16px; + border-radius: 4px; + border: 1px solid #D2DCE6; + background: #FFF; + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + cursor: pointer; + width: 85px; +} + +#csat-textarea-group { + display: flex; + flex-direction: column; +} + +#csat-submit { + margin-left: auto; + font-weight: 700; + border: none; + margin-top: 12px; + cursor: pointer; +} + +#csat-feedback-received { + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; +} + +.csat-button-active { + border: 1px solid #000; +} + +.csat-icon { + margin-right: 4px; +} + +footer.col.footer { + display: flex; + flex-direction: row; +} + +footer.col.footer > p { + margin-left: auto; +} + +#csat { + min-width: 60%; +} + +#csat-textarea { + resize: none; +} + + +/* Ray Assistant */ + +.container-xl.blurred { + filter: blur(5px); +} + +.chat-widget { + position: fixed; + bottom: 10px; + right: 10px; + z-index: 1000; +} + +.chat-popup { + display: none; + position: fixed; + top: 20%; + left: 50%; + transform: translate(-50%, -20%); + width: 50%; + height: 70%; + background-color: white; + border: 1px solid #ccc; + border-radius: 10px; + box-shadow: 0 5px 10px rgba(0,0,0,0.1); + z-index: 1001; + max-height: 1000px; + overflow: hidden; + padding-bottom: 40px; +} + +.chatFooter { + position: absolute; + bottom: 0; + right: 0; + width: 100%; + background-color: #f8f9fa; +} + +#openChatBtn { + background-color: #000; + color: #fff; + width: 70px; + height: 70px; + border-radius: 10px; + border: none; + display: flex; + align-items: center; + justify-content: center; +} + +#closeChatBtn { + border: none; + background-color: transparent; + color: #000; + font-size: 1.2em; +} + +#closeChatBtn:hover { + color: #888; +} + +.chatHeader { + display: flex; + justify-content: space-between; + align-items: center; +} + +.chatContentContainer { + padding: 15px; + max-height: calc(100% - 80px); + overflow-y: auto; +} + +.chatContentContainer input { + margin-top: 10px; + margin-bottom: 10px; +} + +#result{ + padding: 15px; + border-radius: 10px; + margin-top: 10px; + margin-bottom: 10px; + background-color: #f8f9fa; + max-height: calc(100% - 20px); + overflow-y: auto; +} + +.chatContentContainer textarea { + flex-grow: 1; + min-width: 50px; + max-height: 40px; + resize: none; +} + +.searchBtn { + white-space: nowrap; +} + +.input-group { + display: flex; + align-items: stretch; +} + +/* Kapa Ask AI button */ +#kapa-widget-container figure { + padding: 0 !important; + } + + .mantine-Modal-root figure { + padding: 0 !important; + } + +@font-face { + font-family: "Linux Biolinum Keyboard"; + src: url(../fonts/LinBiolinum_Kah.ttf); +} + +.keys { + font-family: "Linux Biolinum Keyboard", sans-serif; +} + +.bd-article-container h1, .bd-article-container h2, .bd-article-container h3, .bd-article-container h4, .bd-article-container h5, .bd-article-container p.caption { + color: black; +} diff --git a/docs/_static/css/examples.css b/docs/_static/css/examples.css new file mode 100644 index 000000000..d1f416d15 --- /dev/null +++ b/docs/_static/css/examples.css @@ -0,0 +1,218 @@ + +#site-navigation { + width: 330px !important; + border-right: none; + margin-left: 32px; + overflow-y: auto; + max-height: calc(100vh - var(--sidebar-top)); + position: sticky; + top: var(--sidebar-top) !important; + z-index: 1000; +} + +#site-navigation h5 { + font-size: 16px; + font-weight: 600; + color: #000; +} + +#site-navigation h6 { + font-size: 14px; + font-weight: 600; + color: #000; + text-transform: uppercase; +} + +/* Hide the default sidebar content */ +#site-navigation > div.bd-sidebar__content { + display: none; +} +#site-navigation > div.rtd-footer-container { + display: none; +} + +.searchDiv { + margin-bottom: 2em; +} + +#searchInput { + width: 100%; + color: #5F6469; + border: 1px solid #D2DCE6; + height: 50px; + border-radius: 4px; + background-color: #F9FAFB; + background-image: url("data:image/svg+xml,%3Csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg id='Systems / search-line' clip-path='url(%23clip0_1_150)'%3E%3Crect width='24' height='24' transform='translate(0.398529 0.0546875)' fill='%23F9FAFB'/%3E%3Cg id='Group'%3E%3Cpath id='Vector' d='M18.4295 16.6717L22.7125 20.9537L21.2975 22.3687L17.0155 18.0857C15.4223 19.3629 13.4405 20.0576 11.3985 20.0547C6.43053 20.0547 2.39853 16.0227 2.39853 11.0547C2.39853 6.08669 6.43053 2.05469 11.3985 2.05469C16.3665 2.05469 20.3985 6.08669 20.3985 11.0547C20.4014 13.0967 19.7068 15.0784 18.4295 16.6717ZM16.4235 15.9297C17.6926 14.6246 18.4014 12.8751 18.3985 11.0547C18.3985 7.18669 15.2655 4.05469 11.3985 4.05469C7.53053 4.05469 4.39853 7.18669 4.39853 11.0547C4.39853 14.9217 7.53053 18.0547 11.3985 18.0547C13.219 18.0576 14.9684 17.3488 16.2735 16.0797L16.4235 15.9297V15.9297Z' fill='%238C9196'/%3E%3C/g%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_1_150'%3E%3Crect width='24' height='24' fill='white' transform='translate(0.398529 0.0546875)'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A"); + background-repeat: no-repeat; + background-position-x: 0.5em; + background-position-y: center; + background-size: 1.5em; + padding-left: 3em; +} + +#searchInput::placeholder { + color: #5F6469; + opacity: 1; +} + +.tag { + margin-bottom: 5px; + font-size: small; + color: #000000; + border: 1px solid #D2DCE6; + border-radius: 14px; + display: flex; + flex-direction: row; + align-items: center; + width: fit-content; + gap: 1em; +} + +.tag.btn-outline-primary { + color: #000000; + padding: 3px 12px 3px 12px; + line-height: 20px; +} + +.tag-btn-wrapper { + display: flex; + flex-direction: row; + flex-wrap: wrap; + gap: 1em; +} + +div.sd-container-fluid.docutils > div { + gap: var(--ray-example-gallery-gap-y) var(--ray-example-gallery-gap-x); + display: grid; + grid-template-columns: 1fr; +} + +/* Reflow to a 2-column format for normal screens */ +@media screen and (min-width: 768px) { + div.sd-container-fluid.docutils > div { + grid-template-columns: 1fr 1fr; + } +} + +div.gallery-item { + width: auto; +} + +div.gallery-item > div.sd-card { + border-radius: 8px; + box-shadow: 0px 4px 10px 0px rgba(0, 0, 0, 0.05) !important; +} + +/* Example gallery "Tutorial" title */ +div.sd-card-title > span.sd-bg-success.sd-bg-text-success { + color: #2F80ED !important; + font-weight: 500; + background: linear-gradient(180deg, rgba(25, 177, 226, 0.2) 0%, rgba(0, 109, 255, 0.2) 100%); + background-color: initial !important; +} + +/* Example gallery "Code example" title */ +div.sd-card-title > span.sd-bg-secondary.sd-bg-text-secondary { + color: #219653 !important; + font-weight: 500; + background: linear-gradient(180deg, rgba(29, 151, 108, 0.2) 0%, rgba(0, 226, 147, 0.2) 100%); + background-color: initial !important; +} + +/* Example gallery "Blog" title */ +div.sd-card-title > span.sd-bg-primary.sd-bg-text-primary { + color: #F2994A !important; + font-weight: 500; + background: linear-gradient(180deg, rgba(255, 230, 5, 0.2) 0%, rgba(255, 185, 80, 0.2) 100%); + background-color: initial !important; +} + +/* Example gallery "Video" title */ +div.sd-card-title > span.sd-bg-warning.sd-bg-text-warning { + color: #EB5757 !important; + font-weight: 500; + background: linear-gradient(180deg, rgba(150, 7, 7, 0.2) 0%, rgba(255, 115, 115, 0.2) 100%); + background-color: initial !important; +} + +/* Example gallery "Course" title */ +div.sd-card-title > span.sd-bg-info.sd-bg-text-info { + color: #7A64FF !important; + font-weight: 500; + background: linear-gradient(180deg, rgba(53, 25, 226, 0.2) 0%, rgba(183, 149, 255, 0.2) 100%); + background-color: initial !important; +} + +div.sd-card-body > p.sd-card-text > a { + text-align: initial; +} + +div.sd-card-body > p.sd-card-text > a > span { + color: rgb(81, 81, 81); +} + +#main-content { + max-width: 100%; +} + +#noMatches { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +#noMatchesInnerContent { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +#noMatches.hidden,.gallery-item.hidden { + display: none !important; +} + +.btn-primary { + color: #004293; + background: rgba(61, 138, 233, 0.20); + padding: 3px 12px 3px 12px; + border: 1px solid #D2DCE6; +} + +button.try-anyscale { + background-color: initial !important; + width: fit-content; + padding: 0 !important; + margin-left: auto !important; + float: initial !important; +} + +button.try-anyscale > svg { + display: none; +} + +button.try-anyscale > i { + display: none; +} + +button.try-anyscale > span { + margin: 0; + text-decoration-line: underline; + font-weight: 500; + color: #000; +} + +.top-nav-content { + justify-content: initial; +} + +/* Hide nav bar that has github, fullscreen, and print icons */ +div.header-article.row.sticky-top.noprint { + display: none !important; +} + +/* Hide the footer with 'prev article' and 'next article' buttons */ +.footer-article.hidden { + display: none !important; +} diff --git a/docs/_static/css/termynal.css b/docs/_static/css/termynal.css new file mode 100644 index 000000000..391a48078 --- /dev/null +++ b/docs/_static/css/termynal.css @@ -0,0 +1,108 @@ +/** + * termynal.js + * + * @author Ines Montani + * @version 0.0.1 + * @license MIT + */ + + :root { + --color-bg: #252a33; + --color-text: #eee; + --color-text-subtle: #a2a2a2; +} + +[data-termynal] { + width: auto; + max-width: 100%; + background: var(--color-bg); + color: var(--color-text); + font-size: 18px; + font-family: 'Fira Mono', Consolas, Menlo, Monaco, 'Courier New', Courier, monospace; + border-radius: 4px; + padding: 75px 45px 35px; + position: relative; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +[data-termynal]:before { + content: ''; + position: absolute; + top: 15px; + left: 15px; + display: inline-block; + width: 15px; + height: 15px; + border-radius: 50%; + /* A little hack to display the window buttons in one pseudo element. */ + background: #d9515d; + -webkit-box-shadow: 25px 0 0 #f4c025, 50px 0 0 #3ec930; + box-shadow: 25px 0 0 #f4c025, 50px 0 0 #3ec930; +} + +[data-termynal]:after { + content: 'bash'; + position: absolute; + color: var(--color-text-subtle); + top: 5px; + left: 0; + width: 100%; + text-align: center; +} + +[data-ty] { + display: block; + line-height: 2; +} + +[data-ty]:before { + /* Set up defaults and ensure empty lines are displayed. */ + content: ''; + display: inline-block; + vertical-align: middle; +} + +[data-ty="input"]:before, +[data-ty-prompt]:before { + margin-right: 0.75em; + color: var(--color-text-subtle); +} + +[data-ty="input"]:before { + content: '$'; +} + +[data-ty][data-ty-prompt]:before { + content: attr(data-ty-prompt); +} + +[data-ty-cursor]:after { + content: attr(data-ty-cursor); + font-family: monospace; + margin-left: 0.5em; + -webkit-animation: blink 1s infinite; + animation: blink 1s infinite; +} + +a[data-terminal-control] { + text-align: right; + display: block; + color: #aebbff; +} + + +/* Cursor animation */ + +@-webkit-keyframes blink { + 50% { + opacity: 0; + } +} + +@keyframes blink { + 50% { + opacity: 0; + } +} + diff --git a/docs/_static/css/use_cases.css b/docs/_static/css/use_cases.css new file mode 100644 index 000000000..5678d2245 --- /dev/null +++ b/docs/_static/css/use_cases.css @@ -0,0 +1,23 @@ +.query-param-ref-wrapper { + display: flex; + justify-content: center; + align-items: center; + border: 1px solid #8C9196; + border-radius: 8px; +} + +.example-gallery-link { + padding: 1em 2em 1em 2em; + text-decoration: none !important; + color: black !important; + display: flex; + align-items: center; +} + +/* Shooting star icon next to gallery links */ +a.example-gallery-link::before { + content: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg id='Group'%3E%3Cpath id='Vector' d='M15.199 9.945C14.7653 9.53412 14.4863 8.98641 14.409 8.394L14.006 5.311L11.276 6.797C10.7511 7.08302 10.1436 7.17943 9.55597 7.07L6.49997 6.5L7.06997 9.556C7.1794 10.1437 7.08299 10.7511 6.79697 11.276L5.31097 14.006L8.39397 14.409C8.98603 14.4865 9.53335 14.7655 9.94397 15.199L12.082 17.456L13.418 14.649C13.6744 14.1096 14.1087 13.6749 14.648 13.418L17.456 12.082L15.199 9.945ZM15.224 15.508L13.011 20.158C12.9691 20.2459 12.9065 20.3223 12.8285 20.3806C12.7505 20.4389 12.6594 20.4774 12.5633 20.4926C12.4671 20.5079 12.3686 20.4995 12.2764 20.4682C12.1842 20.4369 12.101 20.3836 12.034 20.313L8.49197 16.574C8.39735 16.4742 8.27131 16.41 8.13497 16.392L3.02797 15.724C2.93149 15.7113 2.83954 15.6753 2.76006 15.6191C2.68058 15.563 2.61596 15.4883 2.57177 15.4016C2.52758 15.3149 2.50514 15.2187 2.5064 15.1214C2.50765 15.0241 2.53256 14.9285 2.57897 14.843L5.04097 10.319C5.10642 10.198 5.12831 10.0582 5.10297 9.923L4.15997 4.86C4.14207 4.76417 4.14778 4.66541 4.17662 4.57229C4.20546 4.47916 4.25656 4.39446 4.3255 4.32553C4.39444 4.25659 4.47913 4.20549 4.57226 4.17665C4.66539 4.14781 4.76414 4.14209 4.85997 4.16L9.92297 5.103C10.0582 5.12834 10.198 5.10645 10.319 5.041L14.843 2.579C14.9286 2.53257 15.0242 2.50769 15.1216 2.50648C15.219 2.50528 15.3152 2.52781 15.4019 2.57211C15.4887 2.61641 15.5633 2.68116 15.6194 2.76076C15.6755 2.84036 15.7114 2.93242 15.724 3.029L16.392 8.135C16.4099 8.27134 16.4742 8.39737 16.574 8.492L20.313 12.034C20.3836 12.101 20.4369 12.1842 20.4682 12.2765C20.4995 12.3687 20.5079 12.4671 20.4926 12.5633C20.4774 12.6595 20.4389 12.7505 20.3806 12.8285C20.3223 12.9065 20.2459 12.9691 20.158 13.011L15.508 15.224C15.3835 15.2832 15.2832 15.3835 15.224 15.508ZM16.021 17.435L17.435 16.021L21.678 20.263L20.263 21.678L16.021 17.435Z' fill='black'/%3E%3C/g%3E%3C/svg%3E%0A"); + display: flex; + align-items: center; + margin-right: 0.5em; +} diff --git a/docs/conf.py b/docs/conf.py index 539153e4c..1fe4747f5 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -14,7 +14,7 @@ copyright = "2023, csunny" author = "csunny" -version = "👏👏 0.4.0" +version = "👏👏 0.4.2" html_title = project + " " + version # -- General configuration --------------------------------------------------- @@ -30,10 +30,24 @@ "myst_nb", "sphinx_copybutton", "sphinx_panels", + "sphinx_tabs.tabs", "IPython.sphinxext.ipython_console_highlighting", + "sphinx.ext.autosectionlabel", ] source_suffix = [".ipynb", ".html", ".md", ".rst"] + +myst_enable_extensions = [ + "dollarmath", + "amsmath", + "deflist", + "html_admonition", + "html_image", + "colon_fence", + "smartquotes", + "replacements", +] + # autodoc_pydantic_model_show_json = False # autodoc_pydantic_field_list_validators = False # autodoc_pydantic_config_members = False @@ -53,8 +67,18 @@ gettext_compact = False gettext_uuid = True + +def setup(app): + app.add_css_file("css/custom.css") + app.add_css_file("css/examples.css") + app.add_css_file("css/termynal.css") + # app.add_css_file("css/use_cases.css") + + # -- Options for HTML output ------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output -html_theme = "furo" +html_theme = "sphinx_book_theme" + + html_static_path = ["_static"] diff --git a/docs/getting_started/application/chatdb/chatdb.md b/docs/getting_started/application/chatdb/chatdb.md index 982953746..12a6aa8b6 100644 --- a/docs/getting_started/application/chatdb/chatdb.md +++ b/docs/getting_started/application/chatdb/chatdb.md @@ -4,6 +4,12 @@ ChatData generates SQL from natural language and executes it. ChatDB involves co Database, including metadata about databases, tables, and fields.![db plugins demonstration](https://github.com/eosphoros-ai/DB-GPT/assets/13723926/d8bfeee9-e982-465e-a2b8-1164b673847e) +```{admonition} The LLM (Language Model) suitable for the ChatData scene is +* chatgpt3.5. +* chatgpt4. +* Vicuna-v1.5. +``` + ### 1.Choose Datasource If you are using DB-GPT for the first time, you need to add a data source and set the relevant connection information diff --git a/docs/getting_started/application/chatexcel/chatexcel.md b/docs/getting_started/application/chatexcel/chatexcel.md index bdd67991c..3df00c720 100644 --- a/docs/getting_started/application/chatexcel/chatexcel.md +++ b/docs/getting_started/application/chatexcel/chatexcel.md @@ -3,6 +3,11 @@ ChatExcel ![db plugins demonstration](https://github.com/eosphoros-ai/DB-GPT/assets/13723926/4113ac15-83c2-4350-86c0-5fc795677abd) ChatExcel uses natural language to analyze and query Excel data.![db plugins demonstration](../../../../assets/chat_excel/chat_excel_1.png) +```{admonition} The LLM (Language Model) suitable for the ChatExcel scene is +* chatgpt3.5. +* chatgpt4. +``` + ### 1.Select And Upload Excel or CSV File Select your excel or csv file to upload and start the conversation. ```{tip} diff --git a/docs/getting_started/application/dashboard/dashboard.md b/docs/getting_started/application/dashboard/dashboard.md index 5cab32581..a233d0f24 100644 --- a/docs/getting_started/application/dashboard/dashboard.md +++ b/docs/getting_started/application/dashboard/dashboard.md @@ -4,6 +4,11 @@ The purpose of the DB-GPT Dashboard is to empower data analysts with efficiency. technology, allowing business analysts to perform self-service analysis directly using natural language and gain insights into their respective areas of business. +```{admonition} The LLM (Language Model) suitable for the Dashboard scene is +* chatgpt3.5. +* chatgpt4. +``` + ```{note} Dashboard now support Datasource Type * Mysql * Sqlite diff --git a/docs/getting_started/faq/deploy/deploy_faq.md b/docs/getting_started/faq/deploy/deploy_faq.md index 773e99794..b6083497c 100644 --- a/docs/getting_started/faq/deploy/deploy_faq.md +++ b/docs/getting_started/faq/deploy/deploy_faq.md @@ -100,8 +100,49 @@ pip install --use-pep517 fschat ``` ##### Q9: alembic.util.exc.CommandError: Target database is not up to date. -delete files in `DB-GPT/pilot/meta_data/alembic/versions/` and reboot. + +delete files in `DB-GPT/pilot/meta_data/alembic/versions/` and restart. ```commandline rm -rf DB-GPT/pilot/meta_data/alembic/versions/* rm -rf DB-GPT/pilot/meta_data/alembic/dbgpt.db ``` + +##### Q10: How to store DB-GPT metadata into my database + +In version 0.4.0, the metadata module of the DB-GPT application has been refactored. All metadata tables will now be automatically saved in the 'dbgpt' database, based on the database type specified in the `.env` file. If you would like to retain the existing data, it is recommended to use a data migration tool to transfer the database table information to the 'dbgpt' database. Additionally, you can change the default database name 'dbgpt' in your `.env` file. + +```commandline +### SQLite database (Current default database) +#LOCAL_DB_PATH=data/default_sqlite.db +#LOCAL_DB_TYPE=sqlite + +### Mysql database +LOCAL_DB_TYPE=mysql +LOCAL_DB_USER=root +LOCAL_DB_PASSWORD=aa12345678 +LOCAL_DB_HOST=127.0.0.1 +LOCAL_DB_PORT=3306 +# You can change it to your actual metadata database name +LOCAL_DB_NAME=dbgpt + +### This option determines the storage location of conversation records. The default is not configured to the old version of duckdb. It can be optionally db or file (if the value is db, the database configured by LOCAL_DB will be used) +CHAT_HISTORY_STORE_TYPE=db +``` + +##### Q11: pymysql.err.OperationalError: (1142, "ALTER command denied to user '{you db user}'@'{you db host}' for table '{some table name}'") + +In version 0.4.0, DB-GPT use migration tool alembic to migrate metadata. If the database user does not have DDL permissions, this error will be reported. You can solve this problem by importing the metadata information separately. + +1. Use a privileged user to execute DDL sql file +```bash +mysql -h127.0.0.1 -uroot -paa12345678 < ./assets/schema/knowledge_management.sql +``` + +2. Run DB-GPT webserver with `--disable_alembic_upgrade` +```bash +python pilot/server/dbgpt_server.py --disable_alembic_upgrade +``` +or +```bash +dbgpt start webserver --disable_alembic_upgrade +``` \ No newline at end of file diff --git a/docs/getting_started/faq/kbqa/kbqa_faq.md b/docs/getting_started/faq/kbqa/kbqa_faq.md index 61bdf2c18..7b3ea8780 100644 --- a/docs/getting_started/faq/kbqa/kbqa_faq.md +++ b/docs/getting_started/faq/kbqa/kbqa_faq.md @@ -72,7 +72,7 @@ $ mysql -h127.0.0.1 -uroot -paa12345678 < ./assets/schema/knowledge_management.s ##### Q6:when pull from 0.4.0, I found historical knowledge document disappeared -In version 0.4.0, the metadata module of the DB-GPT application has been refactored. All metadata tables will now be automatically saved in the 'dbgpt' database, based on the database type specified in the .env file. If you would like to retain the existing data, it is recommended to use a data migration tool to transfer the database table information to the 'dbgpt' database. +In version 0.4.0, the metadata module of the DB-GPT application has been refactored. All metadata tables will now be automatically saved in the 'dbgpt' database, based on the database type specified in the `.env` file. If you would like to retain the existing data, it is recommended to use a data migration tool to transfer the database table information to the 'dbgpt' database. Additionally, you can change the default database name 'dbgpt' in your `.env` file. ```{tip} old database:knowledge_management; @@ -89,5 +89,6 @@ LOCAL_DB_USER=root LOCAL_DB_PASSWORD=aa12345678 LOCAL_DB_HOST=127.0.0.1 LOCAL_DB_PORT=3306 - -``` \ No newline at end of file +# You can change it to your actual metadata database name +LOCAL_DB_NAME=dbgpt +``` diff --git a/docs/getting_started/faq/llm/llm_faq.md b/docs/getting_started/faq/llm/llm_faq.md index 7b4409d1f..53b8cf279 100644 --- a/docs/getting_started/faq/llm/llm_faq.md +++ b/docs/getting_started/faq/llm/llm_faq.md @@ -1,6 +1,6 @@ LLM USE FAQ ================================== -##### Q1:how to use openai chatgpt service +##### Q1: how to use openai chatgpt service change your LLM_MODEL in `.env` ````shell LLM_MODEL=proxyllm @@ -15,7 +15,7 @@ PROXY_SERVER_URL=https://api.openai.com/v1/chat/completions make sure your openapi API_KEY is available -##### Q2 What difference between `python dbgpt_server --light` and `python dbgpt_server` +##### Q2: What difference between `python dbgpt_server --light` and `python dbgpt_server` ```{note} * `python dbgpt_server --light` dbgpt_server does not start the llm service. Users can deploy the llm service separately by using `python llmserver`, and dbgpt_server accesses the llm service through set the LLM_SERVER environment variable in .env. The purpose is to allow for the separate deployment of dbgpt's backend service and llm service. @@ -35,7 +35,7 @@ python pilot/server/dbgpt_server.py --light ``` -##### Q3 How to use MultiGPUs +##### Q3: How to use MultiGPUs DB-GPT will use all available gpu by default. And you can modify the setting `CUDA_VISIBLE_DEVICES=0,1` in `.env` file to use the specific gpu IDs. @@ -52,7 +52,7 @@ CUDA_VISIBLE_DEVICES=3,4,5,6 python3 pilot/server/dbgpt_server.py You can modify the setting `MAX_GPU_MEMORY=xxGib` in `.env` file to configure the maximum memory used by each GPU. -##### Q4 Not Enough Memory +##### Q4: Not Enough Memory DB-GPT supported 8-bit quantization and 4-bit quantization. @@ -60,9 +60,9 @@ You can modify the setting `QUANTIZE_8bit=True` or `QUANTIZE_4bit=True` in `.env Llama-2-70b with 8-bit quantization can run with 80 GB of VRAM, and 4-bit quantization can run with 48 GB of VRAM. -Note: you need to install the latest dependencies according to [requirements.txt](https://github.com/eosphoros-ai/DB-GPT/blob/main/requirements.txt). +Note: you need to install the quantization dependencies with `pip install -e ".[quantization]"` -##### Q5 How to Add LLM Service dynamic local mode +##### Q5: How to Add LLM Service dynamic local mode Now DB-GPT through multi-llm service switch, so how to add llm service dynamic, @@ -75,7 +75,7 @@ eg: dbgpt model start --model_name chatglm2-6b --model_path /root/DB-GPT/models/ chatgpt eg: dbgpt model start --model_name chatgpt_proxyllm --model_path chatgpt_proxyllm --proxy_api_key ${OPENAI_KEY} --proxy_server_url {OPENAI_URL} ``` -##### Q6 How to Add LLM Service dynamic in remote mode +##### Q6: How to Add LLM Service dynamic in remote mode If you deploy llm service in remote machine instance, and you want to add model service to dbgpt server to manage use dbgpt start worker and set --controller_addr. @@ -88,13 +88,13 @@ eg: dbgpt start worker --model_name vicuna-13b-v1.5 \ ``` -##### Q7 dbgpt command not found +##### Q7: dbgpt command not found ```commandline pip install -e "pip install -e ".[default]" ``` -##### Q8 When starting the worker_manager on a cloud server and registering it with the controller, it is noticed that the worker's exposed IP is a private IP instead of a public IP, which leads to the inability to access the service. +##### Q8: When starting the worker_manager on a cloud server and registering it with the controller, it is noticed that the worker's exposed IP is a private IP instead of a public IP, which leads to the inability to access the service. ```commandline @@ -103,4 +103,14 @@ pip install -e "pip install -e ".[default]" automatically determined ``` +##### Q9: How to customize model path and prompt template + +DB-GPT will read the model path from `pilot.configs.model_config.LLM_MODEL_CONFIG` based on the `LLM_MODEL`. +Of course, you can use the environment variable `LLM_MODEL_PATH` to specify the model path and `LLM_PROMPT_TEMPLATE` to specify your model prompt template. + +``` +LLM_MODEL=vicuna-13b-v1.5 +LLM_MODEL_PATH=/app/models/vicuna-13b-v1.5 +# LLM_PROMPT_TEMPLATE=vicuna_v1.1 +``` diff --git a/docs/getting_started/install.rst b/docs/getting_started/install.rst index d6e6a15f8..645467e9e 100644 --- a/docs/getting_started/install.rst +++ b/docs/getting_started/install.rst @@ -18,7 +18,7 @@ DB-GPT product is a Web application that you can chat database, chat knowledge, :name: deploy :hidden: - ./install/deploy/deploy.md + ./install/deploy.rst ./install/docker/docker.md ./install/docker_compose/docker_compose.md ./install/cluster/cluster.rst diff --git a/docs/getting_started/install/cluster/cluster.rst b/docs/getting_started/install/cluster/cluster.rst index 93660d0a4..17895e7bc 100644 --- a/docs/getting_started/install/cluster/cluster.rst +++ b/docs/getting_started/install/cluster/cluster.rst @@ -77,3 +77,4 @@ By analyzing this information, we can identify performance bottlenecks in model ./vms/standalone.md ./vms/index.md + ./openai.md diff --git a/docs/getting_started/install/cluster/openai.md b/docs/getting_started/install/cluster/openai.md new file mode 100644 index 000000000..8f23ba0fa --- /dev/null +++ b/docs/getting_started/install/cluster/openai.md @@ -0,0 +1,51 @@ +OpenAI-Compatible RESTful APIs +================================== +(openai-apis-index)= + +### Install Prepare + +You must [deploy DB-GPT cluster](https://db-gpt.readthedocs.io/en/latest/getting_started/install/cluster/vms/index.html) first. + +### Launch Model API Server + +```bash +dbgpt start apiserver --controller_addr http://127.0.0.1:8000 --api_keys EMPTY +``` +By default, the Model API Server starts on port 8100. + +### Validate with cURL + +#### List models + +```bash +curl http://127.0.0.1:8100/api/v1/models \ +-H "Authorization: Bearer EMPTY" \ +-H "Content-Type: application/json" +``` + +#### Chat completions + +```bash +curl http://127.0.0.1:8100/api/v1/chat/completions \ +-H "Authorization: Bearer EMPTY" \ +-H "Content-Type: application/json" \ +-d '{"model": "vicuna-13b-v1.5", "messages": [{"role": "user", "content": "hello"}]}' +``` + +### Validate with OpenAI Official SDK + +#### Chat completions + +```python +import openai +openai.api_key = "EMPTY" +openai.api_base = "http://127.0.0.1:8100/api/v1" +model = "vicuna-13b-v1.5" + +completion = openai.ChatCompletion.create( + model=model, + messages=[{"role": "user", "content": "hello"}] +) +# print the completion +print(completion.choices[0].message.content) +``` \ No newline at end of file diff --git a/docs/getting_started/install/deploy.rst b/docs/getting_started/install/deploy.rst new file mode 100644 index 000000000..075a07403 --- /dev/null +++ b/docs/getting_started/install/deploy.rst @@ -0,0 +1,425 @@ +.. _installation: + +Installation From Source +============== + +To get started, install DB-GPT with the following steps. + + +1.Preparation +----------------- +**Download DB-GPT** + +.. code-block:: shell + + git clone https://github.com/eosphoros-ai/DB-GPT.git + +**Install Miniconda** + +We use Sqlite as default database, so there is no need for database installation. If you choose to connect to other databases, you can follow our tutorial for installation and configuration. +For the entire installation process of DB-GPT, we use the miniconda3 virtual environment. Create a virtual environment and install the Python dependencies. +`How to install Miniconda `_ + +.. code-block:: shell + + python>=3.10 + conda create -n dbgpt_env python=3.10 + conda activate dbgpt_env + # it will take some minutes + pip install -e ".[default]" + +.. code-block:: shell + + cp .env.template .env + +2.Deploy LLM Service +----------------- +DB-GPT can be deployed on servers with low hardware requirements or on servers with high hardware requirements. + +If you are low hardware requirements you can install DB-GPT by Using third-part LLM REST API Service OpenAI, Azure, tongyi. + +.. tip:: + + As our project has the ability to achieve OpenAI performance of over 85%, + + +.. note:: + + Notice make sure you have install git-lfs + + centos:yum install git-lfs + + ubuntu:apt-get install git-lfs + + macos:brew install git-lfs + +.. tabs:: + + .. tab:: OpenAI + + Installing Dependencies + + .. code-block:: + + pip install -e ".[openai]" + + Download embedding model + + .. code-block:: shell + + cd DB-GPT + mkdir models and cd models + + #### embedding model + git clone https://huggingface.co/GanymedeNil/text2vec-large-chinese + or + git clone https://huggingface.co/moka-ai/m3e-large + + Configure LLM_MODEL, PROXY_API_URL and API_KEY in `.env` file + + .. code-block:: shell + + LLM_MODEL=chatgpt_proxyllm + PROXY_API_KEY={your-openai-sk} + PROXY_SERVER_URL=https://api.openai.com/v1/chat/completions + + .. tip:: + + Make sure your .env configuration is not overwritten + + + .. tab:: Vicuna + `Vicuna-v1.5 `_ based on llama-2 has been released, we recommend you set `LLM_MODEL=vicuna-13b-v1.5` to try this model) + + .. list-table:: vicuna-v1.5 hardware requirements + :widths: 50 50 50 + :header-rows: 1 + + * - Model + - Quantize + - VRAM Size + * - vicuna-7b-v1.5 + - 4-bit + - 8 GB + * - vicuna-7b-v1.5 + - 8-bit + - 12 GB + * - vicuna-13b-v1.5 + - 4-bit + - 12 GB + * - vicuna-13b-v1.5 + - 8-bit + - 20 GB + + + .. code-block:: shell + + cd DB-GPT + mkdir models and cd models + + #### embedding model + git clone https://huggingface.co/GanymedeNil/text2vec-large-chinese + or + git clone https://huggingface.co/moka-ai/m3e-large + + #### llm model, if you use openai or Azure or tongyi llm api service, you don't need to download llm model + git clone https://huggingface.co/lmsys/vicuna-13b-v1.5 + + The model files are large and will take a long time to download. + + **Configure LLM_MODEL in `.env` file** + + + .. code-block:: shell + + LLM_MODEL=vicuna-13b-v1.5 + + .. tab:: Baichuan + + .. list-table:: Baichuan hardware requirements + :widths: 50 50 50 + :header-rows: 1 + + * - Model + - Quantize + - VRAM Size + * - baichuan-7b + - 4-bit + - 8 GB + * - baichuan-7b + - 8-bit + - 12 GB + * - baichuan-13b + - 4-bit + - 12 GB + * - baichuan-13b + - 8-bit + - 20 GB + + + .. code-block:: shell + + cd DB-GPT + mkdir models and cd models + + #### embedding model + git clone https://huggingface.co/GanymedeNil/text2vec-large-chinese + or + git clone https://huggingface.co/moka-ai/m3e-large + + #### llm model + git clone https://huggingface.co/baichuan-inc/Baichuan2-7B-Chat + or + git clone https://huggingface.co/baichuan-inc/Baichuan2-13B-Chat + + The model files are large and will take a long time to download. + + **Configure LLM_MODEL in `.env` file** + + please rename Baichuan path to "baichuan2-13b" or "baichuan2-7b" + + .. code-block:: shell + + LLM_MODEL=baichuan2-13b + + .. tab:: ChatGLM + + + .. code-block:: shell + + cd DB-GPT + mkdir models and cd models + + #### embedding model + git clone https://huggingface.co/GanymedeNil/text2vec-large-chinese + or + git clone https://huggingface.co/moka-ai/m3e-large + + #### llm model + git clone https://huggingface.co/THUDM/chatglm2-6b + + The model files are large and will take a long time to download. + + **Configure LLM_MODEL in `.env` file** + + please rename chatglm model path to "chatglm2-6b" + + .. code-block:: shell + + LLM_MODEL=chatglm2-6b + + .. tab:: Other LLM API + + Download embedding model + + .. code-block:: shell + + cd DB-GPT + mkdir models and cd models + + #### embedding model + git clone https://huggingface.co/GanymedeNil/text2vec-large-chinese + or + git clone https://huggingface.co/moka-ai/m3e-large + + Now DB-GPT support LLM REST API TYPE: + + .. note:: + + * OpenAI + * Azure + * Aliyun tongyi + * Baidu wenxin + * Zhipu + * Baichuan + * Bard + + Configure LLM_MODEL and PROXY_API_URL and API_KEY in `.env` file + + .. code-block:: shell + + #OpenAI + LLM_MODEL=chatgpt_proxyllm + PROXY_API_KEY={your-openai-sk} + PROXY_SERVER_URL=https://api.openai.com/v1/chat/completions + + #Azure + LLM_MODEL=chatgpt_proxyllm + PROXY_API_KEY={your-azure-sk} + PROXY_API_BASE=https://{your domain}.openai.azure.com/ + PROXY_API_TYPE=azure + PROXY_SERVER_URL=xxxx + PROXY_API_VERSION=2023-05-15 + PROXYLLM_BACKEND=gpt-35-turbo + + #Aliyun tongyi + LLM_MODEL=tongyi_proxyllm + TONGYI_PROXY_API_KEY={your-tongyi-sk} + PROXY_SERVER_URL={your_service_url} + + ## Baidu wenxin + LLM_MODEL=wenxin_proxyllm + PROXY_SERVER_URL={your_service_url} + WEN_XIN_MODEL_VERSION={version} + WEN_XIN_API_KEY={your-wenxin-sk} + WEN_XIN_SECRET_KEY={your-wenxin-sct} + + ## Zhipu + LLM_MODEL=zhipu_proxyllm + PROXY_SERVER_URL={your_service_url} + ZHIPU_MODEL_VERSION={version} + ZHIPU_PROXY_API_KEY={your-zhipu-sk} + + ## Baichuan + LLM_MODEL=bc_proxyllm + PROXY_SERVER_URL={your_service_url} + BAICHUN_MODEL_NAME={version} + BAICHUAN_PROXY_API_KEY={your-baichuan-sk} + BAICHUAN_PROXY_API_SECRET={your-baichuan-sct} + + ## bard + LLM_MODEL=bard_proxyllm + PROXY_SERVER_URL={your_service_url} + # from https://bard.google.com/ f12-> application-> __Secure-1PSID + BARD_PROXY_API_KEY={your-bard-token} + + .. tip:: + + Make sure your .env configuration is not overwritten + + .. tab:: llama.cpp + + DB-GPT already supports `llama.cpp `_ via `llama-cpp-python `_ . + + **Preparing Model Files** + + To use llama.cpp, you need to prepare a gguf format model file, and there are two common ways to obtain it, you can choose either: + + **1. Download a pre-converted model file.** + + Suppose you want to use `Vicuna 13B v1.5 `_ , you can download the file already converted from `TheBloke/vicuna-13B-v1.5-GGUF `_ , only one file is needed. Download it to the `models` directory and rename it to `ggml-model-q4_0.gguf`. + + .. code-block:: + + wget https://huggingface.co/TheBloke/vicuna-13B-v1.5-GGUF/resolve/main/vicuna-13b-v1.5.Q4_K_M.gguf -O models/ggml-model-q4_0.gguf + + **2. Convert It Yourself** + + You can convert the model file yourself according to the instructions in `llama.cpp#prepare-data--run `_ , and put the converted file in the models directory and rename it to `ggml-model-q4_0.gguf`. + + **Installing Dependencies** + + llama.cpp is an optional dependency in DB-GPT, and you can manually install it using the following command: + + .. code-block:: + + pip install -e ".[llama_cpp]" + + + **3.Modifying the Configuration File** + + Next, you can directly modify your `.env` file to enable llama.cpp. + + .. code-block:: + + LLM_MODEL=llama-cpp + llama_cpp_prompt_template=vicuna_v1.1 + + Then you can run it according to `Run `_ + + + **More Configurations** + + In DB-GPT, the model configuration can be done through `{model name}_{config key}`. + + .. list-table:: More Configurations + :widths: 50 50 50 + :header-rows: 1 + + * - Environment Variable Key + - Default + - Description + * - llama_cpp_prompt_template + - None + - Prompt template name, now support: zero_shot, vicuna_v1.1,alpaca,llama-2,baichuan-chat,internlm-chat, If None, the prompt template is automatically determined from model path。 + * - llama_cpp_model_path + - None + - Model path + * - llama_cpp_n_gpu_layers + - 1000000000 + - Number of layers to offload to the GPU, Set this to 1000000000 to offload all layers to the GPU. If your GPU VRAM is not enough, you can set a low number, eg: 10 + * - llama_cpp_n_threads + - None + - Number of threads to use. If None, the number of threads is automatically determined + * - llama_cpp_n_batch + - 512 + - Maximum number of prompt tokens to batch together when calling llama_eval + * - llama_cpp_n_gqa + - None + - Grouped-query attention. Must be 8 for llama-2 70b. + * - llama_cpp_rms_norm_eps + - 5e-06 + - 5e-6 is a good value for llama-2 models. + * - llama_cpp_cache_capacity + - None + - Maximum cache capacity. Examples: 2000MiB, 2GiB + * - llama_cpp_prefer_cpu + - False + - If a GPU is available, it will be preferred by default, unless prefer_cpu=False is configured. + + + .. tab:: vllm + + vLLM is a fast and easy-to-use library for LLM inference and serving. + + **Running vLLM** + + **1.Installing Dependencies** + + vLLM is an optional dependency in DB-GPT, and you can manually install it using the following command: + + .. code-block:: + + pip install -e ".[vllm]" + + **2.Modifying the Configuration File** + + Next, you can directly modify your .env file to enable vllm. + + .. code-block:: + + LLM_MODEL=vicuna-13b-v1.5 + MODEL_TYPE=vllm + + You can view the models supported by vLLM `here `_ + + Then you can run it according to `Run `_ + + + + + +3.Prepare sql example(Optional) +----------------- +**(Optional) load examples into SQLite** + +.. code-block:: shell + + bash ./scripts/examples/load_examples.sh + + +On windows platform: + +.. code-block:: shell + + .\scripts\examples\load_examples.bat + +4.Run db-gpt server +----------------- + +.. code-block:: shell + + python pilot/server/dbgpt_server.py + +**Open http://localhost:5000 with your browser to see the product.** + diff --git a/docs/getting_started/install/deploy/deploy.md b/docs/getting_started/install/deploy/deploy.md index b7ef6e44b..9317982d1 100644 --- a/docs/getting_started/install/deploy/deploy.md +++ b/docs/getting_started/install/deploy/deploy.md @@ -77,7 +77,7 @@ macos:brew install git-lfs ``` ##### Download LLM Model and Embedding Model -If you use OpenAI llm service, see [LLM Use FAQ](https://db-gpt.readthedocs.io/en/latest/getting_started/faq/llm/llm_faq.html) +If you use OpenAI llm service, see [How to Use LLM REST API](https://db-gpt.readthedocs.io/en/latest/getting_started/install/llm/proxyllm/proxyllm.html) ```{tip} If you use openai or Axzure or tongyi llm api service, you don't need to download llm model. diff --git a/docs/getting_started/install/environment/environment.md b/docs/getting_started/install/environment/environment.md index 4c8b23751..11aec8d40 100644 --- a/docs/getting_started/install/environment/environment.md +++ b/docs/getting_started/install/environment/environment.md @@ -6,7 +6,9 @@ LLM Model Name, see /pilot/configs/model_config.LLM_MODEL_CONFIG * LLM_MODEL=vicuna-13b MODEL_SERVER_ADDRESS + * MODEL_SERVER=http://127.0.0.1:8000 + LIMIT_MODEL_CONCURRENCY * LIMIT_MODEL_CONCURRENCY=5 @@ -59,11 +61,11 @@ Embedding Chunk size, default 500 Embedding Chunk Overlap, default 100 * KNOWLEDGE_CHUNK_OVERLAP=100 -embeding recall top k,5 +embedding recall top k,5 * KNOWLEDGE_SEARCH_TOP_SIZE=5 -embeding recall max token ,2000 +embedding recall max token ,2000 * KNOWLEDGE_SEARCH_MAX_TOKEN=5 ``` @@ -84,21 +86,6 @@ embeding recall max token ,2000 * WEAVIATE_URL=https://kt-region-m8hcy0wc.weaviate.network ``` -```{admonition} Vector Store SETTINGS -#### Chroma -* VECTOR_STORE_TYPE=Chroma -#### MILVUS -* VECTOR_STORE_TYPE=Milvus -* MILVUS_URL=127.0.0.1 -* MILVUS_PORT=19530 -* MILVUS_USERNAME -* MILVUS_PASSWORD -* MILVUS_SECURE= - -#### WEAVIATE -* WEAVIATE_URL=https://kt-region-m8hcy0wc.weaviate.network -``` - ```{admonition} Multi-GPU Setting See https://developer.nvidia.com/blog/cuda-pro-tip-control-gpu-visibility-cuda_visible_devices/ If CUDA_VISIBLE_DEVICES is not configured, all available gpus will be used diff --git a/docs/getting_started/install/llm/llm.rst b/docs/getting_started/install/llm/llm.rst index 185fd4b4f..c5f69c5fb 100644 --- a/docs/getting_started/install/llm/llm.rst +++ b/docs/getting_started/install/llm/llm.rst @@ -28,6 +28,7 @@ Multi LLMs Support, Supports multiple large language models, currently supportin :name: llama_cpp :hidden: + ./proxyllm/proxyllm.md ./llama/llama_cpp.md ./quantization/quantization.md ./vllm/vllm.md diff --git a/docs/getting_started/install/llm/proxyllm/proxyllm.md b/docs/getting_started/install/llm/proxyllm/proxyllm.md new file mode 100644 index 000000000..fae549dd3 --- /dev/null +++ b/docs/getting_started/install/llm/proxyllm/proxyllm.md @@ -0,0 +1,78 @@ +Proxy LLM API +================================== +Now DB-GPT supports connect LLM service through proxy rest api. + +LLM rest api now supports +```{note} +* OpenAI +* Azure +* Aliyun tongyi +* Baidu wenxin +* Zhipu +* Baichuan +* Bard +``` + + +### How to Integrate LLM rest API, like OpenAI, Azure, tongyi, wenxin llm api service? +update your `.env` file +```commandline +#OpenAI +LLM_MODEL=chatgpt_proxyllm +PROXY_API_KEY={your-openai-sk} +PROXY_SERVER_URL=https://api.openai.com/v1/chat/completions + +#Azure +LLM_MODEL=chatgpt_proxyllm +PROXY_API_KEY={your-azure-sk} +PROXY_API_BASE=https://{your domain}.openai.azure.com/ +PROXY_API_TYPE=azure +PROXY_SERVER_URL=xxxx +PROXY_API_VERSION=2023-05-15 +PROXYLLM_BACKEND=gpt-35-turbo + +#Aliyun tongyi +LLM_MODEL=tongyi_proxyllm +TONGYI_PROXY_API_KEY={your-tongyi-sk} +PROXY_SERVER_URL={your_service_url} + +## Baidu wenxin +LLM_MODEL=wenxin_proxyllm +PROXY_SERVER_URL={your_service_url} +WEN_XIN_MODEL_VERSION={version} +WEN_XIN_API_KEY={your-wenxin-sk} +WEN_XIN_SECRET_KEY={your-wenxin-sct} + +## Zhipu +LLM_MODEL=zhipu_proxyllm +PROXY_SERVER_URL={your_service_url} +ZHIPU_MODEL_VERSION={version} +ZHIPU_PROXY_API_KEY={your-zhipu-sk} + +## Baichuan +LLM_MODEL=bc_proxyllm +PROXY_SERVER_URL={your_service_url} +BAICHUN_MODEL_NAME={version} +BAICHUAN_PROXY_API_KEY={your-baichuan-sk} +BAICHUAN_PROXY_API_SECRET={your-baichuan-sct} + +## bard +LLM_MODEL=bard_proxyllm +PROXY_SERVER_URL={your_service_url} +# from https://bard.google.com/ f12-> application-> __Secure-1PSID +BARD_PROXY_API_KEY={your-bard-token} +``` +```{tip} +Make sure your .env configuration is not overwritten +``` + +### How to Integrate Embedding rest API, like OpenAI, Azure api service? + +```commandline +## Openai embedding model, See /pilot/model/parameter.py +EMBEDDING_MODEL=proxy_openai +proxy_openai_proxy_server_url=https://api.openai.com/v1 +proxy_openai_proxy_api_key={your-openai-sk} +proxy_openai_proxy_backend=text-embedding-ada-002 +``` + diff --git a/docs/index.rst b/docs/index.rst index 6a43c2534..56f851227 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -3,48 +3,58 @@ You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. -Welcome to DB-GPT! -================================== -| As large models are released and iterated upon, they are becoming increasingly intelligent. However, in the process of using large models, we face significant challenges in data security and privacy. We need to ensure that our sensitive data and environments remain completely controlled and avoid any data privacy leaks or security risks. Based on this, we have launched the DB-GPT project to build a complete private large model solution for all database-based scenarios. This solution supports local deployment, allowing it to be applied not only in independent private environments but also to be independently deployed and isolated according to business modules, ensuring that the ability of large models is absolutely private, secure, and controllable. +Overview +------------------ -| **DB-GPT** is an experimental open-source project that uses localized GPT large models to interact with your data and environment. With this solution, you can be assured that there is no risk of data leakage, and your data is 100% private and secure. +| DB-GPT is an open-source framework for large models in the databases fields. It's purpose is to build infrastructure for the domain of large models, making it easier and more convenient to develop applications around databases. By developing various technical capabilities such as: -| **Features** -Currently, we have released multiple key features, which are listed below to demonstrate our current capabilities: +1. **SMMF(Service-oriented Multi-model Management Framework)** +2. **Text2SQL Fine-tuning** +3. **RAG(Retrieval Augmented Generation) framework and optimization** +4. **Data-Driven Agents framework collaboration** +5. **GBI(Generative Business intelligence)** -- SQL language capabilities - - SQL generation - - SQL diagnosis +etc, DB-GPT simplifies the construction of large model applications based on databases. -- Private domain Q&A and data processing - - Database knowledge Q&A - - Data processing +| In the era of Data 3.0, enterprises and developers can build their own customized applications with less code, leveraging models and databases. -- Plugins - - Support custom plugin execution tasks and natively support the Auto-GPT plugin, such as: +Features +^^^^^^^^^^^ -- Unified vector storage/indexing of knowledge base - - Support for unstructured data such as PDF, Markdown, CSV, and WebURL +| **1. Private Domain Q&A & Data Processing** +| Supports custom construction of knowledge bases through methods such as built-in, multi-file format uploads, and plugin-based web scraping. Enables unified vector storage and retrieval of massive structured and unstructured data. + +| **2.Multi-Data Source & GBI(Generative Business intelligence)** +| Supports interaction between natural language and various data sources such as Excel, databases, and data warehouses. Also supports analysis reporting. + +| **3.SMMF(Service-oriented Multi-model Management Framework)** +| Supports a wide range of models, including dozens of large language models such as open-source models and API proxies. Examples include LLaMA/LLaMA2, Baichuan, ChatGLM, Wenxin, Tongyi, Zhipu, Xinghuo, etc. + +| **4.Automated Fine-tuning** +| A lightweight framework for automated fine-tuning built around large language models, Text2SQL datasets, and methods like LoRA/QLoRA/Pturning. Makes TextSQL fine-tuning as convenient as a production line. + +| **5.Data-Driven Multi-Agents & Plugins** +| Supports executing tasks through custom plugins and natively supports the Auto-GPT plugin model. Agents protocol follows the Agent Protocol standard. + +| **6.Privacy and Security** +| Ensures data privacy and security through techniques such as privatizing large models and proxy de-identification. -- Multi LLMs Support - - Supports multiple large language models, currently supporting Vicuna (7b, 13b), ChatGLM-6b (int4, int8) - - TODO: codegen2, codet5p Getting Started ------------------ -| How to get started using DB-GPT to interact with your data and environment. -- `Quickstart Guide <./getting_started/getting_started.html>`_ +^^^^^^^^^^^^^^^^^ + +| Quickstart + +- `Quickstart Guide <./getting_started/getting_started.html>`_ | Concepts and terminology - `Concepts and Terminology <./getting_started/concepts.html>`_ -| Coming soon... - -- `Tutorials <.getting_started/tutorials.html>`_ .. toctree:: :maxdepth: 2 :caption: Getting Started + :name: getting_started :hidden: getting_started/install.rst @@ -57,10 +67,9 @@ Getting Started Modules ---------- +^^^^^^^^^ -| These modules are the core abstractions with which we can interact with data and environment smoothly. -It's very important for DB-GPT, DB-GPT also provide standard, extendable interfaces. +| These modules are the core abstractions with which we can interact with data and environment smoothly. It's very important for DB-GPT, DB-GPT also provide standard, extendable interfaces. | The docs for each module contain quickstart examples, how to guides, reference docs, and conceptual guides. @@ -78,64 +87,23 @@ It's very important for DB-GPT, DB-GPT also provide standard, extendable interfa - `Vector <./modules/vector.html>`_: Supported multi vector database. +------------- + .. toctree:: :maxdepth: 2 :caption: Modules :name: modules :hidden: - ./modules/llms.md - ./modules/prompts.md - ./modules/plugins.md - ./modules/connections.rst - ./modules/knowledge.rst - ./modules/vector.rst - -Use Cases ---------- - -| Best Practices and built-in implementations for common DB-GPT use cases: - -- `Sql generation and diagnosis <./use_cases/sql_generation_and_diagnosis.html>`_: SQL generation and diagnosis. - -- `knownledge Based QA <./use_cases/knownledge_based_qa.html>`_: A important scene for user to chat with database documents, codes, bugs and schemas. - -- `Chatbots <./use_cases/chatbots.html>`_: Language model love to chat, use multi models to chat. - -- `Querying Database Data <./use_cases/query_database_data.html>`_: Query and Analysis data from databases and give charts. - -- `Interacting with apis <./use_cases/interacting_with_api.html>`_: Interact with apis, such as create a table, deploy a database cluster, create a database and so on. - -- `Tool use with plugins <./use_cases/tool_use_with_plugin>`_: According to Plugin use tools to manage databases autonomoly. - -.. toctree:: - :maxdepth: 2 - :caption: Use Cases - :name: use_cases - :hidden: - - ./use_cases/sql_generation_and_diagnosis.md - ./use_cases/knownledge_based_qa.md - ./use_cases/chatbots.md - ./use_cases/query_database_data.md - ./use_cases/interacting_with_api.md - ./use_cases/tool_use_with_plugin.md - -Reference ------------ -| Full documentation on all methods, classes, installation methods, and integration setups for DB-GPT. - -.. toctree:: - :maxdepth: 1 - :caption: Reference - :name: reference - :hidden: - - ./reference.md - + modules/llms.md + modules/prompts.md + modules/plugins.md + modules/connections.rst + modules/knowledge.rst + modules/vector.rst Resources ----------- +----------------- | Additional resources we think may be useful as you develop your application! diff --git a/docs/locales/zh_CN/LC_MESSAGES/getting_started/application/chatdb/chatdb.po b/docs/locales/zh_CN/LC_MESSAGES/getting_started/application/chatdb/chatdb.po index 974f74f9d..d9fbb60a9 100644 --- a/docs/locales/zh_CN/LC_MESSAGES/getting_started/application/chatdb/chatdb.po +++ b/docs/locales/zh_CN/LC_MESSAGES/getting_started/application/chatdb/chatdb.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: DB-GPT 👏👏 0.3.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-09-26 17:51+0800\n" +"POT-Creation-Date: 2023-11-03 15:33+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -20,12 +20,12 @@ msgstr "" "Generated-By: Babel 2.12.1\n" #: ../../getting_started/application/chatdb/chatdb.md:1 -#: 0cf45852c1fd430090da81836bc961c7 +#: c1489293ce464cee9577b0aa9a3f3037 msgid "ChatData & ChatDB" msgstr "ChatData & ChatDB" #: ../../getting_started/application/chatdb/chatdb.md:3 -#: 6dc94a787ff844caa21074d71aaf351a +#: 2c421938f270427dbd0ffff892b1a5a1 #, fuzzy msgid "" "ChatData generates SQL from natural language and executes it. ChatDB " @@ -38,47 +38,68 @@ msgstr "" "plugins demonstration](../../../../assets/chat_data/chat_data.jpg)" #: ../../getting_started/application/chatdb/chatdb.md:3 -#: ../../getting_started/application/chatdb/chatdb.md:20 -#: ../../getting_started/application/chatdb/chatdb.md:24 -#: ../../getting_started/application/chatdb/chatdb.md:28 -#: ../../getting_started/application/chatdb/chatdb.md:43 -#: ../../getting_started/application/chatdb/chatdb.md:48 +#: ../../getting_started/application/chatdb/chatdb.md:26 +#: ../../getting_started/application/chatdb/chatdb.md:30 +#: ../../getting_started/application/chatdb/chatdb.md:34 +#: ../../getting_started/application/chatdb/chatdb.md:49 #: ../../getting_started/application/chatdb/chatdb.md:54 -#: 826032e82a0a40b2bd122a90a35d0161 91652ef9e3224290b0c89112bcca4474 -#: d396ffa33eef4bef8471040369414420 d7f176a7794048d3ac3573970db86d9d -#: f80e5611eca64f86baeeed6c860061f9 +#: ../../getting_started/application/chatdb/chatdb.md:60 +#: 1467691a6012498795a94a14f7eba307 32315140835948c58e1721c7e2fa88a9 +#: 3b8e3c3396ff47348105a6dec9e755ba a314854e9be945dd88ad241bfa340870 +#: d94d5f0e608f4399a0e10d593f0ab1da e0ca6ec1841040bc828ce2ef29c387b6 msgid "db plugins demonstration" msgstr "db plugins demonstration" #: ../../getting_started/application/chatdb/chatdb.md:7 -#: aa0f978d3ad34b71aacf143a4c807ba1 +#: 67cb0954cfa54e629b75cf9a241f6b9d +#, fuzzy +msgid "The LLM (Language Model) suitable for the ChatData scene is" +msgstr "ChatData场景适用的LLM * chatgpt3.5. * chatgpt4. * Vicuna-v1.5." + +#: ../../getting_started/application/chatdb/chatdb.md:8 +#: c973e19574e2405a96eb003c64063bfc +msgid "chatgpt3.5." +msgstr "" + +#: ../../getting_started/application/chatdb/chatdb.md:9 +#: 649b2382378c416591db7038a269c33b +msgid "chatgpt4." +msgstr "" + +#: ../../getting_started/application/chatdb/chatdb.md:10 +#: fac49de88fe3409f818193b953714cb9 +msgid "Vicuna-v1.5." +msgstr "" + +#: ../../getting_started/application/chatdb/chatdb.md:13 +#: 8bd004993a834b0797ebcb5b6a6b1a23 msgid "1.Choose Datasource" msgstr "1.Choose Datasource" -#: ../../getting_started/application/chatdb/chatdb.md:9 -#: 8a2338e2fbae44f1b61b2fcf062499d3 +#: ../../getting_started/application/chatdb/chatdb.md:15 +#: 34abfdced7804b51a212c0e567ffda6b msgid "" "If you are using DB-GPT for the first time, you need to add a data source" " and set the relevant connection information for the data source." msgstr "如果你是第一次使用DB-GPT, 首先需要添加数据源,设置数据源的相关连接信息" -#: ../../getting_started/application/chatdb/chatdb.md:13 -#: f1d165ab8b564445880e581a2e554434 +#: ../../getting_started/application/chatdb/chatdb.md:19 +#: 3a8d16a8a32c4ac5affbd8093677b4f8 msgid "there are some example data in DB-GPT-NEW/DB-GPT/docker/examples" msgstr "在DB-GPT-NEW/DB-GPT/docker/examples有数据示例" -#: ../../getting_started/application/chatdb/chatdb.md:15 -#: dd390cb518094c96bf5430bfa821830f +#: ../../getting_started/application/chatdb/chatdb.md:21 +#: 2c3333a2705648148f79623c220d90cd msgid "you can execute sql script to generate data." msgstr "你可以通过执行sql脚本生成测试数据" -#: ../../getting_started/application/chatdb/chatdb.md:18 -#: aebd974d23124daa80af6d74431d1ce3 +#: ../../getting_started/application/chatdb/chatdb.md:24 +#: 4994182137574d14a3eefb421ceccd8e msgid "1.1 Datasource management" msgstr "1.1 Datasource management" -#: ../../getting_started/application/chatdb/chatdb.md:20 -#: af4d12aaed5c4fc484a3e7a755a666c2 +#: ../../getting_started/application/chatdb/chatdb.md:26 +#: 94680e1487d84092abc51a7da9bf1075 msgid "" "![db plugins demonstration](https://github.com/eosphoros-ai/DB-" "GPT/assets/13723926/7678f07e-9eee-40a9-b980-5b3978a0ed52)" @@ -86,13 +107,13 @@ msgstr "" "![db plugins demonstration](https://github.com/eosphoros-ai/DB-" "GPT/assets/13723926/7678f07e-9eee-40a9-b980-5b3978a0ed52)" -#: ../../getting_started/application/chatdb/chatdb.md:22 -#: 34b7b9ce0f0142af8179a8e1763a32f8 +#: ../../getting_started/application/chatdb/chatdb.md:28 +#: 236dbd6d6cb4467593bf30597ecb215c msgid "1.2 Connection management" msgstr "1.2 Connection管理" -#: ../../getting_started/application/chatdb/chatdb.md:24 -#: 00a1af9f4e0a45b9a398f641c8198114 +#: ../../getting_started/application/chatdb/chatdb.md:30 +#: 6611193e600c4452ac8a9769c6230590 msgid "" "![db plugins demonstration](https://github.com/eosphoros-ai/DB-" "GPT/assets/13723926/25b8f5a9-d322-459e-a8b2-bfe8cb42bdd6)" @@ -100,13 +121,13 @@ msgstr "" "![db plugins demonstration](https://github.com/eosphoros-ai/DB-" "GPT/assets/13723926/25b8f5a9-d322-459e-a8b2-bfe8cb42bdd6)" -#: ../../getting_started/application/chatdb/chatdb.md:26 -#: 3b8efc25b482480b8d0f4afe5304ece0 +#: ../../getting_started/application/chatdb/chatdb.md:32 +#: 7cceb9703af54970bee4a50fb07d4509 msgid "1.3 Add Datasource" msgstr "1.3 添加Datasource" -#: ../../getting_started/application/chatdb/chatdb.md:28 -#: d36a476e1eb34a46b2d35e6c1c4c39dd +#: ../../getting_started/application/chatdb/chatdb.md:34 +#: 83c9e18cb87b4f0d9b0ce5e68b7fea77 msgid "" "![db plugins demonstration](https://github.com/eosphoros-ai/DB-" "GPT/assets/13723926/19ce31a7-4061-4da8-a9cb-efca396cc085)" @@ -114,54 +135,54 @@ msgstr "" "![db plugins demonstration](https://github.com/eosphoros-ai/DB-" "GPT/assets/13723926/19ce31a7-4061-4da8-a9cb-efca396cc085)" -#: ../../getting_started/application/chatdb/chatdb.md:31 -#: 9205388f91404099bf1add6d55f33801 +#: ../../getting_started/application/chatdb/chatdb.md:37 +#: 143fb04274cd486687c5766179f6103e msgid "now DB-GPT support Datasource Type" msgstr "DB-GPT支持数据源类型" -#: ../../getting_started/application/chatdb/chatdb.md:33 -#: 197722ccd9e54f8196e3037f0ebd4165 +#: ../../getting_started/application/chatdb/chatdb.md:39 +#: 8bcf83e66b2d4d858407fc2b21b8fe85 msgid "Mysql" msgstr "Mysql" -#: ../../getting_started/application/chatdb/chatdb.md:34 -#: e859c194648440b19941a42635f37ac5 +#: ../../getting_started/application/chatdb/chatdb.md:40 +#: cd74abd5d6f4410ca001a3de2685e768 msgid "Sqlite" msgstr "Sqlite" -#: ../../getting_started/application/chatdb/chatdb.md:35 -#: 91c695f437064f01bf1d7c85a0ecf5b4 +#: ../../getting_started/application/chatdb/chatdb.md:41 +#: fc5e01baba43449f8c3eb9b4b36a0ed8 msgid "DuckDB" msgstr "DuckDB" -#: ../../getting_started/application/chatdb/chatdb.md:36 -#: 0a8ff591969c4944890415a84aa64173 +#: ../../getting_started/application/chatdb/chatdb.md:42 +#: 10b6fe2153cd4ceba949687a54c3a68c msgid "Clickhouse" msgstr "Clickhouse" -#: ../../getting_started/application/chatdb/chatdb.md:37 -#: d52ec849653141dc95862e82ce5777e0 +#: ../../getting_started/application/chatdb/chatdb.md:43 +#: 9ce0a41784f041d39138a81099c386e9 #, fuzzy msgid "Mssql" msgstr "Mysql" -#: ../../getting_started/application/chatdb/chatdb.md:38 -#: 430a72d857114422aeecd5595df41881 +#: ../../getting_started/application/chatdb/chatdb.md:44 +#: 4af6eb835e954e0d937e98b308fb512b msgid "Spark" msgstr "Spark" -#: ../../getting_started/application/chatdb/chatdb.md:41 -#: b615a70971e7443291ba33e8bc12b437 +#: ../../getting_started/application/chatdb/chatdb.md:47 +#: 8aaa3a73090b4805b2dddf1cc355d83c msgid "2.ChatData" msgstr "2.ChatData" -#: ../../getting_started/application/chatdb/chatdb.md:42 -#: e3542c64926143958e71c7cb21d25c78 +#: ../../getting_started/application/chatdb/chatdb.md:48 +#: a34c79c99bd34233ae92d3090ff0b877 msgid "Preview Mode" msgstr "Preview Mode" -#: ../../getting_started/application/chatdb/chatdb.md:43 -#: e32f26b7c22141e181b5345a644dffd5 +#: ../../getting_started/application/chatdb/chatdb.md:49 +#: 39e31a2a01494d4191d415a2240e026d #, fuzzy msgid "" "After successfully setting up the data source, you can start conversing " @@ -173,13 +194,13 @@ msgstr "" "设置数据源成功后就可以和数据库进行对话了。你可以让它帮你生成SQL,也可以和问它数据库元数据的相关信息。 ![db plugins " "demonstration](../../../../assets/chat_data/chatdata_eg.png)" -#: ../../getting_started/application/chatdb/chatdb.md:47 -#: 4d5c0465a01b4f5a964d0e803f9cbc89 +#: ../../getting_started/application/chatdb/chatdb.md:53 +#: 999c78e8b604493a8190b0e1258d0da4 msgid "Editor Mode" msgstr "Editor Mode" -#: ../../getting_started/application/chatdb/chatdb.md:48 -#: 79b088787e8f43258bcc4292c89ad1b0 +#: ../../getting_started/application/chatdb/chatdb.md:54 +#: e4a61d1e62c743f8b13dbed92ec265ba msgid "" "In Editor Mode, you can edit your sql and execute it. ![db plugins " "demonstration](https://github.com/eosphoros-ai/DB-" @@ -189,13 +210,13 @@ msgstr "" "/eosphoros-ai/DB-" "GPT/assets/13723926/1a896dc1-7c0e-4354-8629-30357ffd8d7f)" -#: ../../getting_started/application/chatdb/chatdb.md:52 -#: 9efaf27749614cd4bea07146edddf558 +#: ../../getting_started/application/chatdb/chatdb.md:58 +#: b3a0d94083524d249f97dd426e1e1f26 msgid "3.ChatDB" msgstr "3.ChatDB" -#: ../../getting_started/application/chatdb/chatdb.md:54 -#: b2dc15f067064c60974e532c3e2f5893 +#: ../../getting_started/application/chatdb/chatdb.md:60 +#: 8f4bd453447f48019a597eb3e4a59875 msgid "" "![db plugins demonstration](https://github.com/eosphoros-ai/DB-" "GPT/assets/13723926/e04bc1b1-2c58-4b33-af62-97e89098ace7)" diff --git a/docs/locales/zh_CN/LC_MESSAGES/getting_started/application/chatexcel/chatexcel.po b/docs/locales/zh_CN/LC_MESSAGES/getting_started/application/chatexcel/chatexcel.po index 47f93237c..08f842573 100644 --- a/docs/locales/zh_CN/LC_MESSAGES/getting_started/application/chatexcel/chatexcel.po +++ b/docs/locales/zh_CN/LC_MESSAGES/getting_started/application/chatexcel/chatexcel.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: DB-GPT 👏👏 0.3.6\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-29 21:14+0800\n" +"POT-Creation-Date: 2023-11-03 15:33+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -20,13 +20,13 @@ msgstr "" "Generated-By: Babel 2.12.1\n" #: ../../getting_started/application/chatexcel/chatexcel.md:1 -#: ../../getting_started/application/chatexcel/chatexcel.md:9 -#: 6efcbf4652954b27beb55f600cfe75c7 eefb0c3bc131439fb2dd4045761f1ae9 +#: ../../getting_started/application/chatexcel/chatexcel.md:14 +#: 5e9c1de21de240839a510b9e05afcba1 96556d6d1d734f67ab15e548c9fdce2f msgid "ChatExcel" msgstr "" #: ../../getting_started/application/chatexcel/chatexcel.md:3 -#: 5fc4ddd2690f46658df1e09c601d81ad +#: 19590f67feea4f2580602538b79cd138 #, fuzzy msgid "" "![db plugins demonstration](https://github.com/eosphoros-ai/DB-" @@ -36,61 +36,75 @@ msgid "" msgstr "使用自然语言进行Excel数据的分析处理" #: ../../getting_started/application/chatexcel/chatexcel.md:3 -#: ../../getting_started/application/chatexcel/chatexcel.md:13 -#: ../../getting_started/application/chatexcel/chatexcel.md:17 -#: ../../getting_started/application/chatexcel/chatexcel.md:21 -#: 4c91baf5f0b244abb021f461851674cc 4eead9a4f81e4855a5c362774696999c -#: 5f309a06170946108ae70806dff157ea 790016c9c68f4a29a84b7ef8e14d6dc2 -#: 93db1eb6af69452982f6028eff626a57 e758c8b320894e2b93f8db78459b7a1f -#: ea3c99f7eafc4ae0a19706a47e4c7bf6 f18d2b88de244173ab2673f2a5e828c0 +#: ../../getting_started/application/chatexcel/chatexcel.md:18 +#: ../../getting_started/application/chatexcel/chatexcel.md:22 +#: ../../getting_started/application/chatexcel/chatexcel.md:26 +#: 286462d6d79b4189bcd9d17937a96233 7009abd113244cc5badb8e90837dc9af +#: 7eb17d02534d4f77b7602f3756da0d5e f5c1cfd0f77d4199a45988114174c67f msgid "db plugins demonstration" msgstr "" #: ../../getting_started/application/chatexcel/chatexcel.md:6 -#: 45f137031025409ba2ada9c8f7c5f1e4 +#: 338f0b19314f4026b84a670d35056e6c +#, fuzzy +msgid "The LLM (Language Model) suitable for the ChatExcel scene is" +msgstr "ChatExcel场景适用的LLM 是 scene is * chatgpt3.5. * chatgpt4." + +#: ../../getting_started/application/chatexcel/chatexcel.md:7 +#: bc09e8af60b64a8fbeecedb927a5a854 +msgid "chatgpt3.5." +msgstr "" + +#: ../../getting_started/application/chatexcel/chatexcel.md:8 +#: e840c31d671946c190e27e1b7dd28647 +msgid "chatgpt4." +msgstr "" + +#: ../../getting_started/application/chatexcel/chatexcel.md:11 +#: 2a710e2650bb44ef9d4a1ee4b8225a35 msgid "1.Select And Upload Excel or CSV File" msgstr "" -#: ../../getting_started/application/chatexcel/chatexcel.md:7 -#: cd282be2b4ef49ea8b0eaa3d53042f22 +#: ../../getting_started/application/chatexcel/chatexcel.md:12 +#: df48b1003f3640cfa621e416f0405e8d msgid "Select your excel or csv file to upload and start the conversation." msgstr "选择你的Excel或者CSV文件上传开始对话" -#: ../../getting_started/application/chatexcel/chatexcel.md:11 -#: a5ebc8643eff4b44a951b28d85488143 +#: ../../getting_started/application/chatexcel/chatexcel.md:16 +#: 7ef5d5ebb634406ea4b566bbf5e30fd7 msgid "" "The ChatExcel function supports Excel and CSV format files, select the " "corresponding file to use." msgstr "ChatExcel功能支持Excel和CSV格式的文件,选择对应格式的文件开始使用" -#: ../../getting_started/application/chatexcel/chatexcel.md:13 -#: d52927be09654c8daf29e2ef0c60a671 +#: ../../getting_started/application/chatexcel/chatexcel.md:18 +#: 40c79b71820f44439b1f541db2be9dd9 msgid "" "![db plugins " "demonstration](../../../../assets/chat_excel/chat_excel_2.png) ![db " "plugins demonstration](../../../../assets/chat_excel/chat_excel_3.png)" msgstr "" -#: ../../getting_started/application/chatexcel/chatexcel.md:16 -#: d86202165fdc4da6be06024b45f9af55 +#: ../../getting_started/application/chatexcel/chatexcel.md:21 +#: 0dd469b6f56a442485392346065e345d msgid "2.Wait for Data Processing" msgstr "等待数据处理" -#: ../../getting_started/application/chatexcel/chatexcel.md:17 -#: 3de7205fbdc741e2b79996d67264c058 +#: ../../getting_started/application/chatexcel/chatexcel.md:22 +#: 0e9213342664465187981d6fea41e7ba msgid "" "After the data is uploaded, it will first learn and process the data " "structure and field meaning. ![db plugins " "demonstration](../../../../assets/chat_excel/chat_excel_4.png)" msgstr "等待数据上传完成,会自动进行数据结构的学习和处理" -#: ../../getting_started/application/chatexcel/chatexcel.md:20 -#: fb0620dec5a24b469ceccf86e918fe54 +#: ../../getting_started/application/chatexcel/chatexcel.md:25 +#: dd2047d1199542f7abda4767b953cfac msgid "3.Use Data Analysis Calculation" msgstr "开始使用数据分析计算" -#: ../../getting_started/application/chatexcel/chatexcel.md:21 -#: 221733f01fe04e38b19f191d4001c7a7 +#: ../../getting_started/application/chatexcel/chatexcel.md:26 +#: 4e168def205743c898586e99e34d3e18 msgid "" "Now you can use natural language to analyze and query data in the dialog " "box. ![db plugins " diff --git a/docs/locales/zh_CN/LC_MESSAGES/getting_started/application/dashboard/dashboard.po b/docs/locales/zh_CN/LC_MESSAGES/getting_started/application/dashboard/dashboard.po index 32686d68c..7ec08a868 100644 --- a/docs/locales/zh_CN/LC_MESSAGES/getting_started/application/dashboard/dashboard.po +++ b/docs/locales/zh_CN/LC_MESSAGES/getting_started/application/dashboard/dashboard.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: DB-GPT 👏👏 0.3.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-29 20:50+0800\n" +"POT-Creation-Date: 2023-11-03 15:33+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -20,12 +20,12 @@ msgstr "" "Generated-By: Babel 2.12.1\n" #: ../../getting_started/application/dashboard/dashboard.md:1 -#: 2a1224e675d144269e5cc3695d4d60b4 +#: 3e4ef12c51894e5d93adcbf090a4783b msgid "Dashboard" msgstr "Dashboard" #: ../../getting_started/application/dashboard/dashboard.md:3 -#: 2b6d2f94f73d43e68806bf4c6d0d9269 +#: df9eb8d62bbe460d94e448c23fffa529 msgid "" "The purpose of the DB-GPT Dashboard is to empower data analysts with " "efficiency. DB-GPT provides intelligent reporting technology, allowing " @@ -33,38 +33,54 @@ msgid "" " language and gain insights into their respective areas of business." msgstr "DB-GPT Dashboard目的是赋能数据分析人员。DB-GPT通过提供智能报表技术,使得业务分析人员可以直接使用简单的自然语言进行自助分析。" +#: ../../getting_started/application/dashboard/dashboard.md:7 +#: 3ce90998ab9547fc95105f0000e232da +#, fuzzy +msgid "The LLM (Language Model) suitable for the Dashboard scene is" +msgstr "Dashboard场景适用的LLM是 * chatgpt3.5. * chatgpt4." + #: ../../getting_started/application/dashboard/dashboard.md:8 -#: 9612fa76c4264bab8e629ac50959faa9 +#: be8fe8f9d9344e64acf51e54f8a17d7c +msgid "chatgpt3.5." +msgstr "" + +#: ../../getting_started/application/dashboard/dashboard.md:9 +#: 82ef8f03db3f4741a92113a485a40599 +msgid "chatgpt4." +msgstr "" + +#: ../../getting_started/application/dashboard/dashboard.md:13 +#: da3aaa82126942058e72c472e2495641 msgid "Dashboard now support Datasource Type" msgstr "Dashboard目前支持的数据源类型" -#: ../../getting_started/application/dashboard/dashboard.md:9 -#: bb0b15742ebe41628fb0d1fc38caabe2 +#: ../../getting_started/application/dashboard/dashboard.md:14 +#: d21cfc9594a24b69a5040f60cba00abb msgid "Mysql" msgstr "Mysql" -#: ../../getting_started/application/dashboard/dashboard.md:10 -#: 35491581125b4bdd8422f35b11c7bc2c +#: ../../getting_started/application/dashboard/dashboard.md:15 +#: fc0e345321e84de5b9a96107fef5467e msgid "Sqlite" msgstr "Sqlite" -#: ../../getting_started/application/dashboard/dashboard.md:11 -#: 8c4389354e0344aa9a781bdfc94c2cac +#: ../../getting_started/application/dashboard/dashboard.md:16 +#: f5cc4387997441b88a9f10ba9b35b621 msgid "DuckDB" msgstr "DuckDB" -#: ../../getting_started/application/dashboard/dashboard.md:13 -#: 18e8c60f5c2f4aa698cec1e8e8b354c8 +#: ../../getting_started/application/dashboard/dashboard.md:18 +#: d8a86c3d05f84df0aa63c88f5dbfbd78 msgid "Steps to Dashboard In DB-GPT" msgstr "Dashboard使用步骤" -#: ../../getting_started/application/dashboard/dashboard.md:15 -#: 94f98e0f5c2e451ba29b9b77c4139ed9 +#: ../../getting_started/application/dashboard/dashboard.md:20 +#: dbf7b3f73677411a8e660f8d90c11e05 msgid "1 add datasource" msgstr "1.添加数据源" -#: ../../getting_started/application/dashboard/dashboard.md:17 -#: 34e1211e65b940c3beb6234bcfa423a1 +#: ../../getting_started/application/dashboard/dashboard.md:22 +#: 70a599bc716a4af2b5a07a40de6fed9d #, fuzzy msgid "" "If you are using Dashboard for the first time, you need to mock some data" @@ -74,18 +90,18 @@ msgid "" "8c36-213b1c6fb5dd)" msgstr "如果你是第一次使用Dashboard,需要构造测试数据,DB-GPT在pilot/mock_datas/提供了测试数据,只需要将数据源进行添加即可" -#: ../../getting_started/application/dashboard/dashboard.md:17 -#: f29905929b32442ba05833b6c52a11be +#: ../../getting_started/application/dashboard/dashboard.md:22 +#: e38d15f091264563840cf15f0a2fe97c msgid "add_datasource" msgstr "添加数据源" -#: ../../getting_started/application/dashboard/dashboard.md:21 -#: 367a487dd1d54681a6e83d8fdda5b793 +#: ../../getting_started/application/dashboard/dashboard.md:26 +#: c6e87a5b20bb439ab1b3dc88e764d20b msgid "2.Choose Dashboard Mode" msgstr "2.进入Dashboard" -#: ../../getting_started/application/dashboard/dashboard.md:23 -#: 1ee1e980934e4a618591b7c43921c304 +#: ../../getting_started/application/dashboard/dashboard.md:28 +#: 54c25766650546998d3aaa3655f5275b msgid "" "![create_space](https://github.com/eosphoros-ai/DB-" "GPT/assets/13723926/5e888880-0e97-4b60-8e5c-b7e7224197f0)" @@ -93,18 +109,18 @@ msgstr "" "![create_space](https://github.com/eosphoros-ai/DB-" "GPT/assets/13723926/5e888880-0e97-4b60-8e5c-b7e7224197f0)" -#: ../../getting_started/application/dashboard/dashboard.md:23 -#: 12c756afdad740a9afc9cb46cc834af8 +#: ../../getting_started/application/dashboard/dashboard.md:28 +#: ea1781528db04000ab4a72308c7be97e msgid "create_space" msgstr "create_space" -#: ../../getting_started/application/dashboard/dashboard.md:25 -#: 5a575b17408c42fbacd32d8ff792d5a8 +#: ../../getting_started/application/dashboard/dashboard.md:30 +#: 5de9b0f0853443368d90e42114e99d6e msgid "3.Select Datasource" msgstr "3.选择数据源" -#: ../../getting_started/application/dashboard/dashboard.md:27 -#: ae051f852a5a4044a147c853cc3fba60 +#: ../../getting_started/application/dashboard/dashboard.md:32 +#: 3d4c429c4660414a8d5c44dea0ea0192 msgid "" "![document](https://github.com/eosphoros-ai/DB-" "GPT/assets/13723926/da2ac8b5-eca4-48ef-938f-f9dc1ca711b3)" @@ -112,19 +128,19 @@ msgstr "" "![document](https://github.com/eosphoros-ai/DB-" "GPT/assets/13723926/da2ac8b5-eca4-48ef-938f-f9dc1ca711b3)" -#: ../../getting_started/application/dashboard/dashboard.md:27 -#: ../../getting_started/application/dashboard/dashboard.md:31 -#: 94907bb0dc694bc3a4d2ee57a84b8242 ecc0666385904fce8bb1000735482f65 +#: ../../getting_started/application/dashboard/dashboard.md:32 +#: ../../getting_started/application/dashboard/dashboard.md:36 +#: 338912391ae441328549accdb6d5522b msgid "document" msgstr "document" -#: ../../getting_started/application/dashboard/dashboard.md:29 -#: c8697e93661c48b19674e63094ba7486 +#: ../../getting_started/application/dashboard/dashboard.md:34 +#: 2c0fd7e79393417aa218908c5cc89461 msgid "4.Input your analysis goals" msgstr "4.输入分析目标" -#: ../../getting_started/application/dashboard/dashboard.md:31 -#: 473fc0d00ab54ee6bc5c21e017591cc4 +#: ../../getting_started/application/dashboard/dashboard.md:36 +#: fb0bb655581a4109a5510240e54db006 #, fuzzy msgid "" "![document](https://github.com/eosphoros-ai/DB-" @@ -136,19 +152,19 @@ msgstr "" "![document](https://github.com/eosphoros-ai/DB-GPT/assets/13723926" "/3d14a2da-165e-4b2f-a921-325c20fe5ae9)" -#: ../../getting_started/application/dashboard/dashboard.md:31 -#: ../../getting_started/application/dashboard/dashboard.md:35 -#: 00597e1268544d97a3de368b04d5dcf8 350d04e4b7204823b7a03c0a7606c951 +#: ../../getting_started/application/dashboard/dashboard.md:36 +#: ../../getting_started/application/dashboard/dashboard.md:40 +#: 44680217a9794eddb97bcb98593a1071 msgid "db plugins demonstration" msgstr "" -#: ../../getting_started/application/dashboard/dashboard.md:34 -#: b48cc911c1614def9e4738d35e8b754c +#: ../../getting_started/application/dashboard/dashboard.md:39 +#: 4a9a8eac8e77465a9519b532afdfd1b7 msgid "5.Adjust and modify your report" msgstr "5.调整" -#: ../../getting_started/application/dashboard/dashboard.md:35 -#: b0442bbc0f6c4c33914814ac92fc4b13 +#: ../../getting_started/application/dashboard/dashboard.md:40 +#: b56da5e50ced4085bb376caa26e50e78 msgid "" "![db plugins " "demonstration](../../../../assets/chat_dashboard/chat_dashboard_2.png)" diff --git a/docs/locales/zh_CN/LC_MESSAGES/getting_started/faq/deploy/deploy_faq.po b/docs/locales/zh_CN/LC_MESSAGES/getting_started/faq/deploy/deploy_faq.po index e8a085390..27b103339 100644 --- a/docs/locales/zh_CN/LC_MESSAGES/getting_started/faq/deploy/deploy_faq.po +++ b/docs/locales/zh_CN/LC_MESSAGES/getting_started/faq/deploy/deploy_faq.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: DB-GPT 👏👏 0.3.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-10-19 19:31+0800\n" +"POT-Creation-Date: 2023-10-27 15:57+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -20,12 +20,12 @@ msgstr "" "Generated-By: Babel 2.12.1\n" #: ../../getting_started/faq/deploy/deploy_faq.md:1 -#: fb640f7c38744cbf996dcf7f73f325f6 +#: 798fb40c5ec941fcb9d6a0795219132f msgid "Installation FAQ" -msgstr "Installation FAQ" +msgstr "安装 FAQ" #: ../../getting_started/faq/deploy/deploy_faq.md:5 -#: 79fd80e469d14d608554d53a0e0ed2e3 +#: 47d0aa43c5fe4ca3a8ceba50c18ba608 #, fuzzy msgid "" "Q1: execute `pip install -e .` error, found some package cannot find " @@ -35,18 +35,20 @@ msgstr "" "cannot find correct version." #: ../../getting_started/faq/deploy/deploy_faq.md:6 -#: f1f6e3291d1446b5bbcf744cd4c4e89a +#: 944761c1ccc543c0a6aa2fad8dc74a32 msgid "change the pip source." msgstr "替换pip源." #: ../../getting_started/faq/deploy/deploy_faq.md:13 #: ../../getting_started/faq/deploy/deploy_faq.md:20 -#: 68e1b39a08774a81b9061cc5205e4c1c dd34901f446749e998cd34ec5b6c44f4 +#: ../../getting_started/faq/deploy/deploy_faq.md:145 +#: 3cff7ea0ee7945be8d03b6b3b032515b 5ba3037287524d6384ca96ffe58798fa +#: 9635f37d34e04764855f21d2266411f6 msgid "or" msgstr "或者" #: ../../getting_started/faq/deploy/deploy_faq.md:27 -#: 0899f0e28dae443b8f912d96c797b79c +#: c1c71ca902d745b89136bb63beda3dfd msgid "" "Q2: sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) unable to" " open database file" @@ -55,80 +57,80 @@ msgstr "" " open database file" #: ../../getting_started/faq/deploy/deploy_faq.md:29 -#: 3e60d8190e49436b8c40b34a67b7bfb3 +#: 97124a4512534c63bd09f2cf5a76fd13 msgid "make sure you pull latest code or create directory with mkdir pilot/data" msgstr "make sure you pull latest code or create directory with mkdir pilot/data" #: ../../getting_started/faq/deploy/deploy_faq.md:31 -#: baeaae20238842d3b8e4ae5b337198e5 +#: 369ed2cd489d46009184036a8f8ed67a msgid "Q3: The model keeps getting killed." msgstr "Q3: The model keeps getting killed." #: ../../getting_started/faq/deploy/deploy_faq.md:33 -#: eb3936307ad64b19b73483ff9ae126f2 +#: 6d59ca711a95495d9bddf22cd804e20b msgid "" "your GPU VRAM size is not enough, try replace your hardware or replace " "other llms." msgstr "GPU显存不够, 增加显存或者换一个显存小的模型" #: ../../getting_started/faq/deploy/deploy_faq.md:35 -#: f6dba770717041699c73b4cd00d48aad +#: 7ef755bf77fa46ccb63076c3561ecc64 msgid "Q4: How to access website on the public network" msgstr "" #: ../../getting_started/faq/deploy/deploy_faq.md:37 -#: 447d9e9374de44bab6d8a03f2c936676 +#: cd3f9144525b49babb826a7447812016 msgid "" "You can try to use gradio's [network](https://github.com/gradio-" "app/gradio/blob/main/gradio/networking.py) to achieve." msgstr "" #: ../../getting_started/faq/deploy/deploy_faq.md:48 -#: 5e34dd4dfcf34feeb1815dfa974041d0 +#: 71f0174d58674b1abd3d6a02cf65abf6 msgid "Open `url` with your browser to see the website." msgstr "" #: ../../getting_started/faq/deploy/deploy_faq.md:50 -#: aaef774ce6124021a3862bc0a25d465f +#: 81b07e64feef4187beab2022f3af294d msgid "Q5: (Windows) execute `pip install -e .` error" msgstr "" #: ../../getting_started/faq/deploy/deploy_faq.md:52 -#: ec3945df451c4ec2b32ebb476f45c82b +#: f2e7cd453c10486aa9b7d90d1d771b58 msgid "The error log like the following:" msgstr "" #: ../../getting_started/faq/deploy/deploy_faq.md:71 -#: 1df09f6d9f9b4c1a8a32d6e271e5ee39 +#: 2c97bbe2f96142ec8398b376f6a21d7f msgid "" "Download and install `Microsoft C++ Build Tools` from [visual-cpp-build-" "tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/)" msgstr "" #: ../../getting_started/faq/deploy/deploy_faq.md:75 -#: 251f47bfa5694242a1c9d81a2022b7a0 +#: 95120da5a6bf4a26bf64c2dd54632e4b msgid "Q6: `Torch not compiled with CUDA enabled`" msgstr "" #: ../../getting_started/faq/deploy/deploy_faq.md:82 -#: bc9dfdfc47924a0e8d3ec535e23bf923 +#: fa936391d8bd44cebeffc92e0f893700 msgid "Install [CUDA Toolkit](https://developer.nvidia.com/cuda-toolkit-archive)" msgstr "" #: ../../getting_started/faq/deploy/deploy_faq.md:83 -#: b5a632baa42745bdbee5d6ba516d8d8b +#: a8eb968b4b5a4f2786f7133299b8d20f msgid "" "Reinstall PyTorch [start-locally](https://pytorch.org/get-started/locally" "/#start-locally) with CUDA support." msgstr "" #: ../../getting_started/faq/deploy/deploy_faq.md:85 -#: 0092fb91642749f5a55b629017c0de6a +#: 009f8b213c9044888975f1ae8cdf7a75 msgid "Q7: ImportError: cannot import name 'PersistentClient' from 'chromadb'." msgstr "Q7: ImportError: cannot import name 'PersistentClient' from 'chromadb'." #: ../../getting_started/faq/deploy/deploy_faq.md:91 -#: 4aa87418f2a54c138bf3b7ff28a7e776 +#: 237706fe28b846dcbe77e04a3bf89a6c msgid "" "Q8: pydantic.error_wrappers.ValidationError:1 validation error for " "HuggingFaceEmbeddings.model_kwargs extra not permitted" @@ -137,14 +139,62 @@ msgstr "" "HuggingFaceEmbeddings.model_kwargs extra not permitted" #: ../../getting_started/faq/deploy/deploy_faq.md:102 -#: 6b690ab272af44f6b126cfe5ce1435ef +#: e20c5fde988b478fb7eaba0f10d7d196 msgid "Q9: alembic.util.exc.CommandError: Target database is not up to date." msgstr "" -#: ../../getting_started/faq/deploy/deploy_faq.md:103 -#: 223026d3b9124363b695937922d8f8d5 -msgid "delete files in `DB-GPT/pilot/meta_data/alembic/versions/` and reboot." -msgstr "删除`DB-GPT/pilot/meta_data/alembic/versions/`目录下文件" +#: ../../getting_started/faq/deploy/deploy_faq.md:104 +#: 6d096ff6f4754490868a0ff2b8a08f10 +msgid "delete files in `DB-GPT/pilot/meta_data/alembic/versions/` and restart." +msgstr "删除`DB-GPT/pilot/meta_data/alembic/versions/`目录下文件然后重新启动" + +#: ../../getting_started/faq/deploy/deploy_faq.md:110 +#: 2294a811682d4744b9334ee6deec4a49 +msgid "Q10: How to store DB-GPT metadata into my database" +msgstr "Q10: 如何将 DB-GPT 的元数据存储到自己的数据库中" + +#: ../../getting_started/faq/deploy/deploy_faq.md:112 +#: 034495af54f041bcb560a5366b9be912 +msgid "" +"In version 0.4.0, the metadata module of the DB-GPT application has been " +"refactored. All metadata tables will now be automatically saved in the " +"'dbgpt' database, based on the database type specified in the `.env` " +"file. If you would like to retain the existing data, it is recommended to" +" use a data migration tool to transfer the database table information to " +"the 'dbgpt' database. Additionally, you can change the default database " +"name 'dbgpt' in your `.env` file." +msgstr "" +"v0.4.0 重构了DB-" +"GPT应用的数据库元数据模块,所有的元数据库表都会自动保存在.env文件设置的数据库类型的`dbgpt`数据库中,如果想沿用以前的数据,建议使用数据迁移工具将数据库表信息挪到dbgpt数据库中。" +"另外,你可以在 `.env` 中修改默认的数据库名 'dbgpt' " + +#: ../../getting_started/faq/deploy/deploy_faq.md:132 +#: f9baf853f21b460ba5df63b84b35c040 +msgid "" +"Q11: pymysql.err.OperationalError: (1142, \"ALTER command denied to user " +"'{you db user}'@'{you db host}' for table '{some table name}'\")" +msgstr "" + +#: ../../getting_started/faq/deploy/deploy_faq.md:134 +#: a64cb2d75d6643559420c016362eb435 +msgid "" +"In version 0.4.0, DB-GPT use migration tool alembic to migrate metadata. " +"If the database user does not have DDL permissions, this error will be " +"reported. You can solve this problem by importing the metadata " +"information separately." +msgstr "" +"v0.4.0后,DB-GPT 使用 alembic 作为元数据迁移工具。" +"如果数据库用户没有 DDL 权限则会报这个错,您可以通过单独导入元数据信息来解决这个问题。" + +#: ../../getting_started/faq/deploy/deploy_faq.md:136 +#: 77c6bd4b559d457ab599b7f7730e85f1 +msgid "Use a privileged user to execute DDL sql file" +msgstr "使用一个有权限的用户来执行 DDL SQL 文件。" + +#: ../../getting_started/faq/deploy/deploy_faq.md:141 +#: 30c3fd7f7bfc4a63b5b9c4c15c64430f +msgid "Run DB-GPT webserver with `--disable_alembic_upgrade`" +msgstr "添加参数 `--disable_alembic_upgrade` 来运行 DB-GPT 的 webserver" #~ msgid "" #~ "Q2: When use Mysql, Access denied " diff --git a/docs/locales/zh_CN/LC_MESSAGES/getting_started/faq/kbqa/kbqa_faq.po b/docs/locales/zh_CN/LC_MESSAGES/getting_started/faq/kbqa/kbqa_faq.po index 73112ba21..6de5e670d 100644 --- a/docs/locales/zh_CN/LC_MESSAGES/getting_started/faq/kbqa/kbqa_faq.po +++ b/docs/locales/zh_CN/LC_MESSAGES/getting_started/faq/kbqa/kbqa_faq.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: DB-GPT 👏👏 0.3.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-10-20 14:49+0800\n" +"POT-Creation-Date: 2023-10-27 15:57+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -20,34 +20,34 @@ msgstr "" "Generated-By: Babel 2.12.1\n" #: ../../getting_started/faq/kbqa/kbqa_faq.md:1 -#: e95c136d802f486082c47a8c017eb725 +#: ab7d87ee62774af099fb0a8167b2d4be msgid "KBQA FAQ" msgstr "KBQA FAQ" #: ../../getting_started/faq/kbqa/kbqa_faq.md:4 -#: f19c96b7b1ec4bc7ad8c7c26582d7e59 +#: 3582be98154f4c3381765c130538d997 msgid "Q1: text2vec-large-chinese not found" msgstr "Q1: text2vec-large-chinese not found" #: ../../getting_started/faq/kbqa/kbqa_faq.md:6 -#: 24a0603be39d4418909c27f9a53b51e2 +#: 3382fb6d60b443029a04e183cb5449cf msgid "" "make sure you have download text2vec-large-chinese embedding model in " "right way" msgstr "确认下载text2vec-large-chinese模型姿势以及路径正确" #: ../../getting_started/faq/kbqa/kbqa_faq.md:18 -#: 356008dd415f4bdd9b0927d8ee073548 +#: 9fb65568d9cb4bf0be9371eae38ffe75 msgid "Q2:How to change Vector DB Type in DB-GPT." msgstr "怎么修改向量数据库类型" #: ../../getting_started/faq/kbqa/kbqa_faq.md:20 -#: 42013bfb02624010b668bd244b33c977 +#: 1904c691985044acad9d1cd84a227250 msgid "Update .env file and set VECTOR_STORE_TYPE." msgstr "怎样在.env文件设置VECTOR_STORE_TYPE" #: ../../getting_started/faq/kbqa/kbqa_faq.md:22 -#: 72b2bae15fea4e0d927bda68a8d0861d +#: a6ebd5b32fac42fbbdb7e26aaeafd781 msgid "" "DB-GPT currently support Chroma(Default), Milvus(>2.1), Weaviate vector " "database. If you want to change vector db, Update your .env, set your " @@ -61,19 +61,19 @@ msgstr "" "://db-gpt.readthedocs.io/en/latest/modules/vector.html)" #: ../../getting_started/faq/kbqa/kbqa_faq.md:38 -#: 0a12e3a5319c4a86a1db68d615d6fb8e +#: 8357695648cf4dcca7d8d2c6d0c48b0a msgid "Q3:When I use vicuna-13b, found some illegal character like this." msgstr "当使用vicuna系列模型时出现乱码。" #: ../../getting_started/faq/kbqa/kbqa_faq.md:43 -#: f89ffbf4697a4ccdb8030834c52b0473 +#: ff8cb9ecfd2d4c9fa179b872d03a97dd msgid "" "Set KNOWLEDGE_SEARCH_TOP_SIZE smaller or set KNOWLEDGE_CHUNK_SIZE " "smaller, and reboot server." msgstr "通过在.env文件将KNOWLEDGE_SEARCH_TOP_SIZE设置更小点或者在文档界面点击参数设置,将topk设置更小点" #: ../../getting_started/faq/kbqa/kbqa_faq.md:45 -#: fc837488bcc7432a92b70126e80e75d7 +#: d7a49b1b219c4cf1bcb6ba212e378a7e msgid "" "Q4:space add error (pymysql.err.OperationalError) (1054, \"Unknown column" " 'knowledge_space.context' in 'field list'\")" @@ -82,53 +82,58 @@ msgstr "" "'knowledge_space.context' in 'field list'\")" #: ../../getting_started/faq/kbqa/kbqa_faq.md:47 -#: 30c186bae2c3489eb18c18768c11c302 +#: 30d34122c9fe4d1a9870c54480c734a6 msgid "1.shutdown dbgpt_server(ctrl c)" msgstr "1.终止 dbgpt_server(ctrl c)" #: ../../getting_started/faq/kbqa/kbqa_faq.md:49 -#: 9cac5688ddb14c63905cc86e77d4567e +#: 1ccc21a493114e399007f9399f98006b msgid "2.add column context for table knowledge_space" msgstr "2.新增列 `context` for table knowledge_space" #: ../../getting_started/faq/kbqa/kbqa_faq.md:55 -#: b32219bc1c6246108f606952d8ef0132 +#: 075c48b850354ac7971bd7556b68ef52 msgid "3.execute sql ddl" msgstr "3.执行ddl" #: ../../getting_started/faq/kbqa/kbqa_faq.md:62 -#: ebfd196350994c44841d5766f776905c +#: c4484fc646324c9a976b81a4e802c435 msgid "4.restart dbgpt serve" msgstr "4.重启dbgpt server" #: ../../getting_started/faq/kbqa/kbqa_faq.md:64 -#: cfa083226efd4980a57ff15e86bb8480 +#: b3da50497f37421485d8f0e852f0b09c msgid "Q5:Use Mysql, how to use DB-GPT KBQA" msgstr "Q5:当使用 Mysql数据库时, 使用DB-GPT怎么初始化 KBQA service database schema" #: ../../getting_started/faq/kbqa/kbqa_faq.md:66 -#: 95098205d36c4ca79ad9b1b0f9b2985a +#: 97484a97b0d14d3f835efb5a0739c97e msgid "build Mysql KBQA system database schema." msgstr "构建Mysql KBQA system database schema" #: ../../getting_started/faq/kbqa/kbqa_faq.md:73 -#: efc87678042d48b38b57f700d9ff74e5 +#: bdcbaf0559a549468fab021e03ac3876 msgid "Q6:when pull from 0.4.0, I found historical knowledge document disappeared" msgstr "当从0.4.0版本拉取代码后,历史知识库问答信息没了" #: ../../getting_started/faq/kbqa/kbqa_faq.md:75 -#: 975eaff1a20a40b5b5ee18d6c6ddb9c1 +#: ea78542f6be94dfc8d97b2660bb22876 +#, fuzzy msgid "" "In version 0.4.0, the metadata module of the DB-GPT application has been " "refactored. All metadata tables will now be automatically saved in the " -"'dbgpt' database, based on the database type specified in the .env file. " -"If you would like to retain the existing data, it is recommended to use a" -" data migration tool to transfer the database table information to the " -"'dbgpt' database." -msgstr "v0.4.0 重构了DB-GPT应用的数据库元数据模块,所有的元数据库表都会自动保存在.env文件设置的数据库类型的`dbgpt`数据库中,如果想沿用以前的数据,建议使用数据迁移工具将数据库表信息挪到dbgpt数据库中。" +"'dbgpt' database, based on the database type specified in the `.env` " +"file. If you would like to retain the existing data, it is recommended to" +" use a data migration tool to transfer the database table information to " +"the 'dbgpt' database. Additionally, you can change the default database " +"name 'dbgpt' in your `.env` file." +msgstr "" +"v0.4.0 重构了DB-" +"GPT应用的数据库元数据模块,所有的元数据库表都会自动保存在.env文件设置的数据库类型的`dbgpt`数据库中,如果想沿用以前的数据,建议使用数据迁移工具将数据库表信息挪到dbgpt数据库中。" +"另外,你可以在 `.env` 中修改默认的数据库名 'dbgpt' " #: ../../getting_started/faq/kbqa/kbqa_faq.md:78 -#: 815e44fef54f4807a2cf1e8d64b73a70 +#: badc49ae6b4340be9700b92b1023e45b msgid "old database:knowledge_management; new database:dbgpt;" msgstr "" diff --git a/docs/locales/zh_CN/LC_MESSAGES/getting_started/faq/llm/llm_faq.po b/docs/locales/zh_CN/LC_MESSAGES/getting_started/faq/llm/llm_faq.po index c0791b7cb..590cccfba 100644 --- a/docs/locales/zh_CN/LC_MESSAGES/getting_started/faq/llm/llm_faq.po +++ b/docs/locales/zh_CN/LC_MESSAGES/getting_started/faq/llm/llm_faq.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: DB-GPT 👏👏 0.3.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-10-20 22:29+0800\n" +"POT-Creation-Date: 2023-10-30 11:37+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -19,34 +19,36 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.12.1\n" -#: ../../getting_started/faq/llm/llm_faq.md:1 54763acec7da4deb90669195c54ec3a1 +#: ../../getting_started/faq/llm/llm_faq.md:1 98e23f85313c45169ff2ba7f80193356 msgid "LLM USE FAQ" msgstr "LLM模型使用FAQ" -#: ../../getting_started/faq/llm/llm_faq.md:3 66f73fd2ee7b462e92d3f263792a5e33 -msgid "Q1:how to use openai chatgpt service" +#: ../../getting_started/faq/llm/llm_faq.md:3 0d49acfb4af947cb969b249346b00d33 +#, fuzzy +msgid "Q1: how to use openai chatgpt service" msgstr "我怎么使用OPENAI服务" -#: ../../getting_started/faq/llm/llm_faq.md:4 9d178d8462b74cb188bbacf2ac2ac12b +#: ../../getting_started/faq/llm/llm_faq.md:4 7010fec33e264987a29de86c54da93e8 #, fuzzy msgid "change your LLM_MODEL in `.env`" msgstr "通过在.env文件设置LLM_MODEL" -#: ../../getting_started/faq/llm/llm_faq.md:9 f7ca82f257be4ac09639a7f8af5e83eb +#: ../../getting_started/faq/llm/llm_faq.md:9 0982d6d5d0b3434fb00698aaf675f3f3 msgid "set your OPENAPI KEY" msgstr "set your OPENAPI KEY" -#: ../../getting_started/faq/llm/llm_faq.md:16 d6255b20dce34a2690df7e2af3505d97 +#: ../../getting_started/faq/llm/llm_faq.md:16 63650494c1574de09c007e1d470dd53d msgid "make sure your openapi API_KEY is available" msgstr "确认openapi API_KEY是否可用" -#: ../../getting_started/faq/llm/llm_faq.md:18 6f1c6dbdb31f4210a6d21f0f3a6ae589 +#: ../../getting_started/faq/llm/llm_faq.md:18 5721ec71e344499d96c55b7e531d7c08 +#, fuzzy msgid "" -"Q2 What difference between `python dbgpt_server --light` and `python " +"Q2: What difference between `python dbgpt_server --light` and `python " "dbgpt_server`" -msgstr "Q2 `python dbgpt_server --light` 和 `python dbgpt_server`的区别是什么?" +msgstr "Q2: `python dbgpt_server --light` 和 `python dbgpt_server`的区别是什么?" -#: ../../getting_started/faq/llm/llm_faq.md:20 b839771ae9e34e998b0edf8d69deabdd +#: ../../getting_started/faq/llm/llm_faq.md:20 76a650f195dd40b6a3a3564030cdc040 msgid "" "`python dbgpt_server --light` dbgpt_server does not start the llm " "service. Users can deploy the llm service separately by using `python " @@ -58,75 +60,75 @@ msgstr "" "用户可以通过`python " "llmserver`单独部署模型服务,dbgpt_server通过LLM_SERVER环境变量来访问模型服务。目的是为了可以将dbgpt后台服务和大模型服务分离部署。" -#: ../../getting_started/faq/llm/llm_faq.md:22 aba39cef6fe84799bcd03e8f36c41296 +#: ../../getting_started/faq/llm/llm_faq.md:22 8cd87e3504784d9e891e1fb96c79e143 msgid "" "`python dbgpt_server` dbgpt_server service and the llm service are " "deployed on the same instance. when dbgpt_server starts the service, it " "also starts the llm service at the same time." msgstr "`python dbgpt_server` 是将后台服务和模型服务部署在同一台实例上.dbgpt_server在启动服务的时候同时开启模型服务." -#: ../../getting_started/faq/llm/llm_faq.md:27 c65270d479af49e28e99b35a7932adbd +#: ../../getting_started/faq/llm/llm_faq.md:27 58a6eaf57e6d425685f67058b1a642d4 msgid "" "If you want to access an external LLM service(deployed by DB-GPT), you " "need to" msgstr "如果模型服务部署(通过DB-GPT部署)在别的机器,想通过dbgpt服务访问模型服务" -#: ../../getting_started/faq/llm/llm_faq.md:29 da153e6d18c543f28e0c4e85618e3d3d +#: ../../getting_started/faq/llm/llm_faq.md:29 67ac8823ca2e49ba9c833368e2cfb53c msgid "" "1.set the variables LLM_MODEL=YOUR_MODEL_NAME, " "MODEL_SERVER=YOUR_MODEL_SERVER(eg:http://localhost:5000) in the .env " "file." msgstr "" -#: ../../getting_started/faq/llm/llm_faq.md:31 cd89b8a2075f4407b8036a74151a6377 +#: ../../getting_started/faq/llm/llm_faq.md:31 e5c066bcdf0649a1b33bbfc7fd3b1a66 msgid "2.execute dbgpt_server.py in light mode" msgstr "2.execute dbgpt_server.py light 模式" -#: ../../getting_started/faq/llm/llm_faq.md:33 8f4b9401ac4f4a25a7479bee9ef5e8c1 +#: ../../getting_started/faq/llm/llm_faq.md:33 402ff01d7ee94d97be4a0eb964e39b97 msgid "python pilot/server/dbgpt_server.py --light" msgstr "" -#: ../../getting_started/faq/llm/llm_faq.md:38 69e1064cd7554ce6b49da732f800eacc +#: ../../getting_started/faq/llm/llm_faq.md:38 86190c689d8f4d9a9b58d904e0b5867b #, fuzzy -msgid "Q3 How to use MultiGPUs" -msgstr "Q2 怎么使用 MultiGPUs" +msgid "Q3: How to use MultiGPUs" +msgstr "Q3: 怎么使用 MultiGPUs" -#: ../../getting_started/faq/llm/llm_faq.md:40 6de3f105ce96430db5756f38bbd9ca12 +#: ../../getting_started/faq/llm/llm_faq.md:40 6b08cff88750440b98956203d8b8a084 msgid "" "DB-GPT will use all available gpu by default. And you can modify the " "setting `CUDA_VISIBLE_DEVICES=0,1` in `.env` file to use the specific gpu" " IDs." msgstr "DB-GPT默认加载可利用的gpu,你也可以通过修改 在`.env`文件 `CUDA_VISIBLE_DEVICES=0,1`来指定gpu IDs" -#: ../../getting_started/faq/llm/llm_faq.md:43 87cb9bfb20af4b259d719df797c42a7d +#: ../../getting_started/faq/llm/llm_faq.md:43 93b39089e5be4475b9e90e7813f5a7d9 msgid "" "Optionally, you can also specify the gpu ID to use before the starting " "command, as shown below:" msgstr "你也可以指定gpu ID启动" -#: ../../getting_started/faq/llm/llm_faq.md:53 bcfa35cda6304ee5ab9a775a2d4eda63 +#: ../../getting_started/faq/llm/llm_faq.md:53 62e3074c109d401fa4bf1ddbdc6c7be1 msgid "" "You can modify the setting `MAX_GPU_MEMORY=xxGib` in `.env` file to " "configure the maximum memory used by each GPU." msgstr "同时你可以通过在.env文件设置`MAX_GPU_MEMORY=xxGib`修改每个GPU的最大使用内存" -#: ../../getting_started/faq/llm/llm_faq.md:55 a05c5484927844c8bb4791f0a9ccc82e +#: ../../getting_started/faq/llm/llm_faq.md:55 d235bd83545c476f8e12572658d1c723 #, fuzzy -msgid "Q4 Not Enough Memory" -msgstr "Q3 机器显存不够 " +msgid "Q4: Not Enough Memory" +msgstr "Q4: 机器显存不够 " -#: ../../getting_started/faq/llm/llm_faq.md:57 fe17a023b6eb4a92b1b927e1b94e3784 +#: ../../getting_started/faq/llm/llm_faq.md:57 b3243ed9147f42bba987d7f9b778e66f msgid "DB-GPT supported 8-bit quantization and 4-bit quantization." msgstr "DB-GPT 支持 8-bit quantization 和 4-bit quantization." -#: ../../getting_started/faq/llm/llm_faq.md:59 76c3684c10864b8e87e5c2255b6c0b7f +#: ../../getting_started/faq/llm/llm_faq.md:59 1ddb9f94ab994bfebfee46d1c19888d4 msgid "" "You can modify the setting `QUANTIZE_8bit=True` or `QUANTIZE_4bit=True` " "in `.env` file to use quantization(8-bit quantization is enabled by " "default)." msgstr "你可以通过在.env文件设置`QUANTIZE_8bit=True` or `QUANTIZE_4bit=True`" -#: ../../getting_started/faq/llm/llm_faq.md:61 c5d849a38f1a4f0687bbcffb6699dc39 +#: ../../getting_started/faq/llm/llm_faq.md:61 54b85daa3fb24b17b67a6da31d2be8b0 msgid "" "Llama-2-70b with 8-bit quantization can run with 80 GB of VRAM, and 4-bit" " quantization can run with 48 GB of VRAM." @@ -134,49 +136,77 @@ msgstr "" "Llama-2-70b with 8-bit quantization 可以运行在 80 GB VRAM机器, 4-bit " "quantization可以运行在 48 GB VRAM" -#: ../../getting_started/faq/llm/llm_faq.md:63 867329a5e3b0403083e96f72b8747fb2 +#: ../../getting_started/faq/llm/llm_faq.md:63 097d680aed184fee9eceebee55a47ac1 msgid "" -"Note: you need to install the latest dependencies according to " -"[requirements.txt](https://github.com/eosphoros-ai/DB-" -"GPT/blob/main/requirements.txt)." +"Note: you need to install the quantization dependencies with `pip install" +" -e \".[quantization]\"`" msgstr "" -#: ../../getting_started/faq/llm/llm_faq.md:65 60ceee25e9fb4ddba40c5306bfb0a82f +#: ../../getting_started/faq/llm/llm_faq.md:65 f3a51056043c49eb84471040f2b364aa #, fuzzy -msgid "Q5 How to Add LLM Service dynamic local mode" -msgstr "Q5 怎样动态新增模型服务" +msgid "Q5: How to Add LLM Service dynamic local mode" +msgstr "Q5: 怎样动态新增模型服务" -#: ../../getting_started/faq/llm/llm_faq.md:67 c99eb7f7ae844884a8f0da94238ea7e0 +#: ../../getting_started/faq/llm/llm_faq.md:67 43ee6b0f23814c94a4ddb2429801a5e1 msgid "" "Now DB-GPT through multi-llm service switch, so how to add llm service " "dynamic," msgstr "DB-GPT支持多个模型服务切换, 怎样添加一个模型服务呢" -#: ../../getting_started/faq/llm/llm_faq.md:78 cd89b8a2075f4407b8036a74151a6377 +#: ../../getting_started/faq/llm/llm_faq.md:78 c217bbf0d2b6425fa7a1c691b7704a8d #, fuzzy -msgid "Q6 How to Add LLM Service dynamic in remote mode" -msgstr "Q5 怎样动态新增模型服务" +msgid "Q6: How to Add LLM Service dynamic in remote mode" +msgstr "Q6: 怎样动态新增模型服务" -#: ../../getting_started/faq/llm/llm_faq.md:79 8833ce89465848259b08ef0a4fa68d96 +#: ../../getting_started/faq/llm/llm_faq.md:79 195bdaa937a94c7aa0d8c6e1a5430d6e msgid "" "If you deploy llm service in remote machine instance, and you want to " "add model service to dbgpt server to manage" msgstr "如果你想在远程机器实例部署大模型服务并添加到本地dbgpt_server进行管理" -#: ../../getting_started/faq/llm/llm_faq.md:81 992eb37e3cca48829636c15ba3ec2ee8 +#: ../../getting_started/faq/llm/llm_faq.md:81 c64098b838a94821963a1d16e56497ff msgid "use dbgpt start worker and set --controller_addr." msgstr "使用1`dbgpt start worker`命令并设置注册地址--controller_addr" -#: ../../getting_started/faq/llm/llm_faq.md:91 0d06d7d6dd3d4780894ecd914c89b5a2 +#: ../../getting_started/faq/llm/llm_faq.md:91 cb12d5e9d9d24f14abc3ebea877a4b24 #, fuzzy -msgid "Q7 dbgpt command not found" -msgstr "Q6 dbgpt command not found" +msgid "Q7: dbgpt command not found" +msgstr "Q7: dbgpt command not found" -#: ../../getting_started/faq/llm/llm_faq.md:97 5d9beed0d95a4503a43d0e025664273b +#: ../../getting_started/faq/llm/llm_faq.md:97 f95cdccfa82d4b3eb2a23dd297131faa +#, fuzzy msgid "" -"Q8 When starting the worker_manager on a cloud server and registering it " -"with the controller, it is noticed that the worker's exposed IP is a " +"Q8: When starting the worker_manager on a cloud server and registering it" +" with the controller, it is noticed that the worker's exposed IP is a " "private IP instead of a public IP, which leads to the inability to access" " the service." -msgstr "云服务器启动worker_manager注册到controller时,发现worker暴露的ip是私网ip, 没有以公网ip暴露,导致服务访问不到" +msgstr "" +"Q8: 云服务器启动worker_manager注册到controller时,发现worker暴露的ip是私网ip, " +"没有以公网ip暴露,导致服务访问不到" + +#: ../../getting_started/faq/llm/llm_faq.md:106 +#: 739a2983f3484acf98e877dc12f4ccda +msgid "Q9: How to customize model path and prompt template" +msgstr "Q9: 如何自定义模型路径和 prompt 模板" + +#: ../../getting_started/faq/llm/llm_faq.md:108 +#: 8b82a33a311649c7850c30c00c987c72 +#, fuzzy +msgid "" +"DB-GPT will read the model path from " +"`pilot.configs.model_config.LLM_MODEL_CONFIG` based on the `LLM_MODEL`. " +"Of course, you can use the environment variable `LLM_MODEL_PATH` to " +"specify the model path and `LLM_PROMPT_TEMPLATE` to specify your model " +"prompt template." +msgstr "" +"DB-GPT 会根据 `LLM_MODEL` 从 `pilot.configs.model_config.LLM_MODEL_CONFIG` " +"中读取模型路径。当然,你可以使用环境 `LLM_MODEL_PATH` 来指定模型路径,以及使用 `LLM_PROMPT_TEMPLATE` " +"来指定模型的 prompt 模板。" + +#~ msgid "" +#~ "Note: you need to install the " +#~ "latest dependencies according to " +#~ "[requirements.txt](https://github.com/eosphoros-ai/DB-" +#~ "GPT/blob/main/requirements.txt)." +#~ msgstr "" diff --git a/docs/locales/zh_CN/LC_MESSAGES/getting_started/install/cluster/openai.po b/docs/locales/zh_CN/LC_MESSAGES/getting_started/install/cluster/openai.po new file mode 100644 index 000000000..0ef41aa6d --- /dev/null +++ b/docs/locales/zh_CN/LC_MESSAGES/getting_started/install/cluster/openai.po @@ -0,0 +1,71 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, csunny +# This file is distributed under the same license as the DB-GPT package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: DB-GPT 👏👏 0.4.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-11-02 21:09+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../getting_started/install/cluster/openai.md:1 +#: 01f4e2bf853341198633b367efec1522 +msgid "OpenAI-Compatible RESTful APIs" +msgstr "OpenAI RESTful 兼容接口" + +#: ../../getting_started/install/cluster/openai.md:5 +#: d8717e42335e4027bf4e76b3d28768ee +msgid "Install Prepare" +msgstr "安装准备" + +#: ../../getting_started/install/cluster/openai.md:7 +#: 9a48d8ee116942468de4c6faf9a64758 +msgid "" +"You must [deploy DB-GPT cluster](https://db-" +"gpt.readthedocs.io/en/latest/getting_started/install/cluster/vms/index.html)" +" first." +msgstr "你必须先部署 [DB-GPT 集群]" +"(https://db-gpt.readthedocs.io/projects/db-gpt-docs-zh-cn/zh-cn/latest/getting_started/install/cluster/vms/index.html)。" + +#: ../../getting_started/install/cluster/openai.md:9 +#: 7673a7121f004f7ca6b1a94a7e238fa3 +msgid "Launch Model API Server" +msgstr "启动模型 API Server" + +#: ../../getting_started/install/cluster/openai.md:14 +#: 84a925c2cbcd4e4895a1d2d2fe8f720f +msgid "By default, the Model API Server starts on port 8100." +msgstr "默认情况下,模型 API Server 使用 8100 端口启动。" + +#: ../../getting_started/install/cluster/openai.md:16 +#: e53ed41977cd4721becd51eba05c6609 +msgid "Validate with cURL" +msgstr "通过 cURL 验证" + +#: ../../getting_started/install/cluster/openai.md:18 +#: 7c883b410b5c4e53a256bf17c1ded80d +msgid "List models" +msgstr "列出模型" + +#: ../../getting_started/install/cluster/openai.md:26 +#: ../../getting_started/install/cluster/openai.md:37 +#: 7cf0ed13f0754f149ec085cd6cf7a45a 990d5d5ed5d64ab49550e68495b9e7a0 +msgid "Chat completions" +msgstr "" + +#: ../../getting_started/install/cluster/openai.md:35 +#: 81583edd22df44e091d18a0832278131 +msgid "Validate with OpenAI Official SDK" +msgstr "通过 OpenAI 官方 SDK 验证" + diff --git a/docs/locales/zh_CN/LC_MESSAGES/getting_started/install/deploy.po b/docs/locales/zh_CN/LC_MESSAGES/getting_started/install/deploy.po new file mode 100644 index 000000000..f4c85b8b4 --- /dev/null +++ b/docs/locales/zh_CN/LC_MESSAGES/getting_started/install/deploy.po @@ -0,0 +1,652 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, csunny +# This file is distributed under the same license as the DB-GPT package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: DB-GPT 👏👏 0.4.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-11-06 19:38+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../getting_started/install/deploy.rst:4 f3ea3305f122460aaa11999edc4b5de6 +msgid "Installation From Source" +msgstr "源码安装" + +#: ../../getting_started/install/deploy.rst:6 bb941f2bd56d4eb48f7c4f75ebd74176 +msgid "To get started, install DB-GPT with the following steps." +msgstr "按照以下步骤进行安装" + +#: ../../getting_started/install/deploy.rst:10 27a1e092c1f945ceb9946ebdaf89b600 +msgid "1.Preparation" +msgstr "1.准备" + +#: ../../getting_started/install/deploy.rst:11 5c5bfbdc74a14c3b9b1f1ed66617cac8 +msgid "**Download DB-GPT**" +msgstr "**下载DB-GPT项目**" + +#: ../../getting_started/install/deploy.rst:17 3065ee2f34f9417598a37fd699a4863e +msgid "**Install Miniconda**" +msgstr "**安装Miniconda**" + +#: ../../getting_started/install/deploy.rst:19 f9f3a653ffb8447284686aa37a7bb79a +msgid "" +"We use Sqlite as default database, so there is no need for database " +"installation. If you choose to connect to other databases, you can " +"follow our tutorial for installation and configuration. For the entire " +"installation process of DB-GPT, we use the miniconda3 virtual " +"environment. Create a virtual environment and install the Python " +"dependencies. `How to install Miniconda " +"`_" +msgstr "" +"目前使用Sqlite作为默认数据库,因此DB-" +"GPT快速部署不需要部署相关数据库服务。如果你想使用其他数据库,需要先部署相关数据库服务。我们目前使用Miniconda进行python环境和包依赖管理。`如何安装" +" Miniconda `_ 。" + +#: ../../getting_started/install/deploy.rst:36 a2cd2fdd1d16421f9cbe341040b153b6 +msgid "2.Deploy LLM Service" +msgstr "2.部署LLM服务" + +#: ../../getting_started/install/deploy.rst:37 180a121e3c994a92a917ace80bf12386 +msgid "" +"DB-GPT can be deployed on servers with low hardware requirements or on " +"servers with high hardware requirements." +msgstr "DB-GPT可以部署在对硬件要求不高的服务器,也可以部署在对硬件要求高的服务器" + +#: ../../getting_started/install/deploy.rst:39 395608515c0348d5849030b58da7b659 +msgid "" +"If you are low hardware requirements you can install DB-GPT by Using " +"third-part LLM REST API Service OpenAI, Azure, tongyi." +msgstr "低硬件要求模式适用于对接第三方模型服务的 API,比如 OpenAI、通义千问、 文心一言等。" + +#: ../../getting_started/install/deploy.rst:43 e29297e61e2e4d05ba88f0e1c2b1f365 +msgid "As our project has the ability to achieve OpenAI performance of over 85%," +msgstr "使用OpenAI服务可以让DB-GPT准确率达到85%" + +#: ../../getting_started/install/deploy.rst:48 d0d70d51e8684c2891c58a6da4941a52 +msgid "Notice make sure you have install git-lfs" +msgstr "确认是否已经安装git-lfs" + +#: ../../getting_started/install/deploy.rst:50 0d2781fd38eb467ebad2a3c310a344e6 +msgid "centos:yum install git-lfs" +msgstr "" + +#: ../../getting_started/install/deploy.rst:52 1574ea24ad6443409070aa3a1f7abe87 +msgid "ubuntu:apt-get install git-lfs" +msgstr "" + +#: ../../getting_started/install/deploy.rst:54 ad86473d5c87447091c713f45cbfed0e +msgid "macos:brew install git-lfs" +msgstr "" + +#: ../../getting_started/install/deploy.rst:58 +#: ../../getting_started/install/deploy.rst:229 +#: 3dd1e40f33924faab63634907a7f6511 dce32420face4ab2b99caf7f3900ede9 +msgid "OpenAI" +msgstr "OpenAI" + +#: ../../getting_started/install/deploy.rst:60 1f66400540114de2820761ef80137805 +msgid "Installing Dependencies" +msgstr "安装依赖" + +#: ../../getting_started/install/deploy.rst:66 +#: ../../getting_started/install/deploy.rst:213 +#: 31b856a6fc094334a37914c046cb1bb1 42b2f6d36ca4487f8e31d59bba123fca +msgid "Download embedding model" +msgstr "下载 embedding 模型" + +#: ../../getting_started/install/deploy.rst:78 f970fb69e47c40d7bda381ec6f045829 +msgid "Configure LLM_MODEL, PROXY_API_URL and API_KEY in `.env` file" +msgstr "在 `.env` 文件中设置 LLM_MODEL、PROXY_API_URL 和 API_KEY" + +#: ../../getting_started/install/deploy.rst:88 +#: ../../getting_started/install/deploy.rst:288 +#: 6ca04c88fc60480db2ebdc9b234a0bbb 709cfe74c45c4eff83a7d77bb30b4a2b +msgid "Make sure your .env configuration is not overwritten" +msgstr "确保你的 .env 文件不会被覆盖" + +#: ../../getting_started/install/deploy.rst:91 147aea0d753f44588f4a0c56002334ab +msgid "Vicuna" +msgstr "Vicuna" + +#: ../../getting_started/install/deploy.rst:92 6a0bd60c4ca2478cb0f3d85aff70cd3b +msgid "" +"`Vicuna-v1.5 `_ based on " +"llama-2 has been released, we recommend you set `LLM_MODEL=vicuna-" +"13b-v1.5` to try this model)" +msgstr "" +"基于 llama-2 的模型 `Vicuna-v1.5 `_ 已经发布,我们推荐你通过配置 `LLM_MODEL=vicuna-13b-v1.5` 来尝试这个模型" + +#: ../../getting_started/install/deploy.rst:94 6a111c2ef31f41d4b737cf8b6f36fb16 +msgid "vicuna-v1.5 hardware requirements" +msgstr "vicuna-v1.5 的硬件要求" + +#: ../../getting_started/install/deploy.rst:98 +#: ../../getting_started/install/deploy.rst:143 +#: dc24c0238ce141df8bdce26cc0e2ddbb e04f1ea4b36940f3a28b66cdff7b702e +msgid "Model" +msgstr "模型" + +#: ../../getting_started/install/deploy.rst:99 +#: ../../getting_started/install/deploy.rst:144 +#: b6473e65ca1a437a84226531be4da26d e0a2f7580685480aa13ca462418764d3 +msgid "Quantize" +msgstr "量化" + +#: ../../getting_started/install/deploy.rst:100 +#: ../../getting_started/install/deploy.rst:145 +#: 56471c3b174d4adf9e8cb5bebaa300a6 d82297b8b9c148c3906d8ee4ed10d8a0 +msgid "VRAM Size" +msgstr "显存" + +#: ../../getting_started/install/deploy.rst:101 +#: ../../getting_started/install/deploy.rst:104 +#: 1214432602fe47a28479ce3e21a7d88b 51838e72e42248f199653f1bf08c8155 +msgid "vicuna-7b-v1.5" +msgstr "" + +#: ../../getting_started/install/deploy.rst:102 +#: ../../getting_started/install/deploy.rst:108 +#: ../../getting_started/install/deploy.rst:147 +#: ../../getting_started/install/deploy.rst:153 +#: a64439f4e6f64c42bb76fbb819556784 ed95f498641e4a0f976318df608a1d67 +#: fc400814509048b4a1cbe1e07c539285 ff7a8cb2cce8438cb6cb0d80dabfc2b5 +msgid "4-bit" +msgstr "" + +#: ../../getting_started/install/deploy.rst:103 +#: ../../getting_started/install/deploy.rst:148 +#: 2726e8a278c34e6db59147e9f66f2436 5feab5755a41403c9d641da697de4651 +msgid "8 GB" +msgstr "" + +#: ../../getting_started/install/deploy.rst:105 +#: ../../getting_started/install/deploy.rst:111 +#: ../../getting_started/install/deploy.rst:150 +#: ../../getting_started/install/deploy.rst:156 +#: 1984406682da4da3ad7b275e44085d07 2f027d838d0c46409e54c066d7983aae +#: 5c5878fe64944872b6769f075fedca05 e2507408a9c5423988e17b7029b487e4 +msgid "8-bit" +msgstr "" + +#: ../../getting_started/install/deploy.rst:106 +#: ../../getting_started/install/deploy.rst:109 +#: ../../getting_started/install/deploy.rst:151 +#: ../../getting_started/install/deploy.rst:154 +#: 332f50702c7b46e79ea0af5cbf86c6d5 381d23253cfd40109bacefca6a179f91 +#: aafe2423c25546e789e4804e3fd91d1d cc56990a58e941d6ba023cbd4dca0357 +msgid "12 GB" +msgstr "" + +#: ../../getting_started/install/deploy.rst:107 +#: ../../getting_started/install/deploy.rst:110 +#: 1f14e2fa6d41493cb208f55eddff9773 6457f6307d8546beb5f2fb69c30922d8 +msgid "vicuna-13b-v1.5" +msgstr "" + +#: ../../getting_started/install/deploy.rst:112 +#: ../../getting_started/install/deploy.rst:157 +#: e24d3a36b5ce4cfe861dce2d1c4db592 f2e66b2da7954aaab0ee526b25a371f5 +msgid "20 GB" +msgstr "" + +#: ../../getting_started/install/deploy.rst:128 +#: ../../getting_started/install/deploy.rst:175 +#: ../../getting_started/install/deploy.rst:201 +#: 1719c11f92874c47a87c00c634b9fad8 4596fcbe415d42fdbb29b92964fae070 +#: e639ae6076a64b7b9de08527966e4550 +msgid "The model files are large and will take a long time to download." +msgstr "这个模型权重文件比较大,需要花费较长时间来下载。" + +#: ../../getting_started/install/deploy.rst:130 +#: ../../getting_started/install/deploy.rst:177 +#: ../../getting_started/install/deploy.rst:203 +#: 4ec1492d389f403ebd9dd805fcaac68e ac6c68e2bf9b47c694ea8e0506014b10 +#: e39be72282e64760903aaba45f8effb8 +msgid "**Configure LLM_MODEL in `.env` file**" +msgstr "**在 `.env` 文件中配置 LLM_MODEL**" + +#: ../../getting_started/install/deploy.rst:137 +#: ../../getting_started/install/deploy.rst:234 +#: 7ce4e2253ef24a7ea890ade04ce36682 b9d5bf4fa09649c4a098503132ce7c0c +msgid "Baichuan" +msgstr "百川" + +#: ../../getting_started/install/deploy.rst:139 +#: ffdad6a70558457fa825bad4d811100d +msgid "Baichuan hardware requirements" +msgstr "百川 的硬件要求" + +#: ../../getting_started/install/deploy.rst:146 +#: ../../getting_started/install/deploy.rst:149 +#: 59d9b64f54d34971a68e93e3101def06 a66ce354d8f143ce920303241cd8947e +msgid "baichuan-7b" +msgstr "" + +#: ../../getting_started/install/deploy.rst:152 +#: ../../getting_started/install/deploy.rst:155 +#: c530662259ca4ec5b03a18e4b690e17a fa3af65ecca54daab961f55729bbc40e +msgid "baichuan-13b" +msgstr "" + +#: ../../getting_started/install/deploy.rst:179 +#: efd73637994a4b7c97ef3557e1f3161c +msgid "please rename Baichuan path to \"baichuan2-13b\" or \"baichuan2-7b\"" +msgstr "将Baichuan模型目录修改为\"baichuan2-13b\" 或 \"baichuan2-7b\"" + +#: ../../getting_started/install/deploy.rst:185 +#: 435a3f0d0fe84b49a7305e2c0f51a5df +msgid "ChatGLM" +msgstr "" + +#: ../../getting_started/install/deploy.rst:205 +#: 165e23d3d40d4756b5a6a2580d015213 +msgid "please rename chatglm model path to \"chatglm2-6b\"" +msgstr "将 chatglm 模型目录修改为\"chatglm2-6b\"" + +#: ../../getting_started/install/deploy.rst:211 +#: b651ebb5e0424b8992bc8b49d2280bee +msgid "Other LLM API" +msgstr "其它模型 API" + +#: ../../getting_started/install/deploy.rst:225 +#: 4eabdc25f4a34676b3ece620c88d866f +msgid "Now DB-GPT support LLM REST API TYPE:" +msgstr "目前DB-GPT支持的大模型 REST API 类型:" + +#: ../../getting_started/install/deploy.rst:230 +#: d361963cc3404e5ca55a823f1f1f545c +msgid "Azure" +msgstr "" + +#: ../../getting_started/install/deploy.rst:231 +#: 3b0f17c74aaa4bbd9db935973fa1c36b +msgid "Aliyun tongyi" +msgstr "" + +#: ../../getting_started/install/deploy.rst:232 +#: 7c4c457a499943b8804e31046551006d +msgid "Baidu wenxin" +msgstr "" + +#: ../../getting_started/install/deploy.rst:233 +#: ac1880a995184295acf07fff987d7c56 +msgid "Zhipu" +msgstr "" + +#: ../../getting_started/install/deploy.rst:235 +#: 6927500d7d3445b7b1981da1df4e1666 +msgid "Bard" +msgstr "" + +#: ../../getting_started/install/deploy.rst:237 +#: 419d564de18c485780d9336b852735b6 +msgid "Configure LLM_MODEL and PROXY_API_URL and API_KEY in `.env` file" +msgstr "在`.env`文件设置 LLM_MODEL、PROXY_API_URL和 API_KEY" + +#: ../../getting_started/install/deploy.rst:290 +#: 71d5203682e24e2e896e4b9913471f78 +msgid "llama.cpp" +msgstr "" + +#: ../../getting_started/install/deploy.rst:292 +#: 36a2b82f711a4c0f9491aca9c84d3c91 +msgid "" +"DB-GPT already supports `llama.cpp " +"`_ via `llama-cpp-python " +"`_ ." +msgstr "" +"DB-GPT 已经通过 `llama-cpp-python `_ 支持了 `llama.cpp `_ 。" + +#: ../../getting_started/install/deploy.rst:294 +#: 439064115dca4ae08d8e60041f2ffe17 +msgid "**Preparing Model Files**" +msgstr "**准备模型文件**" + +#: ../../getting_started/install/deploy.rst:296 +#: 7291d6fa20b34942926e7765c01f25c9 +msgid "" +"To use llama.cpp, you need to prepare a gguf format model file, and there" +" are two common ways to obtain it, you can choose either:" +msgstr "为了使用 llama.cpp,你需要准备 gguf 格式的文件,你可以通过以下两种方法获取" + +#: ../../getting_started/install/deploy.rst:298 +#: 45752f3f5dd847469da0c5edddc530fa +msgid "**1. Download a pre-converted model file.**" +msgstr "**1.下载已转换的模型文件.**" + +#: ../../getting_started/install/deploy.rst:300 +#: c451db2157ff49b2b4992aed9907ddfa +msgid "" +"Suppose you want to use `Vicuna 13B v1.5 `_ , you can download the file already converted from " +"`TheBloke/vicuna-13B-v1.5-GGUF `_ , only one file is needed. Download it to the `models` " +"directory and rename it to `ggml-model-q4_0.gguf`." +msgstr "" +"假设您想使用 `Vicuna 13B v1.5 `_ 您可以从 `TheBloke/vicuna-" +"13B-v1.5-GGUF `_ 下载已转换的文件,只需要一个文件。将其下载到models目录并将其重命名为 `ggml-" +"model-q4_0.gguf`。" + +#: ../../getting_started/install/deploy.rst:306 +#: f5b92b51622b43d398b3dc13a5892c29 +msgid "**2. Convert It Yourself**" +msgstr "**2. 自行转换**" + +#: ../../getting_started/install/deploy.rst:308 +#: 8838ae6dcecf44ecad3fd963980c8eb3 +msgid "" +"You can convert the model file yourself according to the instructions in " +"`llama.cpp#prepare-data--run `_ , and put the converted file in the models " +"directory and rename it to `ggml-model-q4_0.gguf`." +msgstr "" +"您可以根据 `llama.cpp#prepare-data--run `_ 中的说明自行转换模型文件,并把转换后的文件放在models目录中,并重命名为`ggml-" +"model-q4_0.gguf`。" + +#: ../../getting_started/install/deploy.rst:310 +#: 3fe28d6e5eaa4bdf9c5c44a914c3577c +msgid "**Installing Dependencies**" +msgstr "**安装依赖**" + +#: ../../getting_started/install/deploy.rst:312 +#: bdc10d2e88cc4c3f84a8c4a8dc2037a9 +msgid "" +"llama.cpp is an optional dependency in DB-GPT, and you can manually " +"install it using the following command:" +msgstr "llama.cpp在DB-GPT中是可选安装项, 你可以通过以下命令进行安装" + +#: ../../getting_started/install/deploy.rst:319 +#: 9c136493448b43b5b27f66af74ff721e +msgid "**3.Modifying the Configuration File**" +msgstr "**3.修改配置文件**" + +#: ../../getting_started/install/deploy.rst:321 +#: c835a7dee1dd409fb861e7b886c6dc5b +msgid "Next, you can directly modify your `.env` file to enable llama.cpp." +msgstr "修改`.env`文件使用llama.cpp" + +#: ../../getting_started/install/deploy.rst:328 +#: ../../getting_started/install/deploy.rst:396 +#: 296e6d08409544918fee0c31b1bf195c a81e5d882faf4722b0e10d53f635f53c +msgid "" +"Then you can run it according to `Run `_" +msgstr "" +"然后你可以根据 `运行 `_ 来运行。" + +#: ../../getting_started/install/deploy.rst:331 +#: 0f7f487ee11a4e01a95f7c504f0469ba +msgid "**More Configurations**" +msgstr "**更多配置文件**" + +#: ../../getting_started/install/deploy.rst:333 +#: b0f9964497f64fb5b3740099232cd72b +msgid "" +"In DB-GPT, the model configuration can be done through `{model " +"name}_{config key}`." +msgstr "在DB-GPT中,模型配置可以通过`{模型名称}_{配置名}` 来配置。" + +#: ../../getting_started/install/deploy.rst:335 +#: 7c225de4fe9d4dd3a3c2b2a33802e656 +msgid "More Configurations" +msgstr "**更多配置文件**" + +#: ../../getting_started/install/deploy.rst:339 +#: 5cc1671910314796a9ce0b5107d3c9fe +msgid "Environment Variable Key" +msgstr "环境变量Key" + +#: ../../getting_started/install/deploy.rst:340 +#: 4359ed4e11bb47ad89a605cbf9016cd5 +msgid "Default" +msgstr "默认值" + +#: ../../getting_started/install/deploy.rst:341 +#: 5cf0efc6d1014665bb9dbdae96bf2726 +msgid "Description" +msgstr "描述" + +#: ../../getting_started/install/deploy.rst:342 +#: e7c291f80a9a40fa90d642901eca02c6 +msgid "llama_cpp_prompt_template" +msgstr "" + +#: ../../getting_started/install/deploy.rst:343 +#: ../../getting_started/install/deploy.rst:346 +#: ../../getting_started/install/deploy.rst:352 +#: ../../getting_started/install/deploy.rst:358 +#: ../../getting_started/install/deploy.rst:364 +#: 07dc7fc4e51e4d9faf8e5221bcf03ee0 549f3c57a2e9427880e457e653ce1182 +#: 7ad961957f7b49d08e4aff347749b78d c1eab368175c4fa88fe0b471919523b2 +#: e2e0bf9903484972b6d20e6837010029 +msgid "None" +msgstr "" + +#: ../../getting_started/install/deploy.rst:344 +#: 6b5044a2009f432c92fcd65db42506d8 +msgid "" +"Prompt template name, now support: zero_shot, vicuna_v1.1,alpaca,llama-2" +",baichuan-chat,internlm-chat, If None, the prompt template is " +"automatically determined from model path。" +msgstr "" +"Prompt template 现在可以支持`zero_shot, vicuna_v1.1,alpaca,llama-2,baichuan-" +"chat,internlm-chat`, 如果是None, 可以根据模型路径来自动获取模型 Prompt template" + +#: ../../getting_started/install/deploy.rst:345 +#: e01c860441ad43b88c0a8d012f97d2d8 +msgid "llama_cpp_model_path" +msgstr "" + +#: ../../getting_started/install/deploy.rst:347 +#: 1cb68d772e454812a1a0c6de4950b8ce +msgid "Model path" +msgstr "模型路径" + +#: ../../getting_started/install/deploy.rst:348 +#: 6dac03820edb4fbd8a0856405e84c5bc +msgid "llama_cpp_n_gpu_layers" +msgstr "" + +#: ../../getting_started/install/deploy.rst:349 +#: 8cd5607b7941427f9a342ca7a00e5778 +msgid "1000000000" +msgstr "" + +#: ../../getting_started/install/deploy.rst:350 +#: 61c9297656da434aa7ac2b49cf61ea9d +msgid "" +"Number of layers to offload to the GPU, Set this to 1000000000 to offload" +" all layers to the GPU. If your GPU VRAM is not enough, you can set a low" +" number, eg: 10" +msgstr "要将多少网络层转移到GPU上,将其设置为1000000000以将所有层转移到GPU上。如果您的 GPU 内存不足,可以设置较低的数字,例如:10。" + +#: ../../getting_started/install/deploy.rst:351 +#: 8c2d2182557a483aa2fda590c24faaf3 +msgid "llama_cpp_n_threads" +msgstr "" + +#: ../../getting_started/install/deploy.rst:353 +#: cc442f61ffc442ecbd98c1e7f5598e1a +msgid "" +"Number of threads to use. If None, the number of threads is automatically" +" determined" +msgstr "要使用的线程数量。如果为None,则线程数量将自动确定。" + +#: ../../getting_started/install/deploy.rst:354 +#: 8d5e917d86f048348106e6923638a0c2 +msgid "llama_cpp_n_batch" +msgstr "" + +#: ../../getting_started/install/deploy.rst:355 +#: ee2719a0a8cd4a77846cffd8e675638f +msgid "512" +msgstr "" + +#: ../../getting_started/install/deploy.rst:356 +#: 845b354315384762a611ad2daa539d57 +msgid "Maximum number of prompt tokens to batch together when calling llama_eval" +msgstr "在调用llama_eval时,批处理在一起的prompt tokens的最大数量" + +#: ../../getting_started/install/deploy.rst:357 +#: a95e788bfa5f46f3bcd6356dfd9f87eb +msgid "llama_cpp_n_gqa" +msgstr "" + +#: ../../getting_started/install/deploy.rst:359 +#: 23ad9b5f34b5440bb90b2b21bab25763 +msgid "Grouped-query attention. Must be 8 for llama-2 70b." +msgstr "对于 llama-2 70B 模型,Grouped-query attention 必须为8。" + +#: ../../getting_started/install/deploy.rst:360 +#: 9ce25b7966fc40ec8be47ecfaf5f9994 +msgid "llama_cpp_rms_norm_eps" +msgstr "" + +#: ../../getting_started/install/deploy.rst:361 +#: 58365f0d36af447ba976213646018431 +msgid "5e-06" +msgstr "" + +#: ../../getting_started/install/deploy.rst:362 +#: d00b742a759140b795ba5949f1ce9a36 +msgid "5e-6 is a good value for llama-2 models." +msgstr "对于llama-2模型来说,5e-6是一个不错的值。" + +#: ../../getting_started/install/deploy.rst:363 +#: b9972e9b19354f55a5e6d9c50513a620 +msgid "llama_cpp_cache_capacity" +msgstr "" + +#: ../../getting_started/install/deploy.rst:365 +#: 3c98c5396dd74db8b6d70fc50fa0754f +msgid "Maximum cache capacity. Examples: 2000MiB, 2GiB" +msgstr "模型缓存最大值. 例如: 2000MiB, 2GiB" + +#: ../../getting_started/install/deploy.rst:366 +#: 4277e155992c4442b69d665d6269bed6 +msgid "llama_cpp_prefer_cpu" +msgstr "" + +#: ../../getting_started/install/deploy.rst:367 +#: 049169c1210a4ecabb25702ed813ea0a +msgid "False" +msgstr "" + +#: ../../getting_started/install/deploy.rst:368 +#: 60a39e93e7874491a93893de78b7d37e +msgid "" +"If a GPU is available, it will be preferred by default, unless " +"prefer_cpu=False is configured." +msgstr "如果有可用的GPU,默认情况下会优先使用GPU,除非配置了 prefer_cpu=False。" + +#: ../../getting_started/install/deploy.rst:371 +#: 7c86780fbf634de8873afd439389cf89 +msgid "vllm" +msgstr "" + +#: ../../getting_started/install/deploy.rst:373 +#: e2827892e43d420c85b8b83c4855d197 +msgid "vLLM is a fast and easy-to-use library for LLM inference and serving." +msgstr "vLLM 是一个快速且易于使用的 LLM 推理和服务的库。" + +#: ../../getting_started/install/deploy.rst:375 +#: 81bbfa3876a74244acc82d295803fdd4 +msgid "**Running vLLM**" +msgstr "**运行vLLM**" + +#: ../../getting_started/install/deploy.rst:377 +#: 75bc518b444c417ba4d9c15246549327 +msgid "**1.Installing Dependencies**" +msgstr "**1.安装依赖**" + +#: ../../getting_started/install/deploy.rst:379 +#: 725c620b0a5045c1a64a3b2a2e9b48f3 +msgid "" +"vLLM is an optional dependency in DB-GPT, and you can manually install it" +" using the following command:" +msgstr "vLLM 在 DB-GPT 是一个可选依赖, 你可以使用下面的命令手动安装它:" + +#: ../../getting_started/install/deploy.rst:385 +#: 6f4b540107764f3592cc07cf170e4911 +msgid "**2.Modifying the Configuration File**" +msgstr "**2.修改配置文件**" + +#: ../../getting_started/install/deploy.rst:387 +#: b8576a1572674c4890e09b73e02cf0e8 +msgid "Next, you can directly modify your .env file to enable vllm." +msgstr "你可以直接修改你的 `.env` 文件" + +#: ../../getting_started/install/deploy.rst:394 +#: b006745f3aee4651aaa0cf79081b5d7f +msgid "" +"You can view the models supported by vLLM `here " +"`_" +msgstr "" +"你可以在 `这里 " +"`_ 查看 vLLM 支持的模型。" + +#: ../../getting_started/install/deploy.rst:403 +#: bc8057ee75e14737bf8fca3ceb555dac +msgid "3.Prepare sql example(Optional)" +msgstr "3.准备 sql example(可选)" + +#: ../../getting_started/install/deploy.rst:404 +#: 9b0b9112237c4b3aaa1dd5d704ea32e6 +msgid "**(Optional) load examples into SQLite**" +msgstr "**(可选) 加载样例数据到 SQLite 数据库中**" + +#: ../../getting_started/install/deploy.rst:411 +#: 0815e13b96264ffcba1526c82ba2e7c8 +msgid "On windows platform:" +msgstr "在 Windows 平台:" + +#: ../../getting_started/install/deploy.rst:418 +#: 577a4167ecac4fa88586961f225f0487 +msgid "4.Run db-gpt server" +msgstr "4.运行db-gpt server" + +#: ../../getting_started/install/deploy.rst:424 +#: a9f96b064b674f80824257b4b0a18e2a +msgid "**Open http://localhost:5000 with your browser to see the product.**" +msgstr "打开浏览器访问http://localhost:5000" + +#~ msgid "" +#~ "DB-GPT can be deployed on servers" +#~ " with low hardware requirements or on" +#~ " servers with high hardware requirements." +#~ " You can install DB-GPT by " +#~ "Using third-part LLM REST API " +#~ "Service OpenAI, Azure." +#~ msgstr "" + +#~ msgid "" +#~ "And you can also install DB-GPT" +#~ " by deploy LLM Service by download" +#~ " LLM model." +#~ msgstr "" + +#~ msgid "百川" +#~ msgstr "" + +#~ msgid "百川 硬件要求" +#~ msgstr "" + diff --git a/docs/locales/zh_CN/LC_MESSAGES/getting_started/install/deploy/deploy.po b/docs/locales/zh_CN/LC_MESSAGES/getting_started/install/deploy/deploy.po index 0ed8cfcd9..abb04818d 100644 --- a/docs/locales/zh_CN/LC_MESSAGES/getting_started/install/deploy/deploy.po +++ b/docs/locales/zh_CN/LC_MESSAGES/getting_started/install/deploy/deploy.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: DB-GPT 👏👏 0.3.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-10-20 22:29+0800\n" +"POT-Creation-Date: 2023-10-26 11:34+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -20,47 +20,47 @@ msgstr "" "Generated-By: Babel 2.12.1\n" #: ../../getting_started/install/deploy/deploy.md:1 -#: 7bcf028ff0884ea88f25b7e2c9608153 +#: c9d9195862204bb9b526d728b1527a98 msgid "Installation From Source" msgstr "源码安装" #: ../../getting_started/install/deploy/deploy.md:3 -#: 61f0b1135c84423bbaeb5f9f0942ad7d +#: e462f24ec27645c3afd23866fdeea761 msgid "" "This tutorial gives you a quick walkthrough about use DB-GPT with you " "environment and data." msgstr "本教程为您提供了关于如何使用DB-GPT的使用指南。" #: ../../getting_started/install/deploy/deploy.md:5 -#: d7622cd5f69f4a32b3c8e979c6b9f601 +#: 065a4cf91565437cbad46726e5aee89c msgid "Installation" msgstr "安装" #: ../../getting_started/install/deploy/deploy.md:7 -#: 4368072b6384496ebeaff3c09ca2f888 +#: 07ebe19dbb5040419c6016258d975904 msgid "To get started, install DB-GPT with the following steps." msgstr "请按照以下步骤安装DB-GPT" #: ../../getting_started/install/deploy/deploy.md:9 -#: 0dfdf8ac6e314fe7b624a685d9beebd5 +#: 1a552a8bb4fe481ba7695e1a2f8985f8 msgid "1. Hardware Requirements" msgstr "1. 硬件要求" #: ../../getting_started/install/deploy/deploy.md:10 -#: cff920f8732f4f1da3063ec2bc099271 +#: bd292acafdb74b99a570c4a8e126df5d msgid "" "DB-GPT can be deployed on servers with low hardware requirements or on " "servers with high hardware requirements." msgstr "DB-GPT可以部署在对硬件要求不高的服务器,也可以部署在对硬件要求高的服务器" #: ../../getting_started/install/deploy/deploy.md:12 -#: 8e3818824d6146c6b265731c277fbd0b +#: 913c8d0630f2460997fb856b81967903 #, fuzzy msgid "Low hardware requirements" msgstr "1. 硬件要求" #: ../../getting_started/install/deploy/deploy.md:13 -#: ca95d66526994173ac1fea20bdea5d67 +#: 70ca521385c642049789e14ab61bc46b msgid "" "The low hardware requirements mode is suitable for integrating with " "third-party LLM services' APIs, such as OpenAI, Tongyi, Wenxin, or " @@ -68,23 +68,23 @@ msgid "" msgstr "Low hardware requirements模式适用于对接第三方模型服务的api,比如OpenAI, 通义千问, 文心.cpp。" #: ../../getting_started/install/deploy/deploy.md:15 -#: 83fc53cc1b4248139f69f490b859ad8d +#: 7aacaa2505c447bfa3d0ef6418ae73d2 msgid "DB-GPT provides set proxy api to support LLM api." msgstr "DB-GPT可以通过设置proxy api来支持第三方大模型服务" #: ../../getting_started/install/deploy/deploy.md:17 -#: 418a9f24eafc4571b74d86c3f1e57a2d +#: 6b5a9f7d61d54a559363a9a5d270a580 msgid "As our project has the ability to achieve ChatGPT performance of over 85%," msgstr "由于我们的项目有能力达到85%以上的ChatGPT性能" #: ../../getting_started/install/deploy/deploy.md:19 -#: 6f85149ab0024cc99e43804206a595ed +#: cf4b1f1115c041cbafb15af61946378c #, fuzzy msgid "High hardware requirements" msgstr "1. 硬件要求" #: ../../getting_started/install/deploy/deploy.md:20 -#: 31635ffff5084814a14deb3220dd2c17 +#: dae1e9a698144a919dc3740cd676eb81 #, fuzzy msgid "" "The high hardware requirements mode is suitable for independently " @@ -98,67 +98,67 @@ msgstr "" "chatglm,vicuna等私有大模型所以对硬件有一定的要求。但总体来说,我们在消费级的显卡上即可完成项目的部署使用,具体部署的硬件说明如下:" #: ../../getting_started/install/deploy/deploy.md -#: d806b90be1614ad3b2e06c92f4b17e5c +#: a6457364eccd49c99dc6a020a9aa5185 msgid "GPU" msgstr "GPU" #: ../../getting_started/install/deploy/deploy.md -#: 4b02f41145484389ace0b547384ac269 bbba2ff3fab94482a1761264264deef9 +#: 2d737c43c9fd45efbaf1e4204227ab51 bc0aa12f56dd4d26af74d7c10187fc0c msgid "VRAM Size" msgstr "显存" #: ../../getting_started/install/deploy/deploy.md -#: 0ea63c2dcc0e43858a61e01d59ad09f9 +#: 8bfd4e58a63a42858b6be2d0ce11b2fa msgid "Performance" msgstr "Performance" #: ../../getting_started/install/deploy/deploy.md -#: 6521683eb91e450c928a72688550a63d +#: 9ff11248bfdc43e18e6c29ed95d4f807 msgid "RTX 4090" msgstr "RTX 4090" #: ../../getting_started/install/deploy/deploy.md -#: bb6340c9cdc048fbb0ed55defc1aaeb6 d991b39845ee404198e1a1e35cc416f3 +#: 229e141d0a0e4d558b11c204654f36a9 94a76fe065164a67883a79f75d10139c msgid "24 GB" msgstr "24 GB" #: ../../getting_started/install/deploy/deploy.md -#: 4134d3a89d364e33b2bdf1c7667e4755 +#: 2edf99edf84e43ea8a5dce2a5ad0056a msgid "Smooth conversation inference" msgstr "丝滑的对话体验" #: ../../getting_started/install/deploy/deploy.md -#: 096ff425ac7646a990a7133961c6e6af +#: df67002e7eb84939a1f452acc88a1fa2 msgid "RTX 3090" msgstr "RTX 3090" #: ../../getting_started/install/deploy/deploy.md -#: ecf670cdbec3493f804e6a785a83c608 +#: 333303d5e7054d2697f11bb2b53e92ec msgid "Smooth conversation inference, better than V100" msgstr "丝滑的对话体验,性能好于V100" #: ../../getting_started/install/deploy/deploy.md -#: 837b14e0a3d243bda0df7ab35b70b7e7 +#: acfb9e152ec74bacb715cd758a9be964 msgid "V100" msgstr "V100" #: ../../getting_started/install/deploy/deploy.md -#: 3b20a087c8e342c89ccb807ffc3817c2 b8b6b45253084436a5893896b35a2bd5 +#: 1127ebc45a1b4fdb828f13d55f99ce79 ed6dd464a7f640cd866712eb7f4d4b1b msgid "16 GB" msgstr "16 GB" #: ../../getting_started/install/deploy/deploy.md -#: 772e18bb0ace4f7ea68b51bfc05816ce 9351389a1fac479cbe67b1f8c2c37de5 +#: 0b6ef92756204be6984f39ee1b95d423 a5aad9380cd742c59934e5ead433a22e msgid "Conversation inference possible, noticeable stutter" msgstr "Conversation inference possible, noticeable stutter" #: ../../getting_started/install/deploy/deploy.md -#: aadb62bf48bb49d99a714bcdf3092260 +#: 7a5a394f02b04cdcb3a9785cfa0cfc7c msgid "T4" msgstr "T4" #: ../../getting_started/install/deploy/deploy.md:30 -#: 4de80d9fcf34470bae806d829836b7d7 +#: 055b00b30901485a841d958a63750341 #, fuzzy msgid "" "If your VRAM Size is not enough, DB-GPT supported 8-bit quantization and " @@ -166,109 +166,109 @@ msgid "" msgstr "如果你的显存不够,DB-GPT支持8-bit和4-bit量化版本" #: ../../getting_started/install/deploy/deploy.md:32 -#: 00d81cbf48b549f3b9128d3840d01b2e +#: 34175af61e2e4ecc9e56180b8872a30b msgid "" "Here are some of the VRAM size usage of the models we tested in some " "common scenarios." msgstr "这里是量化版本的相关说明" #: ../../getting_started/install/deploy/deploy.md -#: dc346f2bca794bb7ae34b330e82ccbcf +#: 1d1adf0f341b4ed7b47887c5923fbe08 msgid "Model" msgstr "Model" #: ../../getting_started/install/deploy/deploy.md -#: 8de6cd40de78460ba774650466f8df26 +#: 2e36f6ffdb084de3ae3d1568af60cecc msgid "Quantize" msgstr "Quantize" #: ../../getting_started/install/deploy/deploy.md -#: 3e412b8f4852482ab07a0f546e37ae7f f30054e0558b41a192cc9a2462b299ec +#: 54df9f9813274db482a683c001003e86 61380cdbc434467fbf9cb7cb1efe49b7 msgid "vicuna-7b-v1.5" msgstr "vicuna-7b-v1.5" #: ../../getting_started/install/deploy/deploy.md -#: 14358fa40cf94614acf39a803987631f 2a3f52b26b444783be04ffa795246a03 -#: 3956734b19aa44c3be08d56348b47a38 751034ca7d00447895fda1d9b8a7364f -#: a66d16e5424a42a3a1309dfb8ffc33f9 b8ebce0a9e7e481da5f16214f955665d -#: f533b3f37e6f4594aec5e0f59f241683 +#: 4390ae926c094187bf2905361a5d6cff 467d31fb940c4daf9b2afec6bb7ea7f0 +#: 525896b27182457486018a348c068c01 6788cb202dc044e59e6ae42936b1aca8 +#: 74e07aaf7fa7461e824c653129240ad1 83b491c17b434fdb910b92c4cbc007a0 +#: c14cc4d0ac384fc699a196bf62573f01 msgid "4-bit" msgstr "4-bit" #: ../../getting_started/install/deploy/deploy.md -#: 9eac7e866ebe45169c64a952c363ce43 aa56722db3014abd9022067ed5fc4f98 -#: af4df898fb47471fbb487fcf6e2d40d6 +#: 25bbb9742e604003aeb2da782e50fa46 334153c71b624064b4f50342ab79c30e +#: 6039634dfcfc4ad3a3298938534ef1e4 msgid "8 GB" msgstr "8 GB" #: ../../getting_started/install/deploy/deploy.md -#: 211aaf2e234d46108b5eee5006d5f4bb 40214b2f71ce452db3501ea9d81a0c8a -#: 72fcd5e0634e48d79813f1037e6acb45 7756b67568cc40c4b73079b26e79c85d -#: 8c21f8e90154407682c093a46b93939d ad937c14bbcd41ac92a3dbbdb8339eed -#: d1e7ee217dd64b15b934456c3a72c450 +#: 0d31a4a235b949eabd8e98c2dcb6d5ff 15bcdb7aedf1497fb0790c1bf3e5ee47 +#: 3125bc143cb0476db0a07b7788bc9928 be257ed0772d448b95873db9e044a713 +#: cf4e3ed197a84dba87a60cc5fc70f8ac eb399647bafe418c90212787e695afbb +#: ee40d24463a143ca8768da7423d25b9b msgid "8-bit" msgstr "8-bit" #: ../../getting_started/install/deploy/deploy.md -#: 4812504dfb9a4b25a5db773d9a08f34f 76ae2407ba4e4013953b9f243d9a5d92 -#: 927054919de047fd8a83df67e1400622 9773e73eb89847f8a85a2dc55b562916 -#: ce33d0c3792f43398fc7e2694653d8fc d3dc0d4cceb24d2b9dc5c7120fbed94e +#: 21efb501692440cf80fd29401e1f0afa 246e4fc9b5f44f42a36bb49fd65c08f2 +#: 9adc65ad9d9344efa83f3507fb6ed2fd b00fd0d15bf441f48f9ea75d8877d4fd +#: d92aa46491b442a69709b9b8d7322c2e f8499e166ca04bc2a84bfa2d42cee890 msgid "12 GB" msgstr "12 GB" #: ../../getting_started/install/deploy/deploy.md -#: 83e6d6ba1aa74946858f0162424752ab b6b99caeaeff44c488e3e819ed337074 +#: 39950e71d2884d2c8ce4dbc9b0cb4491 ab3349160edf447ea67b15d7a056cc6e msgid "vicuna-13b-v1.5" msgstr "vicuna-13b-v1.5" #: ../../getting_started/install/deploy/deploy.md -#: 492c5f0d560946fe879f6c339975ba37 970063dda21e4dd8be6f89a3c87832a5 -#: a66bad6054b24dd99b370312bc8b6fa6 +#: 53bd397b40e449988d9fdfd201030387 6123ea3af97f4f3dafc6be44ecfed416 +#: f493c256788e4a318cf57fa9340948a4 msgid "20 GB" msgstr "20 GB" #: ../../getting_started/install/deploy/deploy.md -#: a75f3405085441d8920db49f159588d2 cf635931c55846aea4cbccd92e4f0377 +#: 11903db1ac944b60a40c92f752c1f3dc 76831b0fad014348a081f3f64260c73e msgid "llama-2-7b" msgstr "llama-2-7b" #: ../../getting_started/install/deploy/deploy.md -#: 61d632df8c5149b393d03ac802141125 bc98c895d457495ea26e3537de83b432 +#: 2576bd18e1714557b33420e5ed56a95b 997fe3a3a46e4891b39171b81386a601 msgid "llama-2-13b" msgstr "llama-2-13b" #: ../../getting_started/install/deploy/deploy.md -#: 3ccb1f6d8a924aeeacb5373edc168103 9ecce68e159a4649a8d5e69157af17a1 +#: 8a1cf1ae302c4c2d8bfbb1a666cc9ba6 9cbe2dae8bf44181b24d9806b654b80f msgid "llama-2-70b" msgstr "llama-2-70b" #: ../../getting_started/install/deploy/deploy.md -#: ca1da6ce08674b3daa0ab9ee0330203f +#: d5e875e84f534aac8f2cac4eacde7ead msgid "48 GB" msgstr "48 GB" #: ../../getting_started/install/deploy/deploy.md -#: 34d4d20e57c1410fbdcabd09a5968cdd +#: 2e32ea59cce24ff0a96c8c152afeb09b msgid "80 GB" msgstr "80 GB" #: ../../getting_started/install/deploy/deploy.md -#: 4ec2213171054c96ac9cd46e259ce7bf 68a1752f76a54287a73e82724723ea75 +#: 176feab13e554986a1e09ce3c1d060ee edcf6676d3274fd3a578d337894467bf msgid "baichuan-7b" msgstr "baichuan-7b" #: ../../getting_started/install/deploy/deploy.md -#: 103b020a575744ad964c60a367aa1651 c659a720a1024869b09d7cc161bcd8a2 +#: 3da976a65887483abc029acb7e7640d4 837745bfb1ac41a99604f55e94fd4099 msgid "baichuan-13b" msgstr "baichuan-13b" #: ../../getting_started/install/deploy/deploy.md:51 -#: 2259a008d0e14f9e8d1e1d9234b97298 +#: 3c573a548e6a4767b4acc2e4d2dbd20c msgid "2. Install" msgstr "2. Install" #: ../../getting_started/install/deploy/deploy.md:56 -#: 875c7d8e32574552a48199577c78ccdd +#: 40d61f4ee30d4d70a45a0ffb97001cd6 msgid "" "We use Sqlite as default database, so there is no need for database " "installation. If you choose to connect to other databases, you can " @@ -283,7 +283,7 @@ msgstr "" " Miniconda](https://docs.conda.io/en/latest/miniconda.html)" #: ../../getting_started/install/deploy/deploy.md:67 -#: c03e3290e1144320a138d015171ac596 +#: 69c950c69b204b94a768d1f023cc978a msgid "" "Once the environment is installed, we have to create a new folder " "\"models\" in the DB-GPT project, and then we can put all the models " @@ -291,49 +291,48 @@ msgid "" msgstr "如果你已经安装好了环境需要创建models, 然后到huggingface官网下载模型" #: ../../getting_started/install/deploy/deploy.md:70 -#: 933401ac909741ada4acf6bcd4142ed6 +#: 2ab1a4d9de8e412f80bd04ce6b40cdf6 msgid "Notice make sure you have install git-lfs" msgstr "注意确认你已经安装了git-lfs" #: ../../getting_started/install/deploy/deploy.md:72 -#: e8e4886a83dd402c85fe3fa989322991 +#: e718db01f5404485a05857b8403df93c msgid "centos:yum install git-lfs" msgstr "" #: ../../getting_started/install/deploy/deploy.md:74 -#: 5ead7e98bddf4fa4845c3d3955f18054 +#: e98570774d28430295a094cc5f5220ae msgid "ubuntu:apt-get install git-lfs" msgstr "" #: ../../getting_started/install/deploy/deploy.md:76 -#: 08acfaaaa2544182a59df54cdf61cd84 +#: 34c33b64b8de4b00be92b525ad038f23 msgid "macos:brew install git-lfs" msgstr "" #: ../../getting_started/install/deploy/deploy.md:78 -#: 312ad44170c34531865576067c58701a +#: 34bd5fbc8a8c4898a4caa7d630137061 msgid "Download LLM Model and Embedding Model" msgstr "下载LLM模型和Embedding模型" #: ../../getting_started/install/deploy/deploy.md:80 -#: de54793643434528a417011d2919b2c4 +#: a67d0e365e684a3bbb5e8618c98884ce #, fuzzy msgid "" -"If you use OpenAI llm service, see [LLM Use FAQ](https://db-" -"gpt.readthedocs.io/en/latest/getting_started/faq/llm/llm_faq.html)" -msgstr "" -"如果想使用openai大模型服务, 可以参考[LLM Use FAQ](https://db-" -"gpt.readthedocs.io/en/latest/getting_started/faq/llm/llm_faq.html)" +"If you use OpenAI llm service, see [How to Use LLM REST API](https://db-" +"gpt.readthedocs.io/en/latest/getting_started/install/llm/proxyllm/proxyllm.html)" +msgstr "如果想使用openai大模型服务, 可以参考[如何集成LLM REST API](https://db-gpt.readthedocs.io/projects/db-gpt-docs-zh-cn/zh-cn/latest/getting_started/install/llm/proxyllm/proxyllm.html)" #: ../../getting_started/install/deploy/deploy.md:83 -#: 50ec1eb7c56a46ac8fbf911c7adc9b0e +#: f1a43cd2eba3458c863bfc77cf13ac1f +#, fuzzy msgid "" -"If you use openai or Azure or tongyi llm api service, you don't need to " +"If you use openai or Axzure or tongyi llm api service, you don't need to " "download llm model." msgstr "如果你想通过openai or Azure or tongyi第三方api访问模型服务,你可以不用下载llm模型" #: ../../getting_started/install/deploy/deploy.md:103 -#: 03950b2a480149388fb7b88f7d251ef5 +#: 9f46746726ec4791b6963a2e2c4376c4 msgid "" "The model files are large and will take a long time to download. During " "the download, let's configure the .env file, which needs to be copied and" @@ -341,19 +340,19 @@ msgid "" msgstr "模型文件很大,需要很长时间才能下载。在下载过程中,让我们配置.env文件,它需要从。env.template中复制和创建。" #: ../../getting_started/install/deploy/deploy.md:106 -#: 441c4333216a402a84fd52f8e56fc81b +#: 53e713c8a9664d92a6e4055789c4a7da msgid "cp .env.template .env" msgstr "cp .env.template .env" #: ../../getting_started/install/deploy/deploy.md:109 -#: 4eac3d98df6a4e788234ff0ec1ffd03e +#: 21c38ebc721242478e7ad4be4d672dc6 msgid "" "You can configure basic parameters in the .env file, for example setting " "LLM_MODEL to the model to be used" msgstr "您可以在.env文件中配置基本参数,例如将LLM_MODEL设置为要使用的模型。" #: ../../getting_started/install/deploy/deploy.md:111 -#: a36bd6d6236b4c74b161a935ae792b91 +#: 6ca180c2142b455ebcc3a8b37f3bc25a msgid "" "([Vicuna-v1.5](https://huggingface.co/lmsys/vicuna-13b-v1.5) based on " "llama-2 has been released, we recommend you set `LLM_MODEL=vicuna-" @@ -364,39 +363,39 @@ msgstr "" "目前Vicuna-v1.5模型(基于llama2)已经开源了,我们推荐你使用这个模型通过设置LLM_MODEL=vicuna-13b-v1.5" #: ../../getting_started/install/deploy/deploy.md:113 -#: 78334cbf0c364eb3bc41a2a6c55ebb0d +#: 1a346658ec4b4074b3458fc806538aae msgid "3. Run" msgstr "3. Run" #: ../../getting_started/install/deploy/deploy.md:115 -#: 6d5ad6eb067d4e9fa1c574b7b706233f +#: 70f6300673834c9eb3e80145bb5bfcb8 msgid "**(Optional) load examples into SQLite**" msgstr "" #: ../../getting_started/install/deploy/deploy.md:120 -#: 07219a4ed3c44e349314ae04ebdf58e1 +#: c10f16bd300e473a950617b814d743a0 msgid "On windows platform:" msgstr "" #: ../../getting_started/install/deploy/deploy.md:125 -#: 819be2bb22044440ae00c2e7687ea249 +#: 64213616228643a7b0413805061b7a12 #, fuzzy msgid "Run db-gpt server" msgstr "1.Run db-gpt server" #: ../../getting_started/install/deploy/deploy.md:131 -#: 5ba6d7c9bf9146c797036ab4b9b4f59e +#: cb3248ebbade45bfba1366a66e4220f6 msgid "Open http://localhost:5000 with your browser to see the product." msgstr "打开浏览器访问http://localhost:5000" #: ../../getting_started/install/deploy/deploy.md:134 -#: be3a2729ef3b4742a403017b31bda7e3 +#: 0499acfd344b4d70a0cdce31f245971c #, fuzzy msgid "Multiple GPUs" msgstr "4. Multiple GPUs" #: ../../getting_started/install/deploy/deploy.md:136 -#: 00ffa1cc145e4afa830c592a629246f9 +#: d56b6c4aa795428aa64e3740401645d3 msgid "" "DB-GPT will use all available gpu by default. And you can modify the " "setting `CUDA_VISIBLE_DEVICES=0,1` in `.env` file to use the specific gpu" @@ -404,32 +403,32 @@ msgid "" msgstr "DB-GPT默认加载可利用的gpu,你也可以通过修改 在`.env`文件 `CUDA_VISIBLE_DEVICES=0,1`来指定gpu IDs" #: ../../getting_started/install/deploy/deploy.md:138 -#: bde32a5a8fea4350868be579e9ee6baa +#: ca208283904441ab802827d94b3b9590 msgid "" "Optionally, you can also specify the gpu ID to use before the starting " "command, as shown below:" msgstr "你也可以指定gpu ID启动" #: ../../getting_started/install/deploy/deploy.md:148 -#: 791ed2db2cff44c48342a7828cbd4c45 +#: 30f7c3b3d9784a4698cdd15a0c046e81 msgid "" "You can modify the setting `MAX_GPU_MEMORY=xxGib` in `.env` file to " "configure the maximum memory used by each GPU." msgstr "同时你可以通过在.env文件设置`MAX_GPU_MEMORY=xxGib`修改每个GPU的最大使用内存" #: ../../getting_started/install/deploy/deploy.md:150 -#: f86b37c8943e4f5595610706e75b4add +#: ab02884bb7f24e59b21b797501c3794b #, fuzzy msgid "Not Enough Memory" msgstr "5. Not Enough Memory" #: ../../getting_started/install/deploy/deploy.md:152 -#: 8a7bd02cbeca497aa8eecaaf1910a6ad +#: 5b246b0456f8448bb0207312a17d40c5 msgid "DB-GPT supported 8-bit quantization and 4-bit quantization." msgstr "DB-GPT 支持 8-bit quantization 和 4-bit quantization." #: ../../getting_started/install/deploy/deploy.md:154 -#: 5ad49b99fe774ba79c50de0cd694807c +#: a002dc2572d34b0f9b3ca6ac3b3b6147 msgid "" "You can modify the setting `QUANTIZE_8bit=True` or `QUANTIZE_4bit=True` " "in `.env` file to use quantization(8-bit quantization is enabled by " @@ -437,7 +436,7 @@ msgid "" msgstr "你可以通过在.env文件设置`QUANTIZE_8bit=True` or `QUANTIZE_4bit=True`" #: ../../getting_started/install/deploy/deploy.md:156 -#: b9c80e92137447da91eb944443144c69 +#: 16d429bd42a44b02875e505273d35228 msgid "" "Llama-2-70b with 8-bit quantization can run with 80 GB of VRAM, and 4-bit" " quantization can run with 48 GB of VRAM." diff --git a/docs/locales/zh_CN/LC_MESSAGES/getting_started/install/environment/environment.po b/docs/locales/zh_CN/LC_MESSAGES/getting_started/install/environment/environment.po index 09b3c8fa2..bd4d6fa0b 100644 --- a/docs/locales/zh_CN/LC_MESSAGES/getting_started/install/environment/environment.po +++ b/docs/locales/zh_CN/LC_MESSAGES/getting_started/install/environment/environment.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: DB-GPT 👏👏 0.3.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-17 13:07+0800\n" +"POT-Creation-Date: 2023-11-14 16:08+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -20,290 +20,287 @@ msgstr "" "Generated-By: Babel 2.12.1\n" #: ../../getting_started/install/environment/environment.md:1 -#: be341d16f7b24bf4ad123ab78a6d855a +#: e4787ab6eacc4362802752528bb786ec #, fuzzy msgid "Environment Parameter" msgstr "环境变量说明" #: ../../getting_started/install/environment/environment.md:4 -#: 46eddb27c90f41548ea9a724bbcebd37 +#: 4682a0734a034e0e9f2c22fa061b889e msgid "LLM MODEL Config" msgstr "模型配置" #: ../../getting_started/install/environment/environment.md:5 -#: 7deaa85df4a04fb098f5994547a8724f +#: c148f178b2964344a570bb2b3713fba3 msgid "LLM Model Name, see /pilot/configs/model_config.LLM_MODEL_CONFIG" msgstr "LLM Model Name, see /pilot/configs/model_config.LLM_MODEL_CONFIG" #: ../../getting_started/install/environment/environment.md:6 -#: 3902801c546547b3a4009df681ef7d52 +#: 9ab8d82fb338439a8c0042b92ad2f7c4 msgid "LLM_MODEL=vicuna-13b" msgstr "LLM_MODEL=vicuna-13b" #: ../../getting_started/install/environment/environment.md:8 -#: 84b0fdbfa1544ec28751e9b69b00cc02 +#: 76fb3b1299694730852f120db6fec7f9 msgid "MODEL_SERVER_ADDRESS" msgstr "MODEL_SERVER_ADDRESS" -#: ../../getting_started/install/environment/environment.md:9 -#: 0b430bfab77d405989470d00ca3f6fe0 -msgid "MODEL_SERVER=http://127.0.0.1:8000 LIMIT_MODEL_CONCURRENCY" +#: ../../getting_started/install/environment/environment.md:10 +#: 7476a0ee342f4517bbf999abecec029e +#, fuzzy +msgid "MODEL_SERVER=http://127.0.0.1:8000" msgstr "MODEL_SERVER=http://127.0.0.1:8000 LIMIT_MODEL_CONCURRENCY" #: ../../getting_started/install/environment/environment.md:12 -#: b477a25586c546729a93fb6785b7b2ec -msgid "LIMIT_MODEL_CONCURRENCY=5" +#: fb3c73990a6443e8b63c35d61175e467 +#, fuzzy +msgid "LIMIT_MODEL_CONCURRENCY" msgstr "LIMIT_MODEL_CONCURRENCY=5" #: ../../getting_started/install/environment/environment.md:14 -#: 1d6ea800af384fff9c265610f71cc94e +#: 0eb187fffa3643dbac4bbe7237d2e011 +msgid "LIMIT_MODEL_CONCURRENCY=5" +msgstr "LIMIT_MODEL_CONCURRENCY=5" + +#: ../../getting_started/install/environment/environment.md:16 +#: 1d7b8bf89c1b44e9871d9d0c382db114 msgid "MAX_POSITION_EMBEDDINGS" msgstr "MAX_POSITION_EMBEDDINGS" -#: ../../getting_started/install/environment/environment.md:16 -#: 388e758ce4ea4692a4c34294cebce7f2 +#: ../../getting_started/install/environment/environment.md:18 +#: 50d0b3f760fd4ff9829cd1ba0653fd79 msgid "MAX_POSITION_EMBEDDINGS=4096" msgstr "MAX_POSITION_EMBEDDINGS=4096" -#: ../../getting_started/install/environment/environment.md:18 -#: 16a307dce1294ceba892ff93ae4e81c0 +#: ../../getting_started/install/environment/environment.md:20 +#: d07c4bbcde214f5993d73ac2bfb1bf9e msgid "QUANTIZE_QLORA" msgstr "QUANTIZE_QLORA" -#: ../../getting_started/install/environment/environment.md:20 -#: 93ceb2b2fcd5454b82eefb0ae8c7ae77 +#: ../../getting_started/install/environment/environment.md:22 +#: 6bceef51780f45d9805270d16847ddc2 msgid "QUANTIZE_QLORA=True" msgstr "QUANTIZE_QLORA=True" -#: ../../getting_started/install/environment/environment.md:22 -#: 15ffa35d023a4530b02a85ee6168dd4b +#: ../../getting_started/install/environment/environment.md:24 +#: df9d560f69334e4aa3f6803e40a7f38d msgid "QUANTIZE_8bit" msgstr "QUANTIZE_8bit" -#: ../../getting_started/install/environment/environment.md:24 -#: 81df248ac5cb4ab0b13a711505f6a177 +#: ../../getting_started/install/environment/environment.md:26 +#: ac433b8574574432add7315558b845ea msgid "QUANTIZE_8bit=True" msgstr "QUANTIZE_8bit=True" -#: ../../getting_started/install/environment/environment.md:27 -#: 15cc7b7d41ad44f0891c1189709f00f1 +#: ../../getting_started/install/environment/environment.md:29 +#: 7b1c407517984bff9f4d509c5f45b92e msgid "LLM PROXY Settings" msgstr "LLM PROXY Settings" -#: ../../getting_started/install/environment/environment.md:28 -#: e6c1115a39404f11b193a1593bc51a22 +#: ../../getting_started/install/environment/environment.md:30 +#: ba7d52c0e95143ebb973e7eda69f0bc1 msgid "OPENAI Key" msgstr "OPENAI Key" -#: ../../getting_started/install/environment/environment.md:30 -#: 8157e0a831fe4506a426822b7565e4f6 +#: ../../getting_started/install/environment/environment.md:32 +#: 0f0bd20a7a60461e8bcfc91297cc3666 msgid "PROXY_API_KEY={your-openai-sk}" msgstr "PROXY_API_KEY={your-openai-sk}" -#: ../../getting_started/install/environment/environment.md:31 -#: 89b34d00bdb64e738bd9bc8c086b1f02 +#: ../../getting_started/install/environment/environment.md:33 +#: d9c03e0b3316415eb2ca59ad9c419b8c msgid "PROXY_SERVER_URL=https://api.openai.com/v1/chat/completions" msgstr "PROXY_SERVER_URL=https://api.openai.com/v1/chat/completions" -#: ../../getting_started/install/environment/environment.md:33 -#: 7a97df730aeb484daf19c8172e61a290 +#: ../../getting_started/install/environment/environment.md:35 +#: 45883f99c1fd494ea513f3c0f92562a3 msgid "from https://bard.google.com/ f12-> application-> __Secure-1PSID" msgstr "from https://bard.google.com/ f12-> application-> __Secure-1PSID" -#: ../../getting_started/install/environment/environment.md:35 -#: d430ddf726a049c0a9e0a9bfd5a6fe0e +#: ../../getting_started/install/environment/environment.md:37 +#: 70665dbe72c545a3b61c6efe37dfa7d5 msgid "BARD_PROXY_API_KEY={your-bard-token}" msgstr "BARD_PROXY_API_KEY={your-bard-token}" -#: ../../getting_started/install/environment/environment.md:38 -#: 23d6b0da3e7042abb55f6181c4a382d2 +#: ../../getting_started/install/environment/environment.md:40 +#: 782f8a9c9cd745a4990542ba8130c66a msgid "DATABASE SETTINGS" msgstr "DATABASE SETTINGS" -#: ../../getting_started/install/environment/environment.md:39 -#: dbae0a2d847f41f5be9396a160ef88d0 +#: ../../getting_started/install/environment/environment.md:41 +#: 50ad9eae827a407c8c77692f48b9d423 msgid "SQLite database (Current default database)" msgstr "SQLite database (Current default database)" -#: ../../getting_started/install/environment/environment.md:40 -#: bdb55b7280c341a981e9d338cce53345 +#: ../../getting_started/install/environment/environment.md:42 +#: 410041683b664cabbe7ce6cb2050c629 msgid "LOCAL_DB_PATH=data/default_sqlite.db" msgstr "LOCAL_DB_PATH=data/default_sqlite.db" -#: ../../getting_started/install/environment/environment.md:41 -#: 739d67927a9d46b28500deba1917916b +#: ../../getting_started/install/environment/environment.md:43 +#: 0fcf0f9da84d4e4a8a1503a96dd6734b msgid "LOCAL_DB_TYPE=sqlite # Database Type default:sqlite" msgstr "LOCAL_DB_TYPE=sqlite # Database Type default:sqlite" -#: ../../getting_started/install/environment/environment.md:43 -#: eb4717bce6a6483b86d9780d924c5ff1 +#: ../../getting_started/install/environment/environment.md:45 +#: 15fb9cdc51e44b71a1a375e49fb7bc6d msgid "MYSQL database" msgstr "MYSQL database" -#: ../../getting_started/install/environment/environment.md:44 -#: 0f4cdf0ff5dd4ff0b397dfa88541a2e1 +#: ../../getting_started/install/environment/environment.md:46 +#: c8cc4cb61d1c44cd9ef3546455929ef6 msgid "LOCAL_DB_TYPE=mysql" msgstr "LOCAL_DB_TYPE=mysql" -#: ../../getting_started/install/environment/environment.md:45 -#: c971ead492c34487bd766300730a9cba +#: ../../getting_started/install/environment/environment.md:47 +#: a6caf3cabc4041b5879ec3af25c85139 msgid "LOCAL_DB_USER=root" msgstr "LOCAL_DB_USER=root" -#: ../../getting_started/install/environment/environment.md:46 -#: 02828b29ad044eeab890a2f8af0e5907 +#: ../../getting_started/install/environment/environment.md:48 +#: b839bde122374e299086f120fce0144c msgid "LOCAL_DB_PASSWORD=aa12345678" msgstr "LOCAL_DB_PASSWORD=aa12345678" -#: ../../getting_started/install/environment/environment.md:47 -#: 53dc7f15b3934987b1f4c2e2d0b11299 +#: ../../getting_started/install/environment/environment.md:49 +#: 52cdbfdefda142b4a3b5cb3b060916a8 msgid "LOCAL_DB_HOST=127.0.0.1" msgstr "LOCAL_DB_HOST=127.0.0.1" -#: ../../getting_started/install/environment/environment.md:48 -#: 1ac95fc482934247a118bab8dcebeb57 +#: ../../getting_started/install/environment/environment.md:50 +#: 492db6e5c13b40898f38063980c5897c msgid "LOCAL_DB_PORT=3306" msgstr "LOCAL_DB_PORT=3306" -#: ../../getting_started/install/environment/environment.md:51 -#: 34e46aa926844be19c7196759b03af63 +#: ../../getting_started/install/environment/environment.md:53 +#: 20b101603f054c70af633439abddefec msgid "EMBEDDING SETTINGS" msgstr "EMBEDDING SETTINGS" -#: ../../getting_started/install/environment/environment.md:52 -#: 2b5aa08cc995495e85a1f7dc4f97b5d7 +#: ../../getting_started/install/environment/environment.md:54 +#: 3463a5a74cea494c8442100c0069285c msgid "EMBEDDING MODEL Name, see /pilot/configs/model_config.LLM_MODEL_CONFIG" msgstr "EMBEDDING模型, 参考see /pilot/configs/model_config.LLM_MODEL_CONFIG" -#: ../../getting_started/install/environment/environment.md:53 -#: 0de0ca551ed040248406f848feca541d +#: ../../getting_started/install/environment/environment.md:55 +#: 4c8adbf52110474bbfcd3b63cf2839f6 msgid "EMBEDDING_MODEL=text2vec" msgstr "EMBEDDING_MODEL=text2vec" -#: ../../getting_started/install/environment/environment.md:55 -#: 43019fb570904c9981eb68f33e64569c +#: ../../getting_started/install/environment/environment.md:57 +#: 8a85a75151e64827971b1a367b31ecfa msgid "Embedding Chunk size, default 500" msgstr "Embedding 切片大小, 默认500" -#: ../../getting_started/install/environment/environment.md:57 -#: 7e3f93854873461286e96887e04167aa +#: ../../getting_started/install/environment/environment.md:59 +#: 947939b0fa7e46de97d48eadf5c443d2 msgid "KNOWLEDGE_CHUNK_SIZE=500" msgstr "KNOWLEDGE_CHUNK_SIZE=500" -#: ../../getting_started/install/environment/environment.md:59 -#: 9504f4a59ae74352a524b7741113e2d6 +#: ../../getting_started/install/environment/environment.md:61 +#: 2785ad6bb0de4534a6523ac420f2c84c msgid "Embedding Chunk Overlap, default 100" msgstr "Embedding chunk Overlap, 文本块之间的最大重叠量。保留一些重叠可以保持文本块之间的连续性(例如使用滑动窗口),默认100" -#: ../../getting_started/install/environment/environment.md:60 -#: 24e6119c2051479bbd9dba71a9c23dbe +#: ../../getting_started/install/environment/environment.md:62 +#: 40b6a8f57ee14ec1ab73143ba1516e78 msgid "KNOWLEDGE_CHUNK_OVERLAP=100" msgstr "KNOWLEDGE_CHUNK_OVERLAP=100" -#: ../../getting_started/install/environment/environment.md:62 -#: 0d180d7f2230442abee901c19526e442 -msgid "embeding recall top k,5" +#: ../../getting_started/install/environment/environment.md:64 +#: e410faa1087c45639ee210be99cf9336 +#, fuzzy +msgid "embedding recall top k,5" msgstr "embedding 召回topk, 默认5" -#: ../../getting_started/install/environment/environment.md:64 -#: a5bb9ab2ba50411cbbe87f7836bfbb6d +#: ../../getting_started/install/environment/environment.md:66 +#: abfca38fe2a04161a11259588fa4d205 msgid "KNOWLEDGE_SEARCH_TOP_SIZE=5" msgstr "KNOWLEDGE_SEARCH_TOP_SIZE=5" -#: ../../getting_started/install/environment/environment.md:66 -#: 183b8dd78cba4ae19bd2e08d69d21e0b -msgid "embeding recall max token ,2000" +#: ../../getting_started/install/environment/environment.md:68 +#: 31182c38607b4c3bbc657b5fe5b7a4f6 +#, fuzzy +msgid "embedding recall max token ,2000" msgstr "embedding向量召回最大token, 默认2000" -#: ../../getting_started/install/environment/environment.md:68 -#: ce0c711febcb44c18ae0fc858c3718d1 +#: ../../getting_started/install/environment/environment.md:70 +#: 96cd042635bc468e90c792fd9d1a7f4d msgid "KNOWLEDGE_SEARCH_MAX_TOKEN=5" msgstr "KNOWLEDGE_SEARCH_MAX_TOKEN=5" -#: ../../getting_started/install/environment/environment.md:71 -#: ../../getting_started/install/environment/environment.md:87 -#: 4cab1f399cc245b4a1a1976d2c4fc926 ec9cec667a1c4473bf9a796a26e1ce20 +#: ../../getting_started/install/environment/environment.md:73 +#: d43b408ad9bc46f2b3c97aa91627f6b3 msgid "Vector Store SETTINGS" msgstr "Vector Store SETTINGS" -#: ../../getting_started/install/environment/environment.md:72 -#: ../../getting_started/install/environment/environment.md:88 -#: 4dd04aadd46948a5b1dcf01fdb0ef074 bab7d512f33e40cf9e10f0da67e699c8 +#: ../../getting_started/install/environment/environment.md:74 +#: b1fcbf6049af4eeea91edd3de58c8512 msgid "Chroma" msgstr "Chroma" -#: ../../getting_started/install/environment/environment.md:73 -#: ../../getting_started/install/environment/environment.md:89 -#: 13eec36741b14e028e2d3859a320826e ab3ffbcf9358401993af636ba9ab2e2d +#: ../../getting_started/install/environment/environment.md:75 +#: 2fb31575b274448fb945d47ee0eb108c msgid "VECTOR_STORE_TYPE=Chroma" msgstr "VECTOR_STORE_TYPE=Chroma" -#: ../../getting_started/install/environment/environment.md:74 -#: ../../getting_started/install/environment/environment.md:90 -#: d15b91e2a2884f23a1dd2d54783b0638 d1f856d571b547098bb0c2a18f9f1979 +#: ../../getting_started/install/environment/environment.md:76 +#: 601b87cc6f1d4732b935747e907cba5a msgid "MILVUS" msgstr "MILVUS" -#: ../../getting_started/install/environment/environment.md:75 -#: ../../getting_started/install/environment/environment.md:91 -#: 1e165f6c934343c7808459cc7a65bc70 985dd60c2b7d4baaa6601a810a6522d7 +#: ../../getting_started/install/environment/environment.md:77 +#: fde6cf6982764020aa1174f7fe3a5b3e msgid "VECTOR_STORE_TYPE=Milvus" msgstr "VECTOR_STORE_TYPE=Milvus" -#: ../../getting_started/install/environment/environment.md:76 -#: ../../getting_started/install/environment/environment.md:92 -#: a1a53f051cee40ed886346a94babd75a d263e8eaee684935a58f0a4fe61c6f0e +#: ../../getting_started/install/environment/environment.md:78 +#: 40c6206c7a614edf9b0af82c2c76f518 msgid "MILVUS_URL=127.0.0.1" msgstr "MILVUS_URL=127.0.0.1" -#: ../../getting_started/install/environment/environment.md:77 -#: ../../getting_started/install/environment/environment.md:93 -#: 2741a312db1a4c6a8a1c1d62415c5fba d03bbf921ddd4f4bb715fe5610c3d0aa +#: ../../getting_started/install/environment/environment.md:79 +#: abde3c75269442cbb94a59c657d847a9 msgid "MILVUS_PORT=19530" msgstr "MILVUS_PORT=19530" -#: ../../getting_started/install/environment/environment.md:78 -#: ../../getting_started/install/environment/environment.md:94 -#: d0786490d38c4e4f971cc14f62fe1fc8 e9e0854873dc4c209861ee4eb77d25cd +#: ../../getting_started/install/environment/environment.md:80 +#: 375a837cbf6d4d65891612a7f073414a msgid "MILVUS_USERNAME" msgstr "MILVUS_USERNAME" -#: ../../getting_started/install/environment/environment.md:79 -#: ../../getting_started/install/environment/environment.md:95 -#: 9a82d07153cc432ebe754b5bc02fde0d a6485c1cfa7d4069a6894c43674c8c2b +#: ../../getting_started/install/environment/environment.md:81 +#: f785a796c8d3452c802d9a637f34cb57 msgid "MILVUS_PASSWORD" msgstr "MILVUS_PASSWORD" -#: ../../getting_started/install/environment/environment.md:80 -#: ../../getting_started/install/environment/environment.md:96 -#: 2f233f32b8ba408a9fbadb21fabb99ec 809b3219dd824485bc2cfc898530d708 +#: ../../getting_started/install/environment/environment.md:82 +#: 18cd17a50dc14add9b31f6b4c55069ef msgid "MILVUS_SECURE=" msgstr "MILVUS_SECURE=" -#: ../../getting_started/install/environment/environment.md:82 -#: ../../getting_started/install/environment/environment.md:98 -#: f00603661f2b42e1bd2bca74ad1e3c31 f378e16fdec44c559e34c6929de812e8 +#: ../../getting_started/install/environment/environment.md:84 +#: a4783d775bf2444788b758a71bd5a7e7 msgid "WEAVIATE" msgstr "WEAVIATE" -#: ../../getting_started/install/environment/environment.md:83 -#: da2049ebc6874cf0a6b562e0e2fd9ec7 +#: ../../getting_started/install/environment/environment.md:85 +#: 3cc5ca99670947e6868e27db588031e0 msgid "VECTOR_STORE_TYPE=Weaviate" msgstr "VECTOR_STORE_TYPE=Weaviate" -#: ../../getting_started/install/environment/environment.md:84 -#: ../../getting_started/install/environment/environment.md:99 -#: 25f1246629934289aad7ef01c7304097 c9fe0e413d9a4fc8abf86b3ed99e0581 +#: ../../getting_started/install/environment/environment.md:86 +#: 141a3da2e36e40ffaa0fb863081a4c07 msgid "WEAVIATE_URL=https://kt-region-m8hcy0wc.weaviate.network" msgstr "WEAVIATE_URL=https://kt-region-m8hcy0wc.weaviate.network" -#: ../../getting_started/install/environment/environment.md:102 -#: ba7c9e707f6a4cd6b99e52b58da3ab2d +#: ../../getting_started/install/environment/environment.md:89 +#: fde1941617ec4148b33c298bebeb45e4 msgid "Multi-GPU Setting" msgstr "Multi-GPU Setting" -#: ../../getting_started/install/environment/environment.md:103 -#: 5ca75fdf2c264b2c844d77f659b4f0b3 +#: ../../getting_started/install/environment/environment.md:90 +#: fe162354e15e42cda54f6c9322409321 msgid "" "See https://developer.nvidia.com/blog/cuda-pro-tip-control-gpu-" "visibility-cuda_visible_devices/ If CUDA_VISIBLE_DEVICES is not " @@ -312,50 +309,50 @@ msgstr "" "参考 https://developer.nvidia.com/blog/cuda-pro-tip-control-gpu-visibility-" "cuda_visible_devices/ 如果 CUDA_VISIBLE_DEVICES没有设置, 会使用所有可用的gpu" -#: ../../getting_started/install/environment/environment.md:106 -#: de92eb310aff43fbbbf3c5a116c3b2c6 +#: ../../getting_started/install/environment/environment.md:93 +#: c8a83b09bfc94dab8226840b275ca034 msgid "CUDA_VISIBLE_DEVICES=0" msgstr "CUDA_VISIBLE_DEVICES=0" -#: ../../getting_started/install/environment/environment.md:108 -#: d2641df6123a442b8e4444ad5f01a9aa +#: ../../getting_started/install/environment/environment.md:95 +#: a1d33bd2492a4a80bd8b679c1331280a msgid "" "Optionally, you can also specify the gpu ID to use before the starting " "command" msgstr "你也可以通过启动命令设置gpu ID" -#: ../../getting_started/install/environment/environment.md:110 -#: 76c66179d11a4e5fa369421378609aae +#: ../../getting_started/install/environment/environment.md:97 +#: 961087a5cf1b45168c7439e3a2103253 msgid "CUDA_VISIBLE_DEVICES=3,4,5,6" msgstr "CUDA_VISIBLE_DEVICES=3,4,5,6" -#: ../../getting_started/install/environment/environment.md:112 -#: 29bd0f01fdf540ad98385ea8473f7647 +#: ../../getting_started/install/environment/environment.md:99 +#: 545b438ecb9d46edacbd8b4cc95886f9 msgid "You can configure the maximum memory used by each GPU." msgstr "可以设置GPU的最大内存" -#: ../../getting_started/install/environment/environment.md:114 -#: 31e5e23838734ba7a2810e2387e6d6a0 +#: ../../getting_started/install/environment/environment.md:101 +#: a78dc8082fa04e13a7a3e43302830c26 msgid "MAX_GPU_MEMORY=16Gib" msgstr "MAX_GPU_MEMORY=16Gib" -#: ../../getting_started/install/environment/environment.md:117 -#: 99aa63ab1ae049d9b94536d6a96f3443 +#: ../../getting_started/install/environment/environment.md:104 +#: eaebcb1784be4047b739ff1b8a78faa1 msgid "Other Setting" msgstr "Other Setting" -#: ../../getting_started/install/environment/environment.md:118 -#: 3168732183874bffb59a3575d3473d62 +#: ../../getting_started/install/environment/environment.md:105 +#: 21f524662fa34bfa9cfb8855bc191cc7 msgid "Language Settings(influence prompt language)" msgstr "Language Settings(涉及prompt语言以及知识切片方式)" -#: ../../getting_started/install/environment/environment.md:119 -#: 73eb0a96f29b4739bd456faa9cb5033d +#: ../../getting_started/install/environment/environment.md:106 +#: bb5ce4a6ee794f0e910363673e54055a msgid "LANGUAGE=en" msgstr "LANGUAGE=en" -#: ../../getting_started/install/environment/environment.md:120 -#: c6646b78c6cf4d25a13108232f5b2046 +#: ../../getting_started/install/environment/environment.md:107 +#: 862f113d63b94084b89bfef29f8ab48d msgid "LANGUAGE=zh" msgstr "LANGUAGE=zh" diff --git a/docs/locales/zh_CN/LC_MESSAGES/getting_started/install/llm/proxyllm/proxyllm.po b/docs/locales/zh_CN/LC_MESSAGES/getting_started/install/llm/proxyllm/proxyllm.po new file mode 100644 index 000000000..f6411fd1a --- /dev/null +++ b/docs/locales/zh_CN/LC_MESSAGES/getting_started/install/llm/proxyllm/proxyllm.po @@ -0,0 +1,97 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, csunny +# This file is distributed under the same license as the DB-GPT package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: DB-GPT 👏👏 0.4.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 11:26+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../getting_started/install/llm/proxyllm/proxyllm.md:1 +#: b006d689cfd2430da6a2b503a4f2fef3 +msgid "Proxy LLM API" +msgstr "Proxy LLM API" + +#: ../../getting_started/install/llm/proxyllm/proxyllm.md:3 +#: b60328fb6b074edba31c34825038bbf4 +msgid "Now DB-GPT supports connect LLM service through proxy rest api." +msgstr "DB-GPT支持对接第三方的LLM REST API 服务" + +#: ../../getting_started/install/llm/proxyllm/proxyllm.md:5 +#: 82dcc5fc9d314a6f871851c842c3b6b3 +msgid "LLM rest api now supports" +msgstr "LLM REST API服务目前支持" + +#: ../../getting_started/install/llm/proxyllm/proxyllm.md:7 +#: 2a894db1f42544b2bdc932b50050eaf4 +msgid "OpenAI" +msgstr "OpenAI" + +#: ../../getting_started/install/llm/proxyllm/proxyllm.md:8 +#: 52c288434b6b42a1a376f8d698d0aad1 +msgid "Azure" +msgstr "Azure" + +#: ../../getting_started/install/llm/proxyllm/proxyllm.md:9 +#: eeca0b58cf504586b8695e433e1a4458 +msgid "Aliyun tongyi" +msgstr "通义千问API" + +#: ../../getting_started/install/llm/proxyllm/proxyllm.md:10 +#: 7b30a85b145545f0b2d8dd3b85f98bcf +msgid "Baidu wenxin" +msgstr "百度文心API" + +#: ../../getting_started/install/llm/proxyllm/proxyllm.md:11 +#: b4cfeba632cb4f898564cf76d9c1551d +msgid "Zhipu" +msgstr "智谱API" + +#: ../../getting_started/install/llm/proxyllm/proxyllm.md:12 +#: faa92560db2b47d9b9a41bbf703fd84d +msgid "Baichuan" +msgstr "百川API" + +#: ../../getting_started/install/llm/proxyllm/proxyllm.md:13 +#: aba2dcc36b854b6193ababca772e1cf0 +#, fuzzy +msgid "Bard" +msgstr "bard API" + +#: ../../getting_started/install/llm/proxyllm/proxyllm.md:17 +#: f66f0bfcad2a4f428c953452d5f6963b +msgid "" +"How to Integrate LLM rest API, like OpenAI, Azure, tongyi, wenxin llm " +"api service?" +msgstr "如何集成这些LLM rest API呢" + +#: ../../getting_started/install/llm/proxyllm/proxyllm.md:18 +#: 01284baeb4a24bb18d48e51ad8503997 +msgid "update your `.env` file" +msgstr "更新`.env`配置文件" + +#: ../../getting_started/install/llm/proxyllm/proxyllm.md:63 +#: f602876d957446fd8056854b6b2121a1 +msgid "Make sure your .env configuration is not overwritten" +msgstr "确保文件配置不会被覆盖" + +#: ../../getting_started/install/llm/proxyllm/proxyllm.md:66 +#: 51cb501d1500440981b3b93f01ff36f4 +msgid "How to Integrate Embedding rest API, like OpenAI, Azure api service?" +msgstr "如何集成想OpenAI Embedding rest api" + +#~ msgid "Now DB-GPT support connect LLM service through proxy rest api." +#~ msgstr "" + diff --git a/docs/locales/zh_CN/LC_MESSAGES/index.po b/docs/locales/zh_CN/LC_MESSAGES/index.po index f626ea6ef..3a4c57dbc 100644 --- a/docs/locales/zh_CN/LC_MESSAGES/index.po +++ b/docs/locales/zh_CN/LC_MESSAGES/index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: DB-GPT 0.3.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-17 21:58+0800\n" +"POT-Creation-Date: 2023-11-14 17:55+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -19,154 +19,176 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.12.1\n" -#: ../../index.rst:34 ../../index.rst:45 3566ae9872dd4f97844f9e0680de5f5d +#: ../../index.rst:44 ../../index.rst:54 fb98707559574eb29f01bd8f6ebfac60 msgid "Getting Started" msgstr "开始" -#: ../../index.rst:59 ../../index.rst:80 6845a928056940b28be8c13d766009f8 +#: ../../index.rst:70 ../../index.rst:92 6d9603b978d44e54a257fb359c871867 msgid "Modules" msgstr "模块" -#: ../../index.rst:94 ../../index.rst:110 ef3bcf6f837345fca8539d51434e3c2c -msgid "Use Cases" -msgstr "示例" - -#: ../../index.rst:124 ../../index.rst:127 b10b8b49e4f5459f8bea881ffc9259d5 -msgid "Reference" -msgstr "参考" - -#: ../../index.rst:137 ../../index.rst:143 12e75881253a4c4383ac7364c1103348 +#: ../../index.rst:106 ../../index.rst:112 9df06739ca4446bc86ec2ff6907763ce msgid "Resources" msgstr "资源" -#: ../../index.rst:7 f1a30af655744c0b8fb7197a5fc3a45b -msgid "Welcome to DB-GPT!" -msgstr "欢迎来到DB-GPT中文文档" +#: ../../index.rst:7 7de875cfbc764937ab7f8b362d997952 +msgid "Overview" +msgstr "概览" -#: ../../index.rst:8 426686c829a342798eaae9f789260621 +#: ../../index.rst:9 770a756bd0b640ef863fd72b8d7e882a msgid "" -"As large models are released and iterated upon, they are becoming " -"increasingly intelligent. However, in the process of using large models, " -"we face significant challenges in data security and privacy. We need to " -"ensure that our sensitive data and environments remain completely " -"controlled and avoid any data privacy leaks or security risks. Based on " -"this, we have launched the DB-GPT project to build a complete private " -"large model solution for all database-based scenarios. This solution " -"supports local deployment, allowing it to be applied not only in " -"independent private environments but also to be independently deployed " -"and isolated according to business modules, ensuring that the ability of " -"large models is absolutely private, secure, and controllable." -msgstr "" -"随着大型模型的发布和迭代,它们变得越来越智能。然而,在使用大型模型的过程中,我们在数据安全和隐私方面面临着重大挑战。我们需要确保我们的敏感数据和环境得到完全控制,避免任何数据隐私泄露或安全风险。基于此" -",我们启动了DB-" -"GPT项目,为所有基于数据库的场景构建一个完整的私有大模型解决方案。该方案“”支持本地部署,既可应用于“独立私有环境”,又可根据业务模块进行“独立部署”和“隔离”,确保“大模型”的能力绝对私有、安全、可控。" +"DB-GPT is an open-source framework for large models in the database " +"field. Its purpose is to build infrastructure for the domain of large " +"models, making it easier and more convenient to develop applications " +"around databases. By developing various technical capabilities such as:" +msgstr "DB-GPT是一个开源的数据库领域大模型框架。目的是构建大模型领域的基础设施,通过开发如" + +#: ../../index.rst:11 8774a5ad5ce14baf9eae35fefd62e40b +msgid "**SMMF(Service-oriented Multi-model Management Framework)**" +msgstr "**服务化多模型管理**" + +#: ../../index.rst:12 b2ba120fc994436db7066486c9acd6ad +msgid "**Text2SQL Fine-tuning**" +msgstr "**Text2SQL微调**" + +#: ../../index.rst:13 d55efe86dd6b40ebbe63079edb60e421 +msgid "**RAG(Retrieval Augmented Generation) framework and optimization**" +msgstr "**检索增强**" -#: ../../index.rst:10 0a7fbd17ecfd48cb8e0593e35a225e1b +#: ../../index.rst:14 3eca943c44464c9cb9bbc5724c27ad1c +msgid "**Data-Driven Agents framework collaboration**" +msgstr "**数据驱动的Agents协作框架**" + +#: ../../index.rst:15 bf41d57cbc474e2c9829f09d6b983ae1 +msgid "**GBI(Generative Business intelligence)**" +msgstr "**生成式报表分析**" + +#: ../../index.rst:17 36630469cc064317a1c196dd377c3d93 msgid "" -"**DB-GPT** is an experimental open-source project that uses localized GPT" -" large models to interact with your data and environment. With this " -"solution, you can be assured that there is no risk of data leakage, and " -"your data is 100% private and secure." -msgstr "" -"DB-GPT 是一个开源的以数据库为基础的GPT实验项目,使用本地化的GPT大模型与您的数据和环境进行交互,无数据泄露风险100% 私密,100%" -" 安全。" +"etc, DB-GPT simplifies the construction of large model applications based" +" on databases." +msgstr "等能力, 让围绕数据库构建大模型应用更简单,更方便。" + +#: ../../index.rst:19 82f03535c6914ebfa8b3adad34eeed2f +msgid "" +"In the era of Data 3.0, enterprises and developers can build their own " +"customized applications with less code, leveraging models and databases." +msgstr "*数据3.0 时代,基于模型、数据库,企业/开发者可以用更少的代码搭建自己的专属应用*。" -#: ../../index.rst:12 50e02964b1e24c4fa598f820796aec61 -msgid "**Features**" +#: ../../index.rst:22 daf64ec39c28458087d542879d106d1b +msgid "Features" msgstr "特性" -#: ../../index.rst:13 62b74478b9b046dfa7606785939ca70e +#: ../../index.rst:24 7ceb41b710f847e683479dc892baa3d5 +msgid "**1. Private Domain Q&A & Data Processing**" +msgstr "**1. 私域问答&数据处理**" + +#: ../../index.rst:25 3f480e259ee9432b934ee6474bc8de79 msgid "" -"Currently, we have released multiple key features, which are listed below" -" to demonstrate our current capabilities:" -msgstr "目前我们已经发布了多种关键的特性,这里一一列举展示一下当前发布的能力。" +"Supports custom construction of knowledge bases through methods such as " +"built-in, multi-file format uploads, and plugin-based web scraping. " +"Enables unified vector storage and retrieval of massive structured and " +"unstructured data." +msgstr "支持内置、多文件格式上传、插件自抓取等方式自定义构建知识库,对海量结构化,非结构化数据做统一向量存储与检索" -#: ../../index.rst:15 f593159ba8dd4388bd2ba189f9efd5ea -msgid "SQL language capabilities - SQL generation - SQL diagnosis" -msgstr "SQL语言能力 - SQL生成 - SQL诊断" +#: ../../index.rst:27 1f9f12be761a4a6c996788051a3fa4dd +msgid "**2.Multi-Data Source & GBI(Generative Business intelligence)**" +msgstr "**2.多数据源与可视化**" -#: ../../index.rst:19 b829655a3ef146528beb9c50538be84e +#: ../../index.rst:28 e597e6c2d4ad4d1bbcc440b3afb7c0fa msgid "" -"Private domain Q&A and data processing - Database knowledge Q&A - Data " -"processing" -msgstr "私有领域问答与数据处理 - 数据库知识问答 - 数据处理" +"Supports interaction between natural language and various data sources " +"such as Excel, databases, and data warehouses. Also supports analysis " +"reporting." +msgstr "支持自然语言与Excel、数据库、数仓等多种数据源交互,并支持分析报告。" + +#: ../../index.rst:30 9c63ecf927874f9ea79f1ef5c1535e67 +msgid "**3.SMMF(Service-oriented Multi-model Management Framework)**" +msgstr "**3.多模型管理**" -#: ../../index.rst:23 43e988a100a740358f1a0be1710d7960 +#: ../../index.rst:31 d6cfb9b69f9743d083c4644c90fd6108 msgid "" -"Plugins - Support custom plugin execution tasks and natively support the " -"Auto-GPT plugin, such as:" -msgstr "插件模型 - 支持自定义插件执行任务,并原生支持Auto-GPT插件,例如:* SQL自动执行,获取查询结果 * 自动爬取学习知识" +"Supports a wide range of models, including dozens of large language " +"models such as open-source models and API proxies. Examples include " +"LLaMA/LLaMA2, Baichuan, ChatGLM, Wenxin, Tongyi, Zhipu, Xinghuo, etc." +msgstr "海量模型支持,包括开源、API代理等几十种大语言模型。如LLaMA/LLaMA2、Baichuan、ChatGLM、文心、通义、智谱、星火等。" + +#: ../../index.rst:33 dda6cec4316e48f2afe77005baa53a06 +msgid "**4.Automated Fine-tuning**" +msgstr "**4.自动化微调**" -#: ../../index.rst:26 888186524aef4fe5a0ba643d55783fd9 +#: ../../index.rst:34 7cf1654a9779444ab3982435887d087b msgid "" -"Unified vector storage/indexing of knowledge base - Support for " -"unstructured data such as PDF, Markdown, CSV, and WebURL" -msgstr "知识库统一向量存储/索引 - 非结构化数据支持包括PDF、MarkDown、CSV、WebURL" +"A lightweight framework for automated fine-tuning built around large " +"language models, Text2SQL datasets, and methods like LoRA/QLoRA/Pturning." +" Makes TextSQL fine-tuning as convenient as a production line." +msgstr "" +"围绕大语言模型、Text2SQL数据集、LoRA/QLoRA/Pturning等微调方法构建的自动化微调轻量框架, " +"让TextSQL微调像流水线一样方便。" + +#: ../../index.rst:36 f58f114546f04b658aaa67fd895fba2b +msgid "**5.Data-Driven Multi-Agents & Plugins**" +msgstr "**5.数据驱动的插件模型**" -#: ../../index.rst:29 fab4f961fe1746dca3d5e369de714108 +#: ../../index.rst:37 a93fdca3de054cb0812d7f5ca3d12375 msgid "" -"Milti LLMs Support - Supports multiple large language models, currently " -"supporting Vicuna (7b, 13b), ChatGLM-6b (int4, int8) - TODO: codegen2, " -"codet5p" -msgstr "多模型支持 - 支持多种大语言模型, 当前已支持Vicuna(7b,13b), ChatGLM-6b(int4, int8)" +"Supports executing tasks through custom plugins and natively supports the" +" Auto-GPT plugin model. Agents protocol follows the Agent Protocol " +"standard." +msgstr "支持自定义插件执行任务,原生支持Auto-GPT插件模型,Agents协议采用Agent Protocol标准" + +#: ../../index.rst:39 3a0e89b151694e4b8e87646efe313568 +msgid "**6.Privacy and Security**" +msgstr "**6.隐私安全**" -#: ../../index.rst:35 7bc21f280364448da0edc046378be622 +#: ../../index.rst:40 aa50fc40f22f4fae8225a0a0a97c17dc msgid "" -"How to get started using DB-GPT to interact with your data and " -"environment." -msgstr "开始使用DB-GPT与您的数据环境进行交互。" +"Ensures data privacy and security through techniques such as privatizing " +"large models and proxy de-identification." +msgstr "通过私有化大模型、代理脱敏等多种技术保障数据的隐私安全" -#: ../../index.rst:36 5362221ecdf5427faa51df83d4a939ee +#: ../../index.rst:46 d8bf21a7abd749608cddcdb2e358f3be +msgid "Quickstart" +msgstr "快速开始" + +#: ../../index.rst:48 d1f117a7cbb94c80afc0660e899d8154 #, fuzzy msgid "`Quickstart Guide <./getting_started/getting_started.html>`_" msgstr "`使用指南 <./getting_started/getting_started.html>`_" -#: ../../index.rst:38 e028ed5afce842fbb76a6ce825d5a8e2 +#: ../../index.rst:50 5fd56979f31b4a0b93082004f1cb90c7 msgid "Concepts and terminology" msgstr "相关概念" -#: ../../index.rst:40 f773ac5e50054c308920c0b95a44b0cb +#: ../../index.rst:52 09c6889d02fa417c9ffde312211726f0 #, fuzzy msgid "`Concepts and Terminology <./getting_started/concepts.html>`_" msgstr "`相关概念 <./getting_started/concepts.html>`_" -#: ../../index.rst:42 afeee818ec45454da12b80161b5f1de0 -msgid "Coming soon..." -msgstr "" - -#: ../../index.rst:44 cb4f911316234b86aad88b83d2784ad3 -msgid "`Tutorials <.getting_started/tutorials.html>`_" -msgstr "`教程 <.getting_started/tutorials.html>`_" - -#: ../../index.rst:61 de365722d61442b99f44fcde8a8c9efb +#: ../../index.rst:72 5bd727134fc94cfb88abb755ccceac03 msgid "" "These modules are the core abstractions with which we can interact with " -"data and environment smoothly." -msgstr "这些模块是我们可以与数据和环境顺利地进行交互的核心组成。" +"data and environment smoothly. It's very important for DB-GPT, DB-GPT " +"also provide standard, extendable interfaces." +msgstr "这些模块是我们能够与数据和环境顺利交互的核心抽象。这对于DB-GPT来说非常重要,DB-GPT还提供了标准的、可扩展的接口。" -#: ../../index.rst:62 8fbb6303d3cd4fcc956815f44ef1fa8d -msgid "" -"It's very important for DB-GPT, DB-GPT also provide standard, extendable " -"interfaces." -msgstr "DB-GPT还提供了标准的、可扩展的接口。" - -#: ../../index.rst:64 797ac43f459b4662a5097c8cb783c4ba +#: ../../index.rst:74 1a5eb0b7cb884309be3431112c8f38e5 msgid "" "The docs for each module contain quickstart examples, how to guides, " "reference docs, and conceptual guides." msgstr "每个模块的文档都包含快速入门的例子、操作指南、参考文档和相关概念等内容。" -#: ../../index.rst:66 70d7b89c1c154c65aabedbb3c94c8771 +#: ../../index.rst:76 24aa8c08d1dc460ab23d69a5bb9c8fc3 msgid "The modules are as follows" msgstr "组成模块如下:" -#: ../../index.rst:68 794d8a939e274894910fcdbb3ee52429 +#: ../../index.rst:78 9f4280cca1f743cb9b868cc67e3f3ce7 msgid "" "`LLMs <./modules/llms.html>`_: Supported multi models management and " "integrations." msgstr "`LLMs <./modules/llms.html>`_:基于FastChat提供大模型的运行环境。支持多模型管理和集成。 " -#: ../../index.rst:70 58b0d2fcac2c471494fe2b6b5b3f1b49 +#: ../../index.rst:80 d357811f110f40e79f0c20ef9cb60d0c msgid "" "`Prompts <./modules/prompts.html>`_: Prompt management, optimization, and" " serialization for multi database." @@ -174,86 +196,35 @@ msgstr "" "`Prompt自动生成与优化 <./modules/prompts.html>`_: 自动化生成高质量的Prompt " ",并进行优化,提高系统的响应效率" -#: ../../index.rst:72 d433b62e11f64e18995bd334f93992a6 +#: ../../index.rst:82 3cb9acc9f11a46638e6687f743d6b7f3 msgid "`Plugins <./modules/plugins.html>`_: Plugins management, scheduler." msgstr "`Agent与插件: <./modules/plugins.html>`_:提供Agent和插件机制,使得用户可以自定义并增强系统的行为。" -#: ../../index.rst:74 3e7eb10f64274c07ace90b84ffc904b4 +#: ../../index.rst:84 b24c462cb5364890a6ca990f09f48cfc #, fuzzy msgid "" "`Knowledge <./modules/knowledge.html>`_: Knowledge management, embedding," " and search." msgstr "`知识库能力: <./modules/knowledge.html>`_: 支持私域知识库问答能力, " -#: ../../index.rst:76 3af796f287f54de0869a086cfa24b568 +#: ../../index.rst:86 7448b231fe8745f1965a1f48ffc5444a msgid "" "`Connections <./modules/connections.html>`_: Supported multi databases " "connection. management connections and interact with this." msgstr "`连接模块 <./modules/connections.html>`_: 用于连接不同的模块和数据源,实现数据的流转和交互 " -#: ../../index.rst:78 27273a4020a540f4b28e7c54ea9c9232 +#: ../../index.rst:88 c677fb24869347ff907f1529ef333b6b #, fuzzy msgid "`Vector <./modules/vector.html>`_: Supported multi vector database." msgstr "`LLMs <./modules/llms.html>`_:基于FastChat提供大模型的运行环境。支持多模型管理和集成。 " -#: ../../index.rst:96 d887747669d1429f950c56131cd35a62 -msgid "Best Practices and built-in implementations for common DB-GPT use cases:" -msgstr "DB-GPT用例的最佳实践和内置方法:" - -#: ../../index.rst:98 63ea6a449012432baeeef975db5c3ac1 -msgid "" -"`Sql generation and diagnosis " -"<./use_cases/sql_generation_and_diagnosis.html>`_: SQL generation and " -"diagnosis." -msgstr "`Sql生成和诊断 <./use_cases/sql_generation_and_diagnosis.html>`_: Sql生成和诊断。" - -#: ../../index.rst:100 c7388a2147af48d1a6619492a3b926db -msgid "" -"`knownledge Based QA <./use_cases/knownledge_based_qa.html>`_: A " -"important scene for user to chat with database documents, codes, bugs and" -" schemas." -msgstr "`知识库问答 <./use_cases/knownledge_based_qa.html>`_: 用户与数据库文档、代码和bug聊天的重要场景\"" - -#: ../../index.rst:102 f5a459f5a84241648a6a05f7ba3026c0 -msgid "" -"`Chatbots <./use_cases/chatbots.html>`_: Language model love to chat, use" -" multi models to chat." -msgstr "`聊天机器人 <./use_cases/chatbots.html>`_: 使用多模型进行对话" - -#: ../../index.rst:104 d566174db6eb4834854c00ce7295c297 -msgid "" -"`Querying Database Data <./use_cases/query_database_data.html>`_: Query " -"and Analysis data from databases and give charts." -msgstr "`查询数据库数据 <./use_cases/query_database_data.html>`_:从数据库中查询和分析数据并给出图表。" - -#: ../../index.rst:106 89aac5a738ae4aeb84bc324803ada354 -msgid "" -"`Interacting with apis <./use_cases/interacting_with_api.html>`_: " -"Interact with apis, such as create a table, deploy a database cluster, " -"create a database and so on." -msgstr "" -"`API交互 <./use_cases/interacting_with_api.html>`_: " -"与API交互,例如创建表、部署数据库集群、创建数据库等。" - -#: ../../index.rst:108 f100fb0cdd264cf186bf554771488aa1 -msgid "" -"`Tool use with plugins <./use_cases/tool_use_with_plugin>`_: According to" -" Plugin use tools to manage databases autonomoly." -msgstr "`插件工具 <./use_cases/tool_use_with_plugin>`_: 根据插件使用工具自主管理数据库。" - -#: ../../index.rst:125 93809b95cc4a41249d7ab6b264981167 -msgid "" -"Full documentation on all methods, classes, installation methods, and " -"integration setups for DB-GPT." -msgstr "关于DB-GPT的所有方法、类、安装方法和集成设置的完整文档。" - -#: ../../index.rst:139 4a95e65e128e4fc0907a3f51f1f2611b +#: ../../index.rst:108 2e56f2cb1a8b40dda9465c0a1af94196 msgid "" "Additional resources we think may be useful as you develop your " "application!" -msgstr "“我们认为在您开发应用程序时可能有用的其他资源!”" +msgstr "我们认为在您开发应用程序时可能有用的其他资源!" -#: ../../index.rst:141 4934fbae909644769dd83c7f99c0fcd0 +#: ../../index.rst:110 590362cb3b7442d49eafa58cb323e127 msgid "" "`Discord `_: if your have some problem or " "ideas, you can talk from discord." @@ -271,3 +242,325 @@ msgstr "`Discord `_:如果您有任何问题,可 #~ msgid "Guides for how other companies/products can be used with DB-GPT" #~ msgstr "其他公司/产品如何与DB-GPT一起使用的方法指南" +#~ msgid "Use Cases" +#~ msgstr "示例" + +#~ msgid "" +#~ "Best Practices and built-in " +#~ "implementations for common DB-GPT use" +#~ " cases:" +#~ msgstr "DB-GPT用例的最佳实践和内置方法:" + +#~ msgid "" +#~ "`Sql generation and diagnosis " +#~ "<./use_cases/sql_generation_and_diagnosis.html>`_: SQL " +#~ "generation and diagnosis." +#~ msgstr "`Sql生成和诊断 <./use_cases/sql_generation_and_diagnosis.html>`_: Sql生成和诊断。" + +#~ msgid "" +#~ "`knownledge Based QA " +#~ "<./use_cases/knownledge_based_qa.html>`_: A important " +#~ "scene for user to chat with " +#~ "database documents, codes, bugs and " +#~ "schemas." +#~ msgstr "" +#~ "`知识库问答 <./use_cases/knownledge_based_qa.html>`_: " +#~ "用户与数据库文档、代码和bug聊天的重要场景\"" + +#~ msgid "" +#~ "`Chatbots <./use_cases/chatbots.html>`_: Language " +#~ "model love to chat, use multi " +#~ "models to chat." +#~ msgstr "`聊天机器人 <./use_cases/chatbots.html>`_: 使用多模型进行对话" + +#~ msgid "" +#~ "`Querying Database Data " +#~ "<./use_cases/query_database_data.html>`_: Query and " +#~ "Analysis data from databases and give" +#~ " charts." +#~ msgstr "`查询数据库数据 <./use_cases/query_database_data.html>`_:从数据库中查询和分析数据并给出图表。" + +#~ msgid "" +#~ "`Interacting with apis " +#~ "<./use_cases/interacting_with_api.html>`_: Interact with" +#~ " apis, such as create a table, " +#~ "deploy a database cluster, create a " +#~ "database and so on." +#~ msgstr "" +#~ "`API交互 <./use_cases/interacting_with_api.html>`_: " +#~ "与API交互,例如创建表、部署数据库集群、创建数据库等。" + +#~ msgid "" +#~ "`Tool use with plugins " +#~ "<./use_cases/tool_use_with_plugin>`_: According to " +#~ "Plugin use tools to manage databases " +#~ "autonomoly." +#~ msgstr "`插件工具 <./use_cases/tool_use_with_plugin>`_: 根据插件使用工具自主管理数据库。" + +#~ msgid "Reference" +#~ msgstr "参考" + +#~ msgid "Welcome to DB-GPT!" +#~ msgstr "欢迎来到DB-GPT中文文档" + +#~ msgid "" +#~ "As large models are released and " +#~ "iterated upon, they are becoming " +#~ "increasingly intelligent. However, in the " +#~ "process of using large models, we " +#~ "face significant challenges in data " +#~ "security and privacy. We need to " +#~ "ensure that our sensitive data and " +#~ "environments remain completely controlled and" +#~ " avoid any data privacy leaks or " +#~ "security risks. Based on this, we " +#~ "have launched the DB-GPT project " +#~ "to build a complete private large " +#~ "model solution for all database-based" +#~ " scenarios. This solution supports local" +#~ " deployment, allowing it to be " +#~ "applied not only in independent private" +#~ " environments but also to be " +#~ "independently deployed and isolated according" +#~ " to business modules, ensuring that " +#~ "the ability of large models is " +#~ "absolutely private, secure, and controllable." +#~ msgstr "" +#~ "随着大型模型的发布和迭代,它们变得越来越智能。然而,在使用大型模型的过程中,我们在数据安全和隐私方面面临着重大挑战。我们需要确保我们的敏感数据和环境得到完全控制,避免任何数据隐私泄露或安全风险。基于此" +#~ ",我们启动了DB-" +#~ "GPT项目,为所有基于数据库的场景构建一个完整的私有大模型解决方案。该方案“”支持本地部署,既可应用于“独立私有环境”,又可根据业务模块进行“独立部署”和“隔离”,确保“大模型”的能力绝对私有、安全、可控。" + +#~ msgid "" +#~ "**DB-GPT** is an experimental open-" +#~ "source project that uses localized GPT" +#~ " large models to interact with your" +#~ " data and environment. With this " +#~ "solution, you can be assured that " +#~ "there is no risk of data leakage," +#~ " and your data is 100% private " +#~ "and secure." +#~ msgstr "" +#~ "DB-GPT " +#~ "是一个开源的以数据库为基础的GPT实验项目,使用本地化的GPT大模型与您的数据和环境进行交互,无数据泄露风险100% " +#~ "私密,100% 安全。" + +#~ msgid "" +#~ "Currently, we have released multiple key" +#~ " features, which are listed below to" +#~ " demonstrate our current capabilities:" +#~ msgstr "目前我们已经发布了多种关键的特性,这里一一列举展示一下当前发布的能力。" + +#~ msgid "SQL language capabilities - SQL generation - SQL diagnosis" +#~ msgstr "SQL语言能力 - SQL生成 - SQL诊断" + +#~ msgid "" +#~ "Private domain Q&A and data processing" +#~ " - Database knowledge Q&A - Data " +#~ "processing" +#~ msgstr "私有领域问答与数据处理 - 数据库知识问答 - 数据处理" + +#~ msgid "" +#~ "Plugins - Support custom plugin " +#~ "execution tasks and natively support the" +#~ " Auto-GPT plugin, such as:" +#~ msgstr "插件模型 - 支持自定义插件执行任务,并原生支持Auto-GPT插件,例如:* SQL自动执行,获取查询结果 * 自动爬取学习知识" + +#~ msgid "" +#~ "Unified vector storage/indexing of knowledge" +#~ " base - Support for unstructured data" +#~ " such as PDF, Markdown, CSV, and " +#~ "WebURL" +#~ msgstr "知识库统一向量存储/索引 - 非结构化数据支持包括PDF、MarkDown、CSV、WebURL" + +#~ msgid "" +#~ "Multi LLMs Support - Supports multiple" +#~ " large language models, currently " +#~ "supporting Vicuna (7b, 13b), ChatGLM-6b" +#~ " (int4, int8) - TODO: codegen2, " +#~ "codet5p" +#~ msgstr "多模型支持 - 支持多种大语言模型, 当前已支持Vicuna(7b,13b), ChatGLM-6b(int4, int8)" + +#~ msgid "" +#~ "Full documentation on all methods, " +#~ "classes, installation methods, and integration" +#~ " setups for DB-GPT." +#~ msgstr "关于DB-GPT的所有方法、类、安装方法和集成设置的完整文档。" + +#~ msgid "" +#~ "**DB-GPT** is an open-source " +#~ "framework for large models in the " +#~ "database field. Its purpose is to " +#~ "build infrastructure for the domain of" +#~ " large models, making it easier and" +#~ " more convenient to develop applications" +#~ " around databases." +#~ msgstr "" + +#~ msgid "By developing various technical capabilities such as" +#~ msgstr "" + +#~ msgid "SMMF(Service-oriented Multi-model Management Framework)" +#~ msgstr "" + +#~ msgid "Text2SQL Fine-tuning" +#~ msgstr "" + +#~ msgid "RAG(Retrieval Augmented Generation) framework and optimization" +#~ msgstr "" + +#~ msgid "Data-Driven Agents framework collaboration" +#~ msgstr "" + +#~ msgid "" +#~ "5. GBI(Generative Business intelligence) etc," +#~ " DB-GPT simplifies the construction " +#~ "of large model applications based on " +#~ "databases." +#~ msgstr "" + +#~ msgid "" +#~ "**1. Private Domain Q&A & Data " +#~ "Processing** Supports custom construction of" +#~ " knowledge bases through methods such " +#~ "as built-in, multi-file format " +#~ "uploads, and plugin-based web scraping." +#~ " Enables unified vector storage and " +#~ "retrieval of massive structured and " +#~ "unstructured data." +#~ msgstr "" + +#~ msgid "" +#~ "**2.Multi-Data Source & GBI(Generative " +#~ "Business intelligence)** Supports interaction " +#~ "between natural language and various " +#~ "data sources such as Excel, databases," +#~ " and data warehouses. Also supports " +#~ "analysis reporting." +#~ msgstr "" + +#~ msgid "" +#~ "**3.SMMF(Service-oriented Multi-model " +#~ "Management Framework)** Supports a wide " +#~ "range of models, including dozens of " +#~ "large language models such as open-" +#~ "source models and API proxies. Examples" +#~ " include LLaMA/LLaMA2, Baichuan, ChatGLM, " +#~ "Wenxin, Tongyi, Zhipu, Xinghuo, etc." +#~ msgstr "" + +#~ msgid "" +#~ "**4.Automated Fine-tuning** A lightweight " +#~ "framework for automated fine-tuning " +#~ "built around large language models, " +#~ "Text2SQL datasets, and methods like " +#~ "LoRA/QLoRA/Pturning. Makes TextSQL fine-tuning" +#~ " as convenient as a production line." +#~ msgstr "" + +#~ msgid "" +#~ "**5.Data-Driven Multi-Agents & Plugins**" +#~ " Supports executing tasks through custom" +#~ " plugins and natively supports the " +#~ "Auto-GPT plugin model. Agents protocol " +#~ "follows the Agent Protocol standard." +#~ msgstr "" + +#~ msgid "" +#~ "**6.Privacy and Security** Ensures data " +#~ "privacy and security through techniques " +#~ "such as privatizing large models and " +#~ "proxy de-identification." +#~ msgstr "" + +#~ msgid "Coming soon..." +#~ msgstr "" + +#~ msgid "`Tutorials <.getting_started/tutorials.html>`_" +#~ msgstr "`教程 <.getting_started/tutorials.html>`_" + +#~ msgid "" +#~ "DB-GPT is an open-source framework" +#~ " for large models in the database " +#~ "field. Its purpose is to build " +#~ "infrastructure for the domain of large" +#~ " models, making it easier and more" +#~ " convenient to develop applications around" +#~ " databases. By developing various technical" +#~ " capabilities such as **1. SMMF(Service-" +#~ "oriented Multi-model Management Framework)**" +#~ " **2. Text2SQL Fine-tuning** **3. " +#~ "RAG(Retrieval Augmented Generation) framework " +#~ "and optimization** **4. Data-Driven " +#~ "Agents framework collaboration** **5. " +#~ "GBI(Generative Business intelligence)** etc, " +#~ "DB-GPT simplifies the construction of " +#~ "large model applications based on " +#~ "databases." +#~ msgstr "" + +#~ msgid "" +#~ "**1. Private Domain Q&A & Data " +#~ "Processing** ::Supports custom construction of" +#~ " knowledge bases through methods such " +#~ "as built-in, multi-file format " +#~ "uploads, and plugin-based web scraping." +#~ " Enables unified vector storage and " +#~ "retrieval of massive structured and " +#~ "unstructured data." +#~ msgstr "" + +#~ msgid "" +#~ "**2.Multi-Data Source & GBI(Generative " +#~ "Business intelligence)** ::Supports interaction " +#~ "between natural language and various " +#~ "data sources such as Excel, databases," +#~ " and data warehouses. Also supports " +#~ "analysis reporting." +#~ msgstr "" + +#~ msgid "" +#~ "**3.SMMF(Service-oriented Multi-model " +#~ "Management Framework)** ::Supports a wide " +#~ "range of models, including dozens of " +#~ "large language models such as open-" +#~ "source models and API proxies. Examples" +#~ " include LLaMA/LLaMA2, Baichuan, ChatGLM, " +#~ "Wenxin, Tongyi, Zhipu, Xinghuo, etc." +#~ msgstr "" + +#~ msgid "" +#~ "**4.Automated Fine-tuning** ::A lightweight" +#~ " framework for automated fine-tuning " +#~ "built around large language models, " +#~ "Text2SQL datasets, and methods like " +#~ "LoRA/QLoRA/Pturning. Makes TextSQL fine-tuning" +#~ " as convenient as a production line." +#~ msgstr "" + +#~ msgid "" +#~ "**5.Data-Driven Multi-Agents & Plugins**" +#~ " ::Supports executing tasks through custom" +#~ " plugins and natively supports the " +#~ "Auto-GPT plugin model. Agents protocol " +#~ "follows the Agent Protocol standard." +#~ msgstr "" + +#~ msgid "" +#~ "**6.Privacy and Security** ::Ensures data " +#~ "privacy and security through techniques " +#~ "such as privatizing large models and " +#~ "proxy de-identification." +#~ msgstr "" + +#~ msgid "" +#~ "How to get started using DB-GPT" +#~ " to interact with your data and " +#~ "environment." +#~ msgstr "开始使用DB-GPT与您的数据环境进行交互。" + +#~ msgid "" +#~ "It's very important for DB-GPT, " +#~ "DB-GPT also provide standard, extendable" +#~ " interfaces." +#~ msgstr "DB-GPT还提供了标准的、可扩展的接口。" + diff --git a/docs/locales/zh_CN/LC_MESSAGES/modules/knowledge.po b/docs/locales/zh_CN/LC_MESSAGES/modules/knowledge.po index 0b3eac094..bb2dae7af 100644 --- a/docs/locales/zh_CN/LC_MESSAGES/modules/knowledge.po +++ b/docs/locales/zh_CN/LC_MESSAGES/modules/knowledge.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: DB-GPT 0.3.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-13 15:39+0800\n" +"POT-Creation-Date: 2023-11-02 21:04+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -19,103 +19,84 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.12.1\n" -#: ../../modules/knowledge.rst:2 ../../modules/knowledge.rst:136 -#: 3cc8fa6e9fbd4d889603d99424e9529a +#: ../../modules/knowledge.md:1 b94b3b15cb2441ed9d78abd222a717b7 msgid "Knowledge" msgstr "知识" -#: ../../modules/knowledge.rst:4 0465a393d9d541958c39c1d07c885d1f +#: ../../modules/knowledge.md:3 c6d6e308a6ce42948d29e928136ef561 #, fuzzy msgid "" "As the knowledge base is currently the most significant user demand " "scenario, we natively support the construction and processing of " "knowledge bases. At the same time, we also provide multiple knowledge " -"base management strategies in this project, such as pdf knowledge,md " -"knowledge, txt knowledge, word knowledge, ppt knowledge:" +"base management strategies in this project, such as:" msgstr "" "由于知识库是当前用户需求最显著的场景,我们原生支持知识库的构建和处理。同时,我们还在本项目中提供了多种知识库管理策略,如:pdf,md , " "txt, word, ppt" -#: ../../modules/knowledge.rst:6 e670cbe14d8e4da88ba935e4120c31e0 +#: ../../modules/knowledge.md:4 268abc408d40410ba90cf5f121dc5270 +msgid "Default built-in knowledge base" +msgstr "" + +#: ../../modules/knowledge.md:5 558c3364c38b458a8ebf81030efc2a48 +msgid "Custom addition of knowledge bases" +msgstr "" + +#: ../../modules/knowledge.md:6 9cb3ce62da1440579c095848c7aef88c msgid "" -"We currently support many document formats: raw text, txt, pdf, md, html," -" doc, ppt, and url. In the future, we will continue to support more types" -" of knowledge, including audio, video, various databases, and big data " -"sources. Of course, we look forward to your active participation in " -"contributing code." +"Various usage scenarios such as constructing knowledge bases through " +"plugin capabilities and web crawling. Users only need to organize the " +"knowledge documents, and they can use our existing capabilities to build " +"the knowledge base required for the large model." msgstr "" -#: ../../modules/knowledge.rst:9 e0bf601a1a0c458297306db6ff79f931 -msgid "**Create your own knowledge repository**" +#: ../../modules/knowledge.md:9 b8ca6bc4dd9845baa56e36eea7fac2a2 +#, fuzzy +msgid "Create your own knowledge repository" msgstr "创建你自己的知识库" -#: ../../modules/knowledge.rst:11 bb26708135d44615be3c1824668010f6 -msgid "1.prepare" -msgstr "准备" +#: ../../modules/knowledge.md:11 17d7178a67924f43aa5b6293707ef041 +msgid "" +"1.Place personal knowledge files or folders in the pilot/datasets " +"directory." +msgstr "" -#: ../../modules/knowledge.rst:13 c150a0378f3e4625908fa0d8a25860e9 +#: ../../modules/knowledge.md:13 31c31f14bf444981939689f9a9fb038a #, fuzzy msgid "" -"We currently support many document formats: TEXT(raw text), " -"DOCUMENT(.txt, .pdf, .md, .doc, .ppt, .html), and URL." +"We currently support many document formats: txt, pdf, md, html, doc, ppt," +" and url." msgstr "当前支持txt, pdf, md, html, doc, ppt, url文档格式" -#: ../../modules/knowledge.rst:15 7f9f02a93d5d4325b3d2d976f4bb28a0 +#: ../../modules/knowledge.md:15 9ad2f2e05f8842a9b9d8469a3704df23 msgid "before execution:" msgstr "开始前" -#: ../../modules/knowledge.rst:24 59699a8385e04982a992cf0d71f6dcd5 -#, fuzzy +#: ../../modules/knowledge.md:22 6fd2775914b641c4b8e486417b558ea6 msgid "" -"2.prepare embedding model, you can download from https://huggingface.co/." -" Notice you have installed git-lfs." +"2.Update your .env, set your vector store type, VECTOR_STORE_TYPE=Chroma " +"(now only support Chroma and Milvus, if you set Milvus, please set " +"MILVUS_URL and MILVUS_PORT)" msgstr "" -"提前准备Embedding Model, 你可以在https://huggingface.co/进行下载,注意:你需要先安装git-lfs.eg:" -" git clone https://huggingface.co/THUDM/chatglm2-6b" - -#: ../../modules/knowledge.rst:27 2be1a17d0b54476b9dea080d244fd747 -msgid "" -"eg: git clone https://huggingface.co/sentence-transformers/all-" -"MiniLM-L6-v2" -msgstr "eg: git clone https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2" -#: ../../modules/knowledge.rst:33 d328f6e243624c9488ebd27c9324621b -msgid "" -"3.prepare vector_store instance and vector store config, now we support " -"Chroma, Milvus and Weaviate." -msgstr "提前准备向量数据库环境,目前支持Chroma, Milvus and Weaviate向量数据库" +#: ../../modules/knowledge.md:25 131c5f58898a4682940910980edb2043 +msgid "2.Run the knowledge repository initialization command" +msgstr "" -#: ../../modules/knowledge.rst:63 44f97154eff647d399fd30b6f9e3b867 +#: ../../modules/knowledge.md:31 2cf550f17881497bb881b19efcc18c23 msgid "" -"3.init Url Type EmbeddingEngine api and embedding your document into " -"vector store in your code." -msgstr "初始化 Url类型 EmbeddingEngine api, 将url文档embedding向量化到向量数据库 " - -#: ../../modules/knowledge.rst:75 e2581b414f0148bca88253c7af9cd591 -msgid "If you want to add your source_reader or text_splitter, do this:" -msgstr "如果你想手动添加你自定义的source_reader和text_splitter, 请参考:" - -#: ../../modules/knowledge.rst:95 74c110414f924bbfa3d512e45ba2f30f -#, fuzzy -msgid "" -"4.init Document Type EmbeddingEngine api and embedding your document into" -" vector store in your code. Document type can be .txt, .pdf, .md, .doc, " -".ppt." +"Optionally, you can run `dbgpt knowledge load --help` command to see more" +" usage." msgstr "" -"初始化 文档型类型 EmbeddingEngine api, 将文档embedding向量化到向量数据库(文档可以是.txt, .pdf, " -".md, .html, .doc, .ppt)" -#: ../../modules/knowledge.rst:108 0afd40098d5f4dfd9e44fe1d8004da25 +#: ../../modules/knowledge.md:33 c8a2ea571b944bdfbcad48fa8b54fcc9 msgid "" -"5.init TEXT Type EmbeddingEngine api and embedding your document into " -"vector store in your code." -msgstr "初始化TEXT类型 EmbeddingEngine api, 将文档embedding向量化到向量数据库" - -#: ../../modules/knowledge.rst:120 a66961bf3efd41fa8ea938129446f5a5 -msgid "4.similar search based on your knowledge base. ::" -msgstr "在知识库进行相似性搜索" +"3.Add the knowledge repository in the interface by entering the name of " +"your knowledge repository (if not specified, enter \"default\") so you " +"can use it for Q&A based on your knowledge base." +msgstr "" -#: ../../modules/knowledge.rst:126 b7066f408378450db26770f83fbd2716 +#: ../../modules/knowledge.md:35 b701170ad75e49dea7d7734c15681e0f msgid "" "Note that the default vector model used is text2vec-large-chinese (which " "is a large model, so if your personal computer configuration is not " @@ -125,48 +106,6 @@ msgstr "" "注意,这里默认向量模型是text2vec-large-chinese(模型比较大,如果个人电脑配置不够建议采用text2vec-base-" "chinese),因此确保需要将模型download下来放到models目录中。" -#: ../../modules/knowledge.rst:128 58481d55cab74936b6e84b24c39b1674 -#, fuzzy -msgid "" -"`pdf_embedding <./knowledge/pdf/pdf_embedding.html>`_: supported pdf " -"embedding." -msgstr "pdf_embedding <./knowledge/pdf_embedding.html>`_: supported pdf embedding." - -#: ../../modules/knowledge.rst:129 fbb013c4f1bc46af910c91292f6690cf -#, fuzzy -msgid "" -"`markdown_embedding <./knowledge/markdown/markdown_embedding.html>`_: " -"supported markdown embedding." -msgstr "pdf_embedding <./knowledge/pdf_embedding.html>`_: supported pdf embedding." - -#: ../../modules/knowledge.rst:130 59d45732f4914d16b4e01aee0992edf7 -#, fuzzy -msgid "" -"`word_embedding <./knowledge/word/word_embedding.html>`_: supported word " -"embedding." -msgstr "pdf_embedding <./knowledge/pdf_embedding.html>`_: supported pdf embedding." - -#: ../../modules/knowledge.rst:131 df0e6f311861423e885b38e020a7c0f0 -#, fuzzy -msgid "" -"`url_embedding <./knowledge/url/url_embedding.html>`_: supported url " -"embedding." -msgstr "pdf_embedding <./knowledge/pdf_embedding.html>`_: supported pdf embedding." - -#: ../../modules/knowledge.rst:132 7c550c1f5bc34fe9986731fb465e12cd -#, fuzzy -msgid "" -"`ppt_embedding <./knowledge/ppt/ppt_embedding.html>`_: supported ppt " -"embedding." -msgstr "pdf_embedding <./knowledge/pdf_embedding.html>`_: supported pdf embedding." - -#: ../../modules/knowledge.rst:133 8648684cb191476faeeb548389f79050 -#, fuzzy -msgid "" -"`string_embedding <./knowledge/string/string_embedding.html>`_: supported" -" raw text embedding." -msgstr "pdf_embedding <./knowledge/pdf_embedding.html>`_: supported pdf embedding." - #~ msgid "before execution: python -m spacy download zh_core_web_sm" #~ msgstr "在执行之前请先执行python -m spacy download zh_core_web_sm" @@ -201,3 +140,112 @@ msgstr "pdf_embedding <./knowledge/pdf_embedding.html>`_: supported pdf embeddin #~ "and MILVUS_PORT)" #~ msgstr "2.更新你的.env,设置你的向量存储类型,VECTOR_STORE_TYPE=Chroma(现在只支持Chroma和Milvus,如果你设置了Milvus,请设置MILVUS_URL和MILVUS_PORT)" +#~ msgid "" +#~ "We currently support many document " +#~ "formats: raw text, txt, pdf, md, " +#~ "html, doc, ppt, and url. In the" +#~ " future, we will continue to support" +#~ " more types of knowledge, including " +#~ "audio, video, various databases, and big" +#~ " data sources. Of course, we look " +#~ "forward to your active participation in" +#~ " contributing code." +#~ msgstr "" + +#~ msgid "1.prepare" +#~ msgstr "准备" + +#~ msgid "" +#~ "2.prepare embedding model, you can " +#~ "download from https://huggingface.co/. Notice " +#~ "you have installed git-lfs." +#~ msgstr "" +#~ "提前准备Embedding Model, 你可以在https://huggingface.co/进行下载,注意" +#~ ":你需要先安装git-lfs.eg: git clone " +#~ "https://huggingface.co/THUDM/chatglm2-6b" + +#~ msgid "" +#~ "eg: git clone https://huggingface.co/sentence-" +#~ "transformers/all-MiniLM-L6-v2" +#~ msgstr "" +#~ "eg: git clone https://huggingface.co/sentence-" +#~ "transformers/all-MiniLM-L6-v2" + +#~ msgid "" +#~ "3.prepare vector_store instance and vector " +#~ "store config, now we support Chroma, " +#~ "Milvus and Weaviate." +#~ msgstr "提前准备向量数据库环境,目前支持Chroma, Milvus and Weaviate向量数据库" + +#~ msgid "" +#~ "3.init Url Type EmbeddingEngine api and" +#~ " embedding your document into vector " +#~ "store in your code." +#~ msgstr "初始化 Url类型 EmbeddingEngine api, 将url文档embedding向量化到向量数据库 " + +#~ msgid "If you want to add your source_reader or text_splitter, do this:" +#~ msgstr "如果你想手动添加你自定义的source_reader和text_splitter, 请参考:" + +#~ msgid "" +#~ "4.init Document Type EmbeddingEngine api " +#~ "and embedding your document into vector" +#~ " store in your code. Document type" +#~ " can be .txt, .pdf, .md, .doc, " +#~ ".ppt." +#~ msgstr "" +#~ "初始化 文档型类型 EmbeddingEngine api, " +#~ "将文档embedding向量化到向量数据库(文档可以是.txt, .pdf, .md, .html," +#~ " .doc, .ppt)" + +#~ msgid "" +#~ "5.init TEXT Type EmbeddingEngine api and" +#~ " embedding your document into vector " +#~ "store in your code." +#~ msgstr "初始化TEXT类型 EmbeddingEngine api, 将文档embedding向量化到向量数据库" + +#~ msgid "4.similar search based on your knowledge base. ::" +#~ msgstr "在知识库进行相似性搜索" + +#~ msgid "" +#~ "`pdf_embedding <./knowledge/pdf/pdf_embedding.html>`_: " +#~ "supported pdf embedding." +#~ msgstr "" +#~ "pdf_embedding <./knowledge/pdf_embedding.html>`_: " +#~ "supported pdf embedding." + +#~ msgid "" +#~ "`markdown_embedding " +#~ "<./knowledge/markdown/markdown_embedding.html>`_: supported " +#~ "markdown embedding." +#~ msgstr "" +#~ "pdf_embedding <./knowledge/pdf_embedding.html>`_: " +#~ "supported pdf embedding." + +#~ msgid "" +#~ "`word_embedding <./knowledge/word/word_embedding.html>`_: " +#~ "supported word embedding." +#~ msgstr "" +#~ "pdf_embedding <./knowledge/pdf_embedding.html>`_: " +#~ "supported pdf embedding." + +#~ msgid "" +#~ "`url_embedding <./knowledge/url/url_embedding.html>`_: " +#~ "supported url embedding." +#~ msgstr "" +#~ "pdf_embedding <./knowledge/pdf_embedding.html>`_: " +#~ "supported pdf embedding." + +#~ msgid "" +#~ "`ppt_embedding <./knowledge/ppt/ppt_embedding.html>`_: " +#~ "supported ppt embedding." +#~ msgstr "" +#~ "pdf_embedding <./knowledge/pdf_embedding.html>`_: " +#~ "supported pdf embedding." + +#~ msgid "" +#~ "`string_embedding <./knowledge/string/string_embedding.html>`_:" +#~ " supported raw text embedding." +#~ msgstr "" +#~ "pdf_embedding <./knowledge/pdf_embedding.html>`_: " +#~ "supported pdf embedding." + diff --git a/docs/locales/zh_CN/LC_MESSAGES/modules/plugins.po b/docs/locales/zh_CN/LC_MESSAGES/modules/plugins.po index d42bc3d55..662d7051d 100644 --- a/docs/locales/zh_CN/LC_MESSAGES/modules/plugins.po +++ b/docs/locales/zh_CN/LC_MESSAGES/modules/plugins.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: DB-GPT 0.3.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-14 21:47+0800\n" +"POT-Creation-Date: 2023-11-03 15:33+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -19,11 +19,11 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.12.1\n" -#: ../../modules/plugins.md:1 8e0200134cca45b6aead6d05b60ca95a +#: ../../modules/plugins.md:1 e8c539b65ccd459793e8ed3812903578 msgid "Plugins" msgstr "插件" -#: ../../modules/plugins.md:3 d0d532cfe9b44fa0916d7d5b912a744a +#: ../../modules/plugins.md:3 0d6f6bdcf843416fb35d9f51df52bead msgid "" "The ability of Agent and Plugin is the core of whether large models can " "be automated. In this project, we natively support the plugin mode, and " @@ -35,49 +35,62 @@ msgstr "" "Agent与插件能力是大模型能否自动化的核心,在本的项目中,原生支持插件模式,大模型可以自动化完成目标。 同时为了充分发挥社区的优势" ",本项目中所用的插件原生支持Auto-GPT插件生态,即Auto-GPT的插件可以直接在我们的项目中运行。" -#: ../../modules/plugins.md:5 2f78a6b397a24f34b0d5771ca93efb0b +#: ../../modules/plugins.md:5 625763bc41fe417c8e4ea03ab2f8fdfc +#, fuzzy +msgid "The LLM (Language Model) suitable for the Plugin scene is" +msgstr "Plugin场景适用的LLM是 * chatgpt3.5. * chatgpt4." + +#: ../../modules/plugins.md:6 b3bd64693a4f4bf8b64b9224d3e1532e +msgid "chatgpt3.5." +msgstr "" + +#: ../../modules/plugins.md:7 46d9220e63384594b54c2c176077d962 +msgid "chatgpt4." +msgstr "" + +#: ../../modules/plugins.md:10 8c539e139f6648b2bef5dc683b8e093c #, fuzzy msgid "Local Plugins" msgstr "插件" -#: ../../modules/plugins.md:7 54a817a638c3440989191b3bffaca6de +#: ../../modules/plugins.md:12 2cc7ba992d524913b3377cad3bf747d3 msgid "1.1 How to write local plugins." msgstr "" -#: ../../modules/plugins.md:9 fbdc0a9d327f432aa6a380117dfb2f11 +#: ../../modules/plugins.md:14 eddffc1d2c434e45890a9befa1bb5160 msgid "" "Local plugins use the Auto-GPT plugin template. A simple example is as " "follows: first write a plugin file called \"sql_executor.py\"." msgstr "" -#: ../../modules/plugins.md:39 dc398ab427bd4d15b3b7c8cb1ff032b3 +#: ../../modules/plugins.md:44 06efbea552bb4dc7828d842b779e41d4 msgid "" "Then set the \"can_handle_post_prompt\" method of the plugin template to " "True. In the \"post_prompt\" method, write the prompt information and the" " mapped plugin function." msgstr "" -#: ../../modules/plugins.md:81 c9d4019392bf452e906057cbe9271005 +#: ../../modules/plugins.md:86 afd3cfb379bb463e97e515ae65790830 msgid "1.2 How to use local plugins" msgstr "" -#: ../../modules/plugins.md:83 9beaed4a71124ecf9544a1dba0d1e722 +#: ../../modules/plugins.md:88 f43a70e4cb5c4846a5bb8df3853021ba msgid "" "Pack your plugin project into `your-plugin.zip` and place it in the " "`/plugins/` directory of the DB-GPT project. After starting the " "webserver, you can select and use it in the `Plugin Model` section." msgstr "" -#: ../../modules/plugins.md:86 9a1439c883a947d7acac3fd1196b3c1e +#: ../../modules/plugins.md:91 8269458bd7f5480dbc56100865eb1eb0 #, fuzzy msgid "Public Plugins" msgstr "插件" -#: ../../modules/plugins.md:88 2ed4c509bf5848adb3fa163752a1cfa1 +#: ../../modules/plugins.md:93 ec5bb7b6b2cf464d8b8400f3dfd9a50e msgid "1.1 How to use public plugins" msgstr "" -#: ../../modules/plugins.md:90 dd5ba8d582204b2f89ce802a1232b11d +#: ../../modules/plugins.md:95 3025a85c905c49b6b2ac3f5c39c84c93 msgid "" "By default, after launching the webserver, plugins from the public plugin" " library `DB-GPT-Plugins` will be automatically loaded. For more details," @@ -85,17 +98,17 @@ msgid "" "Plugins)" msgstr "" -#: ../../modules/plugins.md:92 244f0591bc5045eab175754521b414c4 +#: ../../modules/plugins.md:97 e73d7779df254ba49fe7123ce06353aa msgid "1.2 Contribute to the DB-GPT-Plugins repository" msgstr "" -#: ../../modules/plugins.md:94 e00bac1a299b46caa19b9cf16709d6ba +#: ../../modules/plugins.md:99 3297fb00dfc940e8a614c3858640cfe5 msgid "" "Please refer to the plugin development process in the public plugin " "library, and put the configuration parameters in `.plugin_env`" msgstr "" -#: ../../modules/plugins.md:96 315fbf576ea24158adc7b564f53940e0 +#: ../../modules/plugins.md:101 13280b270b304e139ed67e5b0dafa5b4 msgid "" "We warmly welcome everyone to contribute plugins to the public plugin " "library!" diff --git a/docs/locales/zh_CN/LC_MESSAGES/modules/prompts.po b/docs/locales/zh_CN/LC_MESSAGES/modules/prompts.po index 138b308b7..810e20f04 100644 --- a/docs/locales/zh_CN/LC_MESSAGES/modules/prompts.po +++ b/docs/locales/zh_CN/LC_MESSAGES/modules/prompts.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: DB-GPT 0.3.0\n" +"Project-Id-Version: DB-GPT 👏👏 0.4.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-14 22:33+0800\n" +"POT-Creation-Date: 2023-11-03 11:47+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -19,21 +19,130 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.12.1\n" -#: ../../modules/prompts.md:1 b9279c238c014a74aecbc75b5d3dc202 +#: ../../modules/prompts.md:1 3c5bdc61dc4a4301acdc9775c854a896 msgid "Prompts" -msgstr "" +msgstr "Prompts" -#: ../../modules/prompts.md:3 f0c720c1c85b401cbc26ed0eb3f6e70e +#: ../../modules/prompts.md:3 118fc2b85e8b4e02a6868b3bc2a7892c msgid "" -"Prompt is a very important part of the interaction between the large " +"**Prompt** is a very important part of the interaction between the large " "model and the user, and to a certain extent, it determines the quality " "and accuracy of the answer generated by the large model. In this project," -" we will automatically optimize the corresponding prompt according to " +" we will automatically optimize the corresponding Prompt according to " "user input and usage scenarios, making it easier and more efficient for " "users to use large language models." -msgstr "Prompt是与大模型交互过程中非常重要的部分,一定程度上Prompt决定了大模型生成答案的质量与准确性,在本的项目中,我们会根据用户输入与使用场景,自动优化对应的Prompt,让用户使用大语言模型变得更简单、更高效。" +msgstr "**Prompt**是大模型与用户交互中非常重要的一环,在一定程度上决定了大模型生成答案的质量和准确性。在这个项目中,我们会根据用户输入和使用场景自动地优化相应提示,让用户更轻松、更高效地使用大语言模型。" + +#: ../../modules/prompts.md:5 41614effa0a445b7b5a119311b902305 +msgid "Prompt Management" +msgstr "Prompt 管理" + +#: ../../modules/prompts.md:7 a8ed0a7b3d1243ffa1ed80c24d1ab518 +msgid "" +"Here, you can choose to create a Prompt in **Public Prompts** space or " +"**Private Prompts** space." +msgstr "该页面允许用户选择**公共Prompts**或者**私有Prompts**空间来创建相应的 Prompt。" + +#: ../../modules/prompts.md:9 ../../modules/prompts.md:17 +#: ../../modules/prompts.md:31 ../../modules/prompts.md:45 +#: 68db272acc6b4572aa275940da4b788b 92d46d647bbb4035add92f750511a840 +#: af1789fae8cb47b8a81e68520086f35e d7c2f6f43b5c406d82b7dc5bd92d183c +#: e2f91ca11e784fe5943d0738671f68bf +msgid "image" +msgstr "" + +#: ../../modules/prompts.md:11 102220bf95f04f81acc9a0093458f297 +msgid "" +"The difference between **Public Prompts** and **Private Prompts** is that" +" Prompts in **Public Prompts** space can be viewed and used by all users," +" while prompts in **Private Prompts** space can only be viewed and used " +"by the owner." +msgstr "" +"**公共 Prompts**和**私有 Prompts**空间的区别在于,**公共 Prompts**空间下的 Prompt " +"可供所有的用户查看和使用,而**私有 Prompts**空间下的 Prompt 只能被所有者查看和使用。" + +#: ../../modules/prompts.md:13 2e0d2f6b335a4aacbdc83b7b7042a701 +msgid "Create Prompt" +msgstr "创建 Prompt" + +#: ../../modules/prompts.md:15 c9f8c3d1698941e08b90a35fffb2fce1 +msgid "Click the \"Add Prompts\" button to pop up the following subpage:" +msgstr "点击 \"新增Prompts\"按钮可以弹出如下的子页面:" + +#: ../../modules/prompts.md:19 23ed81a83ab2458f826f2b5d9c55a89a +msgid "" +"**Scene**: It is assumed here that when we have a lot of Prompts, we " +"often classify the Prompts according to scene, such as Prompts in the " +"chat knowledge scene, Prompts in the chat data scene, Prompts in the chat" +" normal scene, etc." +msgstr "" +"**场景**:这里假设,当我们有很多 Prompts 时,往往会根据场景对 Prompts 进行分类,比如在 DB-GPT 项目中,chat " +"knowledge 场景的 Prompts、chat data 场景的 Prompts、chat normal 场景的 Prompts 等等。" + +#: ../../modules/prompts.md:21 11299da493e741869fe67237f1cb1794 +msgid "" +"**Sub Scene**: Continuing with the above, assuming that we have a lot of " +"Prompts, scene classification alone is not enough. For example, in the " +"chat data scenario, there can be many types of sub-scene: anomaly " +"recognition sub scene, attribution analysis sub scene, etc. sub scene is " +"used to distinguish subcategories under each scene." +msgstr "" +"**次级场景**:接着上面的内容,如果我们的 Prompt 很多时,仅使用场景一级分类是不够的。例如,在 chat data " +"场景中,还可以细分为很多的次级场景:异常识别次级场景、归因分析次级场景等等。次级场景是用于区分每个场景下的子类别。" + +#: ../../modules/prompts.md:23 c15d62af27094d14acb6428c0e3e1a1d +msgid "" +"**Name**: Considering that a Prompt generally contains a lot of content, " +"for ease of use and easy search, we need to name the Prompt. Note: The " +"name of the Prompt is not allowed to be repeated. Name is the unique key " +"that identifies a Prompt." +msgstr "" +"**名称**:考虑到每个 Prompt 的内容会非常多,为了方便用户使用和搜索,我们需要给每个 Prompt 命名。注意:Prompt " +"的名称不允许重复,名称是一个 Prompt 的唯一键。" + +#: ../../modules/prompts.md:25 621fe9c729c94e9bbde637b5a1856284 +msgid "**Content**: Here is the actual Prompt content that will be input to LLM." +msgstr "**内容**:这里是实际要输入 LLM 的提示内容。" + +#: ../../modules/prompts.md:27 ac2f153f704c4841a044daaf6548262b +msgid "Edit Prompt" +msgstr "编辑 Prompt" + +#: ../../modules/prompts.md:29 3d6238ea482842e0968f691f3fd0c947 +msgid "" +"Existing Prompts can be edited. Note that except **name**, other items " +"can be modified." +msgstr "已有的 Prompts 可以被编辑,除了名称不可修改,其余的内容均可修改。" -#: ../../modules/prompts.md:5 6576d32e28a14be6a5d8180eed000aa7 -msgid "1.DB-GPT Prompt" +#: ../../modules/prompts.md:33 7cbe985fd9534471bce5f93a93da82fd +msgid "Delete Prompt" +msgstr "删除 Prompt" + +#: ../../modules/prompts.md:35 849ab9ef2a2c4a29bb827eb373f37b7d +msgid "" +"Ordinary users can only delete Prompts created by themselves in the " +"private Prompts space. Administrator users can delete Prompts in public " +"Prompts spaces and private Prompts spaces." +msgstr "" +"普通用户只能删除他们自己在私有 Prompts 空间中创建的 Prompts,管理员可以删除 公共 Prompts 空间下的 " +"Prompts,也可以删除私有 Prompts 空间下的 Prompts(即使 Prompts 的创建者不是管理员)。" + +#: ../../modules/prompts.md:38 191921e5664d4326b01f0c45dc88a1e5 +msgid "Use Prompt" +msgstr "使用 Prompt" + +#: ../../modules/prompts.md:40 87ad58641f834f30bce178e748d75284 +msgid "" +"Users can find and use Prompts next to the input boxes in each scene. " +"Click to view all contents of Prompts library." +msgstr "用户可以在每个场景中的输入框旁边找到并使用 Prompts。 点击悬浮图标可以查看当前用户能使用的全部 Prompts。" + +#: ../../modules/prompts.md:42 60458c7980174c73bc0d56e9e27cd2b3 +msgid "" +"✓ Hover the mouse over each Prompt to preview the Prompt content. ✓ " +"Click Prompt to automatically fill in the Prompt content in the input " +"box." msgstr "" +"✓ 将鼠标悬停在每个 Prompt 上,可预览 Prompt 的内容。 ✓ 单击对应的 Prompt,可自动将 Prompt " +"的内容填充到输入框中。" diff --git a/docs/modules/knownledge.md b/docs/modules/knowledge.md similarity index 97% rename from docs/modules/knownledge.md rename to docs/modules/knowledge.md index 03fb45eec..7c8b2758f 100644 --- a/docs/modules/knownledge.md +++ b/docs/modules/knowledge.md @@ -1,4 +1,4 @@ -# Knownledge +# Knowledge As the knowledge base is currently the most significant user demand scenario, we natively support the construction and processing of knowledge bases. At the same time, we also provide multiple knowledge base management strategies in this project, such as: 1. Default built-in knowledge base @@ -32,4 +32,4 @@ Optionally, you can run `dbgpt knowledge load --help` command to see more usage. 3.Add the knowledge repository in the interface by entering the name of your knowledge repository (if not specified, enter "default") so you can use it for Q&A based on your knowledge base. -Note that the default vector model used is text2vec-large-chinese (which is a large model, so if your personal computer configuration is not enough, it is recommended to use text2vec-base-chinese). Therefore, ensure that you download the model and place it in the models directory. \ No newline at end of file +Note that the default vector model used is text2vec-large-chinese (which is a large model, so if your personal computer configuration is not enough, it is recommended to use text2vec-base-chinese). Therefore, ensure that you download the model and place it in the models directory. diff --git a/docs/modules/plugins.md b/docs/modules/plugins.md index 6f2617146..b78578066 100644 --- a/docs/modules/plugins.md +++ b/docs/modules/plugins.md @@ -2,6 +2,11 @@ The ability of Agent and Plugin is the core of whether large models can be automated. In this project, we natively support the plugin mode, and large models can automatically achieve their goals. At the same time, in order to give full play to the advantages of the community, the plugins used in this project natively support the Auto-GPT plugin ecology, that is, Auto-GPT plugins can directly run in our project. +```{admonition} The LLM (Language Model) suitable for the Plugin scene is +* chatgpt3.5. +* chatgpt4. +``` + ## Local Plugins ### 1.1 How to write local plugins. diff --git a/docs/modules/prompts.md b/docs/modules/prompts.md index 2e8f5181d..177475618 100644 --- a/docs/modules/prompts.md +++ b/docs/modules/prompts.md @@ -1,5 +1,46 @@ # Prompts -Prompt is a very important part of the interaction between the large model and the user, and to a certain extent, it determines the quality and accuracy of the answer generated by the large model. In this project, we will automatically optimize the corresponding prompt according to user input and usage scenarios, making it easier and more efficient for users to use large language models. +**Prompt** is a very important part of the interaction between the large model and the user, and to a certain extent, it determines the quality and accuracy of the answer generated by the large model. In this project, we will automatically optimize the corresponding Prompt according to user input and usage scenarios, making it easier and more efficient for users to use large language models. -### 1.DB-GPT Prompt \ No newline at end of file +## Prompt Management + +Here, you can choose to create a Prompt in **Public Prompts** space or **Private Prompts** space. + +image + +The difference between **Public Prompts** and **Private Prompts** is that Prompts in **Public Prompts** space can be viewed and used by all users, while prompts in **Private Prompts** space can only be viewed and used by the owner. + +### Create Prompt + +Click the "Add Prompts" button to pop up the following subpage: + +image + +**Scene**: It is assumed here that when we have a lot of Prompts, we often classify the Prompts according to scene, such as Prompts in the chat knowledge scene, Prompts in the chat data scene, Prompts in the chat normal scene, etc. + +**Sub Scene**: Continuing with the above, assuming that we have a lot of Prompts, scene classification alone is not enough. For example, in the chat data scenario, there can be many types of sub-scene: anomaly recognition sub scene, attribution analysis sub scene, etc. sub scene is used to distinguish subcategories under each scene. + +**Name**: Considering that a Prompt generally contains a lot of content, for ease of use and easy search, we need to name the Prompt. Note: The name of the Prompt is not allowed to be repeated. Name is the unique key that identifies a Prompt. + +**Content**: Here is the actual Prompt content that will be input to LLM. + +### Edit Prompt + +Existing Prompts can be edited. Note that except **name**, other items can be modified. + +image + +### Delete Prompt + +Ordinary users can only delete Prompts created by themselves in the private Prompts space. Administrator users can delete Prompts in public Prompts spaces and private Prompts spaces. + + +## Use Prompt + +Users can find and use Prompts next to the input boxes in each scene. Click to view all contents of Prompts library. + +✓ Hover the mouse over each Prompt to preview the Prompt content. +✓ Click Prompt to automatically fill in the Prompt content in the input box. + +image +image \ No newline at end of file diff --git a/docs/reference.md b/docs/reference.md deleted file mode 100644 index 4a938e09d..000000000 --- a/docs/reference.md +++ /dev/null @@ -1 +0,0 @@ -# Reference \ No newline at end of file diff --git a/docs/requirements.txt b/docs/requirements.txt index 8cee184af..d0a125868 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -9,9 +9,9 @@ sphinx_book_theme sphinx_rtd_theme==1.0.0 sphinx-typlog-theme==0.8.0 sphinx-panels +sphinx-tabs==3.4.0 toml myst_nb sphinx_copybutton pydata-sphinx-theme==0.13.1 -pydantic-settings furo \ No newline at end of file diff --git a/examples/app.py b/examples/app.py deleted file mode 100644 index 07f8a5a51..000000000 --- a/examples/app.py +++ /dev/null @@ -1,74 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding:utf-8 -*- - -import gradio as gr -from langchain.agents import AgentType, initialize_agent, load_tools -from llama_index import ( - Document, - GPTVectorStoreIndex, - LangchainEmbedding, - LLMPredictor, - ServiceContext, -) - -from pilot.model.llm_out.vicuna_llm import VicunaEmbeddingLLM, VicunaRequestLLM - - -def agent_demo(): - llm = VicunaRequestLLM() - - tools = load_tools(["python_repl"], llm=llm) - agent = initialize_agent( - tools, llm, agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION, verbose=True - ) - agent.run("Write a SQL script that Query 'select count(1)!'") - - -def knowledged_qa_demo(text_list): - llm_predictor = LLMPredictor(llm=VicunaRequestLLM()) - hfemb = VicunaEmbeddingLLM() - embed_model = LangchainEmbedding(hfemb) - documents = [Document(t) for t in text_list] - - service_context = ServiceContext.from_defaults( - llm_predictor=llm_predictor, embed_model=embed_model - ) - index = GPTVectorStoreIndex.from_documents( - documents, service_context=service_context - ) - return index - - -def get_answer(q): - base_knowledge = """ """ - text_list = [base_knowledge] - index = knowledged_qa_demo(text_list) - response = index.query(q) - return response.response - - -def get_similar(q): - from pilot.vector_store.extract_tovec import knownledge_tovec_st - - docsearch = knownledge_tovec_st("./datasets/plan.md") - docs = docsearch.similarity_search_with_score(q, k=1) - - for doc in docs: - dc, s = doc - print(s) - yield dc.page_content - - -if __name__ == "__main__": - # agent_demo() - - with gr.Blocks() as demo: - gr.Markdown("数据库智能助手") - with gr.Tab("知识问答"): - text_input = gr.TextArea() - text_output = gr.TextArea() - text_button = gr.Button() - - text_button.click(get_similar, inputs=text_input, outputs=text_output) - - demo.queue(concurrency_count=3).launch(server_name="0.0.0.0") diff --git a/examples/awel/simple_chat_dag_example.py b/examples/awel/simple_chat_dag_example.py new file mode 100644 index 000000000..b53c2415e --- /dev/null +++ b/examples/awel/simple_chat_dag_example.py @@ -0,0 +1,56 @@ +"""AWEL: Simple chat dag example + + DB-GPT will automatically load and execute the current file after startup. + + Example: + + .. code-block:: shell + + curl -X POST http://127.0.0.1:5000/api/v1/awel/trigger/examples/simple_chat \ + -H "Content-Type: application/json" -d '{ + "model": "proxyllm", + "user_input": "hello" + }' +""" +from typing import Dict +from pydantic import BaseModel, Field + +from pilot.awel import DAG, HttpTrigger, MapOperator +from pilot.scene.base_message import ModelMessage +from pilot.model.base import ModelOutput +from pilot.model.operator.model_operator import ModelOperator + + +class TriggerReqBody(BaseModel): + model: str = Field(..., description="Model name") + user_input: str = Field(..., description="User input") + + +class RequestHandleOperator(MapOperator[TriggerReqBody, Dict]): + def __init__(self, **kwargs): + super().__init__(**kwargs) + + async def map(self, input_value: TriggerReqBody) -> Dict: + hist = [] + hist.append(ModelMessage.build_human_message(input_value.user_input)) + hist = list(h.dict() for h in hist) + params = { + "prompt": input_value.user_input, + "messages": hist, + "model": input_value.model, + "echo": False, + } + print(f"Receive input value: {input_value}") + return params + + +with DAG("dbgpt_awel_simple_dag_example") as dag: + # Receive http request and trigger dag to run. + trigger = HttpTrigger( + "/examples/simple_chat", methods="POST", request_body=TriggerReqBody + ) + request_handle_task = RequestHandleOperator() + model_task = ModelOperator() + # type(out) == ModelOutput + model_parse_task = MapOperator(lambda out: out.to_dict()) + trigger >> request_handle_task >> model_task >> model_parse_task diff --git a/examples/awel/simple_dag_example.py b/examples/awel/simple_dag_example.py new file mode 100644 index 000000000..bfc9b45b5 --- /dev/null +++ b/examples/awel/simple_dag_example.py @@ -0,0 +1,34 @@ +"""AWEL: Simple dag example + + DB-GPT will automatically load and execute the current file after startup. + + Example: + + .. code-block:: shell + + curl -X GET http://127.0.0.1:5000/api/v1/awel/trigger/examples/hello\?name\=zhangsan + +""" +from pydantic import BaseModel, Field + +from pilot.awel import DAG, HttpTrigger, MapOperator + + +class TriggerReqBody(BaseModel): + name: str = Field(..., description="User name") + age: int = Field(18, description="User age") + + +class RequestHandleOperator(MapOperator[TriggerReqBody, str]): + def __init__(self, **kwargs): + super().__init__(**kwargs) + + async def map(self, input_value: TriggerReqBody) -> str: + print(f"Receive input value: {input_value}") + return f"Hello, {input_value.name}, your age is {input_value.age}" + + +with DAG("simple_dag_example") as dag: + trigger = HttpTrigger("/examples/hello", request_body=TriggerReqBody) + map_node = RequestHandleOperator() + trigger >> map_node diff --git a/examples/awel/simple_rag_example.py b/examples/awel/simple_rag_example.py new file mode 100644 index 000000000..c7cd934dc --- /dev/null +++ b/examples/awel/simple_rag_example.py @@ -0,0 +1,73 @@ +"""AWEL: Simple rag example + + DB-GPT will automatically load and execute the current file after startup. + + Example: + + .. code-block:: shell + + curl -X POST http://127.0.0.1:5000/api/v1/awel/trigger/examples/simple_rag \ + -H "Content-Type: application/json" -d '{ + "conv_uid": "36f0e992-8825-11ee-8638-0242ac150003", + "model_name": "proxyllm", + "chat_mode": "chat_knowledge", + "user_input": "What is DB-GPT?", + "select_param": "default" + }' + +""" + +from pilot.awel import HttpTrigger, DAG, MapOperator +from pilot.scene.operator._experimental import ( + ChatContext, + PromptManagerOperator, + ChatHistoryStorageOperator, + ChatHistoryOperator, + EmbeddingEngingOperator, + BaseChatOperator, +) +from pilot.scene.base import ChatScene +from pilot.openapi.api_view_model import ConversationVo +from pilot.model.base import ModelOutput +from pilot.model.operator.model_operator import ModelOperator + + +class RequestParseOperator(MapOperator[ConversationVo, ChatContext]): + def __init__(self, **kwargs): + super().__init__(**kwargs) + + async def map(self, input_value: ConversationVo) -> ChatContext: + return ChatContext( + current_user_input=input_value.user_input, + model_name=input_value.model_name, + chat_session_id=input_value.conv_uid, + select_param=input_value.select_param, + chat_scene=ChatScene.ChatKnowledge, + ) + + +with DAG("simple_rag_example") as dag: + trigger_task = HttpTrigger( + "/examples/simple_rag", methods="POST", request_body=ConversationVo + ) + req_parse_task = RequestParseOperator() + # TODO should register prompt template first + prompt_task = PromptManagerOperator() + history_storage_task = ChatHistoryStorageOperator() + history_task = ChatHistoryOperator() + embedding_task = EmbeddingEngingOperator() + chat_task = BaseChatOperator() + model_task = ModelOperator() + output_parser_task = MapOperator(lambda out: out.to_dict()["text"]) + + ( + trigger_task + >> req_parse_task + >> prompt_task + >> history_storage_task + >> history_task + >> embedding_task + >> chat_task + >> model_task + >> output_parser_task + ) diff --git a/examples/embdserver.py b/examples/embdserver.py deleted file mode 100644 index ae0dfcae8..000000000 --- a/examples/embdserver.py +++ /dev/null @@ -1,82 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding:utf-8 -*- - -import json -import os -import sys -from urllib.parse import urljoin - -import gradio as gr -import requests - -ROOT_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) -sys.path.append(ROOT_PATH) - - -from langchain.prompts import PromptTemplate - -from pilot.configs.config import Config -from pilot.conversation import conv_qa_prompt_template, conv_templates - -llmstream_stream_path = "generate_stream" - -CFG = Config() - - -def generate(query): - template_name = "conv_one_shot" - state = conv_templates[template_name].copy() - - # pt = PromptTemplate( - # template=conv_qa_prompt_template, - # input_variables=["context", "question"] - # ) - - # result = pt.format(context="This page covers how to use the Chroma ecosystem within LangChain. It is broken into two parts: installation and setup, and then references to specific Chroma wrappers.", - # question=query) - - # print(result) - - state.append_message(state.roles[0], query) - state.append_message(state.roles[1], None) - - prompt = state.get_prompt() - params = { - "model": "chatglm-6b", - "prompt": prompt, - "temperature": 1.0, - "max_new_tokens": 1024, - "stop": "###", - } - - response = requests.post( - url=urljoin(CFG.MODEL_SERVER, llmstream_stream_path), data=json.dumps(params) - ) - - skip_echo_len = len(params["prompt"]) + 1 - params["prompt"].count("") * 3 - - for chunk in response.iter_lines(decode_unicode=False, delimiter=b"\0"): - if chunk: - data = json.loads(chunk.decode()) - if data["error_code"] == 0: - if "vicuna" in CFG.LLM_MODEL: - output = data["text"][skip_echo_len:].strip() - else: - output = data["text"].strip() - - state.messages[-1][-1] = output + "▌" - yield (output) - - -if __name__ == "__main__": - print(CFG.LLM_MODEL) - with gr.Blocks() as demo: - gr.Markdown("数据库SQL生成助手") - with gr.Tab("SQL生成"): - text_input = gr.TextArea() - text_output = gr.TextArea() - text_button = gr.Button("提交") - - text_button.click(generate, inputs=text_input, outputs=text_output) - - demo.queue(concurrency_count=3).launch(server_name="0.0.0.0") diff --git a/examples/gpt_index.py b/examples/gpt_index.py deleted file mode 100644 index a4683af1a..000000000 --- a/examples/gpt_index.py +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -import logging -import sys - -from llama_index import GPTVectorStoreIndex, SimpleDirectoryReader - -logging.basicConfig(stream=sys.stdout, level=logging.INFO) -logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout)) - -# read the document of data dir -documents = SimpleDirectoryReader("data").load_data() -# split the document to chunk, max token size=500, convert chunk to vector - -index = GPTVectorStoreIndex(documents) - -# save index -index.save_to_disk("index.json") diff --git a/examples/gradio_test.py b/examples/gradio_test.py deleted file mode 100644 index 593c6c1f4..000000000 --- a/examples/gradio_test.py +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding:utf-8 -*- - -import gradio as gr - - -def change_tab(): - return gr.Tabs.update(selected=1) - - -with gr.Blocks() as demo: - with gr.Tabs() as tabs: - with gr.TabItem("Train", id=0): - t = gr.Textbox() - with gr.TabItem("Inference", id=1): - i = gr.Image() - - btn = gr.Button() - btn.click(change_tab, None, tabs) - -demo.launch() diff --git a/examples/knowledge_embedding/csv_embedding_test.py b/examples/knowledge_embedding/csv_embedding_test.py deleted file mode 100644 index dcf4873b2..000000000 --- a/examples/knowledge_embedding/csv_embedding_test.py +++ /dev/null @@ -1,18 +0,0 @@ -from pilot.embedding_engine.csv_embedding import CSVEmbedding - -# path = "/Users/chenketing/Downloads/share_ireserve双写数据异常2.xlsx" -path = "xx.csv" -model_name = "your_path/all-MiniLM-L6-v2" -vector_store_path = "your_path/" - - -pdf_embedding = CSVEmbedding( - file_path=path, - model_name=model_name, - vector_store_config={ - "vector_store_name": "url", - "vector_store_path": "vector_store_path", - }, -) -pdf_embedding.source_embedding() -print("success") diff --git a/examples/knowledge_embedding/pdf_embedding_test.py b/examples/knowledge_embedding/pdf_embedding_test.py deleted file mode 100644 index ef0e1d87e..000000000 --- a/examples/knowledge_embedding/pdf_embedding_test.py +++ /dev/null @@ -1,18 +0,0 @@ -from pilot.embedding_engine.pdf_embedding import PDFEmbedding - -path = "xxx.pdf" -path = "your_path/OceanBase-数据库-V4.1.0-应用开发.pdf" -model_name = "your_path/all-MiniLM-L6-v2" -vector_store_path = "your_path/" - - -pdf_embedding = PDFEmbedding( - file_path=path, - model_name=model_name, - vector_store_config={ - "vector_store_name": "ob-pdf", - "vector_store_path": vector_store_path, - }, -) -pdf_embedding.source_embedding() -print("success") diff --git a/examples/knowledge_embedding/url_embedding_test.py b/examples/knowledge_embedding/url_embedding_test.py deleted file mode 100644 index c702fd1f7..000000000 --- a/examples/knowledge_embedding/url_embedding_test.py +++ /dev/null @@ -1,17 +0,0 @@ -from pilot.embedding_engine.url_embedding import URLEmbedding - -path = "https://www.understandingwar.org/backgrounder/russian-offensive-campaign-assessment-february-8-2023" -model_name = "your_path/all-MiniLM-L6-v2" -vector_store_path = "your_path" - - -pdf_embedding = URLEmbedding( - file_path=path, - model_name=model_name, - vector_store_config={ - "vector_store_name": "url", - "vector_store_path": "vector_store_path", - }, -) -pdf_embedding.source_embedding() -print("success") diff --git a/examples/proxy_example.py b/examples/proxy_example.py deleted file mode 100644 index a3d2f3bc4..000000000 --- a/examples/proxy_example.py +++ /dev/null @@ -1,67 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -import dashscope -import requests -import hashlib -from http import HTTPStatus -from dashscope import Generation - - -def call_with_messages(): - messages = [ - {"role": "system", "content": "你是生活助手机器人。"}, - {"role": "user", "content": "如何做西红柿鸡蛋?"}, - ] - gen = Generation() - response = gen.call( - Generation.Models.qwen_turbo, - messages=messages, - stream=True, - top_p=0.8, - result_format="message", # set the result to be "message" format. - ) - - for response in response: - # The response status_code is HTTPStatus.OK indicate success, - # otherwise indicate request is failed, you can get error code - # and message from code and message. - if response.status_code == HTTPStatus.OK: - print(response.output) # The output text - print(response.usage) # The usage information - else: - print(response.code) # The error code. - print(response.message) # The error message. - - -def build_access_token(api_key: str, secret_key: str) -> str: - """ - Generate Access token according AK, SK - """ - - url = "https://aip.baidubce.com/oauth/2.0/token" - params = { - "grant_type": "client_credentials", - "client_id": api_key, - "client_secret": secret_key, - } - - res = requests.get(url=url, params=params) - - if res.status_code == 200: - return res.json().get("access_token") - - -def _calculate_md5(text: str) -> str: - md5 = hashlib.md5() - md5.update(text.encode("utf-8")) - encrypted = md5.hexdigest() - return encrypted - - -def baichuan_call(): - url = "https://api.baichuan-ai.com/v1/stream/chat" - - -if __name__ == "__main__": - call_with_messages() diff --git a/examples/t5_example.py b/examples/t5_example.py deleted file mode 100644 index b49e79d4e..000000000 --- a/examples/t5_example.py +++ /dev/null @@ -1,257 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -import torch -from langchain.embeddings.huggingface import HuggingFaceEmbeddings -from langchain.llms.base import LLM -from llama_index import ( - GPTListIndex, - GPTVectorStoreIndex, - LangchainEmbedding, - LLMPredictor, - PromptHelper, - SimpleDirectoryReader, -) -from transformers import pipeline - - -class FlanLLM(LLM): - model_name = "google/flan-t5-large" - pipeline = pipeline( - "text2text-generation", - model=model_name, - device=0, - model_kwargs={"torch_dtype": torch.bfloat16}, - ) - - def _call(self, prompt, stop=None): - return self.pipeline(prompt, max_length=9999)[0]["generated_text"] - - def _identifying_params(self): - return {"name_of_model": self.model_name} - - def _llm_type(self): - return "custome" - - -llm_predictor = LLMPredictor(llm=FlanLLM()) -hfemb = HuggingFaceEmbeddings() -embed_model = LangchainEmbedding(hfemb) - -text1 = """ - 执行计划是对一条 SQL 查询语句在数据库中执行过程的描述。用户可以通过 EXPLAIN 命令查看优化器针对指定 SQL 生成的逻辑执行计划。 - -如果要分析某条 SQL 的性能问题,通常需要先查看 SQL 的执行计划,排查每一步 SQL 执行是否存在问题。所以读懂执行计划是 SQL 优化的先决条件,而了解执行计划的算子是理解 EXPLAIN 命令的关键。 - -OceanBase 数据库的执行计划命令有三种模式:EXPLAIN BASIC、EXPLAIN 和 EXPLAIN EXTENDED。这三种模式对执行计划展现不同粒度的细节信息: - -EXPLAIN BASIC 命令用于最基本的计划展示。 - -EXPLAIN EXTENDED 命令用于最详细的计划展示(通常在排查问题时使用这种展示模式)。 - -EXPLAIN 命令所展示的信息可以帮助普通用户了解整个计划的执行方式。 - -EXPLAIN 命令格式如下: -EXPLAIN [BASIC | EXTENDED | PARTITIONS | FORMAT = format_name] [PRETTY | PRETTY_COLOR] explainable_stmt -format_name: - { TRADITIONAL | JSON } -explainable_stmt: - { SELECT statement - | DELETE statement - | INSERT statement - | REPLACE statement - | UPDATE statement } - - -EXPLAIN 命令适用于 SELECT、DELETE、INSERT、REPLACE 和 UPDATE 语句,显示优化器所提供的有关语句执行计划的信息,包括如何处理该语句,如何联接表以及以何种顺序联接表等信息。 - -一般来说,可以使用 EXPLAIN EXTENDED 命令,将表扫描的范围段展示出来。使用 EXPLAIN OUTLINE 命令可以显示 Outline 信息。 - -FORMAT 选项可用于选择输出格式。TRADITIONAL 表示以表格格式显示输出,这也是默认设置。JSON 表示以 JSON 格式显示信息。 - -使用 EXPLAIN PARTITITIONS 也可用于检查涉及分区表的查询。如果检查针对非分区表的查询,则不会产生错误,但 PARTIONS 列的值始终为 NULL。 - -对于复杂的执行计划,可以使用 PRETTY 或者 PRETTY_COLOR 选项将计划树中的父节点和子节点使用树线或彩色树线连接起来,使得执行计划展示更方便阅读。示例如下: -obclient> CREATE TABLE p1table(c1 INT ,c2 INT) PARTITION BY HASH(c1) PARTITIONS 2; -Query OK, 0 rows affected - -obclient> CREATE TABLE p2table(c1 INT ,c2 INT) PARTITION BY HASH(c1) PARTITIONS 4; -Query OK, 0 rows affected - -obclient> EXPLAIN EXTENDED PRETTY_COLOR SELECT * FROM p1table p1 JOIN p2table p2 ON p1.c1=p2.c2\G -*************************** 1. row *************************** -Query Plan: ========================================================== -|ID|OPERATOR |NAME |EST. ROWS|COST| ----------------------------------------------------------- -|0 |PX COORDINATOR | |1 |278 | -|1 | EXCHANGE OUT DISTR |:EX10001|1 |277 | -|2 | HASH JOIN | |1 |276 | -|3 | ├PX PARTITION ITERATOR | |1 |92 | -|4 | │ TABLE SCAN |P1 |1 |92 | -|5 | └EXCHANGE IN DISTR | |1 |184 | -|6 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |184 | -|7 | PX PARTITION ITERATOR | |1 |183 | -|8 | TABLE SCAN |P2 |1 |183 | -========================================================== - -Outputs & filters: -------------------------------------- - 0 - output([INTERNAL_FUNCTION(P1.C1, P1.C2, P2.C1, P2.C2)]), filter(nil) - 1 - output([INTERNAL_FUNCTION(P1.C1, P1.C2, P2.C1, P2.C2)]), filter(nil), dop=1 - 2 - output([P1.C1], [P2.C2], [P1.C2], [P2.C1]), filter(nil), - equal_conds([P1.C1 = P2.C2]), other_conds(nil) - 3 - output([P1.C1], [P1.C2]), filter(nil) - 4 - output([P1.C1], [P1.C2]), filter(nil), - access([P1.C1], [P1.C2]), partitions(p[0-1]) - 5 - output([P2.C2], [P2.C1]), filter(nil) - 6 - (#keys=1, [P2.C2]), output([P2.C2], [P2.C1]), filter(nil), dop=1 - 7 - output([P2.C1], [P2.C2]), filter(nil) - 8 - output([P2.C1], [P2.C2]), filter(nil), - access([P2.C1], [P2.C2]), partitions(p[0-3]) - -1 row in set - - - - -## 执行计划形状与算子信息 - -在数据库系统中,执行计划在内部通常是以树的形式来表示的,但是不同的数据库会选择不同的方式展示给用户。 - -如下示例分别为 PostgreSQL 数据库、Oracle 数据库和 OceanBase 数据库对于 TPCDS Q3 的计划展示。 - -```sql -obclient> SELECT /*TPC-DS Q3*/ * - FROM (SELECT dt.d_year, - item.i_brand_id brand_id, - item.i_brand brand, - Sum(ss_net_profit) sum_agg - FROM date_dim dt, - store_sales, - item - WHERE dt.d_date_sk = store_sales.ss_sold_date_sk - AND store_sales.ss_item_sk = item.i_item_sk - AND item.i_manufact_id = 914 - AND dt.d_moy = 11 - GROUP BY dt.d_year, - item.i_brand, - item.i_brand_id - ORDER BY dt.d_year, - sum_agg DESC, - brand_id) - WHERE ROWNUM <= 100; - -PostgreSQL 数据库执行计划展示如下: -Limit (cost=13986.86..13987.20 rows=27 width=91) - Sort (cost=13986.86..13986.93 rows=27 width=65) - Sort Key: dt.d_year, (sum(store_sales.ss_net_profit)), item.i_brand_id - HashAggregate (cost=13985.95..13986.22 rows=27 width=65) - Merge Join (cost=13884.21..13983.91 rows=204 width=65) - Merge Cond: (dt.d_date_sk = store_sales.ss_sold_date_sk) - Index Scan using date_dim_pkey on date_dim dt (cost=0.00..3494.62 rows=6080 width=8) - Filter: (d_moy = 11) - Sort (cost=12170.87..12177.27 rows=2560 width=65) - Sort Key: store_sales.ss_sold_date_sk - Nested Loop (cost=6.02..12025.94 rows=2560 width=65) - Seq Scan on item (cost=0.00..1455.00 rows=16 width=59) - Filter: (i_manufact_id = 914) - Bitmap Heap Scan on store_sales (cost=6.02..658.94 rows=174 width=14) - Recheck Cond: (ss_item_sk = item.i_item_sk) - Bitmap Index Scan on store_sales_pkey (cost=0.00..5.97 rows=174 width=0) - Index Cond: (ss_item_sk = item.i_item_sk) - - - -Oracle 数据库执行计划展示如下: -Plan hash value: 2331821367 --------------------------------------------------------------------------------------------------- -| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | --------------------------------------------------------------------------------------------------- -| 0 | SELECT STATEMENT | | 100 | 9100 | 3688 (1)| 00:00:01 | -|* 1 | COUNT STOPKEY | | | | | | -| 2 | VIEW | | 2736 | 243K| 3688 (1)| 00:00:01 | -|* 3 | SORT ORDER BY STOPKEY | | 2736 | 256K| 3688 (1)| 00:00:01 | -| 4 | HASH GROUP BY | | 2736 | 256K| 3688 (1)| 00:00:01 | -|* 5 | HASH JOIN | | 2736 | 256K| 3686 (1)| 00:00:01 | -|* 6 | TABLE ACCESS FULL | DATE_DIM | 6087 | 79131 | 376 (1)| 00:00:01 | -| 7 | NESTED LOOPS | | 2865 | 232K| 3310 (1)| 00:00:01 | -| 8 | NESTED LOOPS | | 2865 | 232K| 3310 (1)| 00:00:01 | -|* 9 | TABLE ACCESS FULL | ITEM | 18 | 1188 | 375 (0)| 00:00:01 | -|* 10 | INDEX RANGE SCAN | SYS_C0010069 | 159 | | 2 (0)| 00:00:01 | -| 11 | TABLE ACCESS BY INDEX ROWID| STORE_SALES | 159 | 2703 | 163 (0)| 00:00:01 | --------------------------------------------------------------------------------------------------- - -OceanBase 数据库执行计划展示如下: -|ID|OPERATOR |NAME |EST. ROWS|COST | -------------------------------------------------------- -|0 |LIMIT | |100 |81141| -|1 | TOP-N SORT | |100 |81127| -|2 | HASH GROUP BY | |2924 |68551| -|3 | HASH JOIN | |2924 |65004| -|4 | SUBPLAN SCAN |VIEW1 |2953 |19070| -|5 | HASH GROUP BY | |2953 |18662| -|6 | NESTED-LOOP JOIN| |2953 |15080| -|7 | TABLE SCAN |ITEM |19 |11841| -|8 | TABLE SCAN |STORE_SALES|161 |73 | -|9 | TABLE SCAN |DT |6088 |29401| -======================================================= - -由示例可见,OceanBase 数据库的计划展示与 Oracle 数据库类似。 - -OceanBase 数据库执行计划中的各列的含义如下: -列名 含义 -ID 执行树按照前序遍历的方式得到的编号(从 0 开始)。 -OPERATOR 操作算子的名称。 -NAME 对应表操作的表名(索引名)。 -EST. ROWS 估算该操作算子的输出行数。 -COST 该操作算子的执行代价(微秒)。 - - -OceanBase 数据库 EXPLAIN 命令输出的第一部分是执行计划的树形结构展示。其中每一个操作在树中的层次通过其在 operator 中的缩进予以展示,层次最深的优先执行,层次相同的以特定算子的执行顺序为标准来执行。 - -问题: update a not exists (b…) -我一开始以为 B是驱动表,B的数据挺多的 后来看到NLAJ,是说左边的表关联右边的表 -所以这个的驱动表是不是实际是A,用A的匹配B的,这个理解有问题吗 - -回答: 没错 A 驱动 B的 - -问题: 光知道最下最右的是驱动表了 所以一开始搞得有点懵 :sweat_smile: - -回答: nlj应该原理应该都是左表(驱动表)的记录探测右表(被驱动表), 选哪张成为左表或右表就基于一些其他考量了,比如数据量, 而anti join/semi join只是对 not exist/exist的一种优化,相关的原理和资料网上可以查阅一下 - -问题: 也就是nlj 就是按照之前理解的谁先执行 谁就是驱动表 也就是执行计划中的最右的表 -而anti join/semi join,谁在not exist左面,谁就是驱动表。这么理解对吧 - -回答: nlj也是左表的表是驱动表,这个要了解下计划执行方面的基本原理,取左表的一行数据,再遍历右表,一旦满足连接条件,就可以返回数据 -anti/semi只是因为not exists/exist的语义只是返回左表数据,改成anti join是一种计划优化,连接的方式比子查询更优 -""" - -from llama_index import Document - -text_list = [text1] -documents = [Document(t) for t in text_list] - -num_output = 250 -max_input_size = 512 - -max_chunk_overlap = 20 -prompt_helper = PromptHelper(max_input_size, num_output, max_chunk_overlap) - -index = GPTListIndex( - documents, - embed_model=embed_model, - llm_predictor=llm_predictor, - prompt_helper=prompt_helper, -) -index.save_to_disk("index.json") - - -if __name__ == "__main__": - import logging - - logging.getLogger().setLevel(logging.CRITICAL) - for d in documents: - print(d) - - response = index.query("数据库的执行计划命令有多少?") - print(response) diff --git a/pilot/awel/__init__.py b/pilot/awel/__init__.py new file mode 100644 index 000000000..3cfc3c2bc --- /dev/null +++ b/pilot/awel/__init__.py @@ -0,0 +1,87 @@ +"""Agentic Workflow Expression Language (AWEL) + +Note: + +AWEL is still an experimental feature and only opens the lowest level API. +The stability of this API cannot be guaranteed at present. + +""" + +from pilot.component import SystemApp + +from .dag.base import DAGContext, DAG + +from .operator.base import BaseOperator, WorkflowRunner +from .operator.common_operator import ( + JoinOperator, + ReduceStreamOperator, + MapOperator, + BranchOperator, + InputOperator, + BranchFunc, +) + +from .operator.stream_operator import ( + StreamifyAbsOperator, + UnstreamifyAbsOperator, + TransformStreamAbsOperator, +) + +from .task.base import TaskState, TaskOutput, TaskContext, InputContext, InputSource +from .task.task_impl import ( + SimpleInputSource, + SimpleCallDataInputSource, + DefaultTaskContext, + DefaultInputContext, + SimpleTaskOutput, + SimpleStreamTaskOutput, + _is_async_iterator, +) +from .trigger.http_trigger import HttpTrigger +from .runner.local_runner import DefaultWorkflowRunner + +__all__ = [ + "initialize_awel", + "DAGContext", + "DAG", + "BaseOperator", + "JoinOperator", + "ReduceStreamOperator", + "MapOperator", + "BranchOperator", + "InputOperator", + "BranchFunc", + "WorkflowRunner", + "TaskState", + "TaskOutput", + "TaskContext", + "InputContext", + "InputSource", + "DefaultWorkflowRunner", + "SimpleInputSource", + "SimpleCallDataInputSource", + "DefaultTaskContext", + "DefaultInputContext", + "SimpleTaskOutput", + "SimpleStreamTaskOutput", + "StreamifyAbsOperator", + "UnstreamifyAbsOperator", + "TransformStreamAbsOperator", + "HttpTrigger", +] + + +def initialize_awel(system_app: SystemApp, dag_filepath: str): + from .dag.dag_manager import DAGManager + from .dag.base import DAGVar + from .trigger.trigger_manager import DefaultTriggerManager + from .operator.base import initialize_runner + + DAGVar.set_current_system_app(system_app) + + system_app.register(DefaultTriggerManager) + dag_manager = DAGManager(system_app, dag_filepath) + system_app.register_instance(dag_manager) + initialize_runner(DefaultWorkflowRunner()) + # Load all dags + dag_manager.load_dags() diff --git a/pilot/awel/base.py b/pilot/awel/base.py new file mode 100644 index 000000000..97cb8ad05 --- /dev/null +++ b/pilot/awel/base.py @@ -0,0 +1,7 @@ +from abc import ABC, abstractmethod + + +class Trigger(ABC): + @abstractmethod + async def trigger(self) -> None: + """Trigger the workflow or a specific operation in the workflow.""" diff --git a/pilot/server/componet_configs.py b/pilot/awel/dag/__init__.py similarity index 100% rename from pilot/server/componet_configs.py rename to pilot/awel/dag/__init__.py diff --git a/pilot/awel/dag/base.py b/pilot/awel/dag/base.py new file mode 100644 index 000000000..ceb13c8ad --- /dev/null +++ b/pilot/awel/dag/base.py @@ -0,0 +1,364 @@ +from abc import ABC, abstractmethod +from typing import Optional, Dict, List, Sequence, Union, Any, Set +import uuid +import contextvars +import threading +import asyncio +import logging +from collections import deque +from functools import cache +from concurrent.futures import Executor + +from pilot.component import SystemApp +from ..resource.base import ResourceGroup +from ..task.base import TaskContext + +logger = logging.getLogger(__name__) + +DependencyType = Union["DependencyMixin", Sequence["DependencyMixin"]] + + +def _is_async_context(): + try: + loop = asyncio.get_running_loop() + return asyncio.current_task(loop=loop) is not None + except RuntimeError: + return False + + +class DependencyMixin(ABC): + @abstractmethod + def set_upstream(self, nodes: DependencyType) -> "DependencyMixin": + """Set one or more upstream nodes for this node. + + Args: + nodes (DependencyType): Upstream nodes to be set to current node. + + Returns: + DependencyMixin: Returns self to allow method chaining. + + Raises: + ValueError: If no upstream nodes are provided or if an argument is not a DependencyMixin. + """ + + @abstractmethod + def set_downstream(self, nodes: DependencyType) -> "DependencyMixin": + """Set one or more downstream nodes for this node. + + Args: + nodes (DependencyType): Downstream nodes to be set to current node. + + Returns: + DependencyMixin: Returns self to allow method chaining. + + Raises: + ValueError: If no downstream nodes are provided or if an argument is not a DependencyMixin. + """ + + def __lshift__(self, nodes: DependencyType) -> DependencyType: + """Implements self << nodes + + Example: + + .. code-block:: python + + # means node.set_upstream(input_node) + node << input_node + + # means node2.set_upstream([input_node]) + node2 << [input_node] + """ + self.set_upstream(nodes) + return nodes + + def __rshift__(self, nodes: DependencyType) -> DependencyType: + """Implements self >> nodes + + Example: + + .. code-block:: python + + # means node.set_downstream(next_node) + node >> next_node + + # means node2.set_downstream([next_node]) + node2 >> [next_node] + + """ + self.set_downstream(nodes) + return nodes + + def __rrshift__(self, nodes: DependencyType) -> "DependencyMixin": + """Implements [node] >> self""" + self.__lshift__(nodes) + return self + + def __rlshift__(self, nodes: DependencyType) -> "DependencyMixin": + """Implements [node] << self""" + self.__rshift__(nodes) + return self + + +class DAGVar: + _thread_local = threading.local() + _async_local = contextvars.ContextVar("current_dag_stack", default=deque()) + _system_app: SystemApp = None + _executor: Executor = None + + @classmethod + def enter_dag(cls, dag) -> None: + is_async = _is_async_context() + if is_async: + stack = cls._async_local.get() + stack.append(dag) + cls._async_local.set(stack) + else: + if not hasattr(cls._thread_local, "current_dag_stack"): + cls._thread_local.current_dag_stack = deque() + cls._thread_local.current_dag_stack.append(dag) + + @classmethod + def exit_dag(cls) -> None: + is_async = _is_async_context() + if is_async: + stack = cls._async_local.get() + if stack: + stack.pop() + cls._async_local.set(stack) + else: + if ( + hasattr(cls._thread_local, "current_dag_stack") + and cls._thread_local.current_dag_stack + ): + cls._thread_local.current_dag_stack.pop() + + @classmethod + def get_current_dag(cls) -> Optional["DAG"]: + is_async = _is_async_context() + if is_async: + stack = cls._async_local.get() + return stack[-1] if stack else None + else: + if ( + hasattr(cls._thread_local, "current_dag_stack") + and cls._thread_local.current_dag_stack + ): + return cls._thread_local.current_dag_stack[-1] + return None + + @classmethod + def get_current_system_app(cls) -> SystemApp: + if not cls._system_app: + raise RuntimeError("System APP not set for DAGVar") + return cls._system_app + + @classmethod + def set_current_system_app(cls, system_app: SystemApp) -> None: + if cls._system_app: + logger.warn("System APP has already set, nothing to do") + else: + cls._system_app = system_app + + @classmethod + def get_executor(cls) -> Executor: + return cls._executor + + @classmethod + def set_executor(cls, executor: Executor) -> None: + cls._executor = executor + + +class DAGNode(DependencyMixin, ABC): + resource_group: Optional[ResourceGroup] = None + """The resource group of current DAGNode""" + + def __init__( + self, + dag: Optional["DAG"] = None, + node_id: Optional[str] = None, + node_name: Optional[str] = None, + system_app: Optional[SystemApp] = None, + executor: Optional[Executor] = None, + ) -> None: + super().__init__() + self._upstream: List["DAGNode"] = [] + self._downstream: List["DAGNode"] = [] + self._dag: Optional["DAG"] = dag or DAGVar.get_current_dag() + self._system_app: Optional[SystemApp] = ( + system_app or DAGVar.get_current_system_app() + ) + self._executor: Optional[Executor] = executor or DAGVar.get_executor() + if not node_id and self._dag: + node_id = self._dag._new_node_id() + self._node_id: str = node_id + self._node_name: str = node_name + + @property + def node_id(self) -> str: + return self._node_id + + @property + def system_app(self) -> SystemApp: + return self._system_app + + def set_node_id(self, node_id: str) -> None: + self._node_id = node_id + + def __hash__(self) -> int: + if self.node_id: + return hash(self.node_id) + else: + return super().__hash__() + + def __eq__(self, other: Any) -> bool: + if not isinstance(other, DAGNode): + return False + return self.node_id == other.node_id + + @property + def node_name(self) -> str: + return self._node_name + + @property + def dag(self) -> "DAG": + return self._dag + + def set_upstream(self, nodes: DependencyType) -> "DAGNode": + self.set_dependency(nodes) + + def set_downstream(self, nodes: DependencyType) -> "DAGNode": + self.set_dependency(nodes, is_upstream=False) + + @property + def upstream(self) -> List["DAGNode"]: + return self._upstream + + @property + def downstream(self) -> List["DAGNode"]: + return self._downstream + + def set_dependency(self, nodes: DependencyType, is_upstream: bool = True) -> None: + if not isinstance(nodes, Sequence): + nodes = [nodes] + if not all(isinstance(node, DAGNode) for node in nodes): + raise ValueError( + "all nodes to set dependency to current node must be instance of 'DAGNode'" + ) + nodes: Sequence[DAGNode] = nodes + dags = set([node.dag for node in nodes if node.dag]) + if self.dag: + dags.add(self.dag) + if not dags: + raise ValueError("set dependency to current node must in a DAG context") + if len(dags) != 1: + raise ValueError( + "set dependency to current node just support in one DAG context" + ) + dag = dags.pop() + self._dag = dag + + dag._append_node(self) + for node in nodes: + if is_upstream and node not in self.upstream: + node._dag = dag + dag._append_node(node) + + self._upstream.append(node) + node._downstream.append(self) + elif node not in self._downstream: + node._dag = dag + dag._append_node(node) + + self._downstream.append(node) + node._upstream.append(self) + + +class DAGContext: + def __init__(self) -> None: + self._curr_task_ctx = None + self._share_data: Dict[str, Any] = {} + + @property + def current_task_context(self) -> TaskContext: + return self._curr_task_ctx + + def set_current_task_context(self, _curr_task_ctx: TaskContext) -> None: + self._curr_task_ctx = _curr_task_ctx + + async def get_share_data(self, key: str) -> Any: + return self._share_data.get(key) + + async def save_to_share_data(self, key: str, data: Any) -> None: + self._share_data[key] = data + + +class DAG: + def __init__( + self, dag_id: str, resource_group: Optional[ResourceGroup] = None + ) -> None: + self._dag_id = dag_id + self.node_map: Dict[str, DAGNode] = {} + self._root_nodes: Set[DAGNode] = None + self._leaf_nodes: Set[DAGNode] = None + self._trigger_nodes: Set[DAGNode] = None + + def _append_node(self, node: DAGNode) -> None: + self.node_map[node.node_id] = node + # clear cached nodes + self._root_nodes = None + self._leaf_nodes = None + + def _new_node_id(self) -> str: + return str(uuid.uuid4()) + + @property + def dag_id(self) -> str: + return self._dag_id + + def _build(self) -> None: + from ..operator.common_operator import TriggerOperator + + nodes = set() + for _, node in self.node_map.items(): + nodes = nodes.union(_get_nodes(node)) + self._root_nodes = list(set(filter(lambda x: not x.upstream, nodes))) + self._leaf_nodes = list(set(filter(lambda x: not x.downstream, nodes))) + self._trigger_nodes = list( + set(filter(lambda x: isinstance(x, TriggerOperator), nodes)) + ) + + @property + def root_nodes(self) -> List[DAGNode]: + if not self._root_nodes: + self._build() + return self._root_nodes + + @property + def leaf_nodes(self) -> List[DAGNode]: + if not self._leaf_nodes: + self._build() + return self._leaf_nodes + + @property + def trigger_nodes(self): + if not self._trigger_nodes: + self._build() + return self._trigger_nodes + + def __enter__(self): + DAGVar.enter_dag(self) + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + DAGVar.exit_dag() + + +def _get_nodes(node: DAGNode, is_upstream: Optional[bool] = True) -> set[DAGNode]: + nodes = set() + if not node: + return nodes + nodes.add(node) + stream_nodes = node.upstream if is_upstream else node.downstream + for node in stream_nodes: + nodes = nodes.union(_get_nodes(node, is_upstream)) + return nodes diff --git a/pilot/awel/dag/dag_manager.py b/pilot/awel/dag/dag_manager.py new file mode 100644 index 000000000..58830e121 --- /dev/null +++ b/pilot/awel/dag/dag_manager.py @@ -0,0 +1,42 @@ +from typing import Dict, Optional +import logging +from pilot.component import BaseComponent, ComponentType, SystemApp +from .loader import DAGLoader, LocalFileDAGLoader +from .base import DAG + +logger = logging.getLogger(__name__) + + +class DAGManager(BaseComponent): + name = ComponentType.AWEL_DAG_MANAGER + + def __init__(self, system_app: SystemApp, dag_filepath: str): + super().__init__(system_app) + self.dag_loader = LocalFileDAGLoader(dag_filepath) + self.system_app = system_app + self.dag_map: Dict[str, DAG] = {} + + def init_app(self, system_app: SystemApp): + self.system_app = system_app + + def load_dags(self): + dags = self.dag_loader.load_dags() + triggers = [] + for dag in dags: + dag_id = dag.dag_id + if dag_id in self.dag_map: + raise ValueError(f"Load DAG error, DAG ID {dag_id} has already exist") + triggers += dag.trigger_nodes + from ..trigger.trigger_manager import DefaultTriggerManager + + trigger_manager: DefaultTriggerManager = self.system_app.get_component( + ComponentType.AWEL_TRIGGER_MANAGER, + DefaultTriggerManager, + default_component=None, + ) + if trigger_manager: + for trigger in triggers: + trigger_manager.register_trigger(trigger) + trigger_manager.after_register() + else: + logger.warn("No trigger manager, not register dag trigger") diff --git a/pilot/awel/dag/loader.py b/pilot/awel/dag/loader.py new file mode 100644 index 000000000..2eb89f8bc --- /dev/null +++ b/pilot/awel/dag/loader.py @@ -0,0 +1,93 @@ +from abc import ABC, abstractmethod +from typing import List +import os +import hashlib +import sys +import logging +import traceback + +from .base import DAG + +logger = logging.getLogger(__name__) + + +class DAGLoader(ABC): + @abstractmethod + def load_dags(self) -> List[DAG]: + """Load dags""" + + +class LocalFileDAGLoader(DAGLoader): + def __init__(self, filepath: str) -> None: + super().__init__() + self._filepath = filepath + + def load_dags(self) -> List[DAG]: + if not os.path.exists(self._filepath): + return [] + if os.path.isdir(self._filepath): + return _process_directory(self._filepath) + else: + return _process_file(self._filepath) + + +def _process_directory(directory: str) -> List[DAG]: + dags = [] + for file in os.listdir(directory): + if file.endswith(".py"): + filepath = os.path.join(directory, file) + dags += _process_file(filepath) + return dags + + +def _process_file(filepath) -> List[DAG]: + mods = _load_modules_from_file(filepath) + results = _process_modules(mods) + return results + + +def _load_modules_from_file(filepath: str): + import importlib + import importlib.machinery + import importlib.util + + logger.info(f"Importing {filepath}") + + org_mod_name, _ = os.path.splitext(os.path.split(filepath)[-1]) + path_hash = hashlib.sha1(filepath.encode("utf-8")).hexdigest() + mod_name = f"unusual_prefix_{path_hash}_{org_mod_name}" + + if mod_name in sys.modules: + del sys.modules[mod_name] + + def parse(mod_name, filepath): + try: + loader = importlib.machinery.SourceFileLoader(mod_name, filepath) + spec = importlib.util.spec_from_loader(mod_name, loader) + new_module = importlib.util.module_from_spec(spec) + sys.modules[spec.name] = new_module + loader.exec_module(new_module) + return [new_module] + except Exception as e: + msg = traceback.format_exc() + logger.error(f"Failed to import: {filepath}, error message: {msg}") + # TODO save error message + return [] + + return parse(mod_name, filepath) + + +def _process_modules(mods) -> List[DAG]: + top_level_dags = ( + (o, m) for m in mods for o in m.__dict__.values() if isinstance(o, DAG) + ) + found_dags = [] + for dag, mod in top_level_dags: + try: + # TODO validate dag params + logger.info(f"Found dag {dag} from mod {mod} and model file {mod.__file__}") + found_dags.append(dag) + except Exception: + msg = traceback.format_exc() + logger.error(f"Failed to dag file, error message: {msg}") + return found_dags diff --git a/pilot/awel/dag/tests/__init__.py b/pilot/awel/dag/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pilot/awel/dag/tests/test_dag.py b/pilot/awel/dag/tests/test_dag.py new file mode 100644 index 000000000..c30530dc8 --- /dev/null +++ b/pilot/awel/dag/tests/test_dag.py @@ -0,0 +1,51 @@ +import pytest +import threading +import asyncio +from ..dag import DAG, DAGContext + + +def test_dag_context_sync(): + dag1 = DAG("dag1") + dag2 = DAG("dag2") + + with dag1: + assert DAGContext.get_current_dag() == dag1 + with dag2: + assert DAGContext.get_current_dag() == dag2 + assert DAGContext.get_current_dag() == dag1 + assert DAGContext.get_current_dag() is None + + +def test_dag_context_threading(): + def thread_function(dag): + DAGContext.enter_dag(dag) + assert DAGContext.get_current_dag() == dag + DAGContext.exit_dag() + + dag1 = DAG("dag1") + dag2 = DAG("dag2") + + thread1 = threading.Thread(target=thread_function, args=(dag1,)) + thread2 = threading.Thread(target=thread_function, args=(dag2,)) + + thread1.start() + thread2.start() + thread1.join() + thread2.join() + + assert DAGContext.get_current_dag() is None + + +@pytest.mark.asyncio +async def test_dag_context_async(): + async def async_function(dag): + DAGContext.enter_dag(dag) + assert DAGContext.get_current_dag() == dag + DAGContext.exit_dag() + + dag1 = DAG("dag1") + dag2 = DAG("dag2") + + await asyncio.gather(async_function(dag1), async_function(dag2)) + + assert DAGContext.get_current_dag() is None diff --git a/pilot/awel/operator/__init__.py b/pilot/awel/operator/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pilot/awel/operator/base.py b/pilot/awel/operator/base.py new file mode 100644 index 000000000..09aa87141 --- /dev/null +++ b/pilot/awel/operator/base.py @@ -0,0 +1,206 @@ +from abc import ABC, abstractmethod, ABCMeta + +from types import FunctionType +from typing import ( + List, + Generic, + TypeVar, + AsyncIterator, + Union, + Any, + Dict, + Optional, + cast, +) +import functools +from inspect import signature +from pilot.component import SystemApp, ComponentType +from pilot.utils.executor_utils import ( + ExecutorFactory, + DefaultExecutorFactory, + blocking_func_to_async, + BlockingFunction, +) + +from ..dag.base import DAGNode, DAGContext, DAGVar, DAG +from ..task.base import ( + TaskContext, + TaskOutput, + TaskState, + OUT, + T, + InputContext, + InputSource, +) + +F = TypeVar("F", bound=FunctionType) + +CALL_DATA = Union[Dict, Dict[str, Dict]] + + +class WorkflowRunner(ABC, Generic[T]): + """Abstract base class representing a runner for executing workflows in a DAG. + + This class defines the interface for executing workflows within the DAG, + handling the flow from one DAG node to another. + """ + + @abstractmethod + async def execute_workflow( + self, node: "BaseOperator", call_data: Optional[CALL_DATA] = None + ) -> DAGContext: + """Execute the workflow starting from a given operator. + + Args: + node (RunnableDAGNode): The starting node of the workflow to be executed. + call_data (CALL_DATA): The data pass to root operator node. + + Returns: + DAGContext: The context after executing the workflow, containing the final state and data. + """ + + +default_runner: WorkflowRunner = None + + +class BaseOperatorMeta(ABCMeta): + """Metaclass of BaseOperator.""" + + @classmethod + def _apply_defaults(cls, func: F) -> F: + sig_cache = signature(func) + + @functools.wraps(func) + def apply_defaults(self: "BaseOperator", *args: Any, **kwargs: Any) -> Any: + dag: Optional[DAG] = kwargs.get("dag") or DAGVar.get_current_dag() + task_id: Optional[str] = kwargs.get("task_id") + system_app: Optional[SystemApp] = ( + kwargs.get("system_app") or DAGVar.get_current_system_app() + ) + executor = kwargs.get("executor") or DAGVar.get_executor() + if not executor: + if system_app: + executor = system_app.get_component( + ComponentType.EXECUTOR_DEFAULT, ExecutorFactory + ).create() + else: + executor = DefaultExecutorFactory().create() + DAGVar.set_executor(executor) + + if not task_id and dag: + task_id = dag._new_node_id() + runner: Optional[WorkflowRunner] = kwargs.get("runner") or default_runner + # print(f"self: {self}, kwargs dag: {kwargs.get('dag')}, kwargs: {kwargs}") + # for arg in sig_cache.parameters: + # if arg not in kwargs: + # kwargs[arg] = default_args[arg] + if not kwargs.get("dag"): + kwargs["dag"] = dag + if not kwargs.get("task_id"): + kwargs["task_id"] = task_id + if not kwargs.get("runner"): + kwargs["runner"] = runner + if not kwargs.get("system_app"): + kwargs["system_app"] = system_app + if not kwargs.get("executor"): + kwargs["executor"] = executor + real_obj = func(self, *args, **kwargs) + return real_obj + + return cast(T, apply_defaults) + + def __new__(cls, name, bases, namespace, **kwargs): + new_cls = super().__new__(cls, name, bases, namespace, **kwargs) + new_cls.__init__ = cls._apply_defaults(new_cls.__init__) + return new_cls + + +class BaseOperator(DAGNode, ABC, Generic[OUT], metaclass=BaseOperatorMeta): + """Abstract base class for operator nodes that can be executed within a workflow. + + This class extends DAGNode by adding execution capabilities. + """ + + def __init__( + self, + task_id: Optional[str] = None, + task_name: Optional[str] = None, + dag: Optional[DAG] = None, + runner: WorkflowRunner = None, + **kwargs, + ) -> None: + """Initializes a BaseOperator with an optional workflow runner. + + Args: + runner (WorkflowRunner, optional): The runner used to execute the workflow. Defaults to None. + """ + super().__init__(node_id=task_id, node_name=task_name, dag=dag, **kwargs) + if not runner: + from pilot.awel import DefaultWorkflowRunner + + runner = DefaultWorkflowRunner() + + self._runner: WorkflowRunner = runner + self._dag_ctx: DAGContext = None + + @property + def current_dag_context(self) -> DAGContext: + return self._dag_ctx + + async def _run(self, dag_ctx: DAGContext) -> TaskOutput[OUT]: + if not self.node_id: + raise ValueError(f"The DAG Node ID can't be empty, current node {self}") + self._dag_ctx = dag_ctx + return await self._do_run(dag_ctx) + + @abstractmethod + async def _do_run(self, dag_ctx: DAGContext) -> TaskOutput[OUT]: + """ + Abstract method to run the task within the DAG node. + + Args: + dag_ctx (DAGContext): The context of the DAG when this node is run. + + Returns: + TaskOutput[OUT]: The task output after this node has been run. + """ + + async def call(self, call_data: Optional[CALL_DATA] = None) -> OUT: + """Execute the node and return the output. + + This method is a high-level wrapper for executing the node. + + Args: + call_data (CALL_DATA): The data pass to root operator node. + + Returns: + OUT: The output of the node after execution. + """ + out_ctx = await self._runner.execute_workflow(self, call_data) + return out_ctx.current_task_context.task_output.output + + async def call_stream( + self, call_data: Optional[CALL_DATA] = None + ) -> AsyncIterator[OUT]: + """Execute the node and return the output as a stream. + + This method is used for nodes where the output is a stream. + + Args: + call_data (CALL_DATA): The data pass to root operator node. + + Returns: + AsyncIterator[OUT]: An asynchronous iterator over the output stream. + """ + out_ctx = await self._runner.execute_workflow(self, call_data) + return out_ctx.current_task_context.task_output.output_stream + + async def blocking_func_to_async( + self, func: BlockingFunction, *args, **kwargs + ) -> Any: + return await blocking_func_to_async(self._executor, func, *args, **kwargs) + + +def initialize_runner(runner: WorkflowRunner): + global default_runner + default_runner = runner diff --git a/pilot/awel/operator/common_operator.py b/pilot/awel/operator/common_operator.py new file mode 100644 index 000000000..2c0d41dde --- /dev/null +++ b/pilot/awel/operator/common_operator.py @@ -0,0 +1,246 @@ +from typing import Generic, Dict, List, Union, Callable, Any, AsyncIterator, Awaitable +import asyncio +import logging + +from ..dag.base import DAGContext +from ..task.base import ( + TaskContext, + TaskOutput, + IN, + OUT, + InputContext, + InputSource, +) + +from .base import BaseOperator + + +logger = logging.getLogger(__name__) + + +class JoinOperator(BaseOperator, Generic[OUT]): + """Operator that joins inputs using a custom combine function. + + This node type is useful for combining the outputs of upstream nodes. + """ + + def __init__(self, combine_function, **kwargs): + super().__init__(**kwargs) + if not callable(combine_function): + raise ValueError("combine_function must be callable") + self.combine_function = combine_function + + async def _do_run(self, dag_ctx: DAGContext) -> TaskOutput[OUT]: + """Run the join operation on the DAG context's inputs. + Args: + dag_ctx (DAGContext): The current context of the DAG. + + Returns: + TaskOutput[OUT]: The task output after this node has been run. + """ + curr_task_ctx: TaskContext[OUT] = dag_ctx.current_task_context + input_ctx: InputContext = await curr_task_ctx.task_input.map_all( + self.combine_function + ) + # All join result store in the first parent output + join_output = input_ctx.parent_outputs[0].task_output + curr_task_ctx.set_task_output(join_output) + return join_output + + +class ReduceStreamOperator(BaseOperator, Generic[IN, OUT]): + def __init__(self, reduce_function=None, **kwargs): + """Initializes a ReduceStreamOperator with a combine function. + + Args: + combine_function: A function that defines how to combine inputs. + + Raises: + ValueError: If the combine_function is not callable. + """ + super().__init__(**kwargs) + if reduce_function and not callable(reduce_function): + raise ValueError("reduce_function must be callable") + self.reduce_function = reduce_function + + async def _do_run(self, dag_ctx: DAGContext) -> TaskOutput[OUT]: + """Run the join operation on the DAG context's inputs. + + Args: + dag_ctx (DAGContext): The current context of the DAG. + + Returns: + TaskOutput[OUT]: The task output after this node has been run. + """ + curr_task_ctx: TaskContext[OUT] = dag_ctx.current_task_context + task_input = curr_task_ctx.task_input + if not task_input.check_stream(): + raise ValueError("ReduceStreamOperator expects stream data") + if not task_input.check_single_parent(): + raise ValueError("ReduceStreamOperator expects single parent") + + reduce_function = self.reduce_function or self.reduce + + input_ctx: InputContext = await task_input.reduce(reduce_function) + # All join result store in the first parent output + reduce_output = input_ctx.parent_outputs[0].task_output + curr_task_ctx.set_task_output(reduce_output) + return reduce_output + + async def reduce(self, input_value: AsyncIterator[IN]) -> OUT: + raise NotImplementedError + + +class MapOperator(BaseOperator, Generic[IN, OUT]): + """Map operator that applies a mapping function to its inputs. + + This operator transforms its input data using a provided mapping function and + passes the transformed data downstream. + """ + + def __init__(self, map_function=None, **kwargs): + """Initializes a MapDAGNode with a mapping function. + + Args: + map_function: A function that defines how to map the input data. + + Raises: + ValueError: If the map_function is not callable. + """ + super().__init__(**kwargs) + if map_function and not callable(map_function): + raise ValueError("map_function must be callable") + self.map_function = map_function + + async def _do_run(self, dag_ctx: DAGContext) -> TaskOutput[OUT]: + """Run the mapping operation on the DAG context's inputs. + + This method applies the mapping function to the input context and updates + the DAG context with the new data. + + Args: + dag_ctx (DAGContext[IN]): The current context of the DAG. + + Returns: + TaskOutput[OUT]: The task output after this node has been run. + + Raises: + ValueError: If not a single parent or the map_function is not callable + """ + curr_task_ctx: TaskContext[OUT] = dag_ctx.current_task_context + if not curr_task_ctx.task_input.check_single_parent(): + num_parents = len(curr_task_ctx.task_input.parent_outputs) + raise ValueError( + f"task {curr_task_ctx.task_id} MapDAGNode expects single parent, now number of parents: {num_parents}" + ) + map_function = self.map_function or self.map + + input_ctx: InputContext = await curr_task_ctx.task_input.map(map_function) + # All join result store in the first parent output + reduce_output = input_ctx.parent_outputs[0].task_output + curr_task_ctx.set_task_output(reduce_output) + return reduce_output + + async def map(self, input_value: IN) -> OUT: + raise NotImplementedError + + +BranchFunc = Union[Callable[[IN], bool], Callable[[IN], Awaitable[bool]]] + + +class BranchOperator(BaseOperator, Generic[IN, OUT]): + """Operator node that branches the workflow based on a provided function. + + This node filters its input data using a branching function and + allows for conditional paths in the workflow. + """ + + def __init__( + self, branches: Dict[BranchFunc[IN], Union[BaseOperator, str]], **kwargs + ): + """ + Initializes a BranchDAGNode with a branching function. + + Args: + branches (Dict[BranchFunc[IN], Union[BaseOperator, str]]): Dict of function that defines the branching condition. + + Raises: + ValueError: If the branch_function is not callable. + """ + super().__init__(**kwargs) + if branches: + for branch_function, value in branches.items(): + if not callable(branch_function): + raise ValueError("branch_function must be callable") + if isinstance(value, BaseOperator): + branches[branch_function] = value.node_name or value.node_name + self._branches = branches + + async def _do_run(self, dag_ctx: DAGContext) -> TaskOutput[OUT]: + """Run the branching operation on the DAG context's inputs. + + This method applies the branching function to the input context to determine + the path of execution in the workflow. + + Args: + dag_ctx (DAGContext[IN]): The current context of the DAG. + + Returns: + TaskOutput[OUT]: The task output after this node has been run. + """ + curr_task_ctx: TaskContext[OUT] = dag_ctx.current_task_context + task_input = curr_task_ctx.task_input + if task_input.check_stream(): + raise ValueError("BranchDAGNode expects no stream data") + if not task_input.check_single_parent(): + raise ValueError("BranchDAGNode expects single parent") + + branches = self._branches + if not branches: + branches = await self.branchs() + + branch_func_tasks = [] + branch_nodes: List[str] = [] + for func, node_name in branches.items(): + branch_nodes.append(node_name) + branch_func_tasks.append( + curr_task_ctx.task_input.predicate_map(func, failed_value=None) + ) + + branch_input_ctxs: List[InputContext] = await asyncio.gather(*branch_func_tasks) + parent_output = task_input.parent_outputs[0].task_output + curr_task_ctx.set_task_output(parent_output) + skip_node_names = [] + for i, ctx in enumerate(branch_input_ctxs): + node_name = branch_nodes[i] + branch_out = ctx.parent_outputs[0].task_output + logger.info( + f"branch_input_ctxs {i} result {branch_out.output}, is_empty: {branch_out.is_empty}" + ) + if ctx.parent_outputs[0].task_output.is_empty: + logger.info(f"Skip node name {node_name}") + skip_node_names.append(node_name) + curr_task_ctx.update_metadata("skip_node_names", skip_node_names) + return parent_output + + async def branchs(self) -> Dict[BranchFunc[IN], Union[BaseOperator, str]]: + raise NotImplementedError + + +class InputOperator(BaseOperator, Generic[OUT]): + def __init__(self, input_source: InputSource[OUT], **kwargs) -> None: + super().__init__(**kwargs) + self._input_source = input_source + + async def _do_run(self, dag_ctx: DAGContext) -> TaskOutput[OUT]: + curr_task_ctx: TaskContext[OUT] = dag_ctx.current_task_context + task_output = await self._input_source.read(curr_task_ctx) + curr_task_ctx.set_task_output(task_output) + return task_output + + +class TriggerOperator(InputOperator, Generic[OUT]): + def __init__(self, **kwargs) -> None: + from ..task.task_impl import SimpleCallDataInputSource + + super().__init__(input_source=SimpleCallDataInputSource(), **kwargs) diff --git a/pilot/awel/operator/stream_operator.py b/pilot/awel/operator/stream_operator.py new file mode 100644 index 000000000..7de916a83 --- /dev/null +++ b/pilot/awel/operator/stream_operator.py @@ -0,0 +1,90 @@ +from abc import ABC, abstractmethod +from typing import Generic, AsyncIterator +from ..task.base import OUT, IN, TaskOutput, TaskContext +from ..dag.base import DAGContext +from .base import BaseOperator + + +class StreamifyAbsOperator(BaseOperator[OUT], ABC, Generic[IN, OUT]): + async def _do_run(self, dag_ctx: DAGContext) -> TaskOutput[OUT]: + curr_task_ctx: TaskContext[OUT] = dag_ctx.current_task_context + output = await curr_task_ctx.task_input.parent_outputs[0].task_output.streamify( + self.streamify + ) + curr_task_ctx.set_task_output(output) + return output + + @abstractmethod + async def streamify(self, input_value: IN) -> AsyncIterator[OUT]: + """Convert a value of IN to an AsyncIterator[OUT] + + Args: + input_value (IN): The data of parent operator's output + + Example: + + .. code-block:: python + + class MyStreamOperator(StreamifyAbsOperator[int, int]): + async def streamify(self, input_value: int) -> AsyncIterator[int] + for i in range(input_value): + yield i + """ + + +class UnstreamifyAbsOperator(BaseOperator[OUT], Generic[IN, OUT]): + async def _do_run(self, dag_ctx: DAGContext) -> TaskOutput[OUT]: + curr_task_ctx: TaskContext[OUT] = dag_ctx.current_task_context + output = await curr_task_ctx.task_input.parent_outputs[ + 0 + ].task_output.unstreamify(self.unstreamify) + curr_task_ctx.set_task_output(output) + return output + + @abstractmethod + async def unstreamify(self, input_value: AsyncIterator[IN]) -> OUT: + """Convert a value of AsyncIterator[IN] to an OUT. + + Args: + input_value (AsyncIterator[IN])): The data of parent operator's output + + Example: + + .. code-block:: python + + class MyUnstreamOperator(UnstreamifyAbsOperator[int, int]): + async def unstreamify(self, input_value: AsyncIterator[int]) -> int + value_cnt = 0 + async for v in input_value: + value_cnt += 1 + return value_cnt + """ + + +class TransformStreamAbsOperator(BaseOperator[OUT], Generic[IN, OUT]): + async def _do_run(self, dag_ctx: DAGContext) -> TaskOutput[OUT]: + curr_task_ctx: TaskContext[OUT] = dag_ctx.current_task_context + output = await curr_task_ctx.task_input.parent_outputs[ + 0 + ].task_output.transform_stream(self.transform_stream) + curr_task_ctx.set_task_output(output) + return output + + @abstractmethod + async def transform_stream( + self, input_value: AsyncIterator[IN] + ) -> AsyncIterator[OUT]: + """Transform an AsyncIterator[IN] to another AsyncIterator[OUT] using a given function. + + Args: + input_value (AsyncIterator[IN])): The data of parent operator's output + + Example: + + .. code-block:: python + + class MyTransformStreamOperator(TransformStreamAbsOperator[int, int]): + async def unstreamify(self, input_value: AsyncIterator[int]) -> AsyncIterator[int] + async for v in input_value: + yield v + 1 + """ diff --git a/pilot/awel/resource/__init__.py b/pilot/awel/resource/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pilot/awel/resource/base.py b/pilot/awel/resource/base.py new file mode 100644 index 000000000..97fefbbc3 --- /dev/null +++ b/pilot/awel/resource/base.py @@ -0,0 +1,8 @@ +from abc import ABC, abstractmethod + + +class ResourceGroup(ABC): + @property + @abstractmethod + def name(self) -> str: + """The name of current resource group""" diff --git a/pilot/awel/runner/__init__.py b/pilot/awel/runner/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pilot/awel/runner/job_manager.py b/pilot/awel/runner/job_manager.py new file mode 100644 index 000000000..7a1d12ead --- /dev/null +++ b/pilot/awel/runner/job_manager.py @@ -0,0 +1,82 @@ +from typing import List, Set, Optional, Dict +import uuid +import logging +from ..dag.base import DAG + +from ..operator.base import BaseOperator, CALL_DATA + +logger = logging.getLogger(__name__) + + +class DAGNodeInstance: + def __init__(self, node_instance: DAG) -> None: + pass + + +class DAGInstance: + def __init__(self, dag: DAG) -> None: + self._dag = dag + + +class JobManager: + def __init__( + self, + root_nodes: List[BaseOperator], + all_nodes: List[BaseOperator], + end_node: BaseOperator, + id2call_data: Dict[str, Dict], + ) -> None: + self._root_nodes = root_nodes + self._all_nodes = all_nodes + self._end_node = end_node + self._id2node_data = id2call_data + + @staticmethod + def build_from_end_node( + end_node: BaseOperator, call_data: Optional[CALL_DATA] = None + ) -> "JobManager": + nodes = _build_from_end_node(end_node) + root_nodes = _get_root_nodes(nodes) + id2call_data = _save_call_data(root_nodes, call_data) + return JobManager(root_nodes, nodes, end_node, id2call_data) + + def get_call_data_by_id(self, node_id: str) -> Optional[Dict]: + return self._id2node_data.get(node_id) + + +def _save_call_data( + root_nodes: List[BaseOperator], call_data: CALL_DATA +) -> Dict[str, Dict]: + id2call_data = {} + logger.debug(f"_save_call_data: {call_data}, root_nodes: {root_nodes}") + if not call_data: + return id2call_data + if len(root_nodes) == 1: + node = root_nodes[0] + logger.info(f"Save call data to node {node.node_id}, call_data: {call_data}") + id2call_data[node.node_id] = call_data + else: + for node in root_nodes: + node_id = node.node_id + logger.info( + f"Save call data to node {node.node_id}, call_data: {call_data.get(node_id)}" + ) + id2call_data[node_id] = call_data.get(node_id) + return id2call_data + + +def _build_from_end_node(end_node: BaseOperator) -> List[BaseOperator]: + nodes = [] + if isinstance(end_node, BaseOperator): + task_id = end_node.node_id + if not task_id: + task_id = str(uuid.uuid4()) + end_node.set_node_id(task_id) + nodes.append(end_node) + for node in end_node.upstream: + nodes += _build_from_end_node(node) + return nodes + + +def _get_root_nodes(nodes: List[BaseOperator]) -> List[BaseOperator]: + return list(set(filter(lambda x: not x.upstream, nodes))) diff --git a/pilot/awel/runner/local_runner.py b/pilot/awel/runner/local_runner.py new file mode 100644 index 000000000..6f8a0a484 --- /dev/null +++ b/pilot/awel/runner/local_runner.py @@ -0,0 +1,106 @@ +from typing import Dict, Optional, Set, List +import logging + +from ..dag.base import DAGContext +from ..operator.base import WorkflowRunner, BaseOperator, CALL_DATA +from ..operator.common_operator import BranchOperator, JoinOperator, TriggerOperator +from ..task.base import TaskContext, TaskState +from ..task.task_impl import DefaultInputContext, DefaultTaskContext, SimpleTaskOutput +from .job_manager import JobManager + +logger = logging.getLogger(__name__) + + +class DefaultWorkflowRunner(WorkflowRunner): + async def execute_workflow( + self, node: BaseOperator, call_data: Optional[CALL_DATA] = None + ) -> DAGContext: + # Create DAG context + dag_ctx = DAGContext() + job_manager = JobManager.build_from_end_node(node, call_data) + logger.info( + f"Begin run workflow from end operator, id: {node.node_id}, call_data: {call_data}" + ) + dag = node.dag + # Save node output + node_outputs: Dict[str, TaskContext] = {} + skip_node_ids = set() + await self._execute_node( + job_manager, node, dag_ctx, node_outputs, skip_node_ids + ) + + return dag_ctx + + async def _execute_node( + self, + job_manager: JobManager, + node: BaseOperator, + dag_ctx: DAGContext, + node_outputs: Dict[str, TaskContext], + skip_node_ids: Set[str], + ): + # Skip run node + if node.node_id in node_outputs: + return + + # Run all upstream node + for upstream_node in node.upstream: + if isinstance(upstream_node, BaseOperator): + await self._execute_node( + job_manager, upstream_node, dag_ctx, node_outputs, skip_node_ids + ) + + inputs = [ + node_outputs[upstream_node.node_id] for upstream_node in node.upstream + ] + input_ctx = DefaultInputContext(inputs) + task_ctx = DefaultTaskContext(node.node_id, TaskState.INIT, task_output=None) + task_ctx.set_call_data(job_manager.get_call_data_by_id(node.node_id)) + + task_ctx.set_task_input(input_ctx) + dag_ctx.set_current_task_context(task_ctx) + task_ctx.set_current_state(TaskState.RUNNING) + + if node.node_id in skip_node_ids: + task_ctx.set_current_state(TaskState.SKIP) + task_ctx.set_task_output(SimpleTaskOutput(None)) + node_outputs[node.node_id] = task_ctx + return + try: + logger.debug( + f"Begin run operator, node id: {node.node_id}, node name: {node.node_name}, cls: {node}" + ) + await node._run(dag_ctx) + node_outputs[node.node_id] = dag_ctx.current_task_context + task_ctx.set_current_state(TaskState.SUCCESS) + + if isinstance(node, BranchOperator): + skip_nodes = task_ctx.metadata.get("skip_node_names", []) + logger.debug( + f"Current is branch operator, skip node names: {skip_nodes}" + ) + _skip_current_downstream_by_node_name(node, skip_nodes, skip_node_ids) + except Exception as e: + logger.info(f"Run operator {node.node_id} error, error message: {str(e)}") + task_ctx.set_current_state(TaskState.FAILED) + raise e + + +def _skip_current_downstream_by_node_name( + branch_node: BranchOperator, skip_nodes: List[str], skip_node_ids: Set[str] +): + if not skip_nodes: + return + for child in branch_node.downstream: + if child.node_name in skip_nodes: + logger.info(f"Skip node name {child.node_name}, node id {child.node_id}") + _skip_downstream_by_id(child, skip_node_ids) + + +def _skip_downstream_by_id(node: BaseOperator, skip_node_ids: Set[str]): + if isinstance(node, JoinOperator): + # Not skip join node + return + skip_node_ids.add(node.node_id) + for child in node.downstream: + _skip_downstream_by_id(child, skip_node_ids) diff --git a/pilot/awel/task/__init__.py b/pilot/awel/task/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pilot/awel/task/base.py b/pilot/awel/task/base.py new file mode 100644 index 000000000..88b0df343 --- /dev/null +++ b/pilot/awel/task/base.py @@ -0,0 +1,367 @@ +from abc import ABC, abstractmethod +from enum import Enum +from typing import ( + TypeVar, + Generic, + Optional, + AsyncIterator, + Union, + Callable, + Any, + Dict, + List, +) + +IN = TypeVar("IN") +OUT = TypeVar("OUT") +T = TypeVar("T") + + +class TaskState(str, Enum): + """Enumeration representing the state of a task in the workflow. + + This Enum defines various states a task can be in during its lifecycle in the DAG. + """ + + INIT = "init" # Initial state of the task, not yet started + SKIP = "skip" # State indicating the task was skipped + RUNNING = "running" # State indicating the task is currently running + SUCCESS = "success" # State indicating the task completed successfully + FAILED = "failed" # State indicating the task failed during execution + + +class TaskOutput(ABC, Generic[T]): + """Abstract base class representing the output of a task. + + This class encapsulates the output of a task and provides methods to access the output data. + It can be subclassed to implement specific output behaviors. + """ + + @property + def is_stream(self) -> bool: + """Check if the output is a stream. + + Returns: + bool: True if the output is a stream, False otherwise. + """ + return False + + @property + def is_empty(self) -> bool: + """Check if the output is empty. + + Returns: + bool: True if the output is empty, False otherwise. + """ + return False + + @property + def output(self) -> Optional[T]: + """Return the output of the task. + + Returns: + T: The output of the task. None if the output is empty. + """ + raise NotImplementedError + + @property + def output_stream(self) -> Optional[AsyncIterator[T]]: + """Return the output of the task as an asynchronous stream. + + Returns: + AsyncIterator[T]: An asynchronous iterator over the output. None if the output is empty. + """ + raise NotImplementedError + + @abstractmethod + def set_output(self, output_data: Union[T, AsyncIterator[T]]) -> None: + """Set the output data to current object. + + Args: + output_data (Union[T, AsyncIterator[T]]): Output data. + """ + + @abstractmethod + def new_output(self) -> "TaskOutput[T]": + """Create new output object""" + + async def map(self, map_func) -> "TaskOutput[T]": + """Apply a mapping function to the task's output. + + Args: + map_func: A function to apply to the task's output. + + Returns: + TaskOutput[T]: The result of applying the mapping function. + """ + raise NotImplementedError + + async def reduce(self, reduce_func) -> "TaskOutput[T]": + """Apply a reducing function to the task's output. + + Stream TaskOutput to Nonstream TaskOutput. + + Args: + reduce_func: A reducing function to apply to the task's output. + + Returns: + TaskOutput[T]: The result of applying the reducing function. + """ + raise NotImplementedError + + async def streamify( + self, transform_func: Callable[[T], AsyncIterator[T]] + ) -> "TaskOutput[T]": + """Convert a value of type T to an AsyncIterator[T] using a transform function. + + Args: + transform_func (Callable[[T], AsyncIterator[T]]): Function to transform a T value into an AsyncIterator[T]. + + Returns: + TaskOutput[T]: The result of applying the reducing function. + """ + raise NotImplementedError + + async def transform_stream( + self, transform_func: Callable[[AsyncIterator[T]], AsyncIterator[T]] + ) -> "TaskOutput[T]": + """Transform an AsyncIterator[T] to another AsyncIterator[T] using a given function. + + Args: + transform_func (Callable[[AsyncIterator[T]], AsyncIterator[T]]): Function to apply to the AsyncIterator[T]. + + Returns: + TaskOutput[T]: The result of applying the reducing function. + """ + raise NotImplementedError + + async def unstreamify( + self, transform_func: Callable[[AsyncIterator[T]], T] + ) -> "TaskOutput[T]": + """Convert an AsyncIterator[T] to a value of type T using a transform function. + + Args: + transform_func (Callable[[AsyncIterator[T]], T]): Function to transform an AsyncIterator[T] into a T value. + + Returns: + TaskOutput[T]: The result of applying the reducing function. + """ + raise NotImplementedError + + async def check_condition(self, condition_func) -> bool: + """Check if current output meets a given condition. + + Args: + condition_func: A function to determine if the condition is met. + Returns: + bool: True if current output meet the condition, False otherwise. + """ + raise NotImplementedError + + +class TaskContext(ABC, Generic[T]): + """Abstract base class representing the context of a task within a DAG. + + This class provides the interface for accessing task-related information + and manipulating task output. + """ + + @property + @abstractmethod + def task_id(self) -> str: + """Return the unique identifier of the task. + + Returns: + str: The unique identifier of the task. + """ + + @property + @abstractmethod + def task_input(self) -> "InputContext": + """Return the InputContext of current task. + + Returns: + InputContext: The InputContext of current task. + """ + + @abstractmethod + def set_task_input(self, input_ctx: "InputContext") -> None: + """Set the InputContext object to current task. + + Args: + input_ctx (InputContext): The InputContext of current task + """ + + @property + @abstractmethod + def task_output(self) -> TaskOutput[T]: + """Return the output object of the task. + + Returns: + TaskOutput[T]: The output object of the task. + """ + + @abstractmethod + def set_task_output(self, task_output: TaskOutput[T]) -> None: + """Set the output object to current task.""" + + @property + @abstractmethod + def current_state(self) -> TaskState: + """Get the current state of the task. + + Returns: + TaskState: The current state of the task. + """ + + @abstractmethod + def set_current_state(self, task_state: TaskState) -> None: + """Set current task state + + Args: + task_state (TaskState): The task state to be set. + """ + + @abstractmethod + def new_ctx(self) -> "TaskContext": + """Create new task context + + Returns: + TaskContext: A new instance of a TaskContext. + """ + + @property + @abstractmethod + def metadata(self) -> Dict[str, Any]: + """Get the metadata of current task + + Returns: + Dict[str, Any]: The metadata + """ + + def update_metadata(self, key: str, value: Any) -> None: + """Update metadata with key and value + + Args: + key (str): The key of metadata + value (str): The value to be add to metadata + """ + self.metadata[key] = value + + @property + def call_data(self) -> Optional[Dict]: + """Get the call data for current data""" + return self.metadata.get("call_data") + + def set_call_data(self, call_data: Dict) -> None: + """Set call data for current task""" + self.update_metadata("call_data", call_data) + + +class InputContext(ABC): + """Abstract base class representing the context of inputs to a operator node. + + This class defines methods to manipulate and access the inputs for a operator node. + """ + + @property + @abstractmethod + def parent_outputs(self) -> List[TaskContext]: + """Get the outputs from the parent nodes. + + Returns: + List[TaskContext]: A list of contexts of the parent nodes' outputs. + """ + + @abstractmethod + async def map(self, map_func: Callable[[Any], Any]) -> "InputContext": + """Apply a mapping function to the inputs. + + Args: + map_func (Callable[[Any], Any]): A function to be applied to the inputs. + + Returns: + InputContext: A new InputContext instance with the mapped inputs. + """ + + @abstractmethod + async def map_all(self, map_func: Callable[..., Any]) -> "InputContext": + """Apply a mapping function to all inputs. + + Args: + map_func (Callable[..., Any]): A function to be applied to all inputs. + + Returns: + InputContext: A new InputContext instance with the mapped inputs. + """ + + @abstractmethod + async def reduce(self, reduce_func: Callable[[Any], Any]) -> "InputContext": + """Apply a reducing function to the inputs. + + Args: + reduce_func (Callable[[Any], Any]): A function that reduces the inputs. + + Returns: + InputContext: A new InputContext instance with the reduced inputs. + """ + + @abstractmethod + async def filter(self, filter_func: Callable[[Any], bool]) -> "InputContext": + """Filter the inputs based on a provided function. + + Args: + filter_func (Callable[[Any], bool]): A function that returns True for inputs to keep. + + Returns: + InputContext: A new InputContext instance with the filtered inputs. + """ + + @abstractmethod + async def predicate_map( + self, predicate_func: Callable[[Any], bool], failed_value: Any = None + ) -> "InputContext": + """Predicate the inputs based on a provided function. + + Args: + predicate_func (Callable[[Any], bool]): A function that returns True for inputs is predicate True. + failed_value (Any): The value to be set if the return value of predicate function is False + Returns: + InputContext: A new InputContext instance with the predicate inputs. + """ + + def check_single_parent(self) -> bool: + """Check if there is only a single parent output. + + Returns: + bool: True if there is only one parent output, False otherwise. + """ + return len(self.parent_outputs) == 1 + + def check_stream(self, skip_empty: bool = False) -> bool: + """Check if all parent outputs are streams. + + Args: + skip_empty (bool): Skip empty output or not. + + Returns: + bool: True if all parent outputs are streams, False otherwise. + """ + for out in self.parent_outputs: + if out.task_output.is_empty and skip_empty: + continue + if not (out.task_output and out.task_output.is_stream): + return False + return True + + +class InputSource(ABC, Generic[T]): + """Abstract base class representing the source of inputs to a DAG node.""" + + @abstractmethod + async def read(self, task_ctx: TaskContext) -> TaskOutput[T]: + """Read the data from current input source. + + Returns: + TaskOutput[T]: The output object read from current source + """ diff --git a/pilot/awel/task/task_impl.py b/pilot/awel/task/task_impl.py new file mode 100644 index 000000000..f969c135c --- /dev/null +++ b/pilot/awel/task/task_impl.py @@ -0,0 +1,339 @@ +from abc import ABC, abstractmethod +from typing import ( + Callable, + Coroutine, + Iterator, + AsyncIterator, + List, + Generic, + TypeVar, + Any, + Tuple, + Dict, + Union, +) +import asyncio +import logging +from .base import TaskOutput, TaskContext, TaskState, InputContext, InputSource, T + + +logger = logging.getLogger(__name__) + + +async def _reduce_stream(stream: AsyncIterator, reduce_function) -> Any: + # Init accumulator + try: + accumulator = await stream.__anext__() + except StopAsyncIteration: + raise ValueError("Stream is empty") + is_async = asyncio.iscoroutinefunction(reduce_function) + async for element in stream: + if is_async: + accumulator = await reduce_function(accumulator, element) + else: + accumulator = reduce_function(accumulator, element) + return accumulator + + +class SimpleTaskOutput(TaskOutput[T], Generic[T]): + def __init__(self, data: T) -> None: + super().__init__() + self._data = data + + @property + def output(self) -> T: + return self._data + + def set_output(self, output_data: T | AsyncIterator[T]) -> None: + self._data = output_data + + def new_output(self) -> TaskOutput[T]: + return SimpleTaskOutput(None) + + @property + def is_empty(self) -> bool: + return not self._data + + async def _apply_func(self, func) -> Any: + if asyncio.iscoroutinefunction(func): + out = await func(self._data) + else: + out = func(self._data) + return out + + async def map(self, map_func) -> TaskOutput[T]: + out = await self._apply_func(map_func) + return SimpleTaskOutput(out) + + async def check_condition(self, condition_func) -> bool: + return await self._apply_func(condition_func) + + async def streamify( + self, transform_func: Callable[[T], AsyncIterator[T]] + ) -> TaskOutput[T]: + out = await self._apply_func(transform_func) + return SimpleStreamTaskOutput(out) + + +class SimpleStreamTaskOutput(TaskOutput[T], Generic[T]): + def __init__(self, data: AsyncIterator[T]) -> None: + super().__init__() + self._data = data + + @property + def is_stream(self) -> bool: + return True + + @property + def is_empty(self) -> bool: + return not self._data + + @property + def output_stream(self) -> AsyncIterator[T]: + return self._data + + def set_output(self, output_data: T | AsyncIterator[T]) -> None: + self._data = output_data + + def new_output(self) -> TaskOutput[T]: + return SimpleStreamTaskOutput(None) + + async def map(self, map_func) -> TaskOutput[T]: + is_async = asyncio.iscoroutinefunction(map_func) + + async def new_iter() -> AsyncIterator[T]: + async for out in self._data: + if is_async: + out = await map_func(out) + else: + out = map_func(out) + yield out + + return SimpleStreamTaskOutput(new_iter()) + + async def reduce(self, reduce_func) -> TaskOutput[T]: + out = await _reduce_stream(self._data, reduce_func) + return SimpleTaskOutput(out) + + async def unstreamify( + self, transform_func: Callable[[AsyncIterator[T]], T] + ) -> TaskOutput[T]: + if asyncio.iscoroutinefunction(transform_func): + out = await transform_func(self._data) + else: + out = transform_func(self._data) + return SimpleTaskOutput(out) + + async def transform_stream( + self, transform_func: Callable[[AsyncIterator[T]], AsyncIterator[T]] + ) -> TaskOutput[T]: + if asyncio.iscoroutinefunction(transform_func): + out = await transform_func(self._data) + else: + out = transform_func(self._data) + return SimpleStreamTaskOutput(out) + + +def _is_async_iterator(obj): + return ( + hasattr(obj, "__anext__") + and callable(getattr(obj, "__anext__", None)) + and hasattr(obj, "__aiter__") + and callable(getattr(obj, "__aiter__", None)) + ) + + +class BaseInputSource(InputSource, ABC): + def __init__(self) -> None: + super().__init__() + self._is_read = False + + @abstractmethod + def _read_data(self, task_ctx: TaskContext) -> Any: + """Read data with task context""" + + async def read(self, task_ctx: TaskContext) -> Coroutine[Any, Any, TaskOutput]: + data = self._read_data(task_ctx) + if _is_async_iterator(data): + if self._is_read: + raise ValueError(f"Input iterator {data} has been read!") + output = SimpleStreamTaskOutput(data) + else: + output = SimpleTaskOutput(data) + self._is_read = True + return output + + +class SimpleInputSource(BaseInputSource): + def __init__(self, data: Any) -> None: + super().__init__() + self._data = data + + def _read_data(self, task_ctx: TaskContext) -> Any: + return self._data + + +class SimpleCallDataInputSource(BaseInputSource): + def __init__(self) -> None: + super().__init__() + + def _read_data(self, task_ctx: TaskContext) -> Any: + call_data = task_ctx.call_data + data = call_data.get("data") if call_data else None + if not (call_data and data): + raise ValueError("No call data for current SimpleCallDataInputSource") + return data + + +class DefaultTaskContext(TaskContext, Generic[T]): + def __init__( + self, task_id: str, task_state: TaskState, task_output: TaskOutput[T] + ) -> None: + super().__init__() + self._task_id = task_id + self._task_state = task_state + self._output = task_output + self._task_input = None + self._metadata = {} + + @property + def task_id(self) -> str: + return self._task_id + + @property + def task_input(self) -> InputContext: + return self._task_input + + def set_task_input(self, input_ctx: "InputContext") -> None: + self._task_input = input_ctx + + @property + def task_output(self) -> TaskOutput: + return self._output + + def set_task_output(self, task_output: TaskOutput) -> None: + self._output = task_output + + @property + def current_state(self) -> TaskState: + return self._task_state + + def set_current_state(self, task_state: TaskState) -> None: + self._task_state = task_state + + def new_ctx(self) -> TaskContext: + new_output = self._output.new_output() + return DefaultTaskContext(self._task_id, self._task_state, new_output) + + @property + def metadata(self) -> Dict[str, Any]: + return self._metadata + + +class DefaultInputContext(InputContext): + def __init__(self, outputs: List[TaskContext]) -> None: + super().__init__() + self._outputs = outputs + + @property + def parent_outputs(self) -> List[TaskContext]: + return self._outputs + + async def _apply_func( + self, func: Callable[[Any], Any], apply_type: str = "map" + ) -> Tuple[List[TaskContext], List[TaskOutput]]: + new_outputs: List[TaskContext] = [] + map_tasks = [] + for out in self._outputs: + new_outputs.append(out.new_ctx()) + result = None + if apply_type == "map": + result = out.task_output.map(func) + elif apply_type == "reduce": + result = out.task_output.reduce(func) + elif apply_type == "check_condition": + result = out.task_output.check_condition(func) + else: + raise ValueError(f"Unsupport apply type {apply_type}") + map_tasks.append(result) + results = await asyncio.gather(*map_tasks) + return new_outputs, results + + async def map(self, map_func: Callable[[Any], Any]) -> InputContext: + new_outputs, results = await self._apply_func(map_func) + for i, task_ctx in enumerate(new_outputs): + task_ctx: TaskContext = task_ctx + task_ctx.set_task_output(results[i]) + return DefaultInputContext(new_outputs) + + async def map_all(self, map_func: Callable[..., Any]) -> InputContext: + if not self._outputs: + return DefaultInputContext([]) + # Some parent may be empty + not_empty_idx = 0 + for i, p in enumerate(self._outputs): + if p.task_output.is_empty: + continue + not_empty_idx = i + break + # All output is empty? + is_steam = self._outputs[not_empty_idx].task_output.is_stream + if is_steam: + if not self.check_stream(skip_empty=True): + raise ValueError( + "The output in all tasks must has same output format to map_all" + ) + outputs = [] + for out in self._outputs: + if out.task_output.is_stream: + outputs.append(out.task_output.output_stream) + else: + outputs.append(out.task_output.output) + if asyncio.iscoroutinefunction(map_func): + map_res = await map_func(*outputs) + else: + map_res = map_func(*outputs) + single_output: TaskContext = self._outputs[not_empty_idx].new_ctx() + single_output.task_output.set_output(map_res) + logger.debug( + f"Current map_all map_res: {map_res}, is steam: {single_output.task_output.is_stream}" + ) + return DefaultInputContext([single_output]) + + async def reduce(self, reduce_func: Callable[[Any], Any]) -> InputContext: + if not self.check_stream(): + raise ValueError( + "The output in all tasks must has same output format of stream to apply reduce function" + ) + new_outputs, results = await self._apply_func(reduce_func, apply_type="reduce") + for i, task_ctx in enumerate(new_outputs): + task_ctx: TaskContext = task_ctx + task_ctx.set_task_output(results[i]) + return DefaultInputContext(new_outputs) + + async def filter(self, filter_func: Callable[[Any], bool]) -> InputContext: + new_outputs, results = await self._apply_func( + filter_func, apply_type="check_condition" + ) + result_outputs = [] + for i, task_ctx in enumerate(new_outputs): + if results[i]: + result_outputs.append(task_ctx) + return DefaultInputContext(result_outputs) + + async def predicate_map( + self, predicate_func: Callable[[Any], bool], failed_value: Any = None + ) -> "InputContext": + new_outputs, results = await self._apply_func( + predicate_func, apply_type="check_condition" + ) + result_outputs = [] + for i, task_ctx in enumerate(new_outputs): + task_ctx: TaskContext = task_ctx + if results[i]: + task_ctx.task_output.set_output(True) + result_outputs.append(task_ctx) + else: + task_ctx.task_output.set_output(failed_value) + result_outputs.append(task_ctx) + return DefaultInputContext(result_outputs) diff --git a/pilot/awel/tests/__init__.py b/pilot/awel/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pilot/awel/tests/conftest.py b/pilot/awel/tests/conftest.py new file mode 100644 index 000000000..2279cceba --- /dev/null +++ b/pilot/awel/tests/conftest.py @@ -0,0 +1,102 @@ +import pytest +import pytest_asyncio +from typing import AsyncIterator, List +from contextlib import contextmanager, asynccontextmanager +from .. import ( + WorkflowRunner, + InputOperator, + DAGContext, + TaskState, + DefaultWorkflowRunner, + SimpleInputSource, +) +from ..task.task_impl import _is_async_iterator + + +@pytest.fixture +def runner(): + return DefaultWorkflowRunner() + + +def _create_stream(num_nodes) -> List[AsyncIterator[int]]: + iters = [] + for _ in range(num_nodes): + + async def stream_iter(): + for i in range(10): + yield i + + stream_iter = stream_iter() + assert _is_async_iterator(stream_iter) + iters.append(stream_iter) + return iters + + +def _create_stream_from(output_streams: List[List[int]]) -> List[AsyncIterator[int]]: + iters = [] + for single_stream in output_streams: + + async def stream_iter(): + for i in single_stream: + yield i + + stream_iter = stream_iter() + assert _is_async_iterator(stream_iter) + iters.append(stream_iter) + return iters + + +@asynccontextmanager +async def _create_input_node(**kwargs): + num_nodes = kwargs.get("num_nodes") + is_stream = kwargs.get("is_stream", False) + if is_stream: + outputs = kwargs.get("output_streams") + if outputs: + if num_nodes and num_nodes != len(outputs): + raise ValueError( + f"num_nodes {num_nodes} != the length of output_streams {len(outputs)}" + ) + outputs = _create_stream_from(outputs) + else: + num_nodes = num_nodes or 1 + outputs = _create_stream(num_nodes) + else: + outputs = kwargs.get("outputs", ["Hello."]) + nodes = [] + for output in outputs: + print(f"output: {output}") + input_source = SimpleInputSource(output) + input_node = InputOperator(input_source) + nodes.append(input_node) + yield nodes + + +@pytest_asyncio.fixture +async def input_node(request): + param = getattr(request, "param", {}) + async with _create_input_node(**param) as input_nodes: + yield input_nodes[0] + + +@pytest_asyncio.fixture +async def stream_input_node(request): + param = getattr(request, "param", {}) + param["is_stream"] = True + async with _create_input_node(**param) as input_nodes: + yield input_nodes[0] + + +@pytest_asyncio.fixture +async def input_nodes(request): + param = getattr(request, "param", {}) + async with _create_input_node(**param) as input_nodes: + yield input_nodes + + +@pytest_asyncio.fixture +async def stream_input_nodes(request): + param = getattr(request, "param", {}) + param["is_stream"] = True + async with _create_input_node(**param) as input_nodes: + yield input_nodes diff --git a/pilot/awel/tests/test_http_operator.py b/pilot/awel/tests/test_http_operator.py new file mode 100644 index 000000000..c57e70fe1 --- /dev/null +++ b/pilot/awel/tests/test_http_operator.py @@ -0,0 +1,51 @@ +import pytest +from typing import List +from .. import ( + DAG, + WorkflowRunner, + DAGContext, + TaskState, + InputOperator, + MapOperator, + JoinOperator, + BranchOperator, + ReduceStreamOperator, + SimpleInputSource, +) +from .conftest import ( + runner, + input_node, + input_nodes, + stream_input_node, + stream_input_nodes, + _is_async_iterator, +) + + +def _register_dag_to_fastapi_app(dag): + # TODO + pass + + +@pytest.mark.asyncio +async def test_http_operator(runner: WorkflowRunner, stream_input_node: InputOperator): + with DAG("test_map") as dag: + pass + # http_req_task = HttpRequestOperator(endpoint="/api/completions") + # db_task = DBQueryOperator(table_name="user_info") + # prompt_task = PromptTemplateOperator( + # system_prompt="You are an AI designed to solve the user's goals with given commands, please follow the constraints of the system's input for your answers." + # ) + # llm_task = ChatGPTLLMOperator(model="chagpt-3.5") + # output_parser_task = CommonOutputParserOperator() + # http_res_task = HttpResponseOperator() + # ( + # http_req_task + # >> db_task + # >> prompt_task + # >> llm_task + # >> output_parser_task + # >> http_res_task + # ) + + _register_dag_to_fastapi_app(dag) diff --git a/pilot/awel/tests/test_run_dag.py b/pilot/awel/tests/test_run_dag.py new file mode 100644 index 000000000..c0ea8e7ad --- /dev/null +++ b/pilot/awel/tests/test_run_dag.py @@ -0,0 +1,141 @@ +import pytest +from typing import List +from .. import ( + DAG, + WorkflowRunner, + DAGContext, + TaskState, + InputOperator, + MapOperator, + JoinOperator, + BranchOperator, + ReduceStreamOperator, + SimpleInputSource, +) +from .conftest import ( + runner, + input_node, + input_nodes, + stream_input_node, + stream_input_nodes, + _is_async_iterator, +) + + +@pytest.mark.asyncio +async def test_input_node(runner: WorkflowRunner): + input_node = InputOperator(SimpleInputSource("hello")) + res: DAGContext[str] = await runner.execute_workflow(input_node) + assert res.current_task_context.current_state == TaskState.SUCCESS + assert res.current_task_context.task_output.output == "hello" + + async def new_steam_iter(n: int): + for i in range(n): + yield i + + num_iter = 10 + steam_input_node = InputOperator(SimpleInputSource(new_steam_iter(num_iter))) + res: DAGContext[str] = await runner.execute_workflow(steam_input_node) + assert res.current_task_context.current_state == TaskState.SUCCESS + output_steam = res.current_task_context.task_output.output_stream + assert output_steam + assert _is_async_iterator(output_steam) + i = 0 + async for x in output_steam: + assert x == i + i += 1 + + +@pytest.mark.asyncio +async def test_map_node(runner: WorkflowRunner, stream_input_node: InputOperator): + with DAG("test_map") as dag: + map_node = MapOperator(lambda x: x * 2) + stream_input_node >> map_node + res: DAGContext[int] = await runner.execute_workflow(map_node) + output_steam = res.current_task_context.task_output.output_stream + assert output_steam + i = 0 + async for x in output_steam: + assert x == i * 2 + i += 1 + + +@pytest.mark.asyncio +@pytest.mark.parametrize( + "stream_input_node, expect_sum", + [ + ({"output_streams": [[0, 1, 2, 3]]}, 6), + ({"output_streams": [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]]}, 55), + ], + indirect=["stream_input_node"], +) +async def test_reduce_node( + runner: WorkflowRunner, stream_input_node: InputOperator, expect_sum: int +): + with DAG("test_reduce_node") as dag: + reduce_node = ReduceStreamOperator(lambda x, y: x + y) + stream_input_node >> reduce_node + res: DAGContext[int] = await runner.execute_workflow(reduce_node) + assert res.current_task_context.current_state == TaskState.SUCCESS + assert not res.current_task_context.task_output.is_stream + assert res.current_task_context.task_output.output == expect_sum + + +@pytest.mark.asyncio +@pytest.mark.parametrize( + "input_nodes", + [ + ({"outputs": [0, 1, 2]}), + ], + indirect=["input_nodes"], +) +async def test_join_node(runner: WorkflowRunner, input_nodes: List[InputOperator]): + def join_func(p1, p2, p3) -> int: + return p1 + p2 + p3 + + with DAG("test_join_node") as dag: + join_node = JoinOperator(join_func) + for input_node in input_nodes: + input_node >> join_node + res: DAGContext[int] = await runner.execute_workflow(join_node) + assert res.current_task_context.current_state == TaskState.SUCCESS + assert not res.current_task_context.task_output.is_stream + assert res.current_task_context.task_output.output == 3 + + +@pytest.mark.asyncio +@pytest.mark.parametrize( + "input_node, is_odd", + [ + ({"outputs": [0]}, False), + ({"outputs": [1]}, True), + ], + indirect=["input_node"], +) +async def test_branch_node( + runner: WorkflowRunner, input_node: InputOperator, is_odd: bool +): + def join_func(o1, o2) -> int: + print(f"join func result, o1: {o1}, o2: {o2}") + return o1 or o2 + + with DAG("test_join_node") as dag: + odd_node = MapOperator( + lambda x: 999, task_id="odd_node", task_name="odd_node_name" + ) + even_node = MapOperator( + lambda x: 888, task_id="even_node", task_name="even_node_name" + ) + join_node = JoinOperator(join_func) + branch_node = BranchOperator( + {lambda x: x % 2 == 1: odd_node, lambda x: x % 2 == 0: even_node} + ) + branch_node >> odd_node >> join_node + branch_node >> even_node >> join_node + + input_node >> branch_node + + res: DAGContext[int] = await runner.execute_workflow(join_node) + assert res.current_task_context.current_state == TaskState.SUCCESS + expect_res = 999 if is_odd else 888 + assert res.current_task_context.task_output.output == expect_res diff --git a/pilot/awel/trigger/__init__.py b/pilot/awel/trigger/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pilot/awel/trigger/base.py b/pilot/awel/trigger/base.py new file mode 100644 index 000000000..28662498f --- /dev/null +++ b/pilot/awel/trigger/base.py @@ -0,0 +1,11 @@ +from __future__ import annotations + +from abc import ABC, abstractmethod + +from ..operator.common_operator import TriggerOperator + + +class Trigger(TriggerOperator, ABC): + @abstractmethod + async def trigger(self) -> None: + """Trigger the workflow or a specific operation in the workflow.""" diff --git a/pilot/awel/trigger/http_trigger.py b/pilot/awel/trigger/http_trigger.py new file mode 100644 index 000000000..175d4b63f --- /dev/null +++ b/pilot/awel/trigger/http_trigger.py @@ -0,0 +1,137 @@ +from __future__ import annotations + +from typing import Union, Type, List, TYPE_CHECKING, Optional, Any, Dict +from starlette.requests import Request +from starlette.responses import Response +from pydantic import BaseModel +import logging + +from .base import Trigger +from ..dag.base import DAG +from ..operator.base import BaseOperator + +if TYPE_CHECKING: + from fastapi import APIRouter, FastAPI + +RequestBody = Union[Request, Type[BaseModel], str] + +logger = logging.getLogger(__name__) + + +class HttpTrigger(Trigger): + def __init__( + self, + endpoint: str, + methods: Optional[Union[str, List[str]]] = "GET", + request_body: Optional[RequestBody] = None, + streaming_response: Optional[bool] = False, + response_model: Optional[Type] = None, + response_headers: Optional[Dict[str, str]] = None, + response_media_type: Optional[str] = None, + status_code: Optional[int] = 200, + router_tags: Optional[List[str]] = None, + **kwargs, + ) -> None: + super().__init__(**kwargs) + if not endpoint.startswith("/"): + endpoint = "/" + endpoint + self._endpoint = endpoint + self._methods = methods + self._req_body = request_body + self._streaming_response = streaming_response + self._response_model = response_model + self._status_code = status_code + self._router_tags = router_tags + self._response_headers = response_headers + self._response_media_type = response_media_type + self._end_node: BaseOperator = None + + async def trigger(self) -> None: + pass + + def mount_to_router(self, router: "APIRouter") -> None: + from fastapi import Depends + + methods = self._methods if isinstance(self._methods, list) else [self._methods] + + def create_route_function(name, req_body_cls: Optional[Type[BaseModel]]): + async def _request_body_dependency(request: Request): + return await _parse_request_body(request, self._req_body) + + async def route_function(body=Depends(_request_body_dependency)): + return await _trigger_dag( + body, + self.dag, + self._streaming_response, + self._response_headers, + self._response_media_type, + ) + + route_function.__name__ = name + return route_function + + function_name = f"AWEL_trigger_route_{self._endpoint.replace('/', '_')}" + request_model = ( + self._req_body + if isinstance(self._req_body, type) + and issubclass(self._req_body, BaseModel) + else None + ) + dynamic_route_function = create_route_function(function_name, request_model) + logger.info( + f"mount router function {dynamic_route_function}({function_name}), endpoint: {self._endpoint}, methods: {methods}" + ) + + router.api_route( + self._endpoint, + methods=methods, + response_model=self._response_model, + status_code=self._status_code, + tags=self._router_tags, + )(dynamic_route_function) + + +async def _parse_request_body( + request: Request, request_body_cls: Optional[Type[BaseModel]] +): + if not request_body_cls: + return None + if request.method == "POST": + json_data = await request.json() + return request_body_cls(**json_data) + elif request.method == "GET": + return request_body_cls(**request.query_params) + else: + return request + + +async def _trigger_dag( + body: Any, + dag: DAG, + streaming_response: Optional[bool] = False, + response_headers: Optional[Dict[str, str]] = None, + response_media_type: Optional[str] = None, +) -> Any: + from fastapi.responses import StreamingResponse + + end_node = dag.leaf_nodes + if len(end_node) != 1: + raise ValueError("HttpTrigger just support one leaf node in dag") + end_node = end_node[0] + if not streaming_response: + return await end_node.call(call_data={"data": body}) + else: + headers = response_headers + media_type = response_media_type if response_media_type else "text/event-stream" + if not headers: + headers = { + "Content-Type": "text/event-stream", + "Cache-Control": "no-cache", + "Connection": "keep-alive", + "Transfer-Encoding": "chunked", + } + return StreamingResponse( + end_node.call_stream(call_data={"data": body}), + headers=headers, + media_type=media_type, + ) diff --git a/pilot/awel/trigger/trigger_manager.py b/pilot/awel/trigger/trigger_manager.py new file mode 100644 index 000000000..feb674ffb --- /dev/null +++ b/pilot/awel/trigger/trigger_manager.py @@ -0,0 +1,74 @@ +from abc import ABC, abstractmethod +from typing import Any, TYPE_CHECKING, Optional +import logging + +if TYPE_CHECKING: + from fastapi import APIRouter + +from pilot.component import SystemApp, BaseComponent, ComponentType + +logger = logging.getLogger(__name__) + + +class TriggerManager(ABC): + @abstractmethod + def register_trigger(self, trigger: Any) -> None: + """ "Register a trigger to current manager""" + + +class HttpTriggerManager(TriggerManager): + def __init__( + self, + router: Optional["APIRouter"] = None, + router_prefix: Optional[str] = "/api/v1/awel/trigger", + ) -> None: + if not router: + from fastapi import APIRouter + + router = APIRouter() + self._router_prefix = router_prefix + self._router = router + self._trigger_map = {} + + def register_trigger(self, trigger: Any) -> None: + from .http_trigger import HttpTrigger + + if not isinstance(trigger, HttpTrigger): + raise ValueError(f"Current trigger {trigger} not an object of HttpTrigger") + trigger: HttpTrigger = trigger + trigger_id = trigger.node_id + if trigger_id not in self._trigger_map: + trigger.mount_to_router(self._router) + self._trigger_map[trigger_id] = trigger + + def _init_app(self, system_app: SystemApp): + logger.info( + f"Include router {self._router} to prefix path {self._router_prefix}" + ) + system_app.app.include_router( + self._router, prefix=self._router_prefix, tags=["AWEL"] + ) + + +class DefaultTriggerManager(TriggerManager, BaseComponent): + name = ComponentType.AWEL_TRIGGER_MANAGER + + def __init__(self, system_app: SystemApp | None = None): + self.system_app = system_app + self.http_trigger = HttpTriggerManager() + super().__init__(None) + + def init_app(self, system_app: SystemApp): + self.system_app = system_app + + def register_trigger(self, trigger: Any) -> None: + from .http_trigger import HttpTrigger + + if isinstance(trigger, HttpTrigger): + logger.info(f"Register trigger {trigger}") + self.http_trigger.register_trigger(trigger) + else: + raise ValueError(f"Unsupport trigger: {trigger}") + + def after_register(self) -> None: + self.http_trigger._init_app(self.system_app) diff --git a/pilot/base_modules/agent/commands/command_mange.py b/pilot/base_modules/agent/commands/command_mange.py index be9e02811..89aa2f5f4 100644 --- a/pilot/base_modules/agent/commands/command_mange.py +++ b/pilot/base_modules/agent/commands/command_mange.py @@ -5,7 +5,9 @@ import json import logging import xml.etree.ElementTree as ET +import pandas as pd +from pilot.common.json_utils import serialize from datetime import datetime from typing import Any, Callable, Optional, List from pydantic import BaseModel @@ -184,6 +186,8 @@ class PluginStatus(BaseModel): start_time = datetime.now().timestamp() * 1000 end_time: int = None + df: Any = None + class ApiCall: agent_prefix = "" @@ -191,7 +195,12 @@ class ApiCall: name_prefix = "" name_end = "" - def __init__(self, plugin_generator: Any = None, display_registry: Any = None): + def __init__( + self, + plugin_generator: Any = None, + display_registry: Any = None, + backend_rendering: bool = False, + ): # self.name: str = "" # self.status: Status = Status.TODO.value # self.logo_url: str = None @@ -204,6 +213,7 @@ def __init__(self, plugin_generator: Any = None, display_registry: Any = None): self.plugin_generator = plugin_generator self.display_registry = display_registry self.start_time = datetime.now().timestamp() * 1000 + self.backend_rendering: bool = False def __repr__(self): return f"ApiCall(name={self.name}, status={self.status}, args={self.args})" @@ -227,7 +237,7 @@ def __is_need_wait_plugin_call(self, api_call_context): i += 1 return False - def __check_last_plugin_call_ready(self, all_context): + def check_last_plugin_call_ready(self, all_context): start_agent_count = all_context.count(self.agent_prefix) end_agent_count = all_context.count(self.agent_end) @@ -236,7 +246,14 @@ def __check_last_plugin_call_ready(self, all_context): return False def __deal_error_md_tags(self, all_context, api_context, include_end: bool = True): - error_md_tags = ["```", "```python", "```xml", "```json", "```markdown"] + error_md_tags = [ + "```", + "```python", + "```xml", + "```json", + "```markdown", + "```sql", + ] if include_end == False: md_tag_end = "" else: @@ -255,7 +272,6 @@ def __deal_error_md_tags(self, all_context, api_context, include_end: bool = Tru return all_context def api_view_context(self, all_context: str, display_mode: bool = False): - error_mk_tags = ["```", "```python", "```xml"] call_context_map = extract_content_open_ending( all_context, self.agent_prefix, self.agent_end, True ) @@ -263,32 +279,18 @@ def api_view_context(self, all_context: str, display_mode: bool = False): api_status = self.plugin_status_map.get(api_context) if api_status is not None: if display_mode: - if api_status.api_result: - all_context = self.__deal_error_md_tags( - all_context, api_context - ) + all_context = self.__deal_error_md_tags(all_context, api_context) + if Status.FAILED.value == api_status.status: all_context = all_context.replace( - api_context, api_status.api_result + api_context, + f'\nError:{api_status.err_msg}\n' + + self.to_view_antv_vis(api_status), ) else: - if api_status.status == Status.FAILED.value: - all_context = self.__deal_error_md_tags( - all_context, api_context - ) - all_context = all_context.replace( - api_context, - f"""\nERROR!{api_status.err_msg}\n """, - ) - else: - cost = (api_status.end_time - self.start_time) / 1000 - cost_str = "{:.2f}".format(cost) - all_context = self.__deal_error_md_tags( - all_context, api_context - ) - all_context = all_context.replace( - api_context, - f'\nWaiting...{cost_str}S\n', - ) + all_context = all_context.replace( + api_context, self.to_view_antv_vis(api_status) + ) + else: all_context = self.__deal_error_md_tags( all_context, api_context, False @@ -302,8 +304,8 @@ def api_view_context(self, all_context: str, display_mode: bool = False): now_time = datetime.now().timestamp() * 1000 cost = (now_time - self.start_time) / 1000 cost_str = "{:.2f}".format(cost) - for tag in error_mk_tags: - all_context = all_context.replace(tag + api_context, api_context) + all_context = self.__deal_error_md_tags(all_context, api_context) + all_context = all_context.replace( api_context, f'\nWaiting...{cost_str}S\n', @@ -348,7 +350,8 @@ def __to_view_param_str(self, api_status): if api_status.api_result: param["result"] = api_status.api_result - return json.dumps(param) + + return json.dumps(param, default=serialize, ensure_ascii=False) def to_view_text(self, api_status: PluginStatus): api_call_element = ET.Element("dbgpt-view") @@ -356,10 +359,45 @@ def to_view_text(self, api_status: PluginStatus): result = ET.tostring(api_call_element, encoding="utf-8") return result.decode("utf-8") + def to_view_antv_vis(self, api_status: PluginStatus): + if self.backend_rendering: + html_table = api_status.df.to_html( + index=False, escape=False, sparsify=False + ) + table_str = "".join(html_table.split()) + table_str = table_str.replace("\n", " ") + html = f""" \n

\n """ + return html + else: + api_call_element = ET.Element("chart-view") + api_call_element.attrib["content"] = self.__to_antv_vis_param(api_status) + api_call_element.text = "\n" + # api_call_element.set("content", self.__to_antv_vis_param(api_status)) + # api_call_element.text = self.__to_antv_vis_param(api_status) + result = ET.tostring(api_call_element, encoding="utf-8") + return result.decode("utf-8") + + # return f'' + + def __to_antv_vis_param(self, api_status: PluginStatus): + param = {} + if api_status.name: + param["type"] = api_status.name + if api_status.args: + param["sql"] = api_status.args["sql"] + # if api_status.err_msg: + # param["err_msg"] = api_status.err_msg + + if api_status.api_result: + param["data"] = api_status.api_result + else: + param["data"] = [] + return json.dumps(param, ensure_ascii=False) + def run(self, llm_text): if self.__is_need_wait_plugin_call(llm_text): # wait api call generate complete - if self.__check_last_plugin_call_ready(llm_text): + if self.check_last_plugin_call_ready(llm_text): self.update_from_context(llm_text) for key, value in self.plugin_status_map.items(): if value.status == Status.TODO.value: @@ -379,7 +417,7 @@ def run(self, llm_text): def run_display_sql(self, llm_text, sql_run_func): if self.__is_need_wait_plugin_call(llm_text): # wait api call generate complete - if self.__check_last_plugin_call_ready(llm_text): + if self.check_last_plugin_call_ready(llm_text): self.update_from_context(llm_text) for key, value in self.plugin_status_map.items(): if value.status == Status.TODO.value: @@ -391,6 +429,7 @@ def run_display_sql(self, llm_text, sql_run_func): param = { "df": sql_run_func(sql), } + value.df = param["df"] if self.display_registry.is_valid_command(value.name): value.api_result = self.display_registry.call( value.name, **param @@ -406,3 +445,49 @@ def run_display_sql(self, llm_text, sql_run_func): value.err_msg = str(e) value.end_time = datetime.now().timestamp() * 1000 return self.api_view_context(llm_text, True) + + def display_sql_llmvis(self, llm_text, sql_run_func): + """ + Render charts using the Antv standard protocol + Args: + llm_text: LLM response text + sql_run_func: sql run function + + Returns: + ChartView protocol text + """ + try: + if self.__is_need_wait_plugin_call(llm_text): + # wait api call generate complete + if self.check_last_plugin_call_ready(llm_text): + self.update_from_context(llm_text) + for key, value in self.plugin_status_map.items(): + if value.status == Status.TODO.value: + value.status = Status.RUNNING.value + logging.info(f"sql展示执行:{value.name},{value.args}") + try: + sql = value.args["sql"] + if sql is not None and len(sql) > 0: + data_df = sql_run_func(sql) + value.df = data_df + value.api_result = json.loads( + data_df.to_json( + orient="records", + date_format="iso", + date_unit="s", + ) + ) + value.status = Status.COMPLETED.value + else: + value.status = Status.FAILED.value + value.err_msg = "No executable sql!" + + except Exception as e: + value.status = Status.FAILED.value + value.err_msg = str(e) + value.end_time = datetime.now().timestamp() * 1000 + except Exception as e: + logging.error("Api parsing exception", e) + raise ValueError("Api parsing exception," + str(e)) + + return self.api_view_context(llm_text, True) diff --git a/pilot/base_modules/agent/commands/disply_type/show_chart_gen.py b/pilot/base_modules/agent/commands/disply_type/show_chart_gen.py index 166992822..956a064c2 100644 --- a/pilot/base_modules/agent/commands/disply_type/show_chart_gen.py +++ b/pilot/base_modules/agent/commands/disply_type/show_chart_gen.py @@ -1,7 +1,6 @@ from pandas import DataFrame from pilot.base_modules.agent.commands.command_mange import command -from pilot.configs.config import Config import pandas as pd import uuid import os diff --git a/pilot/base_modules/agent/controller.py b/pilot/base_modules/agent/controller.py index ef699a047..e0c0ffaf8 100644 --- a/pilot/base_modules/agent/controller.py +++ b/pilot/base_modules/agent/controller.py @@ -83,7 +83,7 @@ async def agent_hub_update(update_param: PluginHubParam = Body()): return Result.succ(None) except Exception as e: logger.error("Agent Hub Update Error!", e) - return Result.faild(code="E0020", msg=f"Agent Hub Update Error! {e}") + return Result.failed(code="E0020", msg=f"Agent Hub Update Error! {e}") @router.post("/v1/agent/query", response_model=Result[str]) @@ -133,7 +133,7 @@ async def agent_install(plugin_name: str, user: str = None): return Result.succ(None) except Exception as e: logger.error("Plugin Install Error!", e) - return Result.faild(code="E0021", msg=f"Plugin Install Error {e}") + return Result.failed(code="E0021", msg=f"Plugin Install Error {e}") @router.post("/v1/agent/uninstall", response_model=Result[str]) @@ -147,7 +147,7 @@ async def agent_uninstall(plugin_name: str, user: str = None): return Result.succ(None) except Exception as e: logger.error("Plugin Uninstall Error!", e) - return Result.faild(code="E0022", msg=f"Plugin Uninstall Error {e}") + return Result.failed(code="E0022", msg=f"Plugin Uninstall Error {e}") @router.post("/v1/personal/agent/upload", response_model=Result[str]) @@ -160,4 +160,4 @@ async def personal_agent_upload(doc_file: UploadFile = File(...), user: str = No return Result.succ(None) except Exception as e: logger.error("Upload Personal Plugin Error!", e) - return Result.faild(code="E0023", msg=f"Upload Personal Plugin Error {e}") + return Result.failed(code="E0023", msg=f"Upload Personal Plugin Error {e}") diff --git a/pilot/base_modules/agent/db/__init__.py b/pilot/base_modules/agent/db/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pilot/base_modules/agent/db/my_plugin_db.py b/pilot/base_modules/agent/db/my_plugin_db.py index acfb70e23..fb4fe25ee 100644 --- a/pilot/base_modules/agent/db/my_plugin_db.py +++ b/pilot/base_modules/agent/db/my_plugin_db.py @@ -4,7 +4,12 @@ from sqlalchemy import UniqueConstraint from pilot.base_modules.meta_data.base_dao import BaseDao -from pilot.base_modules.meta_data.meta_data import Base, engine, session +from pilot.base_modules.meta_data.meta_data import ( + Base, + engine, + session, + META_DATA_DATABASE, +) class MyPluginEntity(Base): @@ -27,7 +32,7 @@ class MyPluginEntity(Base): succ_count = Column( Integer, nullable=True, default=0, comment="plugin total success count" ) - created_at = Column( + gmt_created = Column( DateTime, default=datetime.utcnow, comment="plugin install time" ) UniqueConstraint("user_code", "name", name="uk_name") @@ -36,7 +41,10 @@ class MyPluginEntity(Base): class MyPluginDao(BaseDao[MyPluginEntity]): def __init__(self): super().__init__( - database="dbgpt", orm_base=Base, db_engine=engine, session=session + database=META_DATA_DATABASE, + orm_base=Base, + db_engine=engine, + session=session, ) def add(self, engity: MyPluginEntity): @@ -50,7 +58,7 @@ def add(self, engity: MyPluginEntity): version=engity.version, use_count=engity.use_count or 0, succ_count=engity.succ_count or 0, - created_at=datetime.now(), + gmt_created=datetime.now(), ) session.add(my_plugin) session.commit() diff --git a/pilot/base_modules/agent/db/plugin_hub_db.py b/pilot/base_modules/agent/db/plugin_hub_db.py index 89ec314c7..70cf16930 100644 --- a/pilot/base_modules/agent/db/plugin_hub_db.py +++ b/pilot/base_modules/agent/db/plugin_hub_db.py @@ -6,9 +6,14 @@ from pilot.base_modules.meta_data.meta_data import Base from pilot.base_modules.meta_data.base_dao import BaseDao -from pilot.base_modules.meta_data.meta_data import Base, engine, session - - +from pilot.base_modules.meta_data.meta_data import ( + Base, + engine, + session, + META_DATA_DATABASE, +) + +# TODO We should consider that the production environment does not have permission to execute the DDL char_set_sql = DDL("ALTER TABLE plugin_hub CONVERT TO CHARACTER SET utf8mb4") @@ -30,7 +35,9 @@ class PluginHubEntity(Base): storage_channel = Column(String(255), comment="plugin storage channel") storage_url = Column(String(255), comment="plugin download url") download_param = Column(String(255), comment="plugin download param") - created_at = Column(DateTime, default=datetime.utcnow, comment="plugin upload time") + gmt_created = Column( + DateTime, default=datetime.utcnow, comment="plugin upload time" + ) installed = Column(Integer, default=False, comment="plugin already installed count") UniqueConstraint("name", name="uk_name") @@ -40,7 +47,10 @@ class PluginHubEntity(Base): class PluginHubDao(BaseDao[PluginHubEntity]): def __init__(self): super().__init__( - database="dbgpt", orm_base=Base, db_engine=engine, session=session + database=META_DATA_DATABASE, + orm_base=Base, + db_engine=engine, + session=session, ) def add(self, engity: PluginHubEntity): @@ -54,7 +64,7 @@ def add(self, engity: PluginHubEntity): version=engity.version, storage_channel=engity.storage_channel, storage_url=engity.storage_url, - created_at=timezone.localize(datetime.now()), + gmt_created=timezone.localize(datetime.now()), ) session.add(plugin_hub) session.commit() diff --git a/pilot/base_modules/agent/hub/agent_hub.py b/pilot/base_modules/agent/hub/agent_hub.py index 063a2e03a..470b4ab71 100644 --- a/pilot/base_modules/agent/hub/agent_hub.py +++ b/pilot/base_modules/agent/hub/agent_hub.py @@ -12,7 +12,7 @@ from ..common.schema import PluginStorageType from ..plugins_util import scan_plugins, update_from_git -logger = logging.getLogger("agent_hub") +logger = logging.getLogger(__name__) Default_User = "default" DEFAULT_PLUGIN_REPO = "https://github.com/eosphoros-ai/DB-GPT-Plugins.git" TEMP_PLUGIN_PATH = "" diff --git a/pilot/base_modules/agent/plugins_util.py b/pilot/base_modules/agent/plugins_util.py index facc1472d..b5f12c5eb 100644 --- a/pilot/base_modules/agent/plugins_util.py +++ b/pilot/base_modules/agent/plugins_util.py @@ -9,6 +9,7 @@ import git import threading import datetime +import logging from pathlib import Path from typing import List from urllib.parse import urlparse @@ -19,7 +20,8 @@ from pilot.configs.config import Config from pilot.configs.model_config import PLUGINS_DIR -from pilot.logs import logger + +logger = logging.getLogger(__name__) def inspect_zip_for_modules(zip_path: str, debug: bool = False) -> list[str]: @@ -109,7 +111,7 @@ def load_from_git(cfg: Config): print("save file") cfg.set_plugins(scan_plugins(cfg.debug_mode)) else: - print("get file faild,response code:", response.status_code) + print("get file failed,response code:", response.status_code) except Exception as e: print("load plugin from git exception!" + str(e)) diff --git a/pilot/base_modules/meta_data/meta_data.py b/pilot/base_modules/meta_data/meta_data.py index 11cd29e38..84b83b7f3 100644 --- a/pilot/base_modules/meta_data/meta_data.py +++ b/pilot/base_modules/meta_data/meta_data.py @@ -1,26 +1,19 @@ -import uuid import os -import duckdb import sqlite3 import logging -import fnmatch -from datetime import datetime -from typing import Optional, Type, TypeVar -from sqlalchemy import create_engine, DateTime, String, func, MetaData, DDL +from sqlalchemy import create_engine, DDL from sqlalchemy.exc import OperationalError -from sqlalchemy.ext.asyncio import AsyncSession -from sqlalchemy.orm import Mapped from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base -from alembic import context, command +from alembic import command from alembic.config import Config as AlembicConfig from urllib.parse import quote from pilot.configs.config import Config -logger = logging.getLogger("meta_data") +logger = logging.getLogger(__name__) CFG = Config() default_db_path = os.path.join(os.getcwd(), "meta_data") @@ -28,7 +21,8 @@ os.makedirs(default_db_path, exist_ok=True) # Meta Info -db_name = "dbgpt" +META_DATA_DATABASE = CFG.LOCAL_DB_NAME +db_name = META_DATA_DATABASE db_path = default_db_path + f"/{db_name}.db" connection = sqlite3.connect(db_path) @@ -47,6 +41,7 @@ try: # try to connect with engine_temp.connect() as conn: + # TODO We should consider that the production environment does not have permission to execute the DDL conn.execute(DDL(f"CREATE DATABASE IF NOT EXISTS {db_name}")) print(f"Already connect '{db_name}'") @@ -63,7 +58,7 @@ + CFG.LOCAL_DB_HOST + ":" + str(CFG.LOCAL_DB_PORT) - + f"/{db_name}" + + f"/{db_name}", pool_pre_ping=True, pool_recycle=300 ) else: engine = create_engine(f"sqlite:///{db_path}") @@ -76,8 +71,6 @@ # Base.metadata.create_all() -# 创建Alembic配置对象 - alembic_ini_path = default_db_path + "/alembic.ini" alembic_cfg = AlembicConfig(alembic_ini_path) @@ -100,7 +93,18 @@ # Base.metadata.drop_all(engine) -def ddl_init_and_upgrade(): +def ddl_init_and_upgrade(disable_alembic_upgrade: bool): + """Initialize and upgrade database metadata + + Args: + disable_alembic_upgrade (bool): Whether to enable alembic to initialize and upgrade database metadata + """ + if disable_alembic_upgrade: + logger.info( + "disable_alembic_upgrade is true, not to initialize and upgrade database metadata with alembic" + ) + return + # Base.metadata.create_all(bind=engine) # 生成并应用迁移脚本 # command.upgrade(alembic_cfg, 'head') diff --git a/pilot/base_modules/meta_data/requirement.txt b/pilot/base_modules/meta_data/requirement.txt deleted file mode 100644 index de93d8a90..000000000 --- a/pilot/base_modules/meta_data/requirement.txt +++ /dev/null @@ -1 +0,0 @@ -alembic==1.12.0 \ No newline at end of file diff --git a/pilot/cache/__init__.py b/pilot/cache/__init__.py new file mode 100644 index 000000000..65f768a7e --- /dev/null +++ b/pilot/cache/__init__.py @@ -0,0 +1,10 @@ +from pilot.cache.llm_cache import LLMCacheClient, LLMCacheKey, LLMCacheValue +from pilot.cache.manager import CacheManager, initialize_cache + +__all__ = [ + "LLMCacheKey", + "LLMCacheValue", + "LLMCacheClient", + "CacheManager", + "initialize_cache", +] diff --git a/pilot/cache/base.py b/pilot/cache/base.py new file mode 100644 index 000000000..feb135288 --- /dev/null +++ b/pilot/cache/base.py @@ -0,0 +1,161 @@ +from abc import ABC, abstractmethod, abstractclassmethod +from typing import Any, TypeVar, Generic, Optional, Type, Dict +from dataclasses import dataclass +from enum import Enum + +T = TypeVar("T", bound="Serializable") + +K = TypeVar("K") +V = TypeVar("V") + + +class Serializable(ABC): + @abstractmethod + def serialize(self) -> bytes: + """Convert the object into bytes for storage or transmission. + + Returns: + bytes: The byte array after serialization + """ + + @abstractmethod + def to_dict(self) -> Dict: + """Convert the object's state to a dictionary.""" + + # @staticmethod + # @abstractclassmethod + # def from_dict(cls: Type["Serializable"], obj_dict: Dict) -> "Serializable": + # """Deserialize a dictionary to an Serializable object. + # """ + + +class RetrievalPolicy(str, Enum): + EXACT_MATCH = "exact_match" + SIMILARITY_MATCH = "similarity_match" + + +class CachePolicy(str, Enum): + LRU = "lru" + FIFO = "fifo" + + +@dataclass +class CacheConfig: + retrieval_policy: Optional[RetrievalPolicy] = RetrievalPolicy.EXACT_MATCH + cache_policy: Optional[CachePolicy] = CachePolicy.LRU + + +class CacheKey(Serializable, ABC, Generic[K]): + """The key of the cache. Must be hashable and comparable. + + Supported cache keys: + - The LLM cache key: Include user prompt and the parameters to LLM. + - The embedding model cache key: Include the texts to embedding and the parameters to embedding model. + """ + + @abstractmethod + def __hash__(self) -> int: + """Return the hash value of the key.""" + + @abstractmethod + def __eq__(self, other: Any) -> bool: + """Check equality with another key.""" + + @abstractmethod + def get_hash_bytes(self) -> bytes: + """Return the byte array of hash value.""" + + @abstractmethod + def get_value(self) -> K: + """Get the underlying value of the cache key. + + Returns: + K: The real object of current cache key + """ + + +class CacheValue(Serializable, ABC, Generic[V]): + """Cache value abstract class.""" + + @abstractmethod + def get_value(self) -> V: + """Get the underlying real value.""" + + +class Serializer(ABC): + """The serializer abstract class for serializing cache keys and values.""" + + @abstractmethod + def serialize(self, obj: Serializable) -> bytes: + """Serialize a cache object. + + Args: + obj (Serializable): The object to serialize + """ + + @abstractmethod + def deserialize(self, data: bytes, cls: Type[Serializable]) -> Serializable: + """Deserialize data back into a cache object of the specified type. + + Args: + data (bytes): The byte array to deserialize + cls (Type[Serializable]): The type of current object + + Returns: + Serializable: The serializable object + """ + + +class CacheClient(ABC, Generic[K, V]): + """The cache client interface.""" + + @abstractmethod + async def get( + self, key: CacheKey[K], cache_config: Optional[CacheConfig] = None + ) -> Optional[CacheValue[V]]: + """Retrieve a value from the cache using the provided key. + + Args: + key (CacheKey[K]): The key to get cache + cache_config (Optional[CacheConfig]): Cache config + + Returns: + Optional[CacheValue[V]]: The value retrieved according to key. If cache key not exist, return None. + """ + + @abstractmethod + async def set( + self, + key: CacheKey[K], + value: CacheValue[V], + cache_config: Optional[CacheConfig] = None, + ) -> None: + """Set a value in the cache for the provided key. + + Args: + key (CacheKey[K]): The key to set to cache + value (CacheValue[V]): The value to set to cache + cache_config (Optional[CacheConfig]): Cache config + """ + + @abstractmethod + async def exists( + self, key: CacheKey[K], cache_config: Optional[CacheConfig] = None + ) -> bool: + """Check if a key exists in the cache. + + Args: + key (CacheKey[K]): The key to set to cache + cache_config (Optional[CacheConfig]): Cache config + + Return: + bool: True if the key in the cache, otherwise is False + """ + + @abstractmethod + def new_key(self, **kwargs) -> CacheKey[K]: + """Create a cache key with params""" + + @abstractmethod + def new_value(self, **kwargs) -> CacheValue[K]: + """Create a cache key with params""" diff --git a/pilot/cache/embedding_cache.py b/pilot/cache/embedding_cache.py new file mode 100644 index 000000000..e69de29bb diff --git a/pilot/cache/llm_cache.py b/pilot/cache/llm_cache.py new file mode 100644 index 000000000..ad559df03 --- /dev/null +++ b/pilot/cache/llm_cache.py @@ -0,0 +1,148 @@ +from typing import Optional, Dict, Any, Union, List +from dataclasses import dataclass, asdict +import json +import hashlib + +from pilot.cache.base import CacheKey, CacheValue, Serializer, CacheClient, CacheConfig +from pilot.cache.manager import CacheManager +from pilot.cache.storage.base import CacheStorage +from pilot.model.base import ModelType, ModelOutput + + +@dataclass +class LLMCacheKeyData: + prompt: str + model_name: str + temperature: Optional[float] = 0.7 + max_new_tokens: Optional[int] = None + top_p: Optional[float] = 1.0 + model_type: Optional[str] = ModelType.HF + + +CacheOutputType = Union[ModelOutput, List[ModelOutput]] + + +@dataclass +class LLMCacheValueData: + output: CacheOutputType + user: Optional[str] = None + _is_list: Optional[bool] = False + + @staticmethod + def from_dict(**kwargs) -> "LLMCacheValueData": + output = kwargs.get("output") + if not output: + raise ValueError("Can't new LLMCacheValueData object, output is None") + if isinstance(output, dict): + output = ModelOutput(**output) + elif isinstance(output, list): + kwargs["_is_list"] = True + output_list = [] + for out in output: + if isinstance(out, dict): + out = ModelOutput(**out) + output_list.append(out) + output = output_list + kwargs["output"] = output + return LLMCacheValueData(**kwargs) + + def to_dict(self) -> Dict: + output = self.output + is_list = False + if isinstance(output, list): + output_list = [] + is_list = True + for out in output: + output_list.append(out.to_dict()) + output = output_list + else: + output = output.to_dict() + return {"output": output, "_is_list": is_list, "user": self.user} + + @property + def is_list(self) -> bool: + return self._is_list + + def __str__(self) -> str: + if not isinstance(self.output, list): + return f"user: {self.user}, output: {self.output}" + else: + return f"user: {self.user}, output(last two item): {self.output[-2:]}" + + +class LLMCacheKey(CacheKey[LLMCacheKeyData]): + def __init__(self, serializer: Serializer = None, **kwargs) -> None: + super().__init__() + self._serializer = serializer + self.config = LLMCacheKeyData(**kwargs) + + def __hash__(self) -> int: + serialize_bytes = self.serialize() + return int(hashlib.sha256(serialize_bytes).hexdigest(), 16) + + def __eq__(self, other: Any) -> bool: + if not isinstance(other, LLMCacheKey): + return False + return self.config == other.config + + def get_hash_bytes(self) -> bytes: + serialize_bytes = self.serialize() + return hashlib.sha256(serialize_bytes).digest() + + def to_dict(self) -> Dict: + return asdict(self.config) + + def serialize(self) -> bytes: + return self._serializer.serialize(self) + + def get_value(self) -> LLMCacheKeyData: + return self.config + + +class LLMCacheValue(CacheValue[LLMCacheValueData]): + def __init__(self, serializer: Serializer = None, **kwargs) -> None: + super().__init__() + self._serializer = serializer + self.value = LLMCacheValueData.from_dict(**kwargs) + + def to_dict(self) -> Dict: + return self.value.to_dict() + + def serialize(self) -> bytes: + return self._serializer.serialize(self) + + def get_value(self) -> LLMCacheValueData: + return self.value + + def __str__(self) -> str: + return f"vaue: {str(self.value)}" + + +class LLMCacheClient(CacheClient[LLMCacheKeyData, LLMCacheValueData]): + def __init__(self, cache_manager: CacheManager) -> None: + super().__init__() + self._cache_manager: CacheManager = cache_manager + + async def get( + self, key: LLMCacheKey, cache_config: Optional[CacheConfig] = None + ) -> Optional[LLMCacheValue]: + return await self._cache_manager.get(key, LLMCacheValue, cache_config) + + async def set( + self, + key: LLMCacheKey, + value: LLMCacheValue, + cache_config: Optional[CacheConfig] = None, + ) -> None: + return await self._cache_manager.set(key, value, cache_config) + + async def exists( + self, key: LLMCacheKey, cache_config: Optional[CacheConfig] = None + ) -> bool: + return await self.get(key, cache_config) is not None + + def new_key(self, **kwargs) -> LLMCacheKey: + return LLMCacheKey(serializer=self._cache_manager.serializer, **kwargs) + + def new_value(self, **kwargs) -> LLMCacheValue: + return LLMCacheValue(serializer=self._cache_manager.serializer, **kwargs) diff --git a/pilot/cache/manager.py b/pilot/cache/manager.py new file mode 100644 index 000000000..0e76df0b3 --- /dev/null +++ b/pilot/cache/manager.py @@ -0,0 +1,126 @@ +from abc import ABC, abstractmethod +from typing import Optional, Type +import logging +from concurrent.futures import Executor +from pilot.cache.storage.base import CacheStorage, StorageItem +from pilot.cache.base import ( + K, + V, + CacheKey, + CacheValue, + CacheConfig, + Serializer, + Serializable, +) +from pilot.component import BaseComponent, ComponentType, SystemApp +from pilot.utils.executor_utils import ExecutorFactory, blocking_func_to_async + +logger = logging.getLogger(__name__) + + +class CacheManager(BaseComponent, ABC): + name = ComponentType.MODEL_CACHE_MANAGER + + def __init__(self, system_app: SystemApp | None = None): + super().__init__(system_app) + + def init_app(self, system_app: SystemApp): + self.system_app = system_app + + @abstractmethod + async def set( + self, + key: CacheKey[K], + value: CacheValue[V], + cache_config: Optional[CacheConfig] = None, + ): + """Set cache""" + + @abstractmethod + async def get( + self, + key: CacheKey[K], + cls: Type[Serializable], + cache_config: Optional[CacheConfig] = None, + ) -> CacheValue[V]: + """Get cache with key""" + + @property + @abstractmethod + def serializer(self) -> Serializer: + """Get cache serializer""" + + +class LocalCacheManager(CacheManager): + def __init__( + self, system_app: SystemApp, serializer: Serializer, storage: CacheStorage + ) -> None: + super().__init__(system_app) + self._serializer = serializer + self._storage = storage + + @property + def executor(self) -> Executor: + """Return executor to submit task""" + self._executor = self.system_app.get_component( + ComponentType.EXECUTOR_DEFAULT, ExecutorFactory + ).create() + + async def set( + self, + key: CacheKey[K], + value: CacheValue[V], + cache_config: Optional[CacheConfig] = None, + ): + if self._storage.support_async(): + await self._storage.aset(key, value, cache_config) + else: + await blocking_func_to_async( + self.executor, self._storage.set, key, value, cache_config + ) + + async def get( + self, + key: CacheKey[K], + cls: Type[Serializable], + cache_config: Optional[CacheConfig] = None, + ) -> CacheValue[V]: + if self._storage.support_async(): + item_bytes = await self._storage.aget(key, cache_config) + else: + item_bytes = await blocking_func_to_async( + self.executor, self._storage.get, key, cache_config + ) + if not item_bytes: + return None + return self._serializer.deserialize(item_bytes.value_data, cls) + + @property + def serializer(self) -> Serializer: + return self._serializer + + +def initialize_cache( + system_app: SystemApp, storage_type: str, max_memory_mb: int, persist_dir: str +): + from pilot.cache.protocal.json_protocal import JsonSerializer + from pilot.cache.storage.base import MemoryCacheStorage + + cache_storage = None + if storage_type == "disk": + try: + from pilot.cache.storage.disk.disk_storage import DiskCacheStorage + + cache_storage = DiskCacheStorage( + persist_dir, mem_table_buffer_mb=max_memory_mb + ) + except ImportError as e: + logger.warn( + f"Can't import DiskCacheStorage, use MemoryCacheStorage, import error message: {str(e)}" + ) + cache_storage = MemoryCacheStorage(max_memory_mb=max_memory_mb) + else: + cache_storage = MemoryCacheStorage(max_memory_mb=max_memory_mb) + system_app.register( + LocalCacheManager, serializer=JsonSerializer(), storage=cache_storage + ) diff --git a/pilot/cache/protocal/__init__.py b/pilot/cache/protocal/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pilot/cache/protocal/json_protocal.py b/pilot/cache/protocal/json_protocal.py new file mode 100644 index 000000000..6f73fef3f --- /dev/null +++ b/pilot/cache/protocal/json_protocal.py @@ -0,0 +1,44 @@ +from abc import ABC, abstractmethod +from typing import Dict, Type +import json + +from pilot.cache.base import Serializable, Serializer + +JSON_ENCODING = "utf-8" + + +class JsonSerializable(Serializable, ABC): + @abstractmethod + def to_dict(self) -> Dict: + """Return the dict of current serializable object""" + + def serialize(self) -> bytes: + """Convert the object into bytes for storage or transmission.""" + return json.dumps(self.to_dict(), ensure_ascii=False).encode(JSON_ENCODING) + + +class JsonSerializer(Serializer): + """The serializer abstract class for serializing cache keys and values.""" + + def serialize(self, obj: Serializable) -> bytes: + """Serialize a cache object. + + Args: + obj (Serializable): The object to serialize + """ + return json.dumps(obj.to_dict(), ensure_ascii=False).encode(JSON_ENCODING) + + def deserialize(self, data: bytes, cls: Type[Serializable]) -> Serializable: + """Deserialize data back into a cache object of the specified type. + + Args: + data (bytes): The byte array to deserialize + cls (Type[Serializable]): The type of current object + + Returns: + Serializable: The serializable object + """ + # Convert bytes back to JSON and then to the specified class + json_data = json.loads(data.decode(JSON_ENCODING)) + # Assume that the cls has an __init__ that accepts a dictionary + return cls(**json_data) diff --git a/pilot/cache/storage/__init__.py b/pilot/cache/storage/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pilot/cache/storage/base.py b/pilot/cache/storage/base.py new file mode 100644 index 000000000..ea07bfacf --- /dev/null +++ b/pilot/cache/storage/base.py @@ -0,0 +1,252 @@ +from abc import ABC, abstractmethod +from typing import Optional +from dataclasses import dataclass +from collections import OrderedDict +import msgpack +import logging + +from pilot.cache.base import ( + K, + V, + CacheKey, + CacheValue, + CacheClient, + CacheConfig, + RetrievalPolicy, + CachePolicy, +) +from pilot.utils.memory_utils import _get_object_bytes + +logger = logging.getLogger(__name__) + + +@dataclass +class StorageItem: + """ + A class representing a storage item. + + This class encapsulates data related to a storage item, such as its length, + the hash of the key, and the data for both the key and value. + + Parameters: + length (int): The bytes length of the storage item. + key_hash (bytes): The hash value of the storage item's key. + key_data (bytes): The data of the storage item's key, represented in bytes. + value_data (bytes): The data of the storage item's value, also in bytes. + """ + + length: int # The bytes length of the storage item + key_hash: bytes # The hash value of the storage item's key + key_data: bytes # The data of the storage item's key + value_data: bytes # The data of the storage item's value + + @staticmethod + def build_from( + key_hash: bytes, key_data: bytes, value_data: bytes + ) -> "StorageItem": + length = ( + 32 + + _get_object_bytes(key_hash) + + _get_object_bytes(key_data) + + _get_object_bytes(value_data) + ) + return StorageItem( + length=length, key_hash=key_hash, key_data=key_data, value_data=value_data + ) + + @staticmethod + def build_from_kv(key: CacheKey[K], value: CacheValue[V]) -> "StorageItem": + key_hash = key.get_hash_bytes() + key_data = key.serialize() + value_data = value.serialize() + return StorageItem.build_from(key_hash, key_data, value_data) + + def serialize(self) -> bytes: + """Serialize the StorageItem into a byte stream using MessagePack. + + This method packs the object data into a dictionary, marking the + key_data and value_data fields as raw binary data to avoid re-serialization. + + Returns: + bytes: The serialized bytes. + """ + obj = { + "length": self.length, + "key_hash": msgpack.ExtType(1, self.key_hash), + "key_data": msgpack.ExtType(2, self.key_data), + "value_data": msgpack.ExtType(3, self.value_data), + } + return msgpack.packb(obj) + + @staticmethod + def deserialize(data: bytes) -> "StorageItem": + """Deserialize bytes back into a StorageItem using MessagePack. + + This extracts the fields from the MessagePack dict back into + a StorageItem object. + + Args: + data (bytes): Serialized bytes + + Returns: + StorageItem: Deserialized StorageItem object. + """ + obj = msgpack.unpackb(data) + key_hash = obj["key_hash"].data + key_data = obj["key_data"].data + value_data = obj["value_data"].data + + return StorageItem( + length=obj["length"], + key_hash=key_hash, + key_data=key_data, + value_data=value_data, + ) + + +class CacheStorage(ABC): + @abstractmethod + def check_config( + self, + cache_config: Optional[CacheConfig] = None, + raise_error: Optional[bool] = True, + ) -> bool: + """Check whether the CacheConfig is legal. + + Args: + cache_config (Optional[CacheConfig]): Cache config. + raise_error (Optional[bool]): Whether raise error if illegal. + + Returns: + ValueError: Error when raise_error is True and config is illegal. + """ + + def support_async(self) -> bool: + return False + + @abstractmethod + def get( + self, key: CacheKey[K], cache_config: Optional[CacheConfig] = None + ) -> Optional[StorageItem]: + """Retrieve a storage item from the cache using the provided key. + + Args: + key (CacheKey[K]): The key to get cache + cache_config (Optional[CacheConfig]): Cache config + + Returns: + Optional[StorageItem]: The storage item retrieved according to key. If cache key not exist, return None. + """ + + async def aget( + self, key: CacheKey[K], cache_config: Optional[CacheConfig] = None + ) -> Optional[StorageItem]: + """Retrieve a storage item from the cache using the provided key asynchronously. + + Args: + key (CacheKey[K]): The key to get cache + cache_config (Optional[CacheConfig]): Cache config + + Returns: + Optional[StorageItem]: The storage item of bytes retrieved according to key. If cache key not exist, return None. + """ + raise NotImplementedError + + @abstractmethod + def set( + self, + key: CacheKey[K], + value: CacheValue[V], + cache_config: Optional[CacheConfig] = None, + ) -> None: + """Set a value in the cache for the provided key asynchronously. + + Args: + key (CacheKey[K]): The key to set to cache + value (CacheValue[V]): The value to set to cache + cache_config (Optional[CacheConfig]): Cache config + """ + + async def aset( + self, + key: CacheKey[K], + value: CacheValue[V], + cache_config: Optional[CacheConfig] = None, + ) -> None: + """Set a value in the cache for the provided key asynchronously. + + Args: + key (CacheKey[K]): The key to set to cache + value (CacheValue[V]): The value to set to cache + cache_config (Optional[CacheConfig]): Cache config + """ + raise NotImplementedError + + +class MemoryCacheStorage(CacheStorage): + def __init__(self, max_memory_mb: int = 256): + self.cache = OrderedDict() + self.max_memory = max_memory_mb * 1024 * 1024 + self.current_memory_usage = 0 + + def check_config( + self, + cache_config: Optional[CacheConfig] = None, + raise_error: Optional[bool] = True, + ) -> bool: + if ( + cache_config + and cache_config.retrieval_policy != RetrievalPolicy.EXACT_MATCH + ): + if raise_error: + raise ValueError( + "MemoryCacheStorage only supports 'EXACT_MATCH' retrieval policy" + ) + return False + return True + + def get( + self, key: CacheKey[K], cache_config: Optional[CacheConfig] = None + ) -> Optional[StorageItem]: + self.check_config(cache_config, raise_error=True) + # Exact match retrieval + key_hash = hash(key) + item: StorageItem = self.cache.get(key_hash) + logger.debug(f"MemoryCacheStorage get key {key}, hash {key_hash}, item: {item}") + + if not item: + return None + # Move the item to the end of the OrderedDict to signify recent use. + self.cache.move_to_end(key_hash) + return item + + def set( + self, + key: CacheKey[K], + value: CacheValue[V], + cache_config: Optional[CacheConfig] = None, + ) -> None: + key_hash = hash(key) + item = StorageItem.build_from_kv(key, value) + # Calculate memory size of the new entry + new_entry_size = _get_object_bytes(item) + # Evict entries if necessary + while self.current_memory_usage + new_entry_size > self.max_memory: + self._apply_cache_policy(cache_config) + + # Store the item in the cache. + self.cache[key_hash] = item + self.current_memory_usage += new_entry_size + logger.debug(f"MemoryCacheStorage set key {key}, hash {key_hash}, item: {item}") + + def exists( + self, key: CacheKey[K], cache_config: Optional[CacheConfig] = None + ) -> bool: + return self.get(key, cache_config) is not None + + def _apply_cache_policy(self, cache_config: Optional[CacheConfig] = None): + # Remove the oldest/newest item based on the cache policy. + if cache_config and cache_config.cache_policy == CachePolicy.FIFO: + self.cache.popitem(last=False) + else: # Default is LRU + self.cache.popitem(last=True) diff --git a/pilot/cache/storage/disk/__init__.py b/pilot/cache/storage/disk/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pilot/cache/storage/disk/disk_storage.py b/pilot/cache/storage/disk/disk_storage.py new file mode 100644 index 000000000..04fb19c6e --- /dev/null +++ b/pilot/cache/storage/disk/disk_storage.py @@ -0,0 +1,93 @@ +from typing import Optional +import logging +from pilot.cache.base import ( + K, + V, + CacheKey, + CacheValue, + CacheConfig, + RetrievalPolicy, + CachePolicy, +) +from pilot.cache.storage.base import StorageItem, CacheStorage +from rocksdict import Rdict +from rocksdict import Rdict, Options, SliceTransform, PlainTableFactoryOptions + + +logger = logging.getLogger(__name__) + + +def db_options( + mem_table_buffer_mb: Optional[int] = 256, background_threads: Optional[int] = 2 +): + opt = Options() + # create table + opt.create_if_missing(True) + # config to more jobs, default 2 + opt.set_max_background_jobs(background_threads) + # configure mem-table to a large value + opt.set_write_buffer_size(mem_table_buffer_mb * 1024 * 1024) + # opt.set_write_buffer_size(1024) + # opt.set_level_zero_file_num_compaction_trigger(4) + # configure l0 and l1 size, let them have the same size (1 GB) + # opt.set_max_bytes_for_level_base(0x40000000) + # 256 MB file size + # opt.set_target_file_size_base(0x10000000) + # use a smaller compaction multiplier + # opt.set_max_bytes_for_level_multiplier(4.0) + # use 8-byte prefix (2 ^ 64 is far enough for transaction counts) + # opt.set_prefix_extractor(SliceTransform.create_max_len_prefix(8)) + # set to plain-table + # opt.set_plain_table_factory(PlainTableFactoryOptions()) + return opt + + +class DiskCacheStorage(CacheStorage): + def __init__( + self, persist_dir: str, mem_table_buffer_mb: Optional[int] = 256 + ) -> None: + super().__init__() + self.db: Rdict = Rdict( + persist_dir, db_options(mem_table_buffer_mb=mem_table_buffer_mb) + ) + + def check_config( + self, + cache_config: Optional[CacheConfig] = None, + raise_error: Optional[bool] = True, + ) -> bool: + if ( + cache_config + and cache_config.retrieval_policy != RetrievalPolicy.EXACT_MATCH + ): + if raise_error: + raise ValueError( + "DiskCacheStorage only supports 'EXACT_MATCH' retrieval policy" + ) + return False + return True + + def get( + self, key: CacheKey[K], cache_config: Optional[CacheConfig] = None + ) -> Optional[StorageItem]: + self.check_config(cache_config, raise_error=True) + + # Exact match retrieval + key_hash = key.get_hash_bytes() + item_bytes = self.db.get(key_hash) + if not item_bytes: + return None + item = StorageItem.deserialize(item_bytes) + logger.debug(f"Read file cache, key: {key}, storage item: {item}") + return item + + def set( + self, + key: CacheKey[K], + value: CacheValue[V], + cache_config: Optional[CacheConfig] = None, + ) -> None: + item = StorageItem.build_from_kv(key, value) + key_hash = item.key_hash + self.db[key_hash] = item.serialize() + logger.debug(f"Save file cache, key: {key}, value: {value}") diff --git a/pilot/cache/storage/tests/__init__.py b/pilot/cache/storage/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pilot/cache/storage/tests/test_storage.py b/pilot/cache/storage/tests/test_storage.py new file mode 100644 index 000000000..489873d08 --- /dev/null +++ b/pilot/cache/storage/tests/test_storage.py @@ -0,0 +1,53 @@ +import pytest +from ..base import StorageItem +from pilot.utils.memory_utils import _get_object_bytes + + +def test_build_from(): + key_hash = b"key_hash" + key_data = b"key_data" + value_data = b"value_data" + item = StorageItem.build_from(key_hash, key_data, value_data) + + assert item.key_hash == key_hash + assert item.key_data == key_data + assert item.value_data == value_data + assert item.length == 32 + _get_object_bytes(key_hash) + _get_object_bytes( + key_data + ) + _get_object_bytes(value_data) + + +def test_build_from_kv(): + class MockCacheKey: + def get_hash_bytes(self): + return b"key_hash" + + def serialize(self): + return b"key_data" + + class MockCacheValue: + def serialize(self): + return b"value_data" + + key = MockCacheKey() + value = MockCacheValue() + item = StorageItem.build_from_kv(key, value) + + assert item.key_hash == key.get_hash_bytes() + assert item.key_data == key.serialize() + assert item.value_data == value.serialize() + + +def test_serialize_deserialize(): + key_hash = b"key_hash" + key_data = b"key_data" + value_data = b"value_data" + item = StorageItem.build_from(key_hash, key_data, value_data) + + serialized = item.serialize() + deserialized = StorageItem.deserialize(serialized) + + assert deserialized.key_hash == item.key_hash + assert deserialized.key_data == item.key_data + assert deserialized.value_data == item.value_data + assert deserialized.length == item.length diff --git a/pilot/common/chat_util.py b/pilot/common/chat_util.py new file mode 100644 index 000000000..6cb8f1b53 --- /dev/null +++ b/pilot/common/chat_util.py @@ -0,0 +1,47 @@ +import asyncio +from typing import Coroutine, List, Any + +from starlette.responses import StreamingResponse + +from pilot.scene.base_chat import BaseChat +from pilot.scene.chat_factory import ChatFactory + +chat_factory = ChatFactory() + + +async def llm_chat_response_nostream(chat_scene: str, **chat_param): + """llm_chat_response_nostream""" + chat: BaseChat = chat_factory.get_implementation(chat_scene, **chat_param) + res = await chat.get_llm_response() + return res + + +async def llm_chat_response(chat_scene: str, **chat_param): + chat: BaseChat = chat_factory.get_implementation(chat_scene, **chat_param) + return chat.stream_call() + + +async def run_async_tasks( + tasks: List[Coroutine], + concurrency_limit: int = None, +) -> List[Any]: + """Run a list of async tasks.""" + tasks_to_execute: List[Any] = tasks + + async def _gather() -> List[Any]: + if concurrency_limit: + semaphore = asyncio.Semaphore(concurrency_limit) + + async def _execute_task(task): + async with semaphore: + return await task + + # Execute tasks with semaphore limit + return await asyncio.gather( + *[_execute_task(task) for task in tasks_to_execute] + ) + else: + return await asyncio.gather(*tasks_to_execute) + + # outputs: List[Any] = asyncio.run(_gather()) + return await _gather() diff --git a/pilot/common/global_helper.py b/pilot/common/global_helper.py new file mode 100644 index 000000000..d189d1356 --- /dev/null +++ b/pilot/common/global_helper.py @@ -0,0 +1,448 @@ +"""General utils functions.""" + +import asyncio +import os +import random +import sys +import time +import traceback +import uuid +from contextlib import contextmanager +from dataclasses import dataclass +from functools import partial, wraps +from itertools import islice +from pathlib import Path +from typing import ( + Any, + AsyncGenerator, + Callable, + Dict, + Generator, + Iterable, + List, + Optional, + Set, + Type, + Union, + cast, +) + + +class GlobalsHelper: + """Helper to retrieve globals. + + Helpful for global caching of certain variables that can be expensive to load. + (e.g. tokenization) + + """ + + _tokenizer: Optional[Callable[[str], List]] = None + _stopwords: Optional[List[str]] = None + + @property + def tokenizer(self) -> Callable[[str], List]: + """Get tokenizer.""" + if self._tokenizer is None: + tiktoken_import_err = ( + "`tiktoken` package not found, please run `pip install tiktoken`" + ) + try: + import tiktoken + except ImportError: + raise ImportError(tiktoken_import_err) + enc = tiktoken.get_encoding("gpt2") + self._tokenizer = cast(Callable[[str], List], enc.encode) + self._tokenizer = partial(self._tokenizer, allowed_special="all") + return self._tokenizer # type: ignore + + @property + def stopwords(self) -> List[str]: + """Get stopwords.""" + if self._stopwords is None: + try: + import nltk + from nltk.corpus import stopwords + except ImportError: + raise ImportError( + "`nltk` package not found, please run `pip install nltk`" + ) + + from llama_index.utils import get_cache_dir + + cache_dir = get_cache_dir() + nltk_data_dir = os.environ.get("NLTK_DATA", cache_dir) + + # update nltk path for nltk so that it finds the data + if nltk_data_dir not in nltk.data.path: + nltk.data.path.append(nltk_data_dir) + + try: + nltk.data.find("corpora/stopwords") + except LookupError: + nltk.download("stopwords", download_dir=nltk_data_dir) + self._stopwords = stopwords.words("english") + return self._stopwords + + +globals_helper = GlobalsHelper() + + +def get_new_id(d: Set) -> str: + """Get a new ID.""" + while True: + new_id = str(uuid.uuid4()) + if new_id not in d: + break + return new_id + + +def get_new_int_id(d: Set) -> int: + """Get a new integer ID.""" + while True: + new_id = random.randint(0, sys.maxsize) + if new_id not in d: + break + return new_id + + +@contextmanager +def temp_set_attrs(obj: Any, **kwargs: Any) -> Generator: + """Temporary setter. + + Utility class for setting a temporary value for an attribute on a class. + Taken from: https://tinyurl.com/2p89xymh + + """ + prev_values = {k: getattr(obj, k) for k in kwargs} + for k, v in kwargs.items(): + setattr(obj, k, v) + try: + yield + finally: + for k, v in prev_values.items(): + setattr(obj, k, v) + + +@dataclass +class ErrorToRetry: + """Exception types that should be retried. + + Args: + exception_cls (Type[Exception]): Class of exception. + check_fn (Optional[Callable[[Any]], bool]]): + A function that takes an exception instance as input and returns + whether to retry. + + """ + + exception_cls: Type[Exception] + check_fn: Optional[Callable[[Any], bool]] = None + + +def retry_on_exceptions_with_backoff( + lambda_fn: Callable, + errors_to_retry: List[ErrorToRetry], + max_tries: int = 10, + min_backoff_secs: float = 0.5, + max_backoff_secs: float = 60.0, +) -> Any: + """Execute lambda function with retries and exponential backoff. + + Args: + lambda_fn (Callable): Function to be called and output we want. + errors_to_retry (List[ErrorToRetry]): List of errors to retry. + At least one needs to be provided. + max_tries (int): Maximum number of tries, including the first. Defaults to 10. + min_backoff_secs (float): Minimum amount of backoff time between attempts. + Defaults to 0.5. + max_backoff_secs (float): Maximum amount of backoff time between attempts. + Defaults to 60. + + """ + if not errors_to_retry: + raise ValueError("At least one error to retry needs to be provided") + + error_checks = { + error_to_retry.exception_cls: error_to_retry.check_fn + for error_to_retry in errors_to_retry + } + exception_class_tuples = tuple(error_checks.keys()) + + backoff_secs = min_backoff_secs + tries = 0 + + while True: + try: + return lambda_fn() + except exception_class_tuples as e: + traceback.print_exc() + tries += 1 + if tries >= max_tries: + raise + check_fn = error_checks.get(e.__class__) + if check_fn and not check_fn(e): + raise + time.sleep(backoff_secs) + backoff_secs = min(backoff_secs * 2, max_backoff_secs) + + +def truncate_text(text: str, max_length: int) -> str: + """Truncate text to a maximum length.""" + if len(text) <= max_length: + return text + return text[: max_length - 3] + "..." + + +def iter_batch(iterable: Union[Iterable, Generator], size: int) -> Iterable: + """Iterate over an iterable in batches. + + >>> list(iter_batch([1,2,3,4,5], 3)) + [[1, 2, 3], [4, 5]] + """ + source_iter = iter(iterable) + while source_iter: + b = list(islice(source_iter, size)) + if len(b) == 0: + break + yield b + + +def concat_dirs(dirname: str, basename: str) -> str: + """ + Append basename to dirname, avoiding backslashes when running on windows. + + os.path.join(dirname, basename) will add a backslash before dirname if + basename does not end with a slash, so we make sure it does. + """ + dirname += "/" if dirname[-1] != "/" else "" + return os.path.join(dirname, basename) + + +def get_tqdm_iterable(items: Iterable, show_progress: bool, desc: str) -> Iterable: + """ + Optionally get a tqdm iterable. Ensures tqdm.auto is used. + """ + _iterator = items + if show_progress: + try: + from tqdm.auto import tqdm + + return tqdm(items, desc=desc) + except ImportError: + pass + return _iterator + + +def count_tokens(text: str) -> int: + tokens = globals_helper.tokenizer(text) + return len(tokens) + + +def get_transformer_tokenizer_fn(model_name: str) -> Callable[[str], List[str]]: + """ + Args: + model_name(str): the model name of the tokenizer. + For instance, fxmarty/tiny-llama-fast-tokenizer. + """ + try: + from transformers import AutoTokenizer + except ImportError: + raise ValueError( + "`transformers` package not found, please run `pip install transformers`" + ) + tokenizer = AutoTokenizer.from_pretrained(model_name) + return tokenizer.tokenize + + +def get_cache_dir() -> str: + """Locate a platform-appropriate cache directory for llama_index, + and create it if it doesn't yet exist. + """ + # User override + if "LLAMA_INDEX_CACHE_DIR" in os.environ: + path = Path(os.environ["LLAMA_INDEX_CACHE_DIR"]) + + # Linux, Unix, AIX, etc. + elif os.name == "posix" and sys.platform != "darwin": + path = Path("/tmp/llama_index") + + # Mac OS + elif sys.platform == "darwin": + path = Path(os.path.expanduser("~"), "Library/Caches/llama_index") + + # Windows (hopefully) + else: + local = os.environ.get("LOCALAPPDATA", None) or os.path.expanduser( + "~\\AppData\\Local" + ) + path = Path(local, "llama_index") + + if not os.path.exists(path): + os.makedirs( + path, exist_ok=True + ) # prevents https://github.com/jerryjliu/llama_index/issues/7362 + return str(path) + + +def add_sync_version(func: Any) -> Any: + """Decorator for adding sync version of an async function. The sync version + is added as a function attribute to the original function, func. + + Args: + func(Any): the async function for which a sync variant will be built. + """ + assert asyncio.iscoroutinefunction(func) + + @wraps(func) + def _wrapper(*args: Any, **kwds: Any) -> Any: + return asyncio.get_event_loop().run_until_complete(func(*args, **kwds)) + + func.sync = _wrapper + return func + + +# Sample text from llama_index's readme +SAMPLE_TEXT = """ +Context +LLMs are a phenomenal piece of technology for knowledge generation and reasoning. +They are pre-trained on large amounts of publicly available data. +How do we best augment LLMs with our own private data? +We need a comprehensive toolkit to help perform this data augmentation for LLMs. + +Proposed Solution +That's where LlamaIndex comes in. LlamaIndex is a "data framework" to help +you build LLM apps. It provides the following tools: + +Offers data connectors to ingest your existing data sources and data formats +(APIs, PDFs, docs, SQL, etc.) +Provides ways to structure your data (indices, graphs) so that this data can be +easily used with LLMs. +Provides an advanced retrieval/query interface over your data: +Feed in any LLM input prompt, get back retrieved context and knowledge-augmented output. +Allows easy integrations with your outer application framework +(e.g. with LangChain, Flask, Docker, ChatGPT, anything else). +LlamaIndex provides tools for both beginner users and advanced users. +Our high-level API allows beginner users to use LlamaIndex to ingest and +query their data in 5 lines of code. Our lower-level APIs allow advanced users to +customize and extend any module (data connectors, indices, retrievers, query engines, +reranking modules), to fit their needs. +""" + +_LLAMA_INDEX_COLORS = { + "llama_pink": "38;2;237;90;200", + "llama_blue": "38;2;90;149;237", + "llama_turquoise": "38;2;11;159;203", + "llama_lavender": "38;2;155;135;227", +} + +_ANSI_COLORS = { + "red": "31", + "green": "32", + "yellow": "33", + "blue": "34", + "magenta": "35", + "cyan": "36", + "pink": "38;5;200", +} + + +def get_color_mapping( + items: List[str], use_llama_index_colors: bool = True +) -> Dict[str, str]: + """ + Get a mapping of items to colors. + + Args: + items (List[str]): List of items to be mapped to colors. + use_llama_index_colors (bool, optional): Flag to indicate + whether to use LlamaIndex colors or ANSI colors. + Defaults to True. + + Returns: + Dict[str, str]: Mapping of items to colors. + """ + if use_llama_index_colors: + color_palette = _LLAMA_INDEX_COLORS + else: + color_palette = _ANSI_COLORS + + colors = list(color_palette.keys()) + return {item: colors[i % len(colors)] for i, item in enumerate(items)} + + +def _get_colored_text(text: str, color: str) -> str: + """ + Get the colored version of the input text. + + Args: + text (str): Input text. + color (str): Color to be applied to the text. + + Returns: + str: Colored version of the input text. + """ + all_colors = {**_LLAMA_INDEX_COLORS, **_ANSI_COLORS} + + if color not in all_colors: + return f"\033[1;3m{text}\033[0m" # just bolded and italicized + + color = all_colors[color] + + return f"\033[1;3;{color}m{text}\033[0m" + + +def print_text(text: str, color: Optional[str] = None, end: str = "") -> None: + """ + Print the text with the specified color. + + Args: + text (str): Text to be printed. + color (str, optional): Color to be applied to the text. Supported colors are: + llama_pink, llama_blue, llama_turquoise, llama_lavender, + red, green, yellow, blue, magenta, cyan, pink. + end (str, optional): String appended after the last character of the text. + + Returns: + None + """ + text_to_print = _get_colored_text(text, color) if color is not None else text + print(text_to_print, end=end) + + +def infer_torch_device() -> str: + """Infer the input to torch.device.""" + try: + has_cuda = torch.cuda.is_available() + except NameError: + import torch + + has_cuda = torch.cuda.is_available() + if has_cuda: + return "cuda" + if torch.backends.mps.is_available(): + return "mps" + return "cpu" + + +def unit_generator(x: Any) -> Generator[Any, None, None]: + """A function that returns a generator of a single element. + + Args: + x (Any): the element to build yield + + Yields: + Any: the single element + """ + yield x + + +async def async_unit_generator(x: Any) -> AsyncGenerator[Any, None]: + """A function that returns a generator of a single element. + + Args: + x (Any): the element to build yield + + Yields: + Any: the single element + """ + yield x diff --git a/pilot/common/json_utils.py b/pilot/common/json_utils.py new file mode 100644 index 000000000..324d20867 --- /dev/null +++ b/pilot/common/json_utils.py @@ -0,0 +1,7 @@ +import json +from datetime import date + + +def serialize(obj): + if isinstance(obj, date): + return obj.isoformat() diff --git a/pilot/common/llm_metadata.py b/pilot/common/llm_metadata.py new file mode 100644 index 000000000..73d5bc0fa --- /dev/null +++ b/pilot/common/llm_metadata.py @@ -0,0 +1,43 @@ +from pydantic import Field, BaseModel + +DEFAULT_CONTEXT_WINDOW = 3900 +DEFAULT_NUM_OUTPUTS = 256 + + +class LLMMetadata(BaseModel): + context_window: int = Field( + default=DEFAULT_CONTEXT_WINDOW, + description=( + "Total number of tokens the model can be input and output for one response." + ), + ) + num_output: int = Field( + default=DEFAULT_NUM_OUTPUTS, + description="Number of tokens the model can output when generating a response.", + ) + is_chat_model: bool = Field( + default=False, + description=( + "Set True if the model exposes a chat interface (i.e. can be passed a" + " sequence of messages, rather than text), like OpenAI's" + " /v1/chat/completions endpoint." + ), + ) + is_function_calling_model: bool = Field( + default=False, + # SEE: https://openai.com/blog/function-calling-and-other-api-updates + description=( + "Set True if the model supports function calling messages, similar to" + " OpenAI's function calling API. For example, converting 'Email Anya to" + " see if she wants to get coffee next Friday' to a function call like" + " `send_email(to: string, body: string)`." + ), + ) + model_name: str = Field( + default="unknown", + description=( + "The model's name used for logging, testing, and sanity checking. For some" + " models this can be automatically discerned. For other models, like" + " locally loaded models, this must be manually specified." + ), + ) diff --git a/pilot/common/prompt_util.py b/pilot/common/prompt_util.py new file mode 100644 index 000000000..3854d130b --- /dev/null +++ b/pilot/common/prompt_util.py @@ -0,0 +1,239 @@ +"""General prompt helper that can help deal with LLM context window token limitations. + +At its core, it calculates available context size by starting with the context window +size of an LLM and reserve token space for the prompt template, and the output. + +It provides utility for "repacking" text chunks (retrieved from index) to maximally +make use of the available context window (and thereby reducing the number of LLM calls +needed), or truncating them so that they fit in a single LLM call. +""" + +import logging +from string import Formatter +from typing import Callable, List, Optional, Sequence + +from pydantic import Field, PrivateAttr, BaseModel + +from pilot.common.global_helper import globals_helper +from pilot.common.llm_metadata import LLMMetadata +from pilot.embedding_engine.loader.token_splitter import TokenTextSplitter + +DEFAULT_PADDING = 5 +DEFAULT_CHUNK_OVERLAP_RATIO = 0.1 + +DEFAULT_CONTEXT_WINDOW = 3000 # tokens +DEFAULT_NUM_OUTPUTS = 256 # tokens + +logger = logging.getLogger(__name__) + + +class PromptHelper(BaseModel): + """Prompt helper. + + General prompt helper that can help deal with LLM context window token limitations. + + At its core, it calculates available context size by starting with the context + window size of an LLM and reserve token space for the prompt template, and the + output. + + It provides utility for "repacking" text chunks (retrieved from index) to maximally + make use of the available context window (and thereby reducing the number of LLM + calls needed), or truncating them so that they fit in a single LLM call. + + Args: + context_window (int): Context window for the LLM. + num_output (int): Number of outputs for the LLM. + chunk_overlap_ratio (float): Chunk overlap as a ratio of chunk size + chunk_size_limit (Optional[int]): Maximum chunk size to use. + tokenizer (Optional[Callable[[str], List]]): Tokenizer to use. + separator (str): Separator for text splitter + + """ + + context_window: int = Field( + default=DEFAULT_CONTEXT_WINDOW, + description="The maximum context size that will get sent to the LLM.", + ) + num_output: int = Field( + default=DEFAULT_NUM_OUTPUTS, + description="The amount of token-space to leave in input for generation.", + ) + chunk_overlap_ratio: float = Field( + default=DEFAULT_CHUNK_OVERLAP_RATIO, + description="The percentage token amount that each chunk should overlap.", + ) + chunk_size_limit: Optional[int] = Field(description="The maximum size of a chunk.") + separator: str = Field( + default=" ", description="The separator when chunking tokens." + ) + + _tokenizer: Callable[[str], List] = PrivateAttr() + + def __init__( + self, + context_window: int = DEFAULT_CONTEXT_WINDOW, + num_output: int = DEFAULT_NUM_OUTPUTS, + chunk_overlap_ratio: float = DEFAULT_CHUNK_OVERLAP_RATIO, + chunk_size_limit: Optional[int] = None, + tokenizer: Optional[Callable[[str], List]] = None, + separator: str = " ", + ) -> None: + """Init params.""" + if chunk_overlap_ratio > 1.0 or chunk_overlap_ratio < 0.0: + raise ValueError("chunk_overlap_ratio must be a float between 0. and 1.") + + # TODO: make configurable + self._tokenizer = tokenizer or globals_helper.tokenizer + + super().__init__( + context_window=context_window, + num_output=num_output, + chunk_overlap_ratio=chunk_overlap_ratio, + chunk_size_limit=chunk_size_limit, + separator=separator, + ) + + @classmethod + def from_llm_metadata( + cls, + llm_metadata: LLMMetadata, + chunk_overlap_ratio: float = DEFAULT_CHUNK_OVERLAP_RATIO, + chunk_size_limit: Optional[int] = None, + tokenizer: Optional[Callable[[str], List]] = None, + separator: str = " ", + ) -> "PromptHelper": + """Create from llm predictor. + + This will autofill values like context_window and num_output. + + """ + context_window = llm_metadata.context_window + if llm_metadata.num_output == -1: + num_output = DEFAULT_NUM_OUTPUTS + else: + num_output = llm_metadata.num_output + + return cls( + context_window=context_window, + num_output=num_output, + chunk_overlap_ratio=chunk_overlap_ratio, + chunk_size_limit=chunk_size_limit, + tokenizer=tokenizer, + separator=separator, + ) + + @classmethod + def class_name(cls) -> str: + return "PromptHelper" + + def _get_available_context_size(self, template: str) -> int: + """Get available context size. + + This is calculated as: + available context window = total context window + - input (partially filled prompt) + - output (room reserved for response) + + Notes: + - Available context size is further clamped to be non-negative. + """ + empty_prompt_txt = get_empty_prompt_txt(template) + num_empty_prompt_tokens = len(self._tokenizer(empty_prompt_txt)) + context_size_tokens = ( + self.context_window - num_empty_prompt_tokens - self.num_output + ) + if context_size_tokens < 0: + raise ValueError( + f"Calculated available context size {context_size_tokens} was" + " not non-negative." + ) + return context_size_tokens + + def _get_available_chunk_size( + self, prompt_template: str, num_chunks: int = 1, padding: int = 5 + ) -> int: + """Get available chunk size. + + This is calculated as: + available chunk size = available context window // number_chunks + - padding + + Notes: + - By default, we use padding of 5 (to save space for formatting needs). + - Available chunk size is further clamped to chunk_size_limit if specified. + """ + available_context_size = self._get_available_context_size(prompt_template) + result = available_context_size // num_chunks - padding + if self.chunk_size_limit is not None: + result = min(result, self.chunk_size_limit) + return result + + def get_text_splitter_given_prompt( + self, + prompt_template: str, + num_chunks: int = 1, + padding: int = DEFAULT_PADDING, + ) -> TokenTextSplitter: + """Get text splitter configured to maximally pack available context window, + taking into account of given prompt, and desired number of chunks. + """ + chunk_size = self._get_available_chunk_size( + prompt_template, num_chunks, padding=padding + ) + if chunk_size <= 0: + raise ValueError(f"Chunk size {chunk_size} is not positive.") + chunk_overlap = int(self.chunk_overlap_ratio * chunk_size) + return TokenTextSplitter( + separator=self.separator, + chunk_size=chunk_size, + chunk_overlap=chunk_overlap, + tokenizer=self._tokenizer, + ) + + def repack( + self, + prompt_template: str, + text_chunks: Sequence[str], + padding: int = DEFAULT_PADDING, + ) -> List[str]: + """Repack text chunks to fit available context window. + + This will combine text chunks into consolidated chunks + that more fully "pack" the prompt template given the context_window. + + """ + text_splitter = self.get_text_splitter_given_prompt( + prompt_template, padding=padding + ) + combined_str = "\n\n".join([c.strip() for c in text_chunks if c.strip()]) + return text_splitter.split_text(combined_str) + + +def get_empty_prompt_txt(template: str) -> str: + """Get empty prompt text. + + Substitute empty strings in parts of the prompt that have + not yet been filled out. Skip variables that have already + been partially formatted. This is used to compute the initial tokens. + + """ + # partial_kargs = prompt.kwargs + + partial_kargs = {} + template_vars = get_template_vars(template) + empty_kwargs = {v: "" for v in template_vars if v not in partial_kargs} + all_kwargs = {**partial_kargs, **empty_kwargs} + prompt = template.format(**all_kwargs) + return prompt + + +def get_template_vars(template_str: str) -> List[str]: + """Get template variables from a template string.""" + variables = [] + formatter = Formatter() + + for _, variable_name, _, _ in formatter.parse(template_str): + if variable_name: + variables.append(variable_name) + + return variables diff --git a/pilot/component.py b/pilot/component.py index 8f8c8c5a4..891ba7ad9 100644 --- a/pilot/component.py +++ b/pilot/component.py @@ -46,10 +46,16 @@ class ComponentType(str, Enum): WORKER_MANAGER = "dbgpt_worker_manager" WORKER_MANAGER_FACTORY = "dbgpt_worker_manager_factory" MODEL_CONTROLLER = "dbgpt_model_controller" + MODEL_REGISTRY = "dbgpt_model_registry" + MODEL_API_SERVER = "dbgpt_model_api_server" + MODEL_CACHE_MANAGER = "dbgpt_model_cache_manager" AGENT_HUB = "dbgpt_agent_hub" EXECUTOR_DEFAULT = "dbgpt_thread_pool_default" TRACER = "dbgpt_tracer" TRACER_SPAN_STORAGE = "dbgpt_tracer_span_storage" + RAG_GRAPH_DEFAULT = "dbgpt_rag_engine_default" + AWEL_TRIGGER_MANAGER = "dbgpt_awel_trigger_manager" + AWEL_DAG_MANAGER = "dbgpt_awel_dag_manager" class BaseComponent(LifeCycle, ABC): @@ -68,7 +74,6 @@ def init_app(self, system_app: SystemApp): This method needs to be implemented by every component to define how it integrates with the main system app. """ - pass T = TypeVar("T", bound=BaseComponent) @@ -90,13 +95,28 @@ def app(self) -> Optional["FastAPI"]: """Returns the internal ASGI app.""" return self._asgi_app - def register(self, component: Type[BaseComponent], *args, **kwargs): - """Register a new component by its type.""" + def register(self, component: Type[BaseComponent], *args, **kwargs) -> T: + """Register a new component by its type. + + Args: + component (Type[BaseComponent]): The component class to register + + Returns: + T: The instance of registered component + """ instance = component(self, *args, **kwargs) self.register_instance(instance) + return instance + + def register_instance(self, instance: T) -> T: + """Register an already initialized component. - def register_instance(self, instance: T): - """Register an already initialized component.""" + Args: + instance (T): The component instance to register + + Returns: + T: The instance of registered component + """ name = instance.name if isinstance(name, ComponentType): name = name.value @@ -107,18 +127,34 @@ def register_instance(self, instance: T): logger.info(f"Register component with name {name} and instance: {instance}") self.components[name] = instance instance.init_app(self) + return instance def get_component( self, name: Union[str, ComponentType], component_type: Type[T], default_component=_EMPTY_DEFAULT_COMPONENT, + or_register_component: Type[BaseComponent] = None, + *args, + **kwargs, ) -> T: - """Retrieve a registered component by its name and type.""" + """Retrieve a registered component by its name and type. + + Args: + name (Union[str, ComponentType]): Component name + component_type (Type[T]): The type of current retrieve component + default_component : The default component instance if not retrieve by name + or_register_component (Type[BaseComponent]): The new component to register if not retrieve by name + + Returns: + T: The instance retrieved by component name + """ if isinstance(name, ComponentType): name = name.value component = self.components.get(name) if not component: + if or_register_component: + return self.register(or_register_component, *args, **kwargs) if default_component != _EMPTY_DEFAULT_COMPONENT: return default_component raise ValueError(f"No component found with name {name}") diff --git a/pilot/configs/config.py b/pilot/configs/config.py index 680f9f856..f93cd7b83 100644 --- a/pilot/configs/config.py +++ b/pilot/configs/config.py @@ -184,7 +184,7 @@ def __init__(self) -> None: if self.LOCAL_DB_HOST is None and self.LOCAL_DB_PATH == "": self.LOCAL_DB_HOST = "127.0.0.1" - self.LOCAL_DB_NAME = os.getenv("LOCAL_DB_NAME") + self.LOCAL_DB_NAME = os.getenv("LOCAL_DB_NAME", "dbgpt") self.LOCAL_DB_PORT = int(os.getenv("LOCAL_DB_PORT", 3306)) self.LOCAL_DB_USER = os.getenv("LOCAL_DB_USER", "root") self.LOCAL_DB_PASSWORD = os.getenv("LOCAL_DB_PASSWORD", "aa123456") @@ -194,6 +194,8 @@ def __init__(self) -> None: ### LLM Model Service Configuration self.LLM_MODEL = os.getenv("LLM_MODEL", "vicuna-13b-v1.5") + self.LLM_MODEL_PATH = os.getenv("LLM_MODEL_PATH") + ### Proxy llm backend, this configuration is only valid when "LLM_MODEL=proxyllm" ### When we use the rest API provided by deployment frameworks like fastchat as a proxyllm, "PROXYLLM_BACKEND" is the model they actually deploy. ### We need to use "PROXYLLM_BACKEND" to load the prompt of the corresponding scene. @@ -251,6 +253,19 @@ def __init__(self) -> None: ### Temporary configuration self.USE_FASTCHAT: bool = os.getenv("USE_FASTCHAT", "True").lower() == "true" + self.MODEL_CACHE_ENABLE: bool = ( + os.getenv("MODEL_CACHE_ENABLE", "True").lower() == "true" + ) + self.MODEL_CACHE_STORAGE_TYPE: str = os.getenv( + "MODEL_CACHE_STORAGE_TYPE", "disk" + ) + self.MODEL_CACHE_MAX_MEMORY_MB: int = int( + os.getenv("MODEL_CACHE_MAX_MEMORY_MB", 256) + ) + self.MODEL_CACHE_STORAGE_DISK_DIR: str = os.getenv( + "MODEL_CACHE_STORAGE_DISK_DIR" + ) + def set_debug_mode(self, value: bool) -> None: """Set the debug mode value""" self.debug_mode = value diff --git a/pilot/configs/model_config.py b/pilot/configs/model_config.py index f05d62f05..890d380f9 100644 --- a/pilot/configs/model_config.py +++ b/pilot/configs/model_config.py @@ -2,6 +2,7 @@ # -*- coding:utf-8 -*- import os +from functools import cache ROOT_PATH = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) MODEL_PATH = os.path.join(ROOT_PATH, "models") @@ -14,6 +15,8 @@ # nltk.data.path = [os.path.join(PILOT_PATH, "nltk_data")] + nltk.data.path PLUGINS_DIR = os.path.join(ROOT_PATH, "plugins") FONT_DIR = os.path.join(PILOT_PATH, "fonts") +MODEL_DISK_CACHE_DIR = os.path.join(DATA_DIR, "model_cache") +_DAG_DEFINITION_DIR = os.path.join(ROOT_PATH, "examples/awel") current_directory = os.getcwd() @@ -21,6 +24,7 @@ os.chdir(new_directory) +@cache def get_device() -> str: try: import torch @@ -49,6 +53,8 @@ def get_device() -> str: "chatglm-6b": os.path.join(MODEL_PATH, "chatglm-6b"), "chatglm2-6b": os.path.join(MODEL_PATH, "chatglm2-6b"), "chatglm2-6b-int4": os.path.join(MODEL_PATH, "chatglm2-6b-int4"), + # https://huggingface.co/THUDM/chatglm3-6b + "chatglm3-6b": os.path.join(MODEL_PATH, "chatglm3-6b"), "guanaco-33b-merged": os.path.join(MODEL_PATH, "guanaco-33b-merged"), "falcon-40b": os.path.join(MODEL_PATH, "falcon-40b"), "gorilla-7b": os.path.join(MODEL_PATH, "gorilla-7b"), @@ -70,6 +76,18 @@ def get_device() -> str: "baichuan-7b": os.path.join(MODEL_PATH, "baichuan-7b"), "baichuan2-7b": os.path.join(MODEL_PATH, "Baichuan2-7B-Chat"), "baichuan2-13b": os.path.join(MODEL_PATH, "Baichuan2-13B-Chat"), + # https://huggingface.co/Qwen/Qwen-7B-Chat + "qwen-7b-chat": os.path.join(MODEL_PATH, "Qwen-7B-Chat"), + # https://huggingface.co/Qwen/Qwen-7B-Chat-Int8 + "qwen-7b-chat-int8": os.path.join(MODEL_PATH, "Qwen-7B-Chat-Int8"), + # https://huggingface.co/Qwen/Qwen-7B-Chat-Int4 + "qwen-7b-chat-int4": os.path.join(MODEL_PATH, "Qwen-7B-Chat-Int4"), + # https://huggingface.co/Qwen/Qwen-14B-Chat + "qwen-14b-chat": os.path.join(MODEL_PATH, "Qwen-14B-Chat"), + # https://huggingface.co/Qwen/Qwen-14B-Chat-Int8 + "qwen-14b-chat-int8": os.path.join(MODEL_PATH, "Qwen-14B-Chat-Int8"), + # https://huggingface.co/Qwen/Qwen-14B-Chat-Int4 + "qwen-14b-chat-int4": os.path.join(MODEL_PATH, "Qwen-14B-Chat-Int4"), # (Llama2 based) We only support WizardLM-13B-V1.2 for now, which is trained from Llama-2 13b, see https://huggingface.co/WizardLM/WizardLM-13B-V1.2 "wizardlm-13b": os.path.join(MODEL_PATH, "WizardLM-13B-V1.2"), # wget https://huggingface.co/TheBloke/vicuna-13B-v1.5-GGUF/resolve/main/vicuna-13b-v1.5.Q4_K_M.gguf -O models/ggml-model-q4_0.gguf @@ -77,9 +95,40 @@ def get_device() -> str: # https://huggingface.co/internlm/internlm-chat-7b-v1_1, 7b vs 7b-v1.1: https://github.com/InternLM/InternLM/issues/288 "internlm-7b": os.path.join(MODEL_PATH, "internlm-chat-7b"), "internlm-7b-8k": os.path.join(MODEL_PATH, "internlm-chat-7b-8k"), - "internlm-20b": os.path.join(MODEL_PATH, "internlm-20b-chat"), + "internlm-20b": os.path.join(MODEL_PATH, "internlm-chat-20b"), + "codellama-7b": os.path.join(MODEL_PATH, "CodeLlama-7b-Instruct-hf"), + "codellama-7b-sql-sft": os.path.join(MODEL_PATH, "codellama-7b-sql-sft"), + "codellama-13b": os.path.join(MODEL_PATH, "CodeLlama-13b-Instruct-hf"), + "codellama-13b-sql-sft": os.path.join(MODEL_PATH, "codellama-13b-sql-sft"), # For test now "opt-125m": os.path.join(MODEL_PATH, "opt-125m"), + # https://huggingface.co/microsoft/Orca-2-7b + "orca-2-7b": os.path.join(MODEL_PATH, "Orca-2-7b"), + # https://huggingface.co/microsoft/Orca-2-13b + "orca-2-13b": os.path.join(MODEL_PATH, "Orca-2-13b"), + # https://huggingface.co/openchat/openchat_3.5 + "openchat_3.5": os.path.join(MODEL_PATH, "openchat_3.5"), + # https://huggingface.co/hfl/chinese-alpaca-2-7b + "chinese-alpaca-2-7b": os.path.join(MODEL_PATH, "chinese-alpaca-2-7b"), + # https://huggingface.co/hfl/chinese-alpaca-2-13b + "chinese-alpaca-2-13b": os.path.join(MODEL_PATH, "chinese-alpaca-2-13b"), + # https://huggingface.co/THUDM/codegeex2-6b + "codegeex2-6b": os.path.join(MODEL_PATH, "codegeex2-6b"), + # https://huggingface.co/HuggingFaceH4/zephyr-7b-alpha + "zephyr-7b-alpha": os.path.join(MODEL_PATH, "zephyr-7b-alpha"), + # https://huggingface.co/mistralai/Mistral-7B-Instruct-v0.1 + "mistral-7b-instruct-v0.1": os.path.join(MODEL_PATH, "Mistral-7B-Instruct-v0.1"), + # https://huggingface.co/Open-Orca/Mistral-7B-OpenOrca + "mistral-7b-openorca": os.path.join(MODEL_PATH, "Mistral-7B-OpenOrca"), + # https://huggingface.co/Xwin-LM/Xwin-LM-7B-V0.1 + "xwin-lm-7b-v0.1": os.path.join(MODEL_PATH, "Xwin-LM-7B-V0.1"), + # https://huggingface.co/Xwin-LM/Xwin-LM-13B-V0.1 + "xwin-lm-13b-v0.1": os.path.join(MODEL_PATH, "Xwin-LM-13B-V0.1"), + # https://huggingface.co/Xwin-LM/Xwin-LM-70B-V0.1 + "xwin-lm-70b-v0.1": os.path.join(MODEL_PATH, "Xwin-LM-70B-V0.1"), + # https://huggingface.co/01-ai/Yi-34B-Chat + "yi-34b-chat": os.path.join(MODEL_PATH, "Yi-34B-Chat"), + "yi-6b-chat": os.path.join(MODEL_PATH, "Yi-6B-Chat"), } EMBEDDING_MODEL_CONFIG = { diff --git a/pilot/connections/manages/connect_config_db.py b/pilot/connections/manages/connect_config_db.py index f3c7cc3ae..d4a9bf2a5 100644 --- a/pilot/connections/manages/connect_config_db.py +++ b/pilot/connections/manages/connect_config_db.py @@ -1,9 +1,15 @@ -from pilot.base_modules.meta_data.base_dao import BaseDao -from pilot.base_modules.meta_data.meta_data import Base, engine, session from typing import List from sqlalchemy import Column, Integer, String, Index, DateTime, func, Boolean, Text from sqlalchemy import UniqueConstraint +from pilot.base_modules.meta_data.base_dao import BaseDao +from pilot.base_modules.meta_data.meta_data import ( + Base, + engine, + session, + META_DATA_DATABASE, +) + class ConnectConfigEntity(Base): __tablename__ = "connect_config" @@ -29,7 +35,10 @@ class ConnectConfigEntity(Base): class ConnectConfigDao(BaseDao[ConnectConfigEntity]): def __init__(self): super().__init__( - database="dbgpt", orm_base=Base, db_engine=engine, session=session + database=META_DATA_DATABASE, + orm_base=Base, + db_engine=engine, + session=session, ) def update(self, entity: ConnectConfigEntity): diff --git a/pilot/connections/rdbms/conn_clickhouse.py b/pilot/connections/rdbms/conn_clickhouse.py index 0433b4b76..b2762556a 100644 --- a/pilot/connections/rdbms/conn_clickhouse.py +++ b/pilot/connections/rdbms/conn_clickhouse.py @@ -106,3 +106,13 @@ def get_table_comments(self, db_name): return [ (table_comment[0], table_comment[1]) for table_comment in table_comments ] + + def table_simple_info(self): + # group_concat() not supported in clickhouse, use arrayStringConcat+groupArray instead; and quotes need to be escaped + _sql = f""" + select concat(TABLE_NAME, \'(\' , arrayStringConcat(groupArray(column_name),\'-\'), \')\') as schema_info + from information_schema.COLUMNS where table_schema=\'{self.get_current_db_name()}\' group by TABLE_NAME; """ + + cursor = self.session.execute(text(_sql)) + results = cursor.fetchall() + return results diff --git a/pilot/datasets/mysql/url.md b/pilot/datasets/mysql/url.md deleted file mode 100644 index 20592cb72..000000000 --- a/pilot/datasets/mysql/url.md +++ /dev/null @@ -1 +0,0 @@ -LlamaIndex是一个数据框架,旨在帮助您构建LLM应用程序。它包括一个向量存储索引和一个简单的目录阅读器,可以帮助您处理和操作数据。此外,LlamaIndex还提供了一个GPT Index,可以用于数据增强和生成更好的LM模型。 \ No newline at end of file diff --git a/pilot/embedding_engine/knowledge_type.py b/pilot/embedding_engine/knowledge_type.py index 77fb98666..c4c278be4 100644 --- a/pilot/embedding_engine/knowledge_type.py +++ b/pilot/embedding_engine/knowledge_type.py @@ -41,7 +41,11 @@ class KnowledgeType(Enum): def get_knowledge_embedding( - knowledge_type, knowledge_source, vector_store_config, source_reader, text_splitter + knowledge_type, + knowledge_source, + vector_store_config=None, + source_reader=None, + text_splitter=None, ): match knowledge_type: case KnowledgeType.DOCUMENT.value: diff --git a/pilot/embedding_engine/loader/splitter_utils.py b/pilot/embedding_engine/loader/splitter_utils.py new file mode 100644 index 000000000..9c57f2111 --- /dev/null +++ b/pilot/embedding_engine/loader/splitter_utils.py @@ -0,0 +1,81 @@ +from typing import Callable, List + + +def split_text_keep_separator(text: str, separator: str) -> List[str]: + """Split text with separator and keep the separator at the end of each split.""" + parts = text.split(separator) + result = [separator + s if i > 0 else s for i, s in enumerate(parts)] + return [s for s in result if s] + + +def split_by_sep(sep: str, keep_sep: bool = True) -> Callable[[str], List[str]]: + """Split text by separator.""" + if keep_sep: + return lambda text: split_text_keep_separator(text, sep) + else: + return lambda text: text.split(sep) + + +def split_by_char() -> Callable[[str], List[str]]: + """Split text by character.""" + return lambda text: list(text) + + +def split_by_sentence_tokenizer() -> Callable[[str], List[str]]: + import os + + import nltk + + from llama_index.utils import get_cache_dir + + cache_dir = get_cache_dir() + nltk_data_dir = os.environ.get("NLTK_DATA", cache_dir) + + # update nltk path for nltk so that it finds the data + if nltk_data_dir not in nltk.data.path: + nltk.data.path.append(nltk_data_dir) + + try: + nltk.data.find("tokenizers/punkt") + except LookupError: + nltk.download("punkt", download_dir=nltk_data_dir) + + tokenizer = nltk.tokenize.PunktSentenceTokenizer() + + # get the spans and then return the sentences + # using the start index of each span + # instead of using end, use the start of the next span if available + def split(text: str) -> List[str]: + spans = list(tokenizer.span_tokenize(text)) + sentences = [] + for i, span in enumerate(spans): + start = span[0] + if i < len(spans) - 1: + end = spans[i + 1][0] + else: + end = len(text) + sentences.append(text[start:end]) + + return sentences + + return split + + +def split_by_regex(regex: str) -> Callable[[str], List[str]]: + """Split text by regex.""" + import re + + return lambda text: re.findall(regex, text) + + +def split_by_phrase_regex() -> Callable[[str], List[str]]: + """Split text by phrase regex. + + This regular expression will split the sentences into phrases, + where each phrase is a sequence of one or more non-comma, + non-period, and non-semicolon characters, followed by an optional comma, + period, or semicolon. The regular expression will also capture the + delimiters themselves as separate items in the list of phrases. + """ + regex = "[^,.;。]+[,.;。]?" + return split_by_regex(regex) diff --git a/pilot/embedding_engine/loader/token_splitter.py b/pilot/embedding_engine/loader/token_splitter.py new file mode 100644 index 000000000..358d51790 --- /dev/null +++ b/pilot/embedding_engine/loader/token_splitter.py @@ -0,0 +1,184 @@ +"""Token splitter.""" +from typing import Callable, List, Optional + +from pydantic import Field, PrivateAttr, BaseModel + + +from pilot.common.global_helper import globals_helper +from pilot.embedding_engine.loader.splitter_utils import split_by_sep, split_by_char + +DEFAULT_METADATA_FORMAT_LEN = 2 +DEFAULT_CHUNK_OVERLAP = 20 +DEFAULT_CHUNK_SIZE = 1024 + + +class TokenTextSplitter(BaseModel): + """Implementation of splitting text that looks at word tokens.""" + + chunk_size: int = Field( + default=DEFAULT_CHUNK_SIZE, description="The token chunk size for each chunk." + ) + chunk_overlap: int = Field( + default=DEFAULT_CHUNK_OVERLAP, + description="The token overlap of each chunk when splitting.", + ) + separator: str = Field( + default=" ", description="Default separator for splitting into words" + ) + backup_separators: List = Field( + default_factory=list, description="Additional separators for splitting." + ) + # callback_manager: CallbackManager = Field( + # default_factory=CallbackManager, exclude=True + # ) + tokenizer: Callable = Field( + default_factory=globals_helper.tokenizer, # type: ignore + description="Tokenizer for splitting words into tokens.", + exclude=True, + ) + + _split_fns: List[Callable] = PrivateAttr() + + def __init__( + self, + chunk_size: int = DEFAULT_CHUNK_SIZE, + chunk_overlap: int = DEFAULT_CHUNK_OVERLAP, + tokenizer: Optional[Callable] = None, + # callback_manager: Optional[CallbackManager] = None, + separator: str = " ", + backup_separators: Optional[List[str]] = ["\n"], + ): + """Initialize with parameters.""" + if chunk_overlap > chunk_size: + raise ValueError( + f"Got a larger chunk overlap ({chunk_overlap}) than chunk size " + f"({chunk_size}), should be smaller." + ) + # callback_manager = callback_manager or CallbackManager([]) + tokenizer = tokenizer or globals_helper.tokenizer + + all_seps = [separator] + (backup_separators or []) + self._split_fns = [split_by_sep(sep) for sep in all_seps] + [split_by_char()] + + super().__init__( + chunk_size=chunk_size, + chunk_overlap=chunk_overlap, + separator=separator, + backup_separators=backup_separators, + # callback_manager=callback_manager, + tokenizer=tokenizer, + ) + + @classmethod + def class_name(cls) -> str: + return "TokenTextSplitter" + + def split_text_metadata_aware(self, text: str, metadata_str: str) -> List[str]: + """Split text into chunks, reserving space required for metadata str.""" + metadata_len = len(self.tokenizer(metadata_str)) + DEFAULT_METADATA_FORMAT_LEN + effective_chunk_size = self.chunk_size - metadata_len + if effective_chunk_size <= 0: + raise ValueError( + f"Metadata length ({metadata_len}) is longer than chunk size " + f"({self.chunk_size}). Consider increasing the chunk size or " + "decreasing the size of your metadata to avoid this." + ) + elif effective_chunk_size < 50: + print( + f"Metadata length ({metadata_len}) is close to chunk size " + f"({self.chunk_size}). Resulting chunks are less than 50 tokens. " + "Consider increasing the chunk size or decreasing the size of " + "your metadata to avoid this.", + flush=True, + ) + + return self._split_text(text, chunk_size=effective_chunk_size) + + def split_text(self, text: str) -> List[str]: + """Split text into chunks.""" + return self._split_text(text, chunk_size=self.chunk_size) + + def _split_text(self, text: str, chunk_size: int) -> List[str]: + """Split text into chunks up to chunk_size.""" + if text == "": + return [] + + splits = self._split(text, chunk_size) + chunks = self._merge(splits, chunk_size) + return chunks + + def _split(self, text: str, chunk_size: int) -> List[str]: + """Break text into splits that are smaller than chunk size. + + The order of splitting is: + 1. split by separator + 2. split by backup separators (if any) + 3. split by characters + + NOTE: the splits contain the separators. + """ + if len(self.tokenizer(text)) <= chunk_size: + return [text] + + for split_fn in self._split_fns: + splits = split_fn(text) + if len(splits) > 1: + break + + new_splits = [] + for split in splits: + split_len = len(self.tokenizer(split)) + if split_len <= chunk_size: + new_splits.append(split) + else: + # recursively split + new_splits.extend(self._split(split, chunk_size=chunk_size)) + return new_splits + + def _merge(self, splits: List[str], chunk_size: int) -> List[str]: + """Merge splits into chunks. + + The high-level idea is to keep adding splits to a chunk until we + exceed the chunk size, then we start a new chunk with overlap. + + When we start a new chunk, we pop off the first element of the previous + chunk until the total length is less than the chunk size. + """ + chunks: List[str] = [] + + cur_chunk: List[str] = [] + cur_len = 0 + for split in splits: + split_len = len(self.tokenizer(split)) + if split_len > chunk_size: + print( + f"Got a split of size {split_len}, ", + f"larger than chunk size {chunk_size}.", + ) + + # if we exceed the chunk size after adding the new split, then + # we need to end the current chunk and start a new one + if cur_len + split_len > chunk_size: + # end the previous chunk + chunk = "".join(cur_chunk).strip() + if chunk: + chunks.append(chunk) + + # start a new chunk with overlap + # keep popping off the first element of the previous chunk until: + # 1. the current chunk length is less than chunk overlap + # 2. the total length is less than chunk size + while cur_len > self.chunk_overlap or cur_len + split_len > chunk_size: + # pop off the first element + first_chunk = cur_chunk.pop(0) + cur_len -= len(self.tokenizer(first_chunk)) + + cur_chunk.append(split) + cur_len += split_len + + # handle the last chunk + chunk = "".join(cur_chunk).strip() + if chunk: + chunks.append(chunk) + + return chunks diff --git a/pilot/embedding_engine/source_embedding.py b/pilot/embedding_engine/source_embedding.py index 950c84ded..311ddd8b4 100644 --- a/pilot/embedding_engine/source_embedding.py +++ b/pilot/embedding_engine/source_embedding.py @@ -38,11 +38,11 @@ def __init__( - embedding_args: Optional """ self.file_path = file_path - self.vector_store_config = vector_store_config + self.vector_store_config = vector_store_config or {} self.source_reader = source_reader or None self.text_splitter = text_splitter or None self.embedding_args = embedding_args - self.embeddings = vector_store_config["embeddings"] + self.embeddings = self.vector_store_config.get("embeddings", None) @abstractmethod @register diff --git a/pilot/embedding_engine/url_embedding.py b/pilot/embedding_engine/url_embedding.py index 71842c2f1..2269e28ea 100644 --- a/pilot/embedding_engine/url_embedding.py +++ b/pilot/embedding_engine/url_embedding.py @@ -33,7 +33,7 @@ def __init__( file_path, vector_store_config, source_reader=None, text_splitter=None ) self.file_path = file_path - self.vector_store_config = vector_store_config + self.vector_store_config = vector_store_config or None self.source_reader = source_reader or None self.text_splitter = text_splitter or None diff --git a/pilot/graph_engine/__init__.py b/pilot/graph_engine/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pilot/graph_engine/graph_engine.py b/pilot/graph_engine/graph_engine.py new file mode 100644 index 000000000..bea5f3123 --- /dev/null +++ b/pilot/graph_engine/graph_engine.py @@ -0,0 +1,207 @@ +import logging +from typing import Any, Optional, Callable, Tuple, List + +from langchain.schema import Document +from langchain.text_splitter import RecursiveCharacterTextSplitter + +from pilot.embedding_engine import KnowledgeType +from pilot.embedding_engine.knowledge_type import get_knowledge_embedding +from pilot.graph_engine.index_struct import KG +from pilot.graph_engine.node import TextNode +from pilot.utils import utils + +logger = logging.getLogger(__name__) + + +class RAGGraphEngine: + """Knowledge RAG Graph Engine. + Build a RAG Graph Client can extract triplets and insert into graph store. + Args: + knowledge_type (Optional[str]): Default: KnowledgeType.DOCUMENT.value + extracting triplets. + knowledge_source (Optional[str]): + model_name (Optional[str]): llm model name + graph_store (Optional[GraphStore]): The graph store to use.refrence:llama-index + include_embeddings (bool): Whether to include embeddings in the index. + Defaults to False. + max_object_length (int): The maximum length of the object in a triplet. + Defaults to 128. + extract_triplet_fn (Optional[Callable]): The function to use for + extracting triplets. Defaults to None. + """ + + index_struct_cls = KG + + def __init__( + self, + knowledge_type: Optional[str] = KnowledgeType.DOCUMENT.value, + knowledge_source: Optional[str] = None, + text_splitter=None, + graph_store=None, + index_struct: Optional[KG] = None, + model_name: Optional[str] = None, + max_triplets_per_chunk: int = 10, + include_embeddings: bool = False, + max_object_length: int = 128, + extract_triplet_fn: Optional[Callable] = None, + **kwargs: Any, + ) -> None: + """Initialize params.""" + from llama_index.graph_stores import SimpleGraphStore + + # need to set parameters before building index in base class. + self.knowledge_source = knowledge_source + self.knowledge_type = knowledge_type + self.model_name = model_name + self.text_splitter = text_splitter + self.index_struct = index_struct + self.include_embeddings = include_embeddings + self.graph_store = graph_store or SimpleGraphStore() + # self.graph_store = graph_store + self.max_triplets_per_chunk = max_triplets_per_chunk + self._max_object_length = max_object_length + self._extract_triplet_fn = extract_triplet_fn + + def knowledge_graph(self, docs=None): + """knowledge docs into graph store""" + if not docs: + if self.text_splitter: + self.text_splitter = RecursiveCharacterTextSplitter( + chunk_size=2000, chunk_overlap=100 + ) + knowledge_source = get_knowledge_embedding( + knowledge_type=self.knowledge_type, + knowledge_source=self.knowledge_source, + text_splitter=self.text_splitter, + ) + docs = knowledge_source.read() + if self.index_struct is None: + self.index_struct = self._build_index_from_docs(docs) + + def _extract_triplets(self, text: str) -> List[Tuple[str, str, str]]: + """Extract triplets from text by function or llm""" + if self._extract_triplet_fn is not None: + return self._extract_triplet_fn(text) + else: + return self._llm_extract_triplets(text) + + def _llm_extract_triplets(self, text: str) -> List[Tuple[str, str, str]]: + """Extract triplets from text by llm""" + from pilot.scene.base import ChatScene + from pilot.common.chat_util import llm_chat_response_nostream + import uuid + + chat_param = { + "chat_session_id": uuid.uuid1(), + "current_user_input": text, + "select_param": "triplet", + "model_name": self.model_name, + } + loop = utils.get_or_create_event_loop() + triplets = loop.run_until_complete( + llm_chat_response_nostream( + ChatScene.ExtractTriplet.value(), **{"chat_param": chat_param} + ) + ) + return triplets + + def _build_index_from_docs(self, documents: List[Document]) -> KG: + """Build the index from nodes. + Args:documents:List[Document] + """ + index_struct = self.index_struct_cls() + triplets = [] + for doc in documents: + trips = self._extract_triplets_task([doc], index_struct) + triplets.extend(trips) + print(triplets) + text_node = TextNode(text=doc.page_content, metadata=doc.metadata) + for triplet in triplets: + subj, _, obj = triplet + self.graph_store.upsert_triplet(*triplet) + index_struct.add_node([subj, obj], text_node) + return index_struct + # num_threads = 5 + # chunk_size = ( + # len(documents) + # if (len(documents) < num_threads) + # else len(documents) // num_threads + # ) + # + # import concurrent + # triples = [] + # future_tasks = [] + # with concurrent.futures.ThreadPoolExecutor() as executor: + # for i in range(num_threads): + # start = i * chunk_size + # end = start + chunk_size if i < num_threads - 1 else None + # # doc = documents[start:end] + # future_tasks.append( + # executor.submit( + # self._extract_triplets_task, + # documents[start:end], + # index_struct, + # ) + # ) + # # for doc in documents[start:end]: + # # future_tasks.append( + # # executor.submit( + # # self._extract_triplets_task, + # # doc, + # # index_struct, + # # ) + # # ) + # + # # result = [future.result() for future in future_tasks] + # completed_futures, _ = concurrent.futures.wait(future_tasks, return_when=concurrent.futures.ALL_COMPLETED) + # for future in completed_futures: + # # 获取已完成的future的结果并添加到results列表中 + # result = future.result() + # triplets.extend(result) + # print(f"total triplets-{triples}") + # for triplet in triplets: + # subj, _, obj = triplet + # self.graph_store.upsert_triplet(*triplet) + # # index_struct.add_node([subj, obj], text_node) + # return index_struct + # for doc in documents: + # triplets = self._extract_triplets(doc.page_content) + # if len(triplets) == 0: + # continue + # text_node = TextNode(text=doc.page_content, metadata=doc.metadata) + # logger.info(f"extracted knowledge triplets: {triplets}") + # for triplet in triplets: + # subj, _, obj = triplet + # self.graph_store.upsert_triplet(*triplet) + # index_struct.add_node([subj, obj], text_node) + # + # return index_struct + + def search(self, query): + from pilot.graph_engine.graph_search import RAGGraphSearch + + graph_search = RAGGraphSearch(graph_engine=self) + return graph_search.search(query) + + def _extract_triplets_task(self, docs, index_struct): + triple_results = [] + for doc in docs: + import threading + + thread_id = threading.get_ident() + print(f"current thread-{thread_id} begin extract triplets task") + triplets = self._extract_triplets(doc.page_content) + if len(triplets) == 0: + triplets = [] + text_node = TextNode(text=doc.page_content, metadata=doc.metadata) + logger.info(f"extracted knowledge triplets: {triplets}") + print( + f"current thread-{thread_id} end extract triplets tasks, triplets-{triplets}" + ) + triple_results.extend(triplets) + return triple_results + # for triplet in triplets: + # subj, _, obj = triplet + # self.graph_store.upsert_triplet(*triplet) + # self.graph_store.upsert_triplet(*triplet) + # index_struct.add_node([subj, obj], text_node) diff --git a/pilot/graph_engine/graph_factory.py b/pilot/graph_engine/graph_factory.py new file mode 100644 index 000000000..3a8b99c17 --- /dev/null +++ b/pilot/graph_engine/graph_factory.py @@ -0,0 +1,34 @@ +from __future__ import annotations +from abc import ABC, abstractmethod +from typing import Any, Type + +from pilot.component import BaseComponent, ComponentType + + +class RAGGraphFactory(BaseComponent, ABC): + name = ComponentType.RAG_GRAPH_DEFAULT.value + + @abstractmethod + def create(self, model_name: str = None, embedding_cls: Type = None): + """Create RAG Graph Engine""" + + +class DefaultRAGGraphFactory(RAGGraphFactory): + def __init__( + self, system_app=None, default_model_name: str = None, **kwargs: Any + ) -> None: + super().__init__(system_app=system_app) + self._default_model_name = default_model_name + self.kwargs = kwargs + from pilot.graph_engine.graph_engine import RAGGraphEngine + + self.rag_engine = RAGGraphEngine(model_name="proxyllm") + + def init_app(self, system_app): + pass + + def create(self, model_name: str = None, rag_cls: Type = None): + if not model_name: + model_name = self._default_model_name + + return self.rag_engine diff --git a/pilot/graph_engine/graph_search.py b/pilot/graph_engine/graph_search.py new file mode 100644 index 000000000..9419a4979 --- /dev/null +++ b/pilot/graph_engine/graph_search.py @@ -0,0 +1,197 @@ +import logging +import os +from collections import defaultdict +from concurrent.futures import ThreadPoolExecutor +from typing import List, Optional, Dict, Any, Set, Callable + +from langchain.schema import Document + +from pilot.graph_engine.node import BaseNode, TextNode, NodeWithScore +from pilot.graph_engine.search import BaseSearch, SearchMode + +logger = logging.getLogger(__name__) +DEFAULT_NODE_SCORE = 1000.0 +GLOBAL_EXPLORE_NODE_LIMIT = 3 +REL_TEXT_LIMIT = 30 + + +class RAGGraphSearch(BaseSearch): + """RAG Graph Search. + + args: + graph_engine RAGGraphEngine. + model_name (str): model name + (see :ref:`Prompt-Templates`). + text_qa_template (Optional[BasePromptTemplate]): A Question Answering Prompt + (see :ref:`Prompt-Templates`). + max_keywords_per_query (int): Maximum number of keywords to extract from query. + num_chunks_per_query (int): Maximum number of text chunks to query. + search_mode (Optional[SearchMode]): Specifies whether to use keyowrds, default SearchMode.KEYWORD + embeddings, or both to find relevant triplets. Should be one of "keyword", + "embedding", or "hybrid". + graph_store_query_depth (int): The depth of the graph store query. + extract_subject_entities_fn (Optional[Callback]): extract_subject_entities callback. + """ + + def __init__( + self, + graph_engine, + model_name: str = None, + max_keywords_per_query: int = 10, + num_chunks_per_query: int = 10, + search_mode: Optional[SearchMode] = SearchMode.KEYWORD, + graph_store_query_depth: int = 2, + extract_subject_entities_fn: Optional[Callable] = None, + **kwargs: Any, + ) -> None: + """Initialize params.""" + from pilot.graph_engine.graph_engine import RAGGraphEngine + + self.graph_engine: RAGGraphEngine = graph_engine + self.model_name = model_name or self.graph_engine.model_name + self._index_struct = self.graph_engine.index_struct + self.max_keywords_per_query = max_keywords_per_query + self.num_chunks_per_query = num_chunks_per_query + self._search_mode = search_mode + + self._graph_store = self.graph_engine.graph_store + self.graph_store_query_depth = graph_store_query_depth + self._verbose = kwargs.get("verbose", False) + refresh_schema = kwargs.get("refresh_schema", False) + self.extract_subject_entities_fn = extract_subject_entities_fn + self.executor = ThreadPoolExecutor(max_workers=os.cpu_count() * 5) + try: + self._graph_schema = self._graph_store.get_schema(refresh=refresh_schema) + except NotImplementedError: + self._graph_schema = "" + except Exception as e: + logger.warn(f"can not to find graph schema: {e}") + self._graph_schema = "" + + async def _extract_subject_entities(self, query_str: str) -> Set[str]: + """extract subject entities.""" + if self.extract_subject_entities_fn is not None: + return await self.extract_subject_entities_fn(query_str) + else: + return await self._extract_entities_by_llm(query_str) + + async def _extract_entities_by_llm(self, text: str) -> Set[str]: + """extract subject entities from text by llm""" + from pilot.scene.base import ChatScene + from pilot.common.chat_util import llm_chat_response_nostream + import uuid + + chat_param = { + "chat_session_id": uuid.uuid1(), + "current_user_input": text, + "select_param": "entity", + "model_name": self.model_name, + } + # loop = utils.get_or_create_event_loop() + # entities = loop.run_until_complete( + # llm_chat_response_nostream( + # ChatScene.ExtractEntity.value(), **{"chat_param": chat_param} + # ) + # ) + return await llm_chat_response_nostream( + ChatScene.ExtractEntity.value(), **{"chat_param": chat_param} + ) + + async def _search( + self, + query_str: str, + ) -> List[Document]: + """Get nodes for response.""" + node_visited = set() + keywords = await self._extract_subject_entities(query_str) + print(f"extract entities: {keywords}\n") + rel_texts = [] + cur_rel_map = {} + chunk_indices_count: Dict[str, int] = defaultdict(int) + if self._search_mode != SearchMode.EMBEDDING: + for keyword in keywords: + keyword = keyword.lower() + subjs = set((keyword,)) + # node_ids = self._index_struct.search_node_by_keyword(keyword) + # for node_id in node_ids[:GLOBAL_EXPLORE_NODE_LIMIT]: + # if node_id in node_visited: + # continue + # + # # if self._include_text: + # # chunk_indices_count[node_id] += 1 + # + # node_visited.add(node_id) + + rel_map = self._graph_store.get_rel_map( + list(subjs), self.graph_store_query_depth + ) + logger.debug(f"rel_map: {rel_map}") + + if not rel_map: + continue + rel_texts.extend( + [ + str(rel_obj) + for rel_objs in rel_map.values() + for rel_obj in rel_objs + ] + ) + cur_rel_map.update(rel_map) + + sorted_nodes_with_scores = [] + if not rel_texts: + logger.info("> No relationships found, returning nodes found by keywords.") + if len(sorted_nodes_with_scores) == 0: + logger.info("> No nodes found by keywords, returning empty response.") + return [Document(page_content="No relationships found.")] + + # add relationships as Node + # TODO: make initial text customizable + rel_initial_text = ( + f"The following are knowledge sequence in max depth" + f" {self.graph_store_query_depth} " + f"in the form of directed graph like:\n" + f"`subject -[predicate]->, object, <-[predicate_next_hop]-," + f" object_next_hop ...`" + ) + rel_info = [rel_initial_text] + rel_texts + rel_node_info = { + "kg_rel_texts": rel_texts, + "kg_rel_map": cur_rel_map, + } + if self._graph_schema != "": + rel_node_info["kg_schema"] = {"schema": self._graph_schema} + rel_info_text = "\n".join( + [ + str(item) + for sublist in rel_info + for item in (sublist if isinstance(sublist, list) else [sublist]) + ] + ) + if self._verbose: + print(f"KG context:\n{rel_info_text}\n", color="blue") + rel_text_node = TextNode( + text=rel_info_text, + metadata=rel_node_info, + excluded_embed_metadata_keys=["kg_rel_map", "kg_rel_texts"], + excluded_llm_metadata_keys=["kg_rel_map", "kg_rel_texts"], + ) + # this node is constructed from rel_texts, give high confidence to avoid cutoff + sorted_nodes_with_scores.append( + NodeWithScore(node=rel_text_node, score=DEFAULT_NODE_SCORE) + ) + docs = [ + Document(page_content=node.text, metadata=node.metadata) + for node in sorted_nodes_with_scores + ] + return docs + + def _get_metadata_for_response( + self, nodes: List[BaseNode] + ) -> Optional[Dict[str, Any]]: + """Get metadata for response.""" + for node in nodes: + if node.metadata is None or "kg_rel_map" not in node.metadata: + continue + return node.metadata + raise ValueError("kg_rel_map must be found in at least one Node.") diff --git a/pilot/graph_engine/index_struct.py b/pilot/graph_engine/index_struct.py new file mode 100644 index 000000000..edc47a7ac --- /dev/null +++ b/pilot/graph_engine/index_struct.py @@ -0,0 +1,259 @@ +"""Data structures. + +Nodes are decoupled from the indices. + +""" + +import uuid +from abc import abstractmethod +from dataclasses import dataclass, field +from typing import Dict, List, Optional, Sequence, Set + +from dataclasses_json import DataClassJsonMixin + + +from pilot.graph_engine.index_type import IndexStructType +from pilot.graph_engine.node import TextNode, BaseNode + +# TODO: legacy backport of old Node class +Node = TextNode + + +@dataclass +class IndexStruct(DataClassJsonMixin): + """A base data struct for a LlamaIndex.""" + + index_id: str = field(default_factory=lambda: str(uuid.uuid4())) + summary: Optional[str] = None + + def get_summary(self) -> str: + """Get text summary.""" + if self.summary is None: + raise ValueError("summary field of the index_struct not set.") + return self.summary + + @classmethod + @abstractmethod + def get_type(cls): + """Get index struct type.""" + + +@dataclass +class IndexGraph(IndexStruct): + """A graph representing the tree-structured index.""" + + # mapping from index in tree to Node doc id. + all_nodes: Dict[int, str] = field(default_factory=dict) + root_nodes: Dict[int, str] = field(default_factory=dict) + node_id_to_children_ids: Dict[str, List[str]] = field(default_factory=dict) + + @property + def node_id_to_index(self) -> Dict[str, int]: + """Map from node id to index.""" + return {node_id: index for index, node_id in self.all_nodes.items()} + + @property + def size(self) -> int: + """Get the size of the graph.""" + return len(self.all_nodes) + + def get_index(self, node: BaseNode) -> int: + """Get index of node.""" + return self.node_id_to_index[node.node_id] + + def insert( + self, + node: BaseNode, + index: Optional[int] = None, + children_nodes: Optional[Sequence[BaseNode]] = None, + ) -> None: + """Insert node.""" + index = index or self.size + node_id = node.node_id + + self.all_nodes[index] = node_id + + if children_nodes is None: + children_nodes = [] + children_ids = [n.node_id for n in children_nodes] + self.node_id_to_children_ids[node_id] = children_ids + + def get_children(self, parent_node: Optional[BaseNode]) -> Dict[int, str]: + """Get children nodes.""" + if parent_node is None: + return self.root_nodes + else: + parent_id = parent_node.node_id + children_ids = self.node_id_to_children_ids[parent_id] + return { + self.node_id_to_index[child_id]: child_id for child_id in children_ids + } + + def insert_under_parent( + self, + node: BaseNode, + parent_node: Optional[BaseNode], + new_index: Optional[int] = None, + ) -> None: + """Insert under parent node.""" + new_index = new_index or self.size + if parent_node is None: + self.root_nodes[new_index] = node.node_id + self.node_id_to_children_ids[node.node_id] = [] + else: + if parent_node.node_id not in self.node_id_to_children_ids: + self.node_id_to_children_ids[parent_node.node_id] = [] + self.node_id_to_children_ids[parent_node.node_id].append(node.node_id) + + self.all_nodes[new_index] = node.node_id + + @classmethod + def get_type(cls) -> IndexStructType: + """Get type.""" + return IndexStructType.TREE + + +@dataclass +class KeywordTable(IndexStruct): + """A table of keywords mapping keywords to text chunks.""" + + table: Dict[str, Set[str]] = field(default_factory=dict) + + def add_node(self, keywords: List[str], node: BaseNode) -> None: + """Add text to table.""" + for keyword in keywords: + if keyword not in self.table: + self.table[keyword] = set() + self.table[keyword].add(node.node_id) + + @property + def node_ids(self) -> Set[str]: + """Get all node ids.""" + return set.union(*self.table.values()) + + @property + def keywords(self) -> Set[str]: + """Get all keywords in the table.""" + return set(self.table.keys()) + + @property + def size(self) -> int: + """Get the size of the table.""" + return len(self.table) + + @classmethod + def get_type(cls) -> IndexStructType: + """Get type.""" + return IndexStructType.KEYWORD_TABLE + + +@dataclass +class IndexList(IndexStruct): + """A list of documents.""" + + nodes: List[str] = field(default_factory=list) + + def add_node(self, node: BaseNode) -> None: + """Add text to table, return current position in list.""" + # don't worry about child indices for now, nodes are all in order + self.nodes.append(node.node_id) + + @classmethod + def get_type(cls) -> IndexStructType: + """Get type.""" + return IndexStructType.LIST + + +@dataclass +class IndexDict(IndexStruct): + """A simple dictionary of documents.""" + + # TODO: slightly deprecated, should likely be a list or set now + # mapping from vector store id to node doc_id + nodes_dict: Dict[str, str] = field(default_factory=dict) + + # TODO: deprecated, not used + # mapping from node doc_id to vector store id + doc_id_dict: Dict[str, List[str]] = field(default_factory=dict) + + # TODO: deprecated, not used + # this should be empty for all other indices + embeddings_dict: Dict[str, List[float]] = field(default_factory=dict) + + def add_node( + self, + node: BaseNode, + text_id: Optional[str] = None, + ) -> str: + """Add text to table, return current position in list.""" + # # don't worry about child indices for now, nodes are all in order + # self.nodes_dict[int_id] = node + vector_id = text_id if text_id is not None else node.node_id + self.nodes_dict[vector_id] = node.node_id + + return vector_id + + def delete(self, doc_id: str) -> None: + """Delete a Node.""" + del self.nodes_dict[doc_id] + + @classmethod + def get_type(cls) -> IndexStructType: + """Get type.""" + return IndexStructType.VECTOR_STORE + + +@dataclass +class KG(IndexStruct): + """A table of keywords mapping keywords to text chunks.""" + + # Unidirectional + + # table of keywords to node ids + table: Dict[str, Set[str]] = field(default_factory=dict) + + # TODO: legacy attribute, remove in future releases + rel_map: Dict[str, List[List[str]]] = field(default_factory=dict) + + # TBD, should support vector store, now we just persist the embedding memory + # maybe chainable abstractions for *_stores could be designed + embedding_dict: Dict[str, List[float]] = field(default_factory=dict) + + @property + def node_ids(self) -> Set[str]: + """Get all node ids.""" + return set.union(*self.table.values()) + + def add_to_embedding_dict(self, triplet_str: str, embedding: List[float]) -> None: + """Add embedding to dict.""" + self.embedding_dict[triplet_str] = embedding + + def add_node(self, keywords: List[str], node: BaseNode) -> None: + """Add text to table.""" + node_id = node.node_id + for keyword in keywords: + keyword = keyword.lower() + if keyword not in self.table: + self.table[keyword] = set() + self.table[keyword].add(node_id) + + def search_node_by_keyword(self, keyword: str) -> List[str]: + """Search for nodes by keyword.""" + if keyword not in self.table: + return [] + return list(self.table[keyword]) + + @classmethod + def get_type(cls) -> IndexStructType: + """Get type.""" + return IndexStructType.KG + + +@dataclass +class EmptyIndexStruct(IndexStruct): + """Empty index.""" + + @classmethod + def get_type(cls) -> IndexStructType: + """Get type.""" + return IndexStructType.EMPTY diff --git a/pilot/graph_engine/index_type.py b/pilot/graph_engine/index_type.py new file mode 100644 index 000000000..939066be9 --- /dev/null +++ b/pilot/graph_engine/index_type.py @@ -0,0 +1,48 @@ +"""IndexStructType class.""" + +from enum import Enum + + +class IndexStructType(str, Enum): + """Index struct type. Identifier for a "type" of index. + + Attributes: + TREE ("tree"): Tree index. See :ref:`Ref-Indices-Tree` for tree indices. + LIST ("list"): Summary index. See :ref:`Ref-Indices-List` for summary indices. + KEYWORD_TABLE ("keyword_table"): Keyword table index. See + :ref:`Ref-Indices-Table` + for keyword table indices. + DICT ("dict"): Faiss Vector Store Index. See + :ref:`Ref-Indices-VectorStore` + for more information on the faiss vector store index. + SIMPLE_DICT ("simple_dict"): Simple Vector Store Index. See + :ref:`Ref-Indices-VectorStore` + for more information on the simple vector store index. + KG ("kg"): Knowledge Graph index. + See :ref:`Ref-Indices-Knowledge-Graph` for KG indices. + DOCUMENT_SUMMARY ("document_summary"): Document Summary Index. + See :ref:`Ref-Indices-Document-Summary` for Summary Indices. + + """ + + # TODO: refactor so these are properties on the base class + + NODE = "node" + TREE = "tree" + LIST = "list" + KEYWORD_TABLE = "keyword_table" + + DICT = "dict" + # simple + SIMPLE_DICT = "simple_dict" + # for KG index + KG = "kg" + SIMPLE_KG = "simple_kg" + NEBULAGRAPH = "nebulagraph" + FALKORDB = "falkordb" + + # EMPTY + EMPTY = "empty" + COMPOSITE = "composite" + + DOCUMENT_SUMMARY = "document_summary" diff --git a/pilot/graph_engine/kv_index.py b/pilot/graph_engine/kv_index.py new file mode 100644 index 000000000..7b44b7d04 --- /dev/null +++ b/pilot/graph_engine/kv_index.py @@ -0,0 +1,74 @@ +from typing import List, Optional +from llama_index.data_structs.data_structs import IndexStruct +from llama_index.storage.index_store.utils import ( + index_struct_to_json, + json_to_index_struct, +) +from llama_index.storage.kvstore.types import BaseKVStore + +DEFAULT_NAMESPACE = "index_store" + + +class KVIndexStore: + """Key-Value Index store. + + Args: + kvstore (BaseKVStore): key-value store + namespace (str): namespace for the index store + + """ + + def __init__(self, kvstore: BaseKVStore, namespace: Optional[str] = None) -> None: + """Init a KVIndexStore.""" + self._kvstore = kvstore + self._namespace = namespace or DEFAULT_NAMESPACE + self._collection = f"{self._namespace}/data" + + def add_index_struct(self, index_struct: IndexStruct) -> None: + """Add an index struct. + + Args: + index_struct (IndexStruct): index struct + + """ + key = index_struct.index_id + data = index_struct_to_json(index_struct) + self._kvstore.put(key, data, collection=self._collection) + + def delete_index_struct(self, key: str) -> None: + """Delete an index struct. + + Args: + key (str): index struct key + + """ + self._kvstore.delete(key, collection=self._collection) + + def get_index_struct( + self, struct_id: Optional[str] = None + ) -> Optional[IndexStruct]: + """Get an index struct. + + Args: + struct_id (Optional[str]): index struct id + + """ + if struct_id is None: + structs = self.index_structs() + assert len(structs) == 1 + return structs[0] + else: + json = self._kvstore.get(struct_id, collection=self._collection) + if json is None: + return None + return json_to_index_struct(json) + + def index_structs(self) -> List[IndexStruct]: + """Get all index structs. + + Returns: + List[IndexStruct]: index structs + + """ + jsons = self._kvstore.get_all(collection=self._collection) + return [json_to_index_struct(json) for json in jsons.values()] diff --git a/pilot/graph_engine/node.py b/pilot/graph_engine/node.py new file mode 100644 index 000000000..b23681010 --- /dev/null +++ b/pilot/graph_engine/node.py @@ -0,0 +1,570 @@ +"""Base schema for data structures.""" +import json +import textwrap +import uuid +from abc import abstractmethod +from enum import Enum, auto +from hashlib import sha256 +from typing import Any, Dict, List, Optional, Union + +from langchain.schema import Document +from pydantic import BaseModel, Field, root_validator +from typing_extensions import Self + + +DEFAULT_TEXT_NODE_TMPL = "{metadata_str}\n\n{content}" +DEFAULT_METADATA_TMPL = "{key}: {value}" +# NOTE: for pretty printing +TRUNCATE_LENGTH = 350 +WRAP_WIDTH = 70 + + +class BaseComponent(BaseModel): + """Base component object to caputure class names.""" + + """reference llama-index""" + + @classmethod + @abstractmethod + def class_name(cls) -> str: + """Get class name.""" + + def to_dict(self, **kwargs: Any) -> Dict[str, Any]: + data = self.dict(**kwargs) + data["class_name"] = self.class_name() + return data + + def to_json(self, **kwargs: Any) -> str: + data = self.to_dict(**kwargs) + return json.dumps(data) + + # TODO: return type here not supported by current mypy version + @classmethod + def from_dict(cls, data: Dict[str, Any], **kwargs: Any) -> Self: # type: ignore + if isinstance(kwargs, dict): + data.update(kwargs) + + data.pop("class_name", None) + return cls(**data) + + @classmethod + def from_json(cls, data_str: str, **kwargs: Any) -> Self: # type: ignore + data = json.loads(data_str) + return cls.from_dict(data, **kwargs) + + +class NodeRelationship(str, Enum): + """Node relationships used in `BaseNode` class. + + Attributes: + SOURCE: The node is the source document. + PREVIOUS: The node is the previous node in the document. + NEXT: The node is the next node in the document. + PARENT: The node is the parent node in the document. + CHILD: The node is a child node in the document. + + """ + + SOURCE = auto() + PREVIOUS = auto() + NEXT = auto() + PARENT = auto() + CHILD = auto() + + +class ObjectType(str, Enum): + TEXT = auto() + IMAGE = auto() + INDEX = auto() + DOCUMENT = auto() + + +class MetadataMode(str, Enum): + ALL = auto() + EMBED = auto() + LLM = auto() + NONE = auto() + + +class RelatedNodeInfo(BaseComponent): + node_id: str + node_type: Optional[ObjectType] = None + metadata: Dict[str, Any] = Field(default_factory=dict) + hash: Optional[str] = None + + @classmethod + def class_name(cls) -> str: + """Get class name.""" + return "RelatedNodeInfo" + + +RelatedNodeType = Union[RelatedNodeInfo, List[RelatedNodeInfo]] + + +# Node classes for indexes +class BaseNode(BaseComponent): + """Base node Object. + + Generic abstract interface for retrievable nodes + + """ + + class Config: + allow_population_by_field_name = True + + id_: str = Field( + default_factory=lambda: str(uuid.uuid4()), description="Unique ID of the node." + ) + embedding: Optional[List[float]] = Field( + default=None, description="Embedding of the node." + ) + + """" + metadata fields + - injected as part of the text shown to LLMs as context + - injected as part of the text for generating embeddings + - used by vector DBs for metadata filtering + + """ + metadata: Dict[str, Any] = Field( + default_factory=dict, + description="A flat dictionary of metadata fields", + alias="extra_info", + ) + excluded_embed_metadata_keys: List[str] = Field( + default_factory=list, + description="Metadata keys that are exluded from text for the embed model.", + ) + excluded_llm_metadata_keys: List[str] = Field( + default_factory=list, + description="Metadata keys that are exluded from text for the LLM.", + ) + relationships: Dict[NodeRelationship, RelatedNodeType] = Field( + default_factory=dict, + description="A mapping of relationships to other node information.", + ) + hash: str = Field(default="", description="Hash of the node content.") + + @classmethod + @abstractmethod + def get_type(cls) -> str: + """Get Object type.""" + + @abstractmethod + def get_content(self, metadata_mode: MetadataMode = MetadataMode.ALL) -> str: + """Get object content.""" + + @abstractmethod + def get_metadata_str(self, mode: MetadataMode = MetadataMode.ALL) -> str: + """Metadata string.""" + + @abstractmethod + def set_content(self, value: Any) -> None: + """Set the content of the node.""" + + @property + def node_id(self) -> str: + return self.id_ + + @node_id.setter + def node_id(self, value: str) -> None: + self.id_ = value + + @property + def source_node(self) -> Optional[RelatedNodeInfo]: + """Source object node. + + Extracted from the relationships field. + + """ + if NodeRelationship.SOURCE not in self.relationships: + return None + + relation = self.relationships[NodeRelationship.SOURCE] + if isinstance(relation, list): + raise ValueError("Source object must be a single RelatedNodeInfo object") + return relation + + @property + def prev_node(self) -> Optional[RelatedNodeInfo]: + """Prev node.""" + if NodeRelationship.PREVIOUS not in self.relationships: + return None + + relation = self.relationships[NodeRelationship.PREVIOUS] + if not isinstance(relation, RelatedNodeInfo): + raise ValueError("Previous object must be a single RelatedNodeInfo object") + return relation + + @property + def next_node(self) -> Optional[RelatedNodeInfo]: + """Next node.""" + if NodeRelationship.NEXT not in self.relationships: + return None + + relation = self.relationships[NodeRelationship.NEXT] + if not isinstance(relation, RelatedNodeInfo): + raise ValueError("Next object must be a single RelatedNodeInfo object") + return relation + + @property + def parent_node(self) -> Optional[RelatedNodeInfo]: + """Parent node.""" + if NodeRelationship.PARENT not in self.relationships: + return None + + relation = self.relationships[NodeRelationship.PARENT] + if not isinstance(relation, RelatedNodeInfo): + raise ValueError("Parent object must be a single RelatedNodeInfo object") + return relation + + @property + def child_nodes(self) -> Optional[List[RelatedNodeInfo]]: + """Child nodes.""" + if NodeRelationship.CHILD not in self.relationships: + return None + + relation = self.relationships[NodeRelationship.CHILD] + if not isinstance(relation, list): + raise ValueError("Child objects must be a list of RelatedNodeInfo objects.") + return relation + + @property + def ref_doc_id(self) -> Optional[str]: + """Deprecated: Get ref doc id.""" + source_node = self.source_node + if source_node is None: + return None + return source_node.node_id + + @property + def extra_info(self) -> Dict[str, Any]: + """TODO: DEPRECATED: Extra info.""" + return self.metadata + + def __str__(self) -> str: + source_text_truncated = truncate_text( + self.get_content().strip(), TRUNCATE_LENGTH + ) + source_text_wrapped = textwrap.fill( + f"Text: {source_text_truncated}\n", width=WRAP_WIDTH + ) + return f"Node ID: {self.node_id}\n{source_text_wrapped}" + + def truncate_text(text: str, max_length: int) -> str: + """Truncate text to a maximum length.""" + if len(text) <= max_length: + return text + return text[: max_length - 3] + "..." + + def get_embedding(self) -> List[float]: + """Get embedding. + + Errors if embedding is None. + + """ + if self.embedding is None: + raise ValueError("embedding not set.") + return self.embedding + + def as_related_node_info(self) -> RelatedNodeInfo: + """Get node as RelatedNodeInfo.""" + return RelatedNodeInfo( + node_id=self.node_id, metadata=self.metadata, hash=self.hash + ) + + +class TextNode(BaseNode): + text: str = Field(default="", description="Text content of the node.") + start_char_idx: Optional[int] = Field( + default=None, description="Start char index of the node." + ) + end_char_idx: Optional[int] = Field( + default=None, description="End char index of the node." + ) + text_template: str = Field( + default=DEFAULT_TEXT_NODE_TMPL, + description=( + "Template for how text is formatted, with {content} and " + "{metadata_str} placeholders." + ), + ) + metadata_template: str = Field( + default=DEFAULT_METADATA_TMPL, + description=( + "Template for how metadata is formatted, with {key} and " + "{value} placeholders." + ), + ) + metadata_seperator: str = Field( + default="\n", + description="Seperator between metadata fields when converting to string.", + ) + + @classmethod + def class_name(cls) -> str: + """Get class name.""" + return "TextNode" + + @root_validator + def _check_hash(cls, values: dict) -> dict: + """Generate a hash to represent the node.""" + text = values.get("text", "") + metadata = values.get("metadata", {}) + doc_identity = str(text) + str(metadata) + values["hash"] = str( + sha256(doc_identity.encode("utf-8", "surrogatepass")).hexdigest() + ) + return values + + @classmethod + def get_type(cls) -> str: + """Get Object type.""" + return ObjectType.TEXT + + def get_content(self, metadata_mode: MetadataMode = MetadataMode.NONE) -> str: + """Get object content.""" + metadata_str = self.get_metadata_str(mode=metadata_mode).strip() + if not metadata_str: + return self.text + + return self.text_template.format( + content=self.text, metadata_str=metadata_str + ).strip() + + def get_metadata_str(self, mode: MetadataMode = MetadataMode.ALL) -> str: + """metadata info string.""" + if mode == MetadataMode.NONE: + return "" + + usable_metadata_keys = set(self.metadata.keys()) + if mode == MetadataMode.LLM: + for key in self.excluded_llm_metadata_keys: + if key in usable_metadata_keys: + usable_metadata_keys.remove(key) + elif mode == MetadataMode.EMBED: + for key in self.excluded_embed_metadata_keys: + if key in usable_metadata_keys: + usable_metadata_keys.remove(key) + + return self.metadata_seperator.join( + [ + self.metadata_template.format(key=key, value=str(value)) + for key, value in self.metadata.items() + if key in usable_metadata_keys + ] + ) + + def set_content(self, value: str) -> None: + """Set the content of the node.""" + self.text = value + + def get_node_info(self) -> Dict[str, Any]: + """Get node info.""" + return {"start": self.start_char_idx, "end": self.end_char_idx} + + def get_text(self) -> str: + return self.get_content(metadata_mode=MetadataMode.NONE) + + @property + def node_info(self) -> Dict[str, Any]: + """Deprecated: Get node info.""" + return self.get_node_info() + + +# TODO: legacy backport of old Node class +Node = TextNode + + +class ImageNode(TextNode): + """Node with image.""" + + # TODO: store reference instead of actual image + # base64 encoded image str + image: Optional[str] = None + + @classmethod + def get_type(cls) -> str: + return ObjectType.IMAGE + + @classmethod + def class_name(cls) -> str: + """Get class name.""" + return "ImageNode" + + +class IndexNode(TextNode): + """Node with reference to any object. + + This can include other indices, query engines, retrievers. + + This can also include other nodes (though this is overlapping with `relationships` + on the Node class). + + """ + + index_id: str + + @classmethod + def from_text_node( + cls, + node: TextNode, + index_id: str, + ) -> "IndexNode": + """Create index node from text node.""" + # copy all attributes from text node, add index id + return cls( + **node.dict(), + index_id=index_id, + ) + + @classmethod + def get_type(cls) -> str: + return ObjectType.INDEX + + @classmethod + def class_name(cls) -> str: + """Get class name.""" + return "IndexNode" + + +class NodeWithScore(BaseComponent): + node: BaseNode + score: Optional[float] = None + + def __str__(self) -> str: + return f"{self.node}\nScore: {self.score: 0.3f}\n" + + def get_score(self, raise_error: bool = False) -> float: + """Get score.""" + if self.score is None: + if raise_error: + raise ValueError("Score not set.") + else: + return 0.0 + else: + return self.score + + @classmethod + def class_name(cls) -> str: + """Get class name.""" + return "NodeWithScore" + + ##### pass through methods to BaseNode ##### + @property + def node_id(self) -> str: + return self.node.node_id + + @property + def id_(self) -> str: + return self.node.id_ + + @property + def text(self) -> str: + if isinstance(self.node, TextNode): + return self.node.text + else: + raise ValueError("Node must be a TextNode to get text.") + + @property + def metadata(self) -> Dict[str, Any]: + return self.node.metadata + + @property + def embedding(self) -> Optional[List[float]]: + return self.node.embedding + + def get_text(self) -> str: + if isinstance(self.node, TextNode): + return self.node.get_text() + else: + raise ValueError("Node must be a TextNode to get text.") + + def get_content(self, metadata_mode: MetadataMode = MetadataMode.NONE) -> str: + return self.node.get_content(metadata_mode=metadata_mode) + + def get_embedding(self) -> List[float]: + return self.node.get_embedding() + + +# Document Classes for Readers + + +class Document(TextNode): + """Generic interface for a data document. + + This document connects to data sources. + + """ + + # TODO: A lot of backwards compatibility logic here, clean up + id_: str = Field( + default_factory=lambda: str(uuid.uuid4()), + description="Unique ID of the node.", + alias="doc_id", + ) + + _compat_fields = {"doc_id": "id_", "extra_info": "metadata"} + + @classmethod + def get_type(cls) -> str: + """Get Document type.""" + return ObjectType.DOCUMENT + + @property + def doc_id(self) -> str: + """Get document ID.""" + return self.id_ + + def __str__(self) -> str: + source_text_truncated = truncate_text( + self.get_content().strip(), TRUNCATE_LENGTH + ) + source_text_wrapped = textwrap.fill( + f"Text: {source_text_truncated}\n", width=WRAP_WIDTH + ) + return f"Doc ID: {self.doc_id}\n{source_text_wrapped}" + + def get_doc_id(self) -> str: + """TODO: Deprecated: Get document ID.""" + return self.id_ + + def __setattr__(self, name: str, value: object) -> None: + if name in self._compat_fields: + name = self._compat_fields[name] + super().__setattr__(name, value) + + def to_langchain_format(self) -> Document: + """Convert struct to LangChain document format.""" + metadata = self.metadata or {} + return Document(page_content=self.text, metadata=metadata) + + @classmethod + def from_langchain_format(cls, doc: Document) -> "Document": + """Convert struct from LangChain document format.""" + return cls(text=doc.page_content, metadata=doc.metadata) + + @classmethod + def example(cls) -> "Document": + document = Document( + text="", + metadata={"filename": "README.md", "category": "codebase"}, + ) + return document + + @classmethod + def class_name(cls) -> str: + """Get class name.""" + return "Document" + + +class ImageDocument(Document): + """Data document containing an image.""" + + # base64 encoded image str + image: Optional[str] = None + + @classmethod + def class_name(cls) -> str: + """Get class name.""" + return "ImageDocument" diff --git a/pilot/graph_engine/search.py b/pilot/graph_engine/search.py new file mode 100644 index 000000000..297620b00 --- /dev/null +++ b/pilot/graph_engine/search.py @@ -0,0 +1,44 @@ +from abc import ABC, abstractmethod +from enum import Enum + + +class SearchMode(str, Enum): + """Query mode enum for Knowledge Graphs. + + Can be passed as the enum struct, or as the underlying string. + + Attributes: + KEYWORD ("keyword"): Default query mode, using keywords to find triplets. + EMBEDDING ("embedding"): Embedding mode, using embeddings to find + similar triplets. + HYBRID ("hybrid"): Hyrbid mode, combining both keywords and embeddings + to find relevant triplets. + """ + + KEYWORD = "keyword" + EMBEDDING = "embedding" + HYBRID = "hybrid" + + +class BaseSearch(ABC): + """Base Search.""" + + async def search(self, query: str): + """Retrieve nodes given query. + + Args: + query (QueryType): Either a query string or + a QueryBundle object. + + """ + # if isinstance(query, str): + return await self._search(query) + + @abstractmethod + async def _search(self, query: str): + """search nodes given query. + + Implemented by the user. + + """ + pass diff --git a/pilot/logs.py b/pilot/logs.py index 673799307..32528bdaa 100644 --- a/pilot/logs.py +++ b/pilot/logs.py @@ -249,7 +249,8 @@ def remove_color_codes(s: str) -> str: return ansi_escape.sub("", s) -logger: Logger = Logger() +# Remove current logger +# logger: Logger = Logger() def print_assistant_thoughts( diff --git a/pilot/memory/chat_history/chat_hisotry_factory.py b/pilot/memory/chat_history/chat_hisotry_factory.py index 64d30e971..c1a8f9cab 100644 --- a/pilot/memory/chat_history/chat_hisotry_factory.py +++ b/pilot/memory/chat_history/chat_hisotry_factory.py @@ -1,5 +1,6 @@ from .base import MemoryStoreType from pilot.configs.config import Config +from pilot.memory.chat_history.base import BaseChatHistoryMemory CFG = Config() @@ -18,7 +19,15 @@ def __init__(self): self.mem_store_class_map[DbHistoryMemory.store_type] = DbHistoryMemory self.mem_store_class_map[MemHistoryMemory.store_type] = MemHistoryMemory - def get_store_instance(self, chat_session_id): + def get_store_instance(self, chat_session_id: str) -> BaseChatHistoryMemory: + """New store instance for store chat histories + + Args: + chat_session_id (str): conversation session id + + Returns: + BaseChatHistoryMemory: Store instance + """ return self.mem_store_class_map.get(CFG.CHAT_HISTORY_STORE_TYPE)( chat_session_id ) diff --git a/pilot/memory/chat_history/chat_history_db.py b/pilot/memory/chat_history/chat_history_db.py index 2f9b2999c..b21fa2457 100644 --- a/pilot/memory/chat_history/chat_history_db.py +++ b/pilot/memory/chat_history/chat_history_db.py @@ -1,9 +1,15 @@ -from pilot.base_modules.meta_data.base_dao import BaseDao -from pilot.base_modules.meta_data.meta_data import Base, engine, session from typing import List from sqlalchemy import Column, Integer, String, Index, DateTime, func, Boolean, Text from sqlalchemy import UniqueConstraint +from pilot.base_modules.meta_data.base_dao import BaseDao +from pilot.base_modules.meta_data.meta_data import ( + Base, + engine, + session, + META_DATA_DATABASE, +) + class ChatHistoryEntity(Base): __tablename__ = "chat_history" @@ -23,18 +29,25 @@ class ChatHistoryEntity(Base): chat_mode = Column(String(255), nullable=False, comment="Conversation scene mode") summary = Column(String(255), nullable=False, comment="Conversation record summary") user_name = Column(String(255), nullable=True, comment="interlocutor") - messages = Column(Text, nullable=True, comment="Conversation details") + messages = Column( + Text(length=2**31 - 1), nullable=True, comment="Conversation details" + ) + share_id = Column(String(255), nullable=True, comment="interlocutor") UniqueConstraint("conv_uid", name="uk_conversation") Index("idx_q_user", "user_name") Index("idx_q_mode", "chat_mode") Index("idx_q_conv", "summary") + Index("idx_share_id", "share_id") class ChatHistoryDao(BaseDao[ChatHistoryEntity]): def __init__(self): super().__init__( - database="dbgpt", orm_base=Base, db_engine=engine, session=session + database=META_DATA_DATABASE, + orm_base=Base, + db_engine=engine, + session=session, ) def list_last_20(self, user_name: str = None): @@ -69,6 +82,15 @@ def update_message_by_uid(self, message: str, conv_uid: str): finally: session.close() + def update_chat_history(self, chat_history: ChatHistoryEntity): + session = self.get_session() + try: + updated_chat_history = session.merge(chat_history) + session.commit() + return updated_chat_history.id + finally: + session.close() + def delete(self, conv_uid: int): session = self.get_session() if conv_uid is None: @@ -87,3 +109,15 @@ def get_by_uid(self, conv_uid: str) -> ChatHistoryEntity: result = chat_history.first() session.close() return result + + def get_by_uid_and_user(self, conv_uid: str, user_name: str, share_id: str = None): + session = self.get_session() + chat_history = session.query(ChatHistoryEntity) + chat_history = chat_history.filter(ChatHistoryEntity.conv_uid == conv_uid) + if share_id is not None: + chat_history = chat_history.filter(ChatHistoryEntity.share_id == share_id) + else: + chat_history = chat_history.filter(ChatHistoryEntity.user_name == user_name) + result = chat_history.first() + session.close() + return result diff --git a/pilot/memory/chat_history/store_type/meta_db_history.py b/pilot/memory/chat_history/store_type/meta_db_history.py index cdf631229..8570f37a5 100644 --- a/pilot/memory/chat_history/store_type/meta_db_history.py +++ b/pilot/memory/chat_history/store_type/meta_db_history.py @@ -14,7 +14,7 @@ from pilot.memory.chat_history.base import MemoryStoreType CFG = Config() -logger = logging.getLogger("db_chat_history") +logger = logging.getLogger(__name__) class DbHistoryMemory(BaseChatHistoryMemory): @@ -47,9 +47,7 @@ def create(self, chat_mode, summary: str, user_name: str) -> None: logger.error("init create conversation log error!" + str(e)) def append(self, once_message: OnceConversation, user_id: str = None) -> None: - logger.info(f"db history append, chat_mode: {once_message.chat_mode}, messages: {once_message.messages}, start_date: {once_message.start_date}, " \ - f"chat_order: {once_message.chat_order}, model_name: {once_message.model_name}, param_type: {once_message.param_type}, " \ - f"param_value: {once_message.param_value}, cost: {once_message.cost}, tokens: {once_message.tokens}") + logger.debug(f"db history append: {once_message}") chat_history: ChatHistoryEntity = self.chat_history_dao.get_by_uid( self.chat_seesion_id ) diff --git a/pilot/mock_datas/db-gpt-test.db b/pilot/mock_datas/db-gpt-test.db deleted file mode 100644 index 4dd7921b4a2fb673c52b45c22e39bca6fb352772..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1060864 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 "ModelInferenceMetrics": + start_time_ms = last_metrics.start_time_ms if last_metrics else None + first_token_time_ms = last_metrics.first_token_time_ms if last_metrics else None + first_completion_time_ms = ( + last_metrics.first_completion_time_ms if last_metrics else None + ) + first_completion_tokens = ( + last_metrics.first_completion_tokens if last_metrics else None + ) + prompt_tokens = last_metrics.prompt_tokens if last_metrics else None + completion_tokens = last_metrics.completion_tokens if last_metrics else None + total_tokens = last_metrics.total_tokens if last_metrics else None + speed_per_second = last_metrics.speed_per_second if last_metrics else None + current_gpu_infos = last_metrics.current_gpu_infos if last_metrics else None + avg_gpu_infos = last_metrics.avg_gpu_infos if last_metrics else None + + if not start_time_ms: + start_time_ms = time.time_ns() // 1_000_000 + current_time_ms = time.time_ns() // 1_000_000 + end_time_ms = current_time_ms + + return ModelInferenceMetrics( + start_time_ms=start_time_ms, + end_time_ms=end_time_ms, + current_time_ms=current_time_ms, + first_token_time_ms=first_token_time_ms, + first_completion_time_ms=first_completion_time_ms, + first_completion_tokens=first_completion_tokens, + prompt_tokens=prompt_tokens, + completion_tokens=completion_tokens, + total_tokens=total_tokens, + speed_per_second=speed_per_second, + current_gpu_infos=current_gpu_infos, + avg_gpu_infos=avg_gpu_infos, + ) + + def to_dict(self) -> Dict: + return asdict(self) + + @dataclass class ModelOutput: text: str error_code: int model_context: Dict = None + finish_reason: str = None + usage: Dict[str, Any] = None + metrics: Optional[ModelInferenceMetrics] = None + + """Some metrics for model inference""" def to_dict(self) -> Dict: return asdict(self) diff --git a/pilot/model/cli.py b/pilot/model/cli.py index 1030adfc2..79b47db82 100644 --- a/pilot/model/cli.py +++ b/pilot/model/cli.py @@ -8,6 +8,7 @@ from pilot.model.base import WorkerApplyType from pilot.model.parameter import ( ModelControllerParameters, + ModelAPIServerParameters, ModelWorkerParameters, ModelParameters, BaseParameters, @@ -441,15 +442,27 @@ def stop_model_worker(port: int): @click.command(name="apiserver") +@EnvArgumentParser.create_click_option(ModelAPIServerParameters) def start_apiserver(**kwargs): - """Start apiserver(TODO)""" - raise NotImplementedError + """Start apiserver""" + + if kwargs["daemon"]: + log_file = os.path.join(LOGDIR, "model_apiserver_uvicorn.log") + _run_current_with_daemon("ModelAPIServer", log_file) + else: + from pilot.model.cluster import run_apiserver + + run_apiserver() @click.command(name="apiserver") -def stop_apiserver(**kwargs): - """Start apiserver(TODO)""" - raise NotImplementedError +@add_stop_server_options +def stop_apiserver(port: int): + """Stop apiserver""" + name = "ModelAPIServer" + if port: + name = f"{name}-{port}" + _stop_service("apiserver", name, port=port) def _stop_all_model_server(**kwargs): diff --git a/pilot/model/cluster/__init__.py b/pilot/model/cluster/__init__.py index 9937ffa0b..a777a8d4b 100644 --- a/pilot/model/cluster/__init__.py +++ b/pilot/model/cluster/__init__.py @@ -21,6 +21,7 @@ run_model_controller, BaseModelController, ) +from pilot.model.cluster.apiserver.api import run_apiserver from pilot.model.cluster.worker.remote_manager import RemoteWorkerManager @@ -40,4 +41,5 @@ "ModelRegistryClient", "RemoteWorkerManager", "run_model_controller", + "run_apiserver", ] diff --git a/pilot/model/cluster/apiserver/__init__.py b/pilot/model/cluster/apiserver/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pilot/model/cluster/apiserver/api.py b/pilot/model/cluster/apiserver/api.py new file mode 100644 index 000000000..148a51eed --- /dev/null +++ b/pilot/model/cluster/apiserver/api.py @@ -0,0 +1,443 @@ +"""A server that provides OpenAI-compatible RESTful APIs. It supports: +- Chat Completions. (Reference: https://platform.openai.com/docs/api-reference/chat) + +Adapted from https://github.com/lm-sys/FastChat/blob/main/fastchat/serve/openai_api_server.py +""" +from typing import Optional, List, Dict, Any, Generator + +import logging +import asyncio +import shortuuid +import json +from fastapi import APIRouter, FastAPI +from fastapi import Depends, HTTPException +from fastapi.exceptions import RequestValidationError +from fastapi.middleware.cors import CORSMiddleware +from fastapi.responses import StreamingResponse +from fastapi.security.http import HTTPAuthorizationCredentials, HTTPBearer + +from pydantic import BaseSettings + +from fastchat.protocol.openai_api_protocol import ( + ChatCompletionResponse, + ChatCompletionResponseStreamChoice, + ChatCompletionStreamResponse, + ChatMessage, + ChatCompletionResponseChoice, + DeltaMessage, + EmbeddingsRequest, + EmbeddingsResponse, + ErrorResponse, + ModelCard, + ModelList, + ModelPermission, + UsageInfo, +) +from fastchat.protocol.api_protocol import ( + APIChatCompletionRequest, + APITokenCheckRequest, + APITokenCheckResponse, + APITokenCheckResponseItem, +) +from fastchat.serve.openai_api_server import create_error_response, check_requests +from fastchat.constants import ErrorCode + +from pilot.component import BaseComponent, ComponentType, SystemApp +from pilot.utils.parameter_utils import EnvArgumentParser +from pilot.scene.base_message import ModelMessage, ModelMessageRoleType +from pilot.model.base import ModelInstance, ModelOutput +from pilot.model.parameter import ModelAPIServerParameters, WorkerType +from pilot.model.cluster import ModelRegistry, ModelRegistryClient +from pilot.model.cluster.manager_base import WorkerManager, WorkerManagerFactory +from pilot.utils.utils import setup_logging + +logger = logging.getLogger(__name__) + + +class APIServerException(Exception): + def __init__(self, code: int, message: str): + self.code = code + self.message = message + + +class APISettings(BaseSettings): + api_keys: Optional[List[str]] = None + + +api_settings = APISettings() +get_bearer_token = HTTPBearer(auto_error=False) + + +async def check_api_key( + auth: Optional[HTTPAuthorizationCredentials] = Depends(get_bearer_token), +) -> str: + if api_settings.api_keys: + if auth is None or (token := auth.credentials) not in api_settings.api_keys: + raise HTTPException( + status_code=401, + detail={ + "error": { + "message": "", + "type": "invalid_request_error", + "param": None, + "code": "invalid_api_key", + } + }, + ) + return token + else: + # api_keys not set; allow all + return None + + +class APIServer(BaseComponent): + name = ComponentType.MODEL_API_SERVER + + def init_app(self, system_app: SystemApp): + self.system_app = system_app + + def get_worker_manager(self) -> WorkerManager: + """Get the worker manager component instance + + Raises: + APIServerException: If can't get worker manager component instance + """ + worker_manager = self.system_app.get_component( + ComponentType.WORKER_MANAGER_FACTORY, WorkerManagerFactory + ).create() + if not worker_manager: + raise APIServerException( + ErrorCode.INTERNAL_ERROR, + f"Could not get component {ComponentType.WORKER_MANAGER_FACTORY} from system_app", + ) + return worker_manager + + def get_model_registry(self) -> ModelRegistry: + """Get the model registry component instance + + Raises: + APIServerException: If can't get model registry component instance + """ + + controller = self.system_app.get_component( + ComponentType.MODEL_REGISTRY, ModelRegistry + ) + if not controller: + raise APIServerException( + ErrorCode.INTERNAL_ERROR, + f"Could not get component {ComponentType.MODEL_REGISTRY} from system_app", + ) + return controller + + async def get_model_instances_or_raise( + self, model_name: str + ) -> List[ModelInstance]: + """Get healthy model instances with request model name + + Args: + model_name (str): Model name + + Raises: + APIServerException: If can't get healthy model instances with request model name + """ + registry = self.get_model_registry() + registry_model_name = f"{model_name}@llm" + model_instances = await registry.get_all_instances( + registry_model_name, healthy_only=True + ) + if not model_instances: + all_instances = await registry.get_all_model_instances(healthy_only=True) + models = [ + ins.model_name.split("@llm")[0] + for ins in all_instances + if ins.model_name.endswith("@llm") + ] + if models: + models = "&&".join(models) + message = f"Only {models} allowed now, your model {model_name}" + else: + message = f"No models allowed now, your model {model_name}" + raise APIServerException(ErrorCode.INVALID_MODEL, message) + return model_instances + + async def get_available_models(self) -> ModelList: + """Return available models + + Just include LLM and embedding models. + + Returns: + List[ModelList]: The list of models. + """ + registry = self.get_model_registry() + model_instances = await registry.get_all_model_instances(healthy_only=True) + model_name_set = set() + for inst in model_instances: + name, worker_type = WorkerType.parse_worker_key(inst.model_name) + if worker_type == WorkerType.LLM or worker_type == WorkerType.TEXT2VEC: + model_name_set.add(name) + models = list(model_name_set) + models.sort() + # TODO: return real model permission details + model_cards = [] + for m in models: + model_cards.append( + ModelCard( + id=m, root=m, owned_by="DB-GPT", permission=[ModelPermission()] + ) + ) + return ModelList(data=model_cards) + + async def chat_completion_stream_generator( + self, model_name: str, params: Dict[str, Any], n: int + ) -> Generator[str, Any, None]: + """Chat stream completion generator + + Args: + model_name (str): Model name + params (Dict[str, Any]): The parameters pass to model worker + n (int): How many completions to generate for each prompt. + """ + worker_manager = self.get_worker_manager() + id = f"chatcmpl-{shortuuid.random()}" + finish_stream_events = [] + for i in range(n): + # First chunk with role + choice_data = ChatCompletionResponseStreamChoice( + index=i, + delta=DeltaMessage(role="assistant"), + finish_reason=None, + ) + chunk = ChatCompletionStreamResponse( + id=id, choices=[choice_data], model=model_name + ) + yield f"data: {chunk.json(exclude_unset=True, ensure_ascii=False)}\n\n" + + previous_text = "" + async for model_output in worker_manager.generate_stream(params): + model_output: ModelOutput = model_output + if model_output.error_code != 0: + yield f"data: {json.dumps(model_output.to_dict(), ensure_ascii=False)}\n\n" + yield "data: [DONE]\n\n" + return + decoded_unicode = model_output.text.replace("\ufffd", "") + delta_text = decoded_unicode[len(previous_text) :] + previous_text = ( + decoded_unicode + if len(decoded_unicode) > len(previous_text) + else previous_text + ) + + if len(delta_text) == 0: + delta_text = None + choice_data = ChatCompletionResponseStreamChoice( + index=i, + delta=DeltaMessage(content=delta_text), + finish_reason=model_output.finish_reason, + ) + chunk = ChatCompletionStreamResponse( + id=id, choices=[choice_data], model=model_name + ) + if delta_text is None: + if model_output.finish_reason is not None: + finish_stream_events.append(chunk) + continue + yield f"data: {chunk.json(exclude_unset=True, ensure_ascii=False)}\n\n" + # There is not "content" field in the last delta message, so exclude_none to exclude field "content". + for finish_chunk in finish_stream_events: + yield f"data: {finish_chunk.json(exclude_none=True, ensure_ascii=False)}\n\n" + yield "data: [DONE]\n\n" + + async def chat_completion_generate( + self, model_name: str, params: Dict[str, Any], n: int + ) -> ChatCompletionResponse: + """Generate completion + Args: + model_name (str): Model name + params (Dict[str, Any]): The parameters pass to model worker + n (int): How many completions to generate for each prompt. + """ + worker_manager: WorkerManager = self.get_worker_manager() + choices = [] + chat_completions = [] + for i in range(n): + model_output = asyncio.create_task(worker_manager.generate(params)) + chat_completions.append(model_output) + try: + all_tasks = await asyncio.gather(*chat_completions) + except Exception as e: + return create_error_response(ErrorCode.INTERNAL_ERROR, str(e)) + usage = UsageInfo() + for i, model_output in enumerate(all_tasks): + model_output: ModelOutput = model_output + if model_output.error_code != 0: + return create_error_response(model_output.error_code, model_output.text) + choices.append( + ChatCompletionResponseChoice( + index=i, + message=ChatMessage(role="assistant", content=model_output.text), + finish_reason=model_output.finish_reason or "stop", + ) + ) + if model_output.usage: + task_usage = UsageInfo.parse_obj(model_output.usage) + for usage_key, usage_value in task_usage.dict().items(): + setattr(usage, usage_key, getattr(usage, usage_key) + usage_value) + + return ChatCompletionResponse(model=model_name, choices=choices, usage=usage) + + +def get_api_server() -> APIServer: + api_server = global_system_app.get_component( + ComponentType.MODEL_API_SERVER, APIServer, default_component=None + ) + if not api_server: + global_system_app.register(APIServer) + return global_system_app.get_component(ComponentType.MODEL_API_SERVER, APIServer) + + +router = APIRouter() + + +@router.get("/v1/models", dependencies=[Depends(check_api_key)]) +async def get_available_models(api_server: APIServer = Depends(get_api_server)): + return await api_server.get_available_models() + + +@router.post("/v1/chat/completions", dependencies=[Depends(check_api_key)]) +async def create_chat_completion( + request: APIChatCompletionRequest, api_server: APIServer = Depends(get_api_server) +): + await api_server.get_model_instances_or_raise(request.model) + error_check_ret = check_requests(request) + if error_check_ret is not None: + return error_check_ret + params = { + "model": request.model, + "messages": ModelMessage.to_dict_list( + ModelMessage.from_openai_messages(request.messages) + ), + "echo": False, + } + if request.temperature: + params["temperature"] = request.temperature + if request.top_p: + params["top_p"] = request.top_p + if request.max_tokens: + params["max_new_tokens"] = request.max_tokens + if request.stop: + params["stop"] = request.stop + if request.user: + params["user"] = request.user + + # TODO check token length + if request.stream: + generator = api_server.chat_completion_stream_generator( + request.model, params, request.n + ) + return StreamingResponse(generator, media_type="text/event-stream") + return await api_server.chat_completion_generate(request.model, params, request.n) + + +def _initialize_all(controller_addr: str, system_app: SystemApp): + from pilot.model.cluster import RemoteWorkerManager, ModelRegistryClient + from pilot.model.cluster.worker.manager import _DefaultWorkerManagerFactory + + if not system_app.get_component( + ComponentType.MODEL_REGISTRY, ModelRegistry, default_component=None + ): + # Register model registry if not exist + registry = ModelRegistryClient(controller_addr) + registry.name = ComponentType.MODEL_REGISTRY.value + system_app.register_instance(registry) + + registry = system_app.get_component( + ComponentType.MODEL_REGISTRY, ModelRegistry, default_component=None + ) + worker_manager = RemoteWorkerManager(registry) + + # Register worker manager component if not exist + system_app.get_component( + ComponentType.WORKER_MANAGER_FACTORY, + WorkerManagerFactory, + or_register_component=_DefaultWorkerManagerFactory, + worker_manager=worker_manager, + ) + # Register api server component if not exist + system_app.get_component( + ComponentType.MODEL_API_SERVER, APIServer, or_register_component=APIServer + ) + + +def initialize_apiserver( + controller_addr: str, + app=None, + system_app: SystemApp = None, + host: str = None, + port: int = None, + api_keys: List[str] = None, +): + global global_system_app + global api_settings + embedded_mod = True + if not app: + embedded_mod = False + app = FastAPI() + app.add_middleware( + CORSMiddleware, + allow_origins=["*"], + allow_credentials=True, + allow_methods=["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"], + allow_headers=["*"], + ) + + if not system_app: + system_app = SystemApp(app) + global_system_app = system_app + + if api_keys: + api_settings.api_keys = api_keys + + app.include_router(router, prefix="/api", tags=["APIServer"]) + + @app.exception_handler(APIServerException) + async def validation_apiserver_exception_handler(request, exc: APIServerException): + return create_error_response(exc.code, exc.message) + + @app.exception_handler(RequestValidationError) + async def validation_exception_handler(request, exc): + return create_error_response(ErrorCode.VALIDATION_TYPE_ERROR, str(exc)) + + _initialize_all(controller_addr, system_app) + + if not embedded_mod: + import uvicorn + + uvicorn.run(app, host=host, port=port, log_level="info") + + +def run_apiserver(): + parser = EnvArgumentParser() + env_prefix = "apiserver_" + apiserver_params: ModelAPIServerParameters = parser.parse_args_into_dataclass( + ModelAPIServerParameters, + env_prefixes=[env_prefix], + ) + setup_logging( + "pilot", + logging_level=apiserver_params.log_level, + logger_filename=apiserver_params.log_file, + ) + api_keys = None + if apiserver_params.api_keys: + api_keys = apiserver_params.api_keys.strip().split(",") + + initialize_apiserver( + apiserver_params.controller_addr, + host=apiserver_params.host, + port=apiserver_params.port, + api_keys=api_keys, + ) + + +if __name__ == "__main__": + run_apiserver() diff --git a/pilot/model/cluster/apiserver/tests/__init__.py b/pilot/model/cluster/apiserver/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pilot/model/cluster/apiserver/tests/test_api.py b/pilot/model/cluster/apiserver/tests/test_api.py new file mode 100644 index 000000000..281a8aff6 --- /dev/null +++ b/pilot/model/cluster/apiserver/tests/test_api.py @@ -0,0 +1,248 @@ +import pytest +import pytest_asyncio +from aioresponses import aioresponses +from fastapi import FastAPI +from fastapi.middleware.cors import CORSMiddleware +from httpx import AsyncClient, HTTPError + +from pilot.component import SystemApp +from pilot.utils.openai_utils import chat_completion_stream, chat_completion + +from pilot.model.cluster.apiserver.api import ( + api_settings, + initialize_apiserver, + ModelList, + UsageInfo, + ChatCompletionResponse, + ChatCompletionResponseStreamChoice, + ChatCompletionStreamResponse, + ChatMessage, + ChatCompletionResponseChoice, + DeltaMessage, +) +from pilot.model.cluster.tests.conftest import _new_cluster + +from pilot.model.cluster.worker.manager import _DefaultWorkerManagerFactory + +app = FastAPI() +app.add_middleware( + CORSMiddleware, + allow_origins=["*"], + allow_credentials=True, + allow_methods=["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"], + allow_headers=["*"], +) + + +@pytest_asyncio.fixture +async def system_app(): + return SystemApp(app) + + +@pytest_asyncio.fixture +async def client(request, system_app: SystemApp): + param = getattr(request, "param", {}) + api_keys = param.get("api_keys", []) + client_api_key = param.get("client_api_key") + if "num_workers" not in param: + param["num_workers"] = 2 + if "api_keys" in param: + del param["api_keys"] + headers = {} + if client_api_key: + headers["Authorization"] = "Bearer " + client_api_key + print(f"param: {param}") + if api_settings: + # Clear global api keys + api_settings.api_keys = [] + async with AsyncClient(app=app, base_url="http://test", headers=headers) as client: + async with _new_cluster(**param) as cluster: + worker_manager, model_registry = cluster + system_app.register(_DefaultWorkerManagerFactory, worker_manager) + system_app.register_instance(model_registry) + # print(f"Instances {model_registry.registry}") + initialize_apiserver(None, app, system_app, api_keys=api_keys) + yield client + + +@pytest.mark.asyncio +async def test_get_all_models(client: AsyncClient): + res = await client.get("/api/v1/models") + res.status_code == 200 + model_lists = ModelList.parse_obj(res.json()) + print(f"model list json: {res.json()}") + assert model_lists.object == "list" + assert len(model_lists.data) == 2 + + +@pytest.mark.asyncio +@pytest.mark.parametrize( + "client, expected_messages", + [ + ({"stream_messags": ["Hello", " world."]}, "Hello world."), + ({"stream_messags": ["你好,我是", "张三。"]}, "你好,我是张三。"), + ], + indirect=["client"], +) +async def test_chat_completions(client: AsyncClient, expected_messages): + chat_data = { + "model": "test-model-name-0", + "messages": [{"role": "user", "content": "Hello"}], + "stream": True, + } + full_text = "" + async for text in chat_completion_stream( + "/api/v1/chat/completions", chat_data, client + ): + full_text += text + assert full_text == expected_messages + + assert ( + await chat_completion("/api/v1/chat/completions", chat_data, client) + == expected_messages + ) + + +@pytest.mark.asyncio +@pytest.mark.parametrize( + "client, expected_messages, client_api_key", + [ + ( + {"stream_messags": ["Hello", " world."], "api_keys": ["abc"]}, + "Hello world.", + "abc", + ), + ({"stream_messags": ["你好,我是", "张三。"], "api_keys": ["abc"]}, "你好,我是张三。", "abc"), + ], + indirect=["client"], +) +async def test_chat_completions_with_openai_lib_async_no_stream( + client: AsyncClient, expected_messages: str, client_api_key: str +): + import openai + + openai.api_key = client_api_key + openai.api_base = "http://test/api/v1" + + model_name = "test-model-name-0" + + with aioresponses() as mocked: + mock_message = {"text": expected_messages} + one_res = ChatCompletionResponseChoice( + index=0, + message=ChatMessage(role="assistant", content=expected_messages), + finish_reason="stop", + ) + data = ChatCompletionResponse( + model=model_name, choices=[one_res], usage=UsageInfo() + ) + mock_message = f"{data.json(exclude_unset=True, ensure_ascii=False)}\n\n" + # Mock http request + mocked.post( + "http://test/api/v1/chat/completions", status=200, body=mock_message + ) + completion = await openai.ChatCompletion.acreate( + model=model_name, + messages=[{"role": "user", "content": "Hello! What is your name?"}], + ) + assert completion.choices[0].message.content == expected_messages + + +@pytest.mark.asyncio +@pytest.mark.parametrize( + "client, expected_messages, client_api_key", + [ + ( + {"stream_messags": ["Hello", " world."], "api_keys": ["abc"]}, + "Hello world.", + "abc", + ), + ({"stream_messags": ["你好,我是", "张三。"], "api_keys": ["abc"]}, "你好,我是张三。", "abc"), + ], + indirect=["client"], +) +async def test_chat_completions_with_openai_lib_async_stream( + client: AsyncClient, expected_messages: str, client_api_key: str +): + import openai + + openai.api_key = client_api_key + openai.api_base = "http://test/api/v1" + + model_name = "test-model-name-0" + + with aioresponses() as mocked: + mock_message = {"text": expected_messages} + choice_data = ChatCompletionResponseStreamChoice( + index=0, + delta=DeltaMessage(content=expected_messages), + finish_reason="stop", + ) + chunk = ChatCompletionStreamResponse( + id=0, choices=[choice_data], model=model_name + ) + mock_message = f"data: {chunk.json(exclude_unset=True, ensure_ascii=False)}\n\n" + mocked.post( + "http://test/api/v1/chat/completions", + status=200, + body=mock_message, + content_type="text/event-stream", + ) + + stream_stream_resp = "" + async for stream_resp in await openai.ChatCompletion.acreate( + model=model_name, + messages=[{"role": "user", "content": "Hello! What is your name?"}], + stream=True, + ): + stream_stream_resp = stream_resp.choices[0]["delta"].get("content", "") + assert stream_stream_resp == expected_messages + + +@pytest.mark.asyncio +@pytest.mark.parametrize( + "client, expected_messages, api_key_is_error", + [ + ( + { + "stream_messags": ["Hello", " world."], + "api_keys": ["abc", "xx"], + "client_api_key": "abc", + }, + "Hello world.", + False, + ), + ({"stream_messags": ["你好,我是", "张三。"]}, "你好,我是张三。", False), + ( + {"stream_messags": ["你好,我是", "张三。"], "api_keys": ["abc", "xx"]}, + "你好,我是张三。", + True, + ), + ( + { + "stream_messags": ["你好,我是", "张三。"], + "api_keys": ["abc", "xx"], + "client_api_key": "error_api_key", + }, + "你好,我是张三。", + True, + ), + ], + indirect=["client"], +) +async def test_chat_completions_with_api_keys( + client: AsyncClient, expected_messages: str, api_key_is_error: bool +): + chat_data = { + "model": "test-model-name-0", + "messages": [{"role": "user", "content": "Hello"}], + "stream": True, + } + if api_key_is_error: + with pytest.raises(HTTPError): + await chat_completion("/api/v1/chat/completions", chat_data, client) + else: + assert ( + await chat_completion("/api/v1/chat/completions", chat_data, client) + == expected_messages + ) diff --git a/pilot/model/cluster/base.py b/pilot/model/cluster/base.py index 9d22161b1..45e46ab3e 100644 --- a/pilot/model/cluster/base.py +++ b/pilot/model/cluster/base.py @@ -17,8 +17,12 @@ class PromptRequest(BaseModel): temperature: float = None max_new_tokens: int = None stop: str = None + stop_token_ids: List[int] = [] + context_len: int = None echo: bool = True span_id: str = None + metrics: bool = False + """Whether to return metrics of inference""" class EmbeddingsRequest(BaseModel): diff --git a/pilot/model/cluster/controller/controller.py b/pilot/model/cluster/controller/controller.py index 35a91ee3c..0006d91a0 100644 --- a/pilot/model/cluster/controller/controller.py +++ b/pilot/model/cluster/controller/controller.py @@ -13,7 +13,7 @@ _api_remote as api_remote, _sync_api_remote as sync_api_remote, ) -from pilot.utils.utils import setup_logging +from pilot.utils.utils import setup_logging, setup_http_service_logging logger = logging.getLogger(__name__) @@ -66,7 +66,9 @@ async def get_all_instances( f"Get all instances with {model_name}, healthy_only: {healthy_only}" ) if not model_name: - return await self.registry.get_all_model_instances() + return await self.registry.get_all_model_instances( + healthy_only=healthy_only + ) else: return await self.registry.get_all_instances(model_name, healthy_only) @@ -98,8 +100,10 @@ async def send_heartbeat(self, instance: ModelInstance) -> bool: class ModelRegistryClient(_RemoteModelController, ModelRegistry): - async def get_all_model_instances(self) -> List[ModelInstance]: - return await self.get_all_instances() + async def get_all_model_instances( + self, healthy_only: bool = False + ) -> List[ModelInstance]: + return await self.get_all_instances(healthy_only=healthy_only) @sync_api_remote(path="/api/controller/models") def sync_get_all_instances( @@ -149,6 +153,7 @@ def initialize_controller( else: import uvicorn + setup_http_service_logging() app = FastAPI() app.include_router(router, prefix="/api", tags=["Model"]) uvicorn.run(app, host=host, port=port, log_level="info") @@ -179,7 +184,8 @@ def run_model_controller(): parser = EnvArgumentParser() env_prefix = "controller_" controller_params: ModelControllerParameters = parser.parse_args_into_dataclass( - ModelControllerParameters, env_prefix=env_prefix + ModelControllerParameters, + env_prefixes=[env_prefix], ) setup_logging( diff --git a/pilot/model/cluster/registry.py b/pilot/model/cluster/registry.py index 398882eb9..eb5f1e415 100644 --- a/pilot/model/cluster/registry.py +++ b/pilot/model/cluster/registry.py @@ -1,22 +1,37 @@ import random import threading import time +import logging from abc import ABC, abstractmethod from collections import defaultdict from datetime import datetime, timedelta -from typing import Dict, List, Tuple +from typing import Dict, List, Optional, Tuple import itertools +from pilot.component import BaseComponent, ComponentType, SystemApp from pilot.model.base import ModelInstance -class ModelRegistry(ABC): +logger = logging.getLogger(__name__) + + +class ModelRegistry(BaseComponent, ABC): """ Abstract base class for a model registry. It provides an interface for registering, deregistering, fetching instances, and sending heartbeats for instances. """ + name = ComponentType.MODEL_REGISTRY + + def __init__(self, system_app: SystemApp | None = None): + self.system_app = system_app + super().__init__(system_app) + + def init_app(self, system_app: SystemApp): + """Initialize the component with the main application.""" + self.system_app = system_app + @abstractmethod async def register_instance(self, instance: ModelInstance) -> bool: """ @@ -65,9 +80,11 @@ def sync_get_all_instances( """Fetch all instances of a given model. Optionally, fetch only the healthy instances.""" @abstractmethod - async def get_all_model_instances(self) -> List[ModelInstance]: + async def get_all_model_instances( + self, healthy_only: bool = False + ) -> List[ModelInstance]: """ - Fetch all instances of all models + Fetch all instances of all models, Optionally, fetch only the healthy instances. Returns: - List[ModelInstance]: A list of instances for the all models. @@ -105,8 +122,12 @@ async def send_heartbeat(self, instance: ModelInstance) -> bool: class EmbeddedModelRegistry(ModelRegistry): def __init__( - self, heartbeat_interval_secs: int = 60, heartbeat_timeout_secs: int = 120 + self, + system_app: SystemApp | None = None, + heartbeat_interval_secs: int = 60, + heartbeat_timeout_secs: int = 120, ): + super().__init__(system_app) self.registry: Dict[str, List[ModelInstance]] = defaultdict(list) self.heartbeat_interval_secs = heartbeat_interval_secs self.heartbeat_timeout_secs = heartbeat_timeout_secs @@ -180,9 +201,14 @@ def sync_get_all_instances( instances = [ins for ins in instances if ins.healthy == True] return instances - async def get_all_model_instances(self) -> List[ModelInstance]: - print(self.registry) - return list(itertools.chain(*self.registry.values())) + async def get_all_model_instances( + self, healthy_only: bool = False + ) -> List[ModelInstance]: + logger.debug("Current registry metadata:\n{self.registry}") + instances = list(itertools.chain(*self.registry.values())) + if healthy_only: + instances = [ins for ins in instances if ins.healthy == True] + return instances async def send_heartbeat(self, instance: ModelInstance) -> bool: _, exist_ins = self._get_instances( diff --git a/pilot/model/cluster/tests/__init__.py b/pilot/model/cluster/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pilot/model/cluster/worker/tests/base_tests.py b/pilot/model/cluster/tests/conftest.py similarity index 71% rename from pilot/model/cluster/worker/tests/base_tests.py rename to pilot/model/cluster/tests/conftest.py index 21821d9f9..f614387ac 100644 --- a/pilot/model/cluster/worker/tests/base_tests.py +++ b/pilot/model/cluster/tests/conftest.py @@ -6,6 +6,7 @@ from pilot.model.base import ModelOutput from pilot.model.cluster.worker_base import ModelWorker from pilot.model.cluster.worker.manager import ( + WorkerManager, LocalWorkerManager, RegisterFunc, DeregisterFunc, @@ -13,6 +14,23 @@ ApplyFunction, ) +from pilot.model.base import ModelInstance +from pilot.model.cluster.registry import ModelRegistry, EmbeddedModelRegistry + + +@pytest.fixture +def model_registry(request): + return EmbeddedModelRegistry() + + +@pytest.fixture +def model_instance(): + return ModelInstance( + model_name="test_model", + host="192.168.1.1", + port=5000, + ) + class MockModelWorker(ModelWorker): def __init__( @@ -51,8 +69,10 @@ def stop(self) -> None: raise Exception("Stop worker error for mock") def generate_stream(self, params: Dict) -> Iterator[ModelOutput]: + full_text = "" for msg in self.stream_messags: - yield ModelOutput(text=msg, error_code=0) + full_text += msg + yield ModelOutput(text=full_text, error_code=0) def generate(self, params: Dict) -> ModelOutput: output = None @@ -67,6 +87,8 @@ def embeddings(self, params: Dict) -> List[List[float]]: _TEST_MODEL_NAME = "vicuna-13b-v1.5" _TEST_MODEL_PATH = "/app/models/vicuna-13b-v1.5" +ClusterType = Tuple[WorkerManager, ModelRegistry] + def _new_worker_params( model_name: str = _TEST_MODEL_NAME, @@ -85,7 +107,9 @@ def _create_workers( worker_type: str = WorkerType.LLM.value, stream_messags: List[str] = None, embeddings: List[List[float]] = None, -) -> List[Tuple[ModelWorker, ModelWorkerParameters]]: + host: str = "127.0.0.1", + start_port=8001, +) -> List[Tuple[ModelWorker, ModelWorkerParameters, ModelInstance]]: workers = [] for i in range(num_workers): model_name = f"test-model-name-{i}" @@ -98,10 +122,16 @@ def _create_workers( stream_messags=stream_messags, embeddings=embeddings, ) + model_instance = ModelInstance( + model_name=WorkerType.to_worker_key(model_name, worker_type), + host=host, + port=start_port + i, + healthy=True, + ) worker_params = _new_worker_params( model_name, model_path, worker_type=worker_type ) - workers.append((worker, worker_params)) + workers.append((worker, worker_params, model_instance)) return workers @@ -127,12 +157,12 @@ async def _start_worker_manager(**kwargs): model_registry=model_registry, ) - for worker, worker_params in _create_workers( + for worker, worker_params, model_instance in _create_workers( num_workers, error_worker, stop_error, stream_messags, embeddings ): worker_manager.add_worker(worker, worker_params) if workers: - for worker, worker_params in workers: + for worker, worker_params, model_instance in workers: worker_manager.add_worker(worker, worker_params) if start: @@ -143,6 +173,15 @@ async def _start_worker_manager(**kwargs): await worker_manager.stop() +async def _create_model_registry( + workers: List[Tuple[ModelWorker, ModelWorkerParameters, ModelInstance]] +) -> ModelRegistry: + registry = EmbeddedModelRegistry() + for _, _, inst in workers: + assert await registry.register_instance(inst) == True + return registry + + @pytest_asyncio.fixture async def manager_2_workers(request): param = getattr(request, "param", {}) @@ -166,3 +205,27 @@ async def manager_2_embedding_workers(request): ) async with _start_worker_manager(workers=workers, **param) as worker_manager: yield (worker_manager, workers) + + +@asynccontextmanager +async def _new_cluster(**kwargs) -> ClusterType: + num_workers = kwargs.get("num_workers", 0) + workers = _create_workers( + num_workers, stream_messags=kwargs.get("stream_messags", []) + ) + if "num_workers" in kwargs: + del kwargs["num_workers"] + registry = await _create_model_registry( + workers, + ) + async with _start_worker_manager(workers=workers, **kwargs) as worker_manager: + yield (worker_manager, registry) + + +@pytest_asyncio.fixture +async def cluster_2_workers(request): + param = getattr(request, "param", {}) + workers = _create_workers(2) + registry = await _create_model_registry(workers) + async with _start_worker_manager(workers=workers, **param) as worker_manager: + yield (worker_manager, registry) diff --git a/pilot/model/cluster/worker/default_worker.py b/pilot/model/cluster/worker/default_worker.py index 04b47cbdb..89d064bcf 100644 --- a/pilot/model/cluster/worker/default_worker.py +++ b/pilot/model/cluster/worker/default_worker.py @@ -1,14 +1,17 @@ import os import logging -from typing import Dict, Iterator, List + +from typing import Dict, Iterator, List, Optional +import time +import traceback from pilot.configs.model_config import get_device from pilot.model.model_adapter import get_llm_model_adapter, LLMModelAdaper -from pilot.model.base import ModelOutput +from pilot.model.base import ModelOutput, ModelInferenceMetrics from pilot.model.loader import ModelLoader, _get_model_real_path from pilot.model.parameter import ModelParameters from pilot.model.cluster.worker_base import ModelWorker -from pilot.utils.model_utils import _clear_model_cache +from pilot.utils.model_utils import _clear_model_cache, _get_current_cuda_memory from pilot.utils.parameter_utils import EnvArgumentParser, _get_dict_from_obj from pilot.utils.tracer import root_tracer, SpanType, SpanTypeRunName from pilot.utils.system_utils import get_system_info @@ -60,7 +63,7 @@ def load_worker(self, model_name: str, model_path: str, **kwargs) -> None: self.ml: ModelLoader = ModelLoader( model_path=self.model_path, model_name=self.model_name ) - # TODO read context len from model config + # Default model context len self.context_len = 2048 def model_param_class(self) -> ModelParameters: @@ -76,7 +79,7 @@ def parse_parameters(self, command_args: List[str] = None) -> ModelParameters: model_type = self.llm_adapter.model_type() model_params: ModelParameters = model_args.parse_args_into_dataclass( param_cls, - env_prefix=env_prefix, + env_prefixes=[env_prefix, "LLM_"], command_args=command_args, model_name=self.model_name, model_path=self.model_path, @@ -111,6 +114,12 @@ def start( self.model, self.tokenizer = self.ml.loader_with_params( model_params, self.llm_adapter ) + model_max_length = _parse_model_max_length(self.model, self.tokenizer) + if model_max_length: + logger.info( + f"Parse model max length {model_max_length} from model {self.model_name}." + ) + self.context_len = model_max_length def stop(self) -> None: if not self.model: @@ -138,14 +147,29 @@ def generate_stream(self, params: Dict) -> Iterator[ModelOutput]: ) previous_response = "" + last_metrics = ModelInferenceMetrics.create_metrics() + is_first_generate = True + context_len = params.get("context_len") or self.context_len for output in generate_stream_func( - self.model, self.tokenizer, params, get_device(), self.context_len + self.model, self.tokenizer, params, get_device(), context_len ): - model_output, incremental_output, output_str = self._handle_output( - output, previous_response, model_context + ( + model_output, + incremental_output, + output_str, + current_metrics, + ) = self._handle_output( + output, + previous_response, + model_context, + last_metrics, + is_first_generate, ) + if is_first_generate: + is_first_generate = False previous_response = output_str + last_metrics = current_metrics yield model_output print( f"\n\nfull stream output:\n{previous_response}\n\nmodel generate_stream params:\n{params}" @@ -183,14 +207,30 @@ async def async_generate_stream(self, params: Dict) -> Iterator[ModelOutput]: ) previous_response = "" + context_len = params.get("context_len") or self.context_len + last_metrics = ModelInferenceMetrics.create_metrics() + is_first_generate = True async for output in generate_stream_func( - self.model, self.tokenizer, params, get_device(), self.context_len + self.model, self.tokenizer, params, get_device(), context_len ): - model_output, incremental_output, output_str = self._handle_output( - output, previous_response, model_context + ( + model_output, + incremental_output, + output_str, + current_metrics, + ) = self._handle_output( + output, + previous_response, + model_context, + last_metrics, + is_first_generate, ) + if is_first_generate: + is_first_generate = False + previous_response = output_str + last_metrics = current_metrics yield model_output print( f"\n\nfull stream output:\n{previous_response}\n\nmodel generate_stream params:\n{params}" @@ -213,6 +253,7 @@ def _prepare_generate_stream(self, params: Dict, span_operation_name: str): params, self.model_name, self.model_path, + self.tokenizer, prompt_template=self.ml.prompt_template, ) stream_type = "" @@ -229,7 +270,9 @@ def _prepare_generate_stream(self, params: Dict, span_operation_name: str): self.model, self.model_path ) str_prompt = params.get("prompt") - print(f"model prompt: \n\n{str_prompt}\n\n{stream_type}stream output:\n") + print( + f"llm_adapter: {str(self.llm_adapter)}\n\nmodel prompt: \n\n{str_prompt}\n\n{stream_type}stream output:\n" + ) generate_stream_func_str_name = "{}.{}".format( generate_stream_func.__module__, generate_stream_func.__name__ @@ -255,28 +298,141 @@ def _prepare_generate_stream(self, params: Dict, span_operation_name: str): return params, model_context, generate_stream_func, model_span - def _handle_output(self, output, previous_response, model_context): + def _handle_output( + self, + output, + previous_response, + model_context, + last_metrics: ModelInferenceMetrics, + is_first_generate: bool, + ): + finish_reason = None + usage = None if isinstance(output, dict): finish_reason = output.get("finish_reason") + usage = output.get("usage") output = output["text"] if finish_reason is not None: logger.info(f"finish_reason: {finish_reason}") incremental_output = output[len(previous_response) :] print(incremental_output, end="", flush=True) + + metrics = _new_metrics_from_model_output(last_metrics, is_first_generate, usage) model_output = ModelOutput( - text=output, error_code=0, model_context=model_context + text=output, + error_code=0, + model_context=model_context, + finish_reason=finish_reason, + usage=usage, + metrics=metrics, ) - return model_output, incremental_output, output + return model_output, incremental_output, output, metrics def _handle_exception(self, e): # Check if the exception is a torch.cuda.CudaError and if torch was imported. if _torch_imported and isinstance(e, torch.cuda.CudaError): model_output = ModelOutput( - text="**GPU OutOfMemory, Please Refresh.**", error_code=0 + text="**GPU OutOfMemory, Please Refresh.**", error_code=1 ) else: + msg = traceback.format_exc() + logger.error(f"Model inference error, detail: {msg}") model_output = ModelOutput( text=f"**LLMServer Generate Error, Please CheckErrorInfo.**: {e}", - error_code=0, + error_code=1, ) return model_output + + +def _parse_model_max_length(model, tokenizer) -> Optional[int]: + if not (tokenizer or model): + return None + try: + if tokenizer and hasattr(tokenizer, "model_max_length"): + return tokenizer.model_max_length + if model and hasattr(model, "config"): + model_config = model.config + if hasattr(model_config, "max_sequence_length"): + return model_config.max_sequence_length + if hasattr(model_config, "max_position_embeddings"): + return model_config.max_position_embeddings + except Exception: + return None + + +def _new_metrics_from_model_output( + last_metric: ModelInferenceMetrics, + is_first_generate: bool, + usage: Optional[Dict] = None, +) -> ModelInferenceMetrics: + metrics = ModelInferenceMetrics.create_metrics(last_metric) + metrics.collect_index = last_metric.collect_index + 1 + if is_first_generate: + logger.info(f"is_first_generate, usage: {usage}") + metrics.first_completion_time_ms = time.time_ns() // 1_000_000 + + if not usage or not isinstance(usage, dict): + return metrics + prompt_tokens = usage.get("prompt_tokens") + completion_tokens = usage.get("completion_tokens") + total_tokens = usage.get("total_tokens") + + if prompt_tokens is None: + prompt_tokens = metrics.prompt_tokens + if completion_tokens is None: + completion_tokens = metrics.completion_tokens + if total_tokens is None: + total_tokens = metrics.total_tokens + + if is_first_generate and (completion_tokens is not None): + # completion_tokens == 0 is prefill + metrics.first_completion_tokens = completion_tokens + if completion_tokens == 1: + metrics.first_token_time_ms = metrics.first_completion_time_ms + if ( + not is_first_generate + and metrics.first_token_time_ms is None + and completion_tokens == 1 + ): + # Case: first generate has 0 token, and second generate has 1 token + metrics.first_token_time_ms = time.time_ns() // 1_000_000 + + if prompt_tokens: + metrics.prompt_tokens = prompt_tokens + if completion_tokens: + metrics.completion_tokens = completion_tokens + if total_tokens: + metrics.total_tokens = total_tokens + elif prompt_tokens and completion_tokens: + total_tokens = prompt_tokens + completion_tokens + metrics.total_tokens = total_tokens + + if total_tokens: + # time cost(seconds) + duration = (metrics.current_time_ms - metrics.start_time_ms) / 1000.0 + metrics.speed_per_second = total_tokens / duration + + current_gpu_infos = _get_current_cuda_memory() + metrics.current_gpu_infos = current_gpu_infos + if not metrics.avg_gpu_infos: + metrics.avg_gpu_infos = current_gpu_infos + elif current_gpu_infos: + for i, last_avg in enumerate(metrics.avg_gpu_infos): + allocated_memory_gb = ( + last_avg.allocated_memory_gb * (metrics.collect_index - 1) + + current_gpu_infos[i].allocated_memory_gb + ) + metrics.avg_gpu_infos[i].allocated_memory_gb = ( + allocated_memory_gb / metrics.collect_index + ) + metrics.avg_gpu_infos[i].total_memory_gb = current_gpu_infos[ + i + ].total_memory_gb + metrics.avg_gpu_infos[i].cached_memory_gb = current_gpu_infos[ + i + ].cached_memory_gb + metrics.avg_gpu_infos[i].available_memory_gb = current_gpu_infos[ + i + ].available_memory_gb + + return metrics diff --git a/pilot/model/cluster/worker/embedding_worker.py b/pilot/model/cluster/worker/embedding_worker.py index 62b799864..22c644034 100644 --- a/pilot/model/cluster/worker/embedding_worker.py +++ b/pilot/model/cluster/worker/embedding_worker.py @@ -106,7 +106,7 @@ def _parse_embedding_params( env_prefix = EnvArgumentParser.get_env_prefix(model_name) model_params: BaseEmbeddingModelParameters = model_args.parse_args_into_dataclass( param_cls, - env_prefix=env_prefix, + env_prefixes=[env_prefix], command_args=command_args, model_name=model_name, model_path=model_path, diff --git a/pilot/model/cluster/worker/manager.py b/pilot/model/cluster/worker/manager.py index cc5ef97d6..9c1c4f7b3 100644 --- a/pilot/model/cluster/worker/manager.py +++ b/pilot/model/cluster/worker/manager.py @@ -38,7 +38,7 @@ _dict_to_command_args, _get_dict_from_obj, ) -from pilot.utils.utils import setup_logging +from pilot.utils.utils import setup_logging, setup_http_service_logging from pilot.utils.tracer import initialize_tracer, root_tracer, SpanType, SpanTypeRunName from pilot.utils.system_utils import get_system_info @@ -99,9 +99,7 @@ def __init__( ) def _worker_key(self, worker_type: str, model_name: str) -> str: - if isinstance(worker_type, WorkerType): - worker_type = worker_type.value - return f"{model_name}@{worker_type}" + return WorkerType.to_worker_key(model_name, worker_type) async def run_blocking_func(self, func, *args): if asyncio.iscoroutinefunction(func): @@ -121,7 +119,10 @@ async def start(self): _async_heartbeat_sender(self.run_data, 20, self.send_heartbeat_func) ) for listener in self.start_listeners: - listener(self) + if asyncio.iscoroutinefunction(listener): + await listener(self) + else: + listener(self) async def stop(self, ignore_exception: bool = False): if not self.run_data.stop_event.is_set(): @@ -327,7 +328,7 @@ async def generate_stream( except Exception as e: yield ModelOutput( text=f"**LLMServer Generate Error, Please CheckErrorInfo.**: {e}", - error_code=0, + error_code=1, ) return async with worker_run_data.semaphore: @@ -357,7 +358,7 @@ async def generate(self, params: Dict) -> ModelOutput: except Exception as e: return ModelOutput( text=f"**LLMServer Generate Error, Please CheckErrorInfo.**: {e}", - error_code=0, + error_code=1, ) async with worker_run_data.semaphore: if worker_run_data.worker.support_async(): @@ -735,6 +736,8 @@ def _setup_fastapi( ): if not app: app = FastAPI() + setup_http_service_logging() + if worker_params.standalone: from pilot.model.cluster.controller.controller import initialize_controller from pilot.model.cluster.controller.controller import ( @@ -781,7 +784,7 @@ def _parse_worker_params( env_prefix = EnvArgumentParser.get_env_prefix(model_name) worker_params: ModelWorkerParameters = worker_args.parse_args_into_dataclass( ModelWorkerParameters, - env_prefix=env_prefix, + env_prefixes=[env_prefix], model_name=model_name, model_path=model_path, **kwargs, @@ -790,7 +793,7 @@ def _parse_worker_params( # Read parameters agein with prefix of model name. new_worker_params = worker_args.parse_args_into_dataclass( ModelWorkerParameters, - env_prefix=env_prefix, + env_prefixes=[env_prefix], model_name=worker_params.model_name, model_path=worker_params.model_path, **kwargs, @@ -996,11 +999,17 @@ def run_worker_manager( port: int = None, embedding_model_name: str = None, embedding_model_path: str = None, + start_listener: Callable[["WorkerManager"], None] = None, + **kwargs, ): global worker_manager worker_params: ModelWorkerParameters = _parse_worker_params( - model_name=model_name, model_path=model_path, standalone=standalone, port=port + model_name=model_name, + model_path=model_path, + standalone=standalone, + port=port, + **kwargs, ) setup_logging( @@ -1021,6 +1030,7 @@ def run_worker_manager( system_app, os.path.join(LOGDIR, worker_params.tracer_file), root_operation_name="DB-GPT-WorkerManager-Entry", + tracer_storage_cls=worker_params.tracer_storage_cls, ) _start_local_worker(worker_manager, worker_params) @@ -1028,6 +1038,8 @@ def run_worker_manager( worker_manager, embedding_model_name, embedding_model_path ) + worker_manager.after_start(start_listener) + if include_router: app.include_router(router, prefix="/api") diff --git a/pilot/model/cluster/worker/remote_manager.py b/pilot/model/cluster/worker/remote_manager.py index 61b608cc7..4047f428e 100644 --- a/pilot/model/cluster/worker/remote_manager.py +++ b/pilot/model/cluster/worker/remote_manager.py @@ -15,7 +15,10 @@ def __init__(self, model_registry: ModelRegistry = None) -> None: async def start(self): for listener in self.start_listeners: - listener(self) + if asyncio.iscoroutinefunction(listener): + await listener(self) + else: + listener(self) async def stop(self, ignore_exception: bool = False): pass diff --git a/pilot/model/cluster/worker/remote_worker.py b/pilot/model/cluster/worker/remote_worker.py index f974ba714..80898abdf 100644 --- a/pilot/model/cluster/worker/remote_worker.py +++ b/pilot/model/cluster/worker/remote_worker.py @@ -13,7 +13,7 @@ class RemoteModelWorker(ModelWorker): def __init__(self) -> None: self.headers = {} # TODO Configured by ModelParameters - self.timeout = 180 + self.timeout = 3600 self.host = None self.port = None diff --git a/pilot/model/cluster/worker/tests/test_manager.py b/pilot/model/cluster/worker/tests/test_manager.py index 919e64f99..681fb49a3 100644 --- a/pilot/model/cluster/worker/tests/test_manager.py +++ b/pilot/model/cluster/worker/tests/test_manager.py @@ -3,7 +3,7 @@ from typing import List, Iterator, Dict, Tuple from dataclasses import asdict from pilot.model.parameter import ModelParameters, ModelWorkerParameters, WorkerType -from pilot.model.base import ModelOutput, WorkerApplyType +from pilot.model.base import ModelOutput, WorkerApplyType, ModelInstance from pilot.model.cluster.base import WorkerApplyRequest, WorkerStartupRequest from pilot.model.cluster.worker_base import ModelWorker from pilot.model.cluster.manager_base import WorkerRunData @@ -14,7 +14,7 @@ SendHeartbeatFunc, ApplyFunction, ) -from pilot.model.cluster.worker.tests.base_tests import ( +from pilot.model.cluster.tests.conftest import ( MockModelWorker, manager_2_workers, manager_with_2_workers, @@ -216,7 +216,7 @@ async def test__remove_worker(): workers = _create_workers(3) async with _start_worker_manager(workers=workers, stop=False) as manager: assert len(manager.workers) == 3 - for _, worker_params in workers: + for _, worker_params, _ in workers: manager._remove_worker(worker_params) not_exist_parmas = _new_worker_params( model_name="this is a not exist worker params" @@ -229,7 +229,7 @@ async def test__remove_worker(): async def test_model_startup(mock_build_worker): async with _start_worker_manager() as manager: workers = _create_workers(1) - worker, worker_params = workers[0] + worker, worker_params, model_instance = workers[0] mock_build_worker.return_value = worker req = WorkerStartupRequest( @@ -245,7 +245,7 @@ async def test_model_startup(mock_build_worker): async with _start_worker_manager() as manager: workers = _create_workers(1, error_worker=True) - worker, worker_params = workers[0] + worker, worker_params, model_instance = workers[0] mock_build_worker.return_value = worker req = WorkerStartupRequest( host="127.0.0.1", @@ -263,7 +263,7 @@ async def test_model_startup(mock_build_worker): async def test_model_shutdown(mock_build_worker): async with _start_worker_manager(start=False, stop=False) as manager: workers = _create_workers(1) - worker, worker_params = workers[0] + worker, worker_params, model_instance = workers[0] mock_build_worker.return_value = worker req = WorkerStartupRequest( @@ -298,7 +298,7 @@ async def test_get_model_instances(is_async): workers = _create_workers(3) async with _start_worker_manager(workers=workers, stop=False) as manager: assert len(manager.workers) == 3 - for _, worker_params in workers: + for _, worker_params, _ in workers: model_name = worker_params.model_name worker_type = worker_params.worker_type if is_async: @@ -326,7 +326,7 @@ async def test__simple_select( ] ): manager, workers = manager_with_2_workers - for _, worker_params in workers: + for _, worker_params, _ in workers: model_name = worker_params.model_name worker_type = worker_params.worker_type instances = await manager.get_model_instances(worker_type, model_name) @@ -351,7 +351,7 @@ async def test_select_one_instance( ], ): manager, workers = manager_with_2_workers - for _, worker_params in workers: + for _, worker_params, _ in workers: model_name = worker_params.model_name worker_type = worker_params.worker_type if is_async: @@ -376,7 +376,7 @@ async def test__get_model( ], ): manager, workers = manager_with_2_workers - for _, worker_params in workers: + for _, worker_params, _ in workers: model_name = worker_params.model_name worker_type = worker_params.worker_type params = {"model": model_name} @@ -403,13 +403,13 @@ async def test_generate_stream( expected_messages: str, ): manager, workers = manager_with_2_workers - for _, worker_params in workers: + for _, worker_params, _ in workers: model_name = worker_params.model_name worker_type = worker_params.worker_type params = {"model": model_name} text = "" async for out in manager.generate_stream(params): - text += out.text + text = out.text assert text == expected_messages @@ -417,8 +417,8 @@ async def test_generate_stream( @pytest.mark.parametrize( "manager_with_2_workers, expected_messages", [ - ({"stream_messags": ["Hello", " world."]}, " world."), - ({"stream_messags": ["你好,我是", "张三。"]}, "张三。"), + ({"stream_messags": ["Hello", " world."]}, "Hello world."), + ({"stream_messags": ["你好,我是", "张三。"]}, "你好,我是张三。"), ], indirect=["manager_with_2_workers"], ) @@ -429,7 +429,7 @@ async def test_generate( expected_messages: str, ): manager, workers = manager_with_2_workers - for _, worker_params in workers: + for _, worker_params, _ in workers: model_name = worker_params.model_name worker_type = worker_params.worker_type params = {"model": model_name} @@ -454,7 +454,7 @@ async def test_embeddings( is_async: bool, ): manager, workers = manager_2_embedding_workers - for _, worker_params in workers: + for _, worker_params, _ in workers: model_name = worker_params.model_name worker_type = worker_params.worker_type params = {"model": model_name, "input": ["hello", "world"]} @@ -472,7 +472,7 @@ async def test_parameter_descriptions( ] ): manager, workers = manager_with_2_workers - for _, worker_params in workers: + for _, worker_params, _ in workers: model_name = worker_params.model_name worker_type = worker_params.worker_type params = await manager.parameter_descriptions(worker_type, model_name) diff --git a/pilot/model/conversation.py b/pilot/model/conversation.py index b3674e946..5d4309d9f 100644 --- a/pilot/model/conversation.py +++ b/pilot/model/conversation.py @@ -339,6 +339,27 @@ def get_conv_template(name: str) -> Conversation: ) ) + +# codellama template +# reference: https://github.com/facebookresearch/llama/blob/cfc3fc8c1968d390eb830e65c63865e980873a06/llama/generation.py#L212 +# reference2 : https://github.com/eosphoros-ai/DB-GPT-Hub/blob/main/README.zh.md +register_conv_template( + Conversation( + name="codellama", + system="[INST] <>\nI want you to act as a SQL terminal in front of an example database, you need only to return the sql command to me.Below is an instruction that describes a task, Write a response that appropriately completes the request." + "If you don't know the answer to the request, please don't share false information.\n<>\n\n", + roles=("[INST]", "[/INST]"), + messages=(), + offset=0, + sep_style=SeparatorStyle.LLAMA2, + sep=" ", + sep2=" ", + stop_token_ids=[2], + system_formatter=lambda msg: f"[INST] <>\n{msg}\n<>\n\n", + ) +) + + # Alpaca default template register_conv_template( Conversation( diff --git a/pilot/model/llm_out/hf_chat_llm.py b/pilot/model/llm_out/hf_chat_llm.py new file mode 100644 index 000000000..570b20b09 --- /dev/null +++ b/pilot/model/llm_out/hf_chat_llm.py @@ -0,0 +1,54 @@ +import logging +import torch +from threading import Thread +from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer +from pilot.scene.base_message import ModelMessage, ModelMessageRoleType + +logger = logging.getLogger(__name__) + + +@torch.inference_mode() +def huggingface_chat_generate_stream( + model: AutoModelForCausalLM, + tokenizer: AutoTokenizer, + params, + device, + context_len=4096, +): + prompt = params["prompt"] + temperature = float(params.get("temperature", 0.7)) + top_p = float(params.get("top_p", 1.0)) + echo = params.get("echo", False) + max_new_tokens = int(params.get("max_new_tokens", 2048)) + + input_ids = tokenizer(prompt).input_ids + # input_ids = input_ids.to(device) + if model.config.is_encoder_decoder: + max_src_len = context_len + else: # truncate + max_src_len = context_len - max_new_tokens - 1 + input_ids = input_ids[-max_src_len:] + input_echo_len = len(input_ids) + input_ids = torch.as_tensor([input_ids], device=device) + + # messages = params["messages"] + # messages = ModelMessage.to_openai_messages(messages) + # input_ids = tokenizer.apply_chat_template(conversation=messages, tokenize=True, add_generation_prompt=True, return_tensors='pt') + # input_ids = input_ids.to(device) + + streamer = TextIteratorStreamer( + tokenizer, skip_prompt=not echo, skip_special_tokens=True + ) + generate_kwargs = { + "input_ids": input_ids, + "max_length": context_len, + "temperature": temperature, + "streamer": streamer, + } + + thread = Thread(target=model.generate, kwargs=generate_kwargs) + thread.start() + out = "" + for new_text in streamer: + out += new_text + yield out diff --git a/pilot/model/llm_out/vllm_llm.py b/pilot/model/llm_out/vllm_llm.py index 07d43dc74..de108c87c 100644 --- a/pilot/model/llm_out/vllm_llm.py +++ b/pilot/model/llm_out/vllm_llm.py @@ -1,9 +1,13 @@ from typing import Dict +import os from vllm import AsyncLLMEngine from vllm.utils import random_uuid from vllm.sampling_params import SamplingParams +_IS_BENCHMARK = os.getenv("DB_GPT_MODEL_BENCHMARK", "False").lower() == "true" + + async def generate_stream( model: AsyncLLMEngine, tokenizer, params: Dict, device: str, context_len: int ): @@ -37,15 +41,29 @@ async def generate_stream( top_p = max(top_p, 1e-5) if temperature <= 1e-5: top_p = 1.0 + gen_params = { + "stop": list(stop), + "ignore_eos": False, + } + prompt_token_ids = None + if _IS_BENCHMARK: + gen_params["stop"] = [] + gen_params["ignore_eos"] = True + prompt_len = context_len - max_new_tokens - 2 + prompt_token_ids = tokenizer([prompt]).input_ids[0] + prompt_token_ids = prompt_token_ids[-prompt_len:] sampling_params = SamplingParams( n=1, temperature=temperature, top_p=top_p, use_beam_search=False, - stop=list(stop), max_tokens=max_new_tokens, + **gen_params + ) + + results_generator = model.generate( + prompt, sampling_params, request_id, prompt_token_ids=prompt_token_ids ) - results_generator = model.generate(prompt, sampling_params, request_id) async for request_output in results_generator: prompt = request_output.prompt if echo: @@ -53,4 +71,25 @@ async def generate_stream( else: text_outputs = [output.text for output in request_output.outputs] text_outputs = " ".join(text_outputs) - yield {"text": text_outputs, "error_code": 0, "usage": {}} + + # Note: usage is not supported yet + prompt_tokens = len(request_output.prompt_token_ids) + completion_tokens = sum( + len(output.token_ids) for output in request_output.outputs + ) + usage = { + "prompt_tokens": prompt_tokens, + "completion_tokens": completion_tokens, + "total_tokens": prompt_tokens + completion_tokens, + } + finish_reason = ( + request_output.outputs[0].finish_reason + if len(request_output.outputs) == 1 + else [output.finish_reason for output in request_output.outputs] + ) + yield { + "text": text_outputs, + "error_code": 0, + "usage": usage, + "finish_reason": finish_reason, + } diff --git a/pilot/model/loader.py b/pilot/model/loader.py index 2f5f10c2d..b7cf57815 100644 --- a/pilot/model/loader.py +++ b/pilot/model/loader.py @@ -95,7 +95,7 @@ def loader( env_prefix = env_prefix.replace("-", "_") model_params = args_parser.parse_args_into_dataclass( param_cls, - env_prefix=env_prefix, + env_prefixes=[env_prefix], device=self.device, model_path=self.model_path, model_name=self.model_name, diff --git a/pilot/model/model_adapter.py b/pilot/model/model_adapter.py index 57e3cf251..adf6321f0 100644 --- a/pilot/model/model_adapter.py +++ b/pilot/model/model_adapter.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Callable, List, Dict, Type, Tuple, TYPE_CHECKING +from typing import Callable, List, Dict, Type, Tuple, TYPE_CHECKING, Any, Optional import dataclasses import logging import threading @@ -39,14 +39,27 @@ logger = logging.getLogger(__name__) thread_local = threading.local() +_IS_BENCHMARK = os.getenv("DB_GPT_MODEL_BENCHMARK", "False").lower() == "true" _OLD_MODELS = [ "llama-cpp", "proxyllm", "gptj-6b", + "codellama-13b-sql-sft", + "codellama-7b", + "codellama-7b-sql-sft", + "codellama-13b", ] +_NEW_HF_CHAT_MODELS = [ + "yi-34b", + "yi-6b", +] + +# The implementation of some models in fastchat will affect the DB-GPT loading model and will be temporarily added to the blacklist. +_BLACK_LIST_MODLE_PROMPT = ["OpenHermes-2.5-Mistral-7B"] + class LLMModelAdaper: """New Adapter for DB-GPT LLM models""" @@ -95,26 +108,25 @@ def get_default_conv_template( """Get the default conv template""" raise NotImplementedError - def model_adaptation( + def get_str_prompt( + self, + params: Dict, + messages: List[ModelMessage], + tokenizer: Any, + prompt_template: str = None, + ) -> Optional[str]: + return None + + def get_prompt_with_template( self, params: Dict, + messages: List[ModelMessage], model_name: str, model_path: str, + model_context: Dict, prompt_template: str = None, - ) -> Tuple[Dict, Dict]: - """Params adaptation""" + ): conv = self.get_default_conv_template(model_name, model_path) - messages = params.get("messages") - # Some model scontext to dbgpt server - model_context = {"prompt_echo_len_char": -1, "has_format_prompt": False} - - if messages: - # Dict message to ModelMessage - messages = [ - m if isinstance(m, ModelMessage) else ModelMessage(**m) - for m in messages - ] - params["messages"] = messages if prompt_template: logger.info(f"Use prompt template {prompt_template} from config") @@ -124,10 +136,13 @@ def model_adaptation( logger.info( f"No conv from model_path {model_path} or no messages in params, {self}" ) - return params, model_context + return None, None, None conv = conv.copy() system_messages = [] + user_messages = [] + ai_messages = [] + for message in messages: role, content = None, None if isinstance(message, ModelMessage): @@ -143,17 +158,71 @@ def model_adaptation( # Support for multiple system messages system_messages.append(content) elif role == ModelMessageRoleType.HUMAN: - conv.append_message(conv.roles[0], content) + # conv.append_message(conv.roles[0], content) + user_messages.append(content) elif role == ModelMessageRoleType.AI: - conv.append_message(conv.roles[1], content) + # conv.append_message(conv.roles[1], content) + ai_messages.append(content) else: raise ValueError(f"Unknown role: {role}") + + can_use_systems: [] = [] if system_messages: - conv.set_system_message("".join(system_messages)) + if len(system_messages) > 1: + ## Compatible with dbgpt complex scenarios, the last system will protect more complete information entered by the current user + user_messages[-1] = system_messages[-1] + can_use_systems = system_messages[:-1] + else: + can_use_systems = system_messages + + for i in range(len(user_messages)): + conv.append_message(conv.roles[0], user_messages[i]) + if i < len(ai_messages): + conv.append_message(conv.roles[1], ai_messages[i]) + + if isinstance(conv, Conversation): + conv.set_system_message("".join(can_use_systems)) + else: + conv.update_system_message("".join(can_use_systems)) # Add a blank message for the assistant. conv.append_message(conv.roles[1], None) new_prompt = conv.get_prompt() + return new_prompt, conv.stop_str, conv.stop_token_ids + + def model_adaptation( + self, + params: Dict, + model_name: str, + model_path: str, + tokenizer: Any, + prompt_template: str = None, + ) -> Tuple[Dict, Dict]: + """Params adaptation""" + messages = params.get("messages") + # Some model scontext to dbgpt server + model_context = {"prompt_echo_len_char": -1, "has_format_prompt": False} + if messages: + # Dict message to ModelMessage + messages = [ + m if isinstance(m, ModelMessage) else ModelMessage(**m) + for m in messages + ] + params["messages"] = messages + + new_prompt = self.get_str_prompt(params, messages, tokenizer, prompt_template) + conv_stop_str, conv_stop_token_ids = None, None + if not new_prompt: + ( + new_prompt, + conv_stop_str, + conv_stop_token_ids, + ) = self.get_prompt_with_template( + params, messages, model_name, model_path, model_context, prompt_template + ) + if not new_prompt: + return params, model_context + # Overwrite the original prompt # TODO remote bos token and eos token from tokenizer_config.json of model prompt_echo_len_char = len(new_prompt.replace("", "").replace("", "")) @@ -162,8 +231,12 @@ def model_adaptation( model_context["has_format_prompt"] = True params["prompt"] = new_prompt - # Overwrite model params: - params["stop"] = conv.stop_str + custom_stop = params.get("stop") + custom_stop_token_ids = params.get("stop_token_ids") + + # Prefer the value passed in from the input parameter + params["stop"] = custom_stop or conv_stop_str + params["stop_token_ids"] = custom_stop_token_ids or conv_stop_token_ids return params, model_context @@ -216,9 +289,16 @@ def load(self, model_path: str, from_pretrained_kwargs: dict): return self._adapter.load_model(model_path, from_pretrained_kwargs) def get_generate_stream_function(self, model: "TorchNNModule", model_path: str): - from fastchat.model.model_adapter import get_generate_stream_function + if _IS_BENCHMARK: + from pilot.utils.benchmarks.llm.fastchat_benchmarks_inference import ( + generate_stream, + ) - return get_generate_stream_function(model, model_path) + return generate_stream + else: + from fastchat.model.model_adapter import get_generate_stream_function + + return get_generate_stream_function(model, model_path) def get_default_conv_template( self, model_name: str, model_path: str @@ -233,6 +313,69 @@ def __str__(self) -> str: ) +class NewHFChatModelAdapter(LLMModelAdaper): + def load(self, model_path: str, from_pretrained_kwargs: dict): + try: + import transformers + from transformers import AutoModelForCausalLM, AutoTokenizer, AutoModel + except ImportError as exc: + raise ValueError( + "Could not import depend python package " + "Please install it with `pip install transformers`." + ) from exc + if not transformers.__version__ >= "4.34.0": + raise ValueError( + "Current model (Load by HFNewChatAdapter) require transformers.__version__>=4.34.0" + ) + revision = from_pretrained_kwargs.get("revision", "main") + try: + tokenizer = AutoTokenizer.from_pretrained( + model_path, + use_fast=self.use_fast_tokenizer, + revision=revision, + trust_remote_code=True, + ) + except TypeError: + tokenizer = AutoTokenizer.from_pretrained( + model_path, use_fast=False, revision=revision, trust_remote_code=True + ) + try: + model = AutoModelForCausalLM.from_pretrained( + model_path, low_cpu_mem_usage=True, **from_pretrained_kwargs + ) + except NameError: + model = AutoModel.from_pretrained( + model_path, low_cpu_mem_usage=True, **from_pretrained_kwargs + ) + # tokenizer.use_default_system_prompt = False + return model, tokenizer + + def get_generate_stream_function(self, model, model_path: str): + """Get the generate stream function of the model""" + from pilot.model.llm_out.hf_chat_llm import huggingface_chat_generate_stream + + return huggingface_chat_generate_stream + + def get_str_prompt( + self, + params: Dict, + messages: List[ModelMessage], + tokenizer: Any, + prompt_template: str = None, + ) -> Optional[str]: + from transformers import AutoTokenizer + + if not tokenizer: + raise ValueError("tokenizer is is None") + tokenizer: AutoTokenizer = tokenizer + + messages = ModelMessage.to_openai_messages(messages) + str_prompt = tokenizer.apply_chat_template( + messages, tokenize=False, add_generation_prompt=True + ) + return str_prompt + + def get_conv_template(name: str) -> "Conversation": """Get a conversation template.""" from fastchat.conversation import get_conv_template @@ -261,6 +404,11 @@ def get_llm_model_adapter( logger.info("Current model type is vllm, return VLLMModelAdaperWrapper") return VLLMModelAdaperWrapper() + use_new_hf_chat_models = any(m in model_name.lower() for m in _NEW_HF_CHAT_MODELS) + if use_new_hf_chat_models: + logger.info(f"Current model {model_name} use NewHFChatModelAdapter") + return NewHFChatModelAdapter() + must_use_old = any(m in model_name for m in _OLD_MODELS) if use_fastchat and not must_use_old: logger.info("Use fastcat adapter") @@ -297,6 +445,7 @@ def _get_fastchat_model_adapter( if use_fastchat_monkey_patch: model_adapter.get_model_adapter = _fastchat_get_adapter_monkey_patch thread_local.model_name = model_name + _remove_black_list_model_of_fastchat() if caller: return caller(model_path) finally: @@ -340,6 +489,24 @@ def _fastchat_get_adapter_monkey_patch(model_path: str, model_name: str = None): ) +@cache +def _remove_black_list_model_of_fastchat(): + from fastchat.model.model_adapter import model_adapters + + black_list_models = [] + for adapter in model_adapters: + try: + if ( + adapter.get_default_conv_template("/data/not_exist_model_path").name + in _BLACK_LIST_MODLE_PROMPT + ): + black_list_models.append(adapter) + except Exception: + pass + for adapter in black_list_models: + model_adapters.remove(adapter) + + def _dynamic_model_parser() -> Callable[[None], List[Type]]: from pilot.utils.parameter_utils import _SimpleArgParser from pilot.model.parameter import ( @@ -444,17 +611,50 @@ def __str__(self) -> str: # Covering the configuration of fastcaht, we will regularly feedback the code here to fastchat. # We also recommend that you modify it directly in the fastchat repository. + +# source: https://huggingface.co/BAAI/AquilaChat2-34B/blob/4608b75855334b93329a771aee03869dbf7d88cc/predict.py#L212 +register_conv_template( + Conversation( + name="aquila-legacy", + system_message="A chat between a curious human and an artificial intelligence assistant. " + "The assistant gives helpful, detailed, and polite answers to the human's questions.\n\n", + roles=("### Human: ", "### Assistant: ", "System"), + messages=(), + offset=0, + sep_style=SeparatorStyle.NO_COLON_TWO, + sep="\n", + sep2="", + stop_str=["", "[UNK]"], + ), + override=True, +) +# source: https://huggingface.co/BAAI/AquilaChat2-34B/blob/4608b75855334b93329a771aee03869dbf7d88cc/predict.py#L227 +register_conv_template( + Conversation( + name="aquila", + system_message="A chat between a curious human and an artificial intelligence assistant. " + "The assistant gives helpful, detailed, and polite answers to the human's questions.", + roles=("Human", "Assistant", "System"), + messages=(), + offset=0, + sep_style=SeparatorStyle.ADD_COLON_TWO, + sep="###", + sep2="", + stop_str=["", "[UNK]"], + ), + override=True, +) +# source: https://huggingface.co/BAAI/AquilaChat2-34B/blob/4608b75855334b93329a771aee03869dbf7d88cc/predict.py#L242 register_conv_template( Conversation( - name="internlm-chat", - system_message="A chat between a curious <|User|> and an <|Bot|>. The <|Bot|> gives helpful, detailed, and polite answers to the <|User|>'s questions.\n\n", - roles=("<|User|>", "<|Bot|>"), - sep_style=SeparatorStyle.CHATINTERN, - sep="", - sep2="", - stop_token_ids=[1, 103028], - # TODO feedback stop_str to fastchat - stop_str="", + name="aquila-v1", + roles=("<|startofpiece|>", "<|endofpiece|>", ""), + messages=(), + offset=0, + sep_style=SeparatorStyle.NO_COLON_TWO, + sep="", + sep2="", + stop_str=["", "<|endoftext|>"], ), override=True, ) diff --git a/pilot/model/operator/__init__.py b/pilot/model/operator/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pilot/model/operator/model_operator.py b/pilot/model/operator/model_operator.py new file mode 100644 index 000000000..d8ee62172 --- /dev/null +++ b/pilot/model/operator/model_operator.py @@ -0,0 +1,311 @@ +from typing import AsyncIterator, Dict, List, Union +import logging +from pilot.awel import ( + BranchFunc, + StreamifyAbsOperator, + BranchOperator, + MapOperator, + TransformStreamAbsOperator, +) +from pilot.component import ComponentType +from pilot.awel.operator.base import BaseOperator +from pilot.model.base import ModelOutput +from pilot.model.cluster import WorkerManager, WorkerManagerFactory +from pilot.cache import LLMCacheClient, CacheManager, LLMCacheKey, LLMCacheValue + +logger = logging.getLogger(__name__) + +_LLM_MODEL_INPUT_VALUE_KEY = "llm_model_input_value" +_LLM_MODEL_OUTPUT_CACHE_KEY = "llm_model_output_cache" + + +class ModelStreamOperator(StreamifyAbsOperator[Dict, ModelOutput]): + """Operator for streaming processing of model outputs. + + Args: + worker_manager (WorkerManager): The manager that handles worker processes for model inference. + **kwargs: Additional keyword arguments. + + Methods: + streamify: Asynchronously processes a stream of inputs, yielding model outputs. + """ + + def __init__(self, worker_manager: WorkerManager = None, **kwargs) -> None: + super().__init__(**kwargs) + self.worker_manager = worker_manager + + async def streamify(self, input_value: Dict) -> AsyncIterator[ModelOutput]: + """Process inputs as a stream and yield model outputs. + + Args: + input_value (Dict): The input value for the model. + + Returns: + AsyncIterator[ModelOutput]: An asynchronous iterator of model outputs. + """ + if not self.worker_manager: + self.worker_manager = self.system_app.get_component( + ComponentType.WORKER_MANAGER_FACTORY, WorkerManagerFactory + ).create() + async for out in self.worker_manager.generate_stream(input_value): + yield out + + +class ModelOperator(MapOperator[Dict, ModelOutput]): + """Operator for map-based processing of model outputs. + + Args: + worker_manager (WorkerManager): Manager for handling worker processes. + **kwargs: Additional keyword arguments. + + Methods: + map: Asynchronously processes a single input and returns the model output. + """ + + def __init__(self, worker_manager: WorkerManager = None, **kwargs) -> None: + super().__init__(**kwargs) + self.worker_manager = worker_manager + + async def map(self, input_value: Dict) -> ModelOutput: + """Process a single input and return the model output. + + Args: + input_value (Dict): The input value for the model. + + Returns: + ModelOutput: The output from the model. + """ + if not self.worker_manager: + self.worker_manager = self.system_app.get_component( + ComponentType.WORKER_MANAGER_FACTORY, WorkerManagerFactory + ).create() + return await self.worker_manager.generate(input_value) + + +class CachedModelStreamOperator(StreamifyAbsOperator[Dict, ModelOutput]): + """Operator for streaming processing of model outputs with caching. + + Args: + cache_manager (CacheManager): The cache manager to handle caching operations. + **kwargs: Additional keyword arguments. + + Methods: + streamify: Processes a stream of inputs with cache support, yielding model outputs. + """ + + def __init__(self, cache_manager: CacheManager, **kwargs) -> None: + super().__init__(**kwargs) + self._cache_manager = cache_manager + self._client = LLMCacheClient(cache_manager) + + async def streamify(self, input_value: Dict) -> AsyncIterator[ModelOutput]: + """Process inputs as a stream with cache support and yield model outputs. + + Args: + input_value (Dict): The input value for the model. + + Returns: + AsyncIterator[ModelOutput]: An asynchronous iterator of model outputs. + """ + cache_dict = _parse_cache_key_dict(input_value) + llm_cache_key: LLMCacheKey = self._client.new_key(**cache_dict) + llm_cache_value: LLMCacheValue = await self._client.get(llm_cache_key) + logger.info(f"llm_cache_value: {llm_cache_value}") + for out in llm_cache_value.get_value().output: + yield out + + +class CachedModelOperator(MapOperator[Dict, ModelOutput]): + """Operator for map-based processing of model outputs with caching. + + Args: + cache_manager (CacheManager): Manager for caching operations. + **kwargs: Additional keyword arguments. + + Methods: + map: Processes a single input with cache support and returns the model output. + """ + + def __init__(self, cache_manager: CacheManager, **kwargs) -> None: + super().__init__(**kwargs) + self._cache_manager = cache_manager + self._client = LLMCacheClient(cache_manager) + + async def map(self, input_value: Dict) -> ModelOutput: + """Process a single input with cache support and return the model output. + + Args: + input_value (Dict): The input value for the model. + + Returns: + ModelOutput: The output from the model. + """ + cache_dict = _parse_cache_key_dict(input_value) + llm_cache_key: LLMCacheKey = self._client.new_key(**cache_dict) + llm_cache_value: LLMCacheValue = await self._client.get(llm_cache_key) + logger.info(f"llm_cache_value: {llm_cache_value}") + return llm_cache_value.get_value().output + + +class ModelCacheBranchOperator(BranchOperator[Dict, Dict]): + """ + A branch operator that decides whether to use cached data or to process data using the model. + + Args: + cache_manager (CacheManager): The cache manager for managing cache operations. + model_task_name (str): The name of the task to process data using the model. + cache_task_name (str): The name of the task to process data using the cache. + **kwargs: Additional keyword arguments. + """ + + def __init__( + self, + cache_manager: CacheManager, + model_task_name: str, + cache_task_name: str, + **kwargs, + ): + super().__init__(branches=None, **kwargs) + self._cache_manager = cache_manager + self._client = LLMCacheClient(cache_manager) + self._model_task_name = model_task_name + self._cache_task_name = cache_task_name + + async def branchs(self) -> Dict[BranchFunc[Dict], Union[BaseOperator, str]]: + """Defines branch logic based on cache availability. + + Returns: + Dict[BranchFunc[Dict], Union[BaseOperator, str]]: A dictionary mapping branch functions to task names. + """ + + async def check_cache_true(input_value: Dict) -> bool: + # Check if the cache contains the result for the given input + if not input_value["model_cache_enable"]: + return False + cache_dict = _parse_cache_key_dict(input_value) + cache_key: LLMCacheKey = self._client.new_key(**cache_dict) + cache_value = await self._client.get(cache_key) + logger.debug( + f"cache_key: {cache_key}, hash key: {hash(cache_key)}, cache_value: {cache_value}" + ) + await self.current_dag_context.save_to_share_data( + _LLM_MODEL_INPUT_VALUE_KEY, cache_key + ) + return True if cache_value else False + + async def check_cache_false(input_value: Dict): + # Inverse of check_cache_true + return not await check_cache_true(input_value) + + return { + check_cache_true: self._cache_task_name, + check_cache_false: self._model_task_name, + } + + +class ModelStreamSaveCacheOperator( + TransformStreamAbsOperator[ModelOutput, ModelOutput] +): + """An operator to save the stream of model outputs to cache. + + Args: + cache_manager (CacheManager): The cache manager for handling cache operations. + **kwargs: Additional keyword arguments. + """ + + def __init__(self, cache_manager: CacheManager, **kwargs): + self._cache_manager = cache_manager + self._client = LLMCacheClient(cache_manager) + super().__init__(**kwargs) + + async def transform_stream( + self, input_value: AsyncIterator[ModelOutput] + ) -> AsyncIterator[ModelOutput]: + """Transforms the input stream by saving the outputs to cache. + + Args: + input_value (AsyncIterator[ModelOutput]): An asynchronous iterator of model outputs. + + Returns: + AsyncIterator[ModelOutput]: The same input iterator, but the outputs are saved to cache. + """ + llm_cache_key: LLMCacheKey = None + outputs = [] + async for out in input_value: + if not llm_cache_key: + llm_cache_key = await self.current_dag_context.get_share_data( + _LLM_MODEL_INPUT_VALUE_KEY + ) + outputs.append(out) + yield out + if llm_cache_key and _is_success_model_output(outputs): + llm_cache_value: LLMCacheValue = self._client.new_value(output=outputs) + await self._client.set(llm_cache_key, llm_cache_value) + + +class ModelSaveCacheOperator(MapOperator[ModelOutput, ModelOutput]): + """An operator to save a single model output to cache. + + Args: + cache_manager (CacheManager): The cache manager for handling cache operations. + **kwargs: Additional keyword arguments. + """ + + def __init__(self, cache_manager: CacheManager, **kwargs): + self._cache_manager = cache_manager + self._client = LLMCacheClient(cache_manager) + super().__init__(**kwargs) + + async def map(self, input_value: ModelOutput) -> ModelOutput: + """Saves a single model output to cache and returns it. + + Args: + input_value (ModelOutput): The output from the model to be cached. + + Returns: + ModelOutput: The same input model output. + """ + llm_cache_key: LLMCacheKey = await self.current_dag_context.get_share_data( + _LLM_MODEL_INPUT_VALUE_KEY + ) + llm_cache_value: LLMCacheValue = self._client.new_value(output=input_value) + if llm_cache_key and _is_success_model_output(input_value): + await self._client.set(llm_cache_key, llm_cache_value) + return input_value + + +def _parse_cache_key_dict(input_value: Dict) -> Dict: + """Parses and extracts relevant fields from input to form a cache key dictionary. + + Args: + input_value (Dict): The input dictionary containing model and prompt parameters. + + Returns: + Dict: A dictionary used for generating cache keys. + """ + prompt: str = input_value.get("prompt") + if prompt: + prompt = prompt.strip() + return { + "prompt": prompt, + "model_name": input_value.get("model"), + "temperature": input_value.get("temperature"), + "max_new_tokens": input_value.get("max_new_tokens"), + "top_p": input_value.get("top_p", "1.0"), + # TODO pass model_type + "model_type": input_value.get("model_type", "huggingface"), + } + + +def _is_success_model_output(out: Union[Dict, ModelOutput, List[ModelOutput]]) -> bool: + if not out: + return False + if isinstance(out, list): + # check last model output + out = out[-1] + error_code = 0 + if isinstance(out, ModelOutput): + error_code = out.error_code + else: + error_code = int(out.get("error_code", 0)) + return error_code == 0 diff --git a/pilot/model/parameter.py b/pilot/model/parameter.py index ba0000435..79558e02c 100644 --- a/pilot/model/parameter.py +++ b/pilot/model/parameter.py @@ -1,9 +1,10 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- + import os from dataclasses import dataclass, field from enum import Enum -from typing import Dict, Optional +from typing import Dict, Optional, Union, Tuple from pilot.model.conversation import conv_templates from pilot.utils.parameter_utils import BaseParameters @@ -19,6 +20,35 @@ class WorkerType(str, Enum): def values(): return [item.value for item in WorkerType] + @staticmethod + def to_worker_key(worker_name, worker_type: Union[str, "WorkerType"]) -> str: + """Generate worker key from worker name and worker type + + Args: + worker_name (str): Worker name(eg., chatglm2-6b) + worker_type (Union[str, "WorkerType"]): Worker type(eg., 'llm', or [`WorkerType.LLM`]) + + Returns: + str: Generated worker key + """ + if "@" in worker_name: + raise ValueError(f"Invaild symbol '@' in your worker name {worker_name}") + if isinstance(worker_type, WorkerType): + worker_type = worker_type.value + return f"{worker_name}@{worker_type}" + + @staticmethod + def parse_worker_key(worker_key: str) -> Tuple[str, str]: + """Parse worker name and worker type from worker key + + Args: + worker_key (str): Worker key generated by [`WorkerType.to_worker_key`] + + Returns: + Tuple[str, str]: Worker name and worker type + """ + return tuple(worker_key.split("@")) + @dataclass class ModelControllerParameters(BaseParameters): @@ -58,6 +88,68 @@ class ModelControllerParameters(BaseParameters): "help": "The filename to store tracer span records", }, ) + tracer_storage_cls: Optional[str] = field( + default=None, + metadata={ + "help": "The storage class to storage tracer span records", + }, + ) + + +@dataclass +class ModelAPIServerParameters(BaseParameters): + host: Optional[str] = field( + default="0.0.0.0", metadata={"help": "Model API server deploy host"} + ) + port: Optional[int] = field( + default=8100, metadata={"help": "Model API server deploy port"} + ) + daemon: Optional[bool] = field( + default=False, metadata={"help": "Run Model API server in background"} + ) + controller_addr: Optional[str] = field( + default="http://127.0.0.1:8000", + metadata={"help": "The Model controller address to connect"}, + ) + + api_keys: Optional[str] = field( + default=None, + metadata={"help": "Optional list of comma separated API keys"}, + ) + + log_level: Optional[str] = field( + default=None, + metadata={ + "help": "Logging level", + "valid_values": [ + "FATAL", + "ERROR", + "WARNING", + "WARNING", + "INFO", + "DEBUG", + "NOTSET", + ], + }, + ) + log_file: Optional[str] = field( + default="dbgpt_model_apiserver.log", + metadata={ + "help": "The filename to store log", + }, + ) + tracer_file: Optional[str] = field( + default="dbgpt_model_apiserver_tracer.jsonl", + metadata={ + "help": "The filename to store tracer span records", + }, + ) + tracer_storage_cls: Optional[str] = field( + default=None, + metadata={ + "help": "The storage class to storage tracer span records", + }, + ) @dataclass @@ -146,6 +238,12 @@ class ModelWorkerParameters(BaseModelParameters): "help": "The filename to store tracer span records", }, ) + tracer_storage_cls: Optional[str] = field( + default=None, + metadata={ + "help": "The storage class to storage tracer span records", + }, + ) @dataclass @@ -318,6 +416,13 @@ class ProxyModelParameters(BaseModelParameters): }, ) + proxy_api_app_id: Optional[str] = field( + default=None, + metadata={ + "help": "The app id for current proxy LLM(Just for spark proxy LLM now)." + }, + ) + proxy_api_type: Optional[str] = field( default=None, metadata={ diff --git a/pilot/model/proxy/llms/chatgpt.py b/pilot/model/proxy/llms/chatgpt.py index 994986b5c..4c2a371ce 100644 --- a/pilot/model/proxy/llms/chatgpt.py +++ b/pilot/model/proxy/llms/chatgpt.py @@ -4,18 +4,25 @@ import os from typing import List import logging - -import openai - +import importlib.metadata as metadata from pilot.model.proxy.llms.proxy_model import ProxyModel from pilot.model.parameter import ProxyModelParameters from pilot.scene.base_message import ModelMessage, ModelMessageRoleType from pilot.server.monitor.api_key_db import ApiKeyDao +import httpx logger = logging.getLogger(__name__) def _initialize_openai(params: ProxyModelParameters): + try: + import openai + except ImportError as exc: + raise ValueError( + "Could not import python package: openai " + "Please install openai by command `pip install openai` " + ) from exc + api_type = params.proxy_api_type or os.getenv("OPENAI_API_TYPE", "open_ai") api_base = params.proxy_api_base or os.getenv( @@ -55,14 +62,45 @@ def _initialize_openai(params: ProxyModelParameters): return openai_params +def _initialize_openai_v1(params: ProxyModelParameters): + try: + from openai import OpenAI + except ImportError as exc: + raise ValueError( + "Could not import python package: openai " + "Please install openai by command `pip install openai" + ) + + api_type = params.proxy_api_type or os.getenv("OPENAI_API_TYPE", "open_ai") + + base_url = params.proxy_api_base or os.getenv( + "OPENAI_API_TYPE", + os.getenv("AZURE_OPENAI_ENDPOINT") if api_type == "azure" else None, + ) + api_key = params.proxy_api_key or os.getenv( + "OPENAI_API_KEY", + os.getenv("AZURE_OPENAI_KEY") if api_type == "azure" else None, + ) + api_version = params.proxy_api_version or os.getenv("OPENAI_API_VERSION") + + if not base_url and params.proxy_server_url: + # Adapt previous proxy_server_url configuration + base_url = params.proxy_server_url.split("/chat/completions")[0] + + proxies = params.http_proxy + openai_params = { + "api_key": api_key, + "base_url": base_url, + } + return openai_params, api_type, api_version, proxies + + def _build_request(model: ProxyModel, params): history = [] model_params = model.get_params() logger.info(f"Model: {model}, model_params: {model_params}") - openai_params = _initialize_openai(model_params) - messages: List[ModelMessage] = params["messages"] # Add history conversation for message in messages: @@ -93,45 +131,113 @@ def _build_request(model: ProxyModel, params): } proxyllm_backend = model_params.proxyllm_backend - if openai_params["api_type"] == "azure": - # engine = "deployment_name". - proxyllm_backend = proxyllm_backend or "gpt-35-turbo" - payloads["engine"] = proxyllm_backend - else: + if metadata.version("openai") >= "1.0.0": + openai_params, api_type, api_version, proxies = _initialize_openai_v1( + model_params + ) proxyllm_backend = proxyllm_backend or "gpt-3.5-turbo" payloads["model"] = proxyllm_backend + else: + openai_params = _initialize_openai(model_params) + if openai_params["api_type"] == "azure": + # engine = "deployment_name". + proxyllm_backend = proxyllm_backend or "gpt-35-turbo" + payloads["engine"] = proxyllm_backend + else: + proxyllm_backend = proxyllm_backend or "gpt-3.5-turbo" + payloads["model"] = proxyllm_backend - logger.info( - f"Send request to real model {proxyllm_backend}, openai_params: {openai_params}" - ) + logger.info(f"Send request to real model {proxyllm_backend}") return history, payloads def chatgpt_generate_stream( model: ProxyModel, tokenizer, params, device, context_len=2048 ): - history, payloads = _build_request(model, params) + if metadata.version("openai") >= "1.0.0": + model_params = model.get_params() + openai_params, api_type, api_version, proxies = _initialize_openai_v1( + model_params + ) + history, payloads = _build_request(model, params) + if api_type == "azure": + from openai import AzureOpenAI + + client = AzureOpenAI( + api_key=openai_params["api_key"], + api_version=api_version, + azure_endpoint=openai_params["base_url"], + http_client=httpx.Client(proxies=proxies), + ) + else: + from openai import OpenAI - res = openai.ChatCompletion.create(messages=history, **payloads) + client = OpenAI(**openai_params, http_client=httpx.Client(proxies=proxies)) + res = client.chat.completions.create(messages=history, **payloads) + text = "" + for r in res: + if r.choices[0].delta.content is not None: + content = r.choices[0].delta.content + text += content + yield text - text = "" - for r in res: - if r["choices"][0]["delta"].get("content") is not None: - content = r["choices"][0]["delta"]["content"] - text += content - yield text + else: + import openai + + history, payloads = _build_request(model, params) + + res = openai.ChatCompletion.create(messages=history, **payloads) + + text = "" + for r in res: + if r["choices"][0]["delta"].get("content") is not None: + content = r["choices"][0]["delta"]["content"] + text += content + yield text async def async_chatgpt_generate_stream( model: ProxyModel, tokenizer, params, device, context_len=2048 ): - history, payloads = _build_request(model, params) + if metadata.version("openai") >= "1.0.0": + model_params = model.get_params() + openai_params, api_type, api_version, proxies = _initialize_openai_v1( + model_params + ) + history, payloads = _build_request(model, params) + if api_type == "azure": + from openai import AsyncAzureOpenAI + + client = AsyncAzureOpenAI( + api_key=openai_params["api_key"], + api_version=api_version, + azure_endpoint=openai_params["base_url"], + http_client=httpx.AsyncClient(proxies=proxies), + ) + else: + from openai import AsyncOpenAI + + client = AsyncOpenAI( + **openai_params, http_client=httpx.AsyncClient(proxies=proxies) + ) + + res = await client.chat.completions.create(messages=history, **payloads) + text = "" + for r in res: + if r.choices[0].delta.content is not None: + content = r.choices[0].delta.content + text += content + yield text + else: + import openai + + history, payloads = _build_request(model, params) - res = await openai.ChatCompletion.acreate(messages=history, **payloads) + res = await openai.ChatCompletion.acreate(messages=history, **payloads) - text = "" - async for r in res: - if r["choices"][0]["delta"].get("content") is not None: - content = r["choices"][0]["delta"]["content"] - text += content - yield text + text = "" + async for r in res: + if r["choices"][0]["delta"].get("content") is not None: + content = r["choices"][0]["delta"]["content"] + text += content + yield text diff --git a/pilot/model/proxy/llms/tongyi.py b/pilot/model/proxy/llms/tongyi.py index fb826e49c..5bc0a97f3 100644 --- a/pilot/model/proxy/llms/tongyi.py +++ b/pilot/model/proxy/llms/tongyi.py @@ -7,6 +7,35 @@ logger = logging.getLogger(__name__) +def __convert_2_tongyi_messages(messages: List[ModelMessage]): + chat_round = 0 + tongyi_messages = [] + + last_usr_message = "" + system_messages = [] + + for message in messages: + if message.role == ModelMessageRoleType.HUMAN: + last_usr_message = message.content + elif message.role == ModelMessageRoleType.SYSTEM: + system_messages.append(message.content) + elif message.role == ModelMessageRoleType.AI: + last_ai_message = message.content + tongyi_messages.append({"role": "user", "content": last_usr_message}) + tongyi_messages.append({"role": "assistant", "content": last_ai_message}) + if len(system_messages) > 0: + if len(system_messages) < 2: + tongyi_messages.insert(0, {"role": "system", "content": system_messages[0]}) + else: + tongyi_messages.append({"role": "user", "content": system_messages[1]}) + else: + last_message = messages[-1] + if last_message.role == ModelMessageRoleType.HUMAN: + tongyi_messages.append({"role": "user", "content": last_message.content}) + + return tongyi_messages + + def tongyi_generate_stream( model: ProxyModel, tokenizer, params, device, context_len=2048 ): @@ -23,40 +52,9 @@ def tongyi_generate_stream( if not proxyllm_backend: proxyllm_backend = Generation.Models.qwen_turbo # By Default qwen_turbo - history = [] - messages: List[ModelMessage] = params["messages"] - # Add history conversation - - if len(messages) > 1 and messages[0].role == ModelMessageRoleType.SYSTEM: - role_define = messages.pop(0) - history.append({"role": "system", "content": role_define.content}) - else: - message = messages.pop(0) - if message.role == ModelMessageRoleType.HUMAN: - history.append({"role": "user", "content": message.content}) - for message in messages: - if message.role == ModelMessageRoleType.SYSTEM: - history.append({"role": "user", "content": message.content}) - # elif message.role == ModelMessageRoleType.HUMAN: - # history.append({"role": "user", "content": message.content}) - elif message.role == ModelMessageRoleType.AI: - history.append({"role": "assistant", "content": message.content}) - else: - pass - - # temp_his = history[::-1] - temp_his = history - last_user_input = None - for m in temp_his: - if m["role"] == "user": - last_user_input = m - break - - if last_user_input: - history.remove(last_user_input) - history.append(last_user_input) + history = __convert_2_tongyi_messages(messages) gen = Generation() res = gen.call( proxyllm_backend, diff --git a/pilot/model/proxy/llms/wenxin.py b/pilot/model/proxy/llms/wenxin.py index acc82907c..cfd47fd18 100644 --- a/pilot/model/proxy/llms/wenxin.py +++ b/pilot/model/proxy/llms/wenxin.py @@ -26,6 +26,41 @@ def _build_access_token(api_key: str, secret_key: str) -> str: return res.json().get("access_token") +def __convert_2_wenxin_messages(messages: List[ModelMessage]): + chat_round = 0 + wenxin_messages = [] + + last_usr_message = "" + system_messages = [] + + for message in messages: + if message.role == ModelMessageRoleType.HUMAN: + last_usr_message = message.content + elif message.role == ModelMessageRoleType.SYSTEM: + system_messages.append(message.content) + elif message.role == ModelMessageRoleType.AI: + last_ai_message = message.content + wenxin_messages.append({"role": "user", "content": last_usr_message}) + wenxin_messages.append({"role": "assistant", "content": last_ai_message}) + + # build last user messge + + if len(system_messages) > 0: + if len(system_messages) > 1: + end_message = system_messages[-1] + else: + last_message = messages[-1] + if last_message.role == ModelMessageRoleType.HUMAN: + end_message = system_messages[-1] + "\n" + last_message.content + else: + end_message = system_messages[-1] + else: + last_message = messages[-1] + end_message = last_message.content + wenxin_messages.append({"role": "user", "content": end_message}) + return wenxin_messages, system_messages + + def wenxin_generate_stream( model: ProxyModel, tokenizer, params, device, context_len=2048 ): @@ -40,8 +75,9 @@ def wenxin_generate_stream( if not model_version: yield f"Unsupport model version {model_name}" - proxy_api_key = model_params.proxy_api_key - proxy_api_secret = model_params.proxy_api_secret + keys: [] = model_params.proxy_api_key.split(";") + proxy_api_key = keys[0] + proxy_api_secret = keys[1] access_token = _build_access_token(proxy_api_key, proxy_api_secret) headers = {"Content-Type": "application/json", "Accept": "application/json"} @@ -51,40 +87,42 @@ def wenxin_generate_stream( if not access_token: yield "Failed to get access token. please set the correct api_key and secret key." - history = [] - messages: List[ModelMessage] = params["messages"] # Add history conversation + # system = "" + # if len(messages) > 1 and messages[0].role == ModelMessageRoleType.SYSTEM: + # role_define = messages.pop(0) + # system = role_define.content + # else: + # message = messages.pop(0) + # if message.role == ModelMessageRoleType.HUMAN: + # history.append({"role": "user", "content": message.content}) + # for message in messages: + # if message.role == ModelMessageRoleType.SYSTEM: + # history.append({"role": "user", "content": message.content}) + # # elif message.role == ModelMessageRoleType.HUMAN: + # # history.append({"role": "user", "content": message.content}) + # elif message.role == ModelMessageRoleType.AI: + # history.append({"role": "assistant", "content": message.content}) + # else: + # pass + # + # # temp_his = history[::-1] + # temp_his = history + # last_user_input = None + # for m in temp_his: + # if m["role"] == "user": + # last_user_input = m + # break + # + # if last_user_input: + # history.remove(last_user_input) + # history.append(last_user_input) + # + history, systems = __convert_2_wenxin_messages(messages) system = "" - if len(messages) > 1 and messages[0].role == ModelMessageRoleType.SYSTEM: - role_define = messages.pop(0) - system = role_define.content - else: - message = messages.pop(0) - if message.role == ModelMessageRoleType.HUMAN: - history.append({"role": "user", "content": message.content}) - for message in messages: - if message.role == ModelMessageRoleType.SYSTEM: - history.append({"role": "user", "content": message.content}) - # elif message.role == ModelMessageRoleType.HUMAN: - # history.append({"role": "user", "content": message.content}) - elif message.role == ModelMessageRoleType.AI: - history.append({"role": "assistant", "content": message.content}) - else: - pass - - # temp_his = history[::-1] - temp_his = history - last_user_input = None - for m in temp_his: - if m["role"] == "user": - last_user_input = m - break - - if last_user_input: - history.remove(last_user_input) - history.append(last_user_input) - + if systems and len(systems) > 0: + system = systems[0] payload = { "messages": history, "system": system, diff --git a/pilot/model/proxy/llms/zhipu.py b/pilot/model/proxy/llms/zhipu.py index 89e7dd9a0..c5fabe8ed 100644 --- a/pilot/model/proxy/llms/zhipu.py +++ b/pilot/model/proxy/llms/zhipu.py @@ -8,6 +8,41 @@ CHATGLM_DEFAULT_MODEL = "chatglm_pro" +def __convert_2_wenxin_messages(messages: List[ModelMessage]): + chat_round = 0 + wenxin_messages = [] + + last_usr_message = "" + system_messages = [] + + for message in messages: + if message.role == ModelMessageRoleType.HUMAN: + last_usr_message = message.content + elif message.role == ModelMessageRoleType.SYSTEM: + system_messages.append(message.content) + elif message.role == ModelMessageRoleType.AI: + last_ai_message = message.content + wenxin_messages.append({"role": "user", "content": last_usr_message}) + wenxin_messages.append({"role": "assistant", "content": last_ai_message}) + + # build last user messge + + if len(system_messages) > 0: + if len(system_messages) > 1: + end_message = system_messages[-1] + else: + last_message = messages[-1] + if last_message.role == ModelMessageRoleType.HUMAN: + end_message = system_messages[-1] + "\n" + last_message.content + else: + end_message = system_messages[-1] + else: + last_message = messages[-1] + end_message = last_message.content + wenxin_messages.append({"role": "user", "content": end_message}) + return wenxin_messages, system_messages + + def zhipu_generate_stream( model: ProxyModel, tokenizer, params, device, context_len=2048 ): @@ -22,40 +57,40 @@ def zhipu_generate_stream( import zhipuai zhipuai.api_key = proxy_api_key - history = [] messages: List[ModelMessage] = params["messages"] # Add history conversation - system = "" - if len(messages) > 1 and messages[0].role == ModelMessageRoleType.SYSTEM: - role_define = messages.pop(0) - system = role_define.content - else: - message = messages.pop(0) - if message.role == ModelMessageRoleType.HUMAN: - history.append({"role": "user", "content": message.content}) - for message in messages: - if message.role == ModelMessageRoleType.SYSTEM: - history.append({"role": "user", "content": message.content}) - # elif message.role == ModelMessageRoleType.HUMAN: - # history.append({"role": "user", "content": message.content}) - elif message.role == ModelMessageRoleType.AI: - history.append({"role": "assistant", "content": message.content}) - else: - pass - - # temp_his = history[::-1] - temp_his = history - last_user_input = None - for m in temp_his: - if m["role"] == "user": - last_user_input = m - break - - if last_user_input: - history.remove(last_user_input) - history.append(last_user_input) + # system = "" + # if len(messages) > 1 and messages[0].role == ModelMessageRoleType.SYSTEM: + # role_define = messages.pop(0) + # system = role_define.content + # else: + # message = messages.pop(0) + # if message.role == ModelMessageRoleType.HUMAN: + # history.append({"role": "user", "content": message.content}) + # for message in messages: + # if message.role == ModelMessageRoleType.SYSTEM: + # history.append({"role": "user", "content": message.content}) + # # elif message.role == ModelMessageRoleType.HUMAN: + # # history.append({"role": "user", "content": message.content}) + # elif message.role == ModelMessageRoleType.AI: + # history.append({"role": "assistant", "content": message.content}) + # else: + # pass + # + # # temp_his = history[::-1] + # temp_his = history + # last_user_input = None + # for m in temp_his: + # if m["role"] == "user": + # last_user_input = m + # break + # + # if last_user_input: + # history.remove(last_user_input) + # history.append(last_user_input) + history, systems = __convert_2_wenxin_messages(messages) res = zhipuai.model_api.sse_invoke( model=proxyllm_backend, prompt=history, diff --git a/pilot/openapi/api_v1/api_v1.py b/pilot/openapi/api_v1/api_v1.py index 640033ea1..266e7d50d 100644 --- a/pilot/openapi/api_v1/api_v1.py +++ b/pilot/openapi/api_v1/api_v1.py @@ -21,8 +21,10 @@ from fastapi.exceptions import RequestValidationError from typing import List import tempfile +from concurrent.futures import Executor from pilot.component import ComponentType +from pilot.memory import ChatHistoryDao, ChatHistoryEntity from pilot.openapi.api_view_model import ( Result, ConversationVo, @@ -52,12 +54,15 @@ from pilot.model.cluster import BaseModelController, WorkerManager, WorkerManagerFactory from pilot.model.base import FlatSupportedModel from pilot.user import UserDao, UserRequest, get_user_from_headers +from pilot.utils.tracer import root_tracer, SpanType +from pilot.utils.executor_utils import ExecutorFactory, blocking_func_to_async router = APIRouter() CFG = Config() CHAT_FACTORY = ChatFactory() logger = logging.getLogger(__name__) knowledge_service = KnowledgeService() +chat_history_dao = ChatHistoryDao() model_semaphore = None global_counter = 0 @@ -81,10 +86,13 @@ def __new_conversation(chat_mode, user_id) -> ConversationVo: def get_db_list(user_id: str = None): dbs = CFG.LOCAL_DB_MANAGE.get_db_list(user_id=user_id) - params: dict = {} + db_params = [] for item in dbs: - params.update({item["db_name"]: item["db_name"]}) - return params + params: dict = {} + params.update({"param": item["db_name"]}) + params.update({"type": item["db_type"]}) + db_params.append(params) + return db_params def plugins_select_info(): @@ -114,14 +122,17 @@ def knowledge_list_info(): return params -def knowledge_list(): +def knowledge_list(user_id: str = None): """return knowledge space list""" - params: dict = {} - request = KnowledgeSpaceRequest() + request = KnowledgeSpaceRequest(user_id=user_id) spaces = knowledge_service.get_knowledge_space(request) + space_list = [] for space in spaces: - params.update({space.name: space.name}) - return params + params: dict = {} + params.update({"param": space.name}) + params.update({"type": "space"}) + space_list.append(params) + return space_list def get_model_controller() -> BaseModelController: @@ -138,6 +149,13 @@ def get_worker_manager() -> WorkerManager: return worker_manager +def get_executor() -> Executor: + """Get the global default executor""" + return CFG.SYSTEM_APP.get_component( + ComponentType.EXECUTOR_DEFAULT, ExecutorFactory + ).create() + + @router.get("/v1/chat/db/list", response_model=Result[DBConfig]) async def db_connect_list(user_token: UserRequest = Depends(get_user_from_headers)): results = CFG.LOCAL_DB_MANAGE.get_db_list(user_token.user_id) @@ -170,14 +188,16 @@ async def async_db_summary_embedding(db_name, db_type): @router.post("/v1/chat/db/test/connect", response_model=Result[bool]) async def test_connect(db_config: DBConfig = Body()): try: + # TODO Change the synchronous call to the asynchronous call CFG.LOCAL_DB_MANAGE.test_connect(db_config) return Result.succ(True) except Exception as e: - return Result.faild(code="E1001", msg=str(e)) + return Result.failed(code="E1001", msg=str(e)) @router.post("/v1/chat/db/summary", response_model=Result[bool]) async def db_summary(db_name: str, db_type: str): + # TODO Change the synchronous call to the asynchronous call async_db_summary_embedding(db_name, db_type) return Result.succ(True) @@ -227,8 +247,8 @@ async def dialogue_scenes(): scene_vos: List[ChatSceneVo] = [] new_modes: List[ChatScene] = [ ChatScene.ChatWithDbExecute, - ChatScene.ChatExcel, ChatScene.ChatWithDbQA, + ChatScene.ChatExcel, ChatScene.ChatKnowledge, ChatScene.ChatDashboard, ChatScene.ChatAgent, @@ -259,18 +279,21 @@ async def params_list(chat_mode: str = ChatScene.ChatNormal.value(), user_token: result = None if ChatScene.ChatWithDbQA.value() == chat_mode: result = get_db_list(user_id=user_token.user_id) + result = [d for d in result if d['param'] not in ['auth', 'dbgpt']] elif ChatScene.ChatWithDbExecute.value() == chat_mode: result = get_db_list(user_id=user_token.user_id) + result = [d for d in result if d['param'] not in ['auth', 'dbgpt']] elif ChatScene.ChatDashboard.value() == chat_mode: result = get_db_list(user_id=user_token.user_id) + result = [d for d in result if d['param'] not in ['auth', 'dbgpt']] elif ChatScene.ChatExecution.value() == chat_mode: result = plugins_select_info() elif ChatScene.ChatKnowledge.value() == chat_mode: - result = knowledge_list() - if result and result.get("dbgpt"): - del result["dbgpt"] - if result and result.get("auth"): - del result["auth"] + result = knowledge_list(user_id=user_token.user_id) + elif ChatScene.ChatKnowledge.ExtractRefineSummary.value() == chat_mode: + result = knowledge_list(user_id=user_token.user_id) + else: + return Result.succ(None) return Result.succ(result) @@ -302,14 +325,14 @@ async def params_load( select_param=doc_file.filename, model_name=model_name, ) - chat: BaseChat = get_chat_instance(dialogue, user_token.user_id) + chat: BaseChat = await get_chat_instance(dialogue, user_token.user_id) resp = await chat.prepare() ### refresh messages return Result.succ(get_hist_messages(conv_uid)) except Exception as e: logger.error("excel load error!", e) - return Result.faild(code="E000X", msg=f"File Load Error {e}") + return Result.failed(code="E000X", msg=f"File Load Error {e}") @router.post("/v1/user/add") @@ -330,6 +353,7 @@ async def add_user(user_req: UserRequest): async def dialogue_delete(con_uid: str): history_fac = ChatHistory() history_mem = history_fac.get_store_instance(con_uid) + # TODO Change the synchronous call to the asynchronous call history_mem.delete() return Result.succ(None) @@ -342,7 +366,6 @@ def get_hist_messages(conv_uid: str): history_messages: List[OnceConversation] = history_mem.get_messages() if history_messages: for once in history_messages: - print(f"once:{once}") model_name = once.get("model_name", CFG.LLM_MODEL) once_message_vos = [ message2Vo(element, once["chat_order"], model_name) @@ -352,13 +375,33 @@ def get_hist_messages(conv_uid: str): return message_vos +@router.get("/v1/chat/dialogue/share_id") +async def share_dialogue(conv_uid: str): + try: + ch: ChatHistoryEntity = chat_history_dao.get_by_uid(conv_uid) + if ch: + if ch.share_id is not None: + return Result.succ({"share_id": ch.share_id}) + ch.share_id = uuid.uuid4().hex + if chat_history_dao.update_chat_history(ch) is not None: + return Result.succ({"share_id": ch.share_id}) + return Result.failed(code="E000X", msg=f"dialogue {conv_uid} is not exist!") + except Exception as ex: + return Result.failed(code="E000X", msg=f"Share dialogue exception: {str(ex)}") + + @router.get("/v1/chat/dialogue/messages/history", response_model=Result[MessageVo]) -async def dialogue_history_messages(con_uid: str): +async def dialogue_history_messages(con_uid: str, share_id: str = None, user_token: UserRequest = Depends(get_user_from_headers)): + chat_history: ChatHistoryEntity = chat_history_dao.get_by_uid_and_user(conv_uid=con_uid, user_name=user_token.user_id, share_id=share_id) + if chat_history is None: + return Result.failed(code="E000X", msg=f"You don't have permission of current dialogue.") print(f"dialogue_history_messages:{con_uid}") + # TODO Change the synchronous call to the asynchronous call return Result.succ(get_hist_messages(con_uid)) -def get_chat_instance(dialogue: ConversationVo = Body(), user_id: str = None) -> BaseChat: +# def get_chat_instance(dialogue: ConversationVo = Body(), user_id: str = None) -> BaseChat: +async def get_chat_instance(dialogue: ConversationVo = Body(), user_id: str = None) -> BaseChat: logger.info(f"get_chat_instance:{dialogue}") if not dialogue.chat_mode: dialogue.chat_mode = ChatScene.ChatNormal.value() @@ -368,7 +411,7 @@ def get_chat_instance(dialogue: ConversationVo = Body(), user_id: str = None) -> if not ChatScene.is_valid_mode(dialogue.chat_mode): raise StopAsyncIteration( - Result.faild("Unsupported Chat Mode," + dialogue.chat_mode + "!") + Result.failed("Unsupported Chat Mode," + dialogue.chat_mode + "!") ) chat_param = { @@ -378,8 +421,14 @@ def get_chat_instance(dialogue: ConversationVo = Body(), user_id: str = None) -> "model_name": dialogue.model_name, "user_id": user_id, } - chat: BaseChat = CHAT_FACTORY.get_implementation( - dialogue.chat_mode, **{"chat_param": chat_param} + # chat: BaseChat = CHAT_FACTORY.get_implementation( + # dialogue.chat_mode, **{"chat_param": chat_param} + # ) + chat: BaseChat = await blocking_func_to_async( + get_executor(), + CHAT_FACTORY.get_implementation, + dialogue.chat_mode, + **{"chat_param": chat_param}, ) return chat @@ -389,7 +438,7 @@ async def chat_prepare(dialogue: ConversationVo = Body(), user_token: UserReques # dialogue.model_name = CFG.LLM_MODEL logger.info(f"chat_prepare:{dialogue}") ## check conv_uid - chat: BaseChat = get_chat_instance(dialogue, user_token.user_id) + chat: BaseChat = await get_chat_instance(dialogue, user_token.user_id) if len(chat.history_message) > 0: return Result.succ(None) resp = await chat.prepare() @@ -402,6 +451,15 @@ async def stream_error(msg): @router.post("/v1/chat/completions") async def chat_completions(dialogue: ConversationVo = Body(), user_token: UserRequest = Depends(get_user_from_headers)): + print( + f"chat_completions:{dialogue.chat_mode},{dialogue.select_param},{dialogue.model_name}" + ) + with root_tracer.start_span( + "get_chat_instance", span_type=SpanType.CHAT, metadata=dialogue.dict() + ): + chat: BaseChat = await get_chat_instance(dialogue, user_token.user_id) + # background_tasks = BackgroundTasks() + # background_tasks.add_task(release_model_semaphore) headers = { "Content-Type": "text/event-stream", "Cache-Control": "no-cache", @@ -423,7 +481,6 @@ async def chat_completions(dialogue: ConversationVo = Body(), user_token: UserRe print( f"chat_completions:{dialogue.chat_mode},{dialogue.select_param},{dialogue.model_name}" ) - chat: BaseChat = get_chat_instance(dialogue, user_token.user_id) # background_tasks = BackgroundTasks() # background_tasks.add_task(release_model_semaphore) @@ -454,7 +511,7 @@ async def model_types(controller: BaseModelController = Depends(get_model_contro return Result.succ(list(types)) except Exception as e: - return Result.faild(code="E000X", msg=f"controller model types error {e}") + return Result.failed(code="E000X", msg=f"controller model types error {e}") @router.get("/v1/model/supports") @@ -464,7 +521,7 @@ async def model_supports(worker_manager: WorkerManager = Depends(get_worker_mana models = await worker_manager.supported_models() return Result.succ(FlatSupportedModel.from_supports(models)) except Exception as e: - return Result.faild(code="E000X", msg=f"Fetch supportd models error {e}") + return Result.failed(code="E000X", msg=f"Fetch supportd models error {e}") @router.get("/v1/github/callback") @@ -498,8 +555,9 @@ async def github_access_token(code: str = None): async def no_stream_generator(chat): - msg = await chat.nostream_call() - yield f"data: {msg}\n\n" + with root_tracer.start_span("no_stream_generator"): + msg = await chat.nostream_call() + yield f"data: {msg}\n\n" async def stream_generator(chat, incremental: bool, model_name: str): @@ -516,6 +574,7 @@ async def stream_generator(chat, incremental: bool, model_name: str): Yields: _type_: streaming responses """ + span = root_tracer.start_span("stream_generator") msg = "[LLM_ERROR]: llm server has no output, maybe your prompt template is wrong." stream_id = f"chatcmpl-{str(uuid.uuid1())}" @@ -541,6 +600,7 @@ async def stream_generator(chat, incremental: bool, model_name: str): await asyncio.sleep(0.02) if incremental: yield "data: [DONE]\n\n" + span.end() def message2Vo(message: dict, order, model_name) -> MessageVo: diff --git a/pilot/openapi/api_v1/editor/api_editor_v1.py b/pilot/openapi/api_v1/editor/api_editor_v1.py index e41998942..9653a1bad 100644 --- a/pilot/openapi/api_v1/editor/api_editor_v1.py +++ b/pilot/openapi/api_v1/editor/api_editor_v1.py @@ -107,7 +107,7 @@ async def get_editor_sql(con_uid: str, round: int): .replace("\n", " ") ) return Result.succ(json.loads(context)) - return Result.faild(msg="not have sql!") + return Result.failed(msg="not have sql!") @router.post("/v1/editor/sql/run", response_model=Result[SqlRunData]) @@ -116,7 +116,7 @@ async def editor_sql_run(run_param: dict = Body()): db_name = run_param["db_name"] sql = run_param["sql"] if not db_name and not sql: - return Result.faild("SQL run param error!") + return Result.failed("SQL run param error!") conn = CFG.LOCAL_DB_MANAGE.get_connect(db_name) try: @@ -134,6 +134,7 @@ async def editor_sql_run(run_param: dict = Body()): ) return Result.succ(sql_run_data) except Exception as e: + logging.error("editor_sql_run exception!" + str(e)) return Result.succ( SqlRunData(result_info=str(e), run_cost=0, colunms=[], values=[]) ) @@ -165,11 +166,12 @@ async def sql_editor_submit(sql_edit_context: ChatSqlEditContext = Body()): if element["type"] == "view": data_loader = DbDataLoader() element["data"]["content"] = data_loader.get_table_view_by_conn( - conn.run(sql_edit_context.new_sql), sql_edit_context.new_speak + conn.run_to_df(sql_edit_context.new_sql), + sql_edit_context.new_speak, ) history_mem.update(history_messages) return Result.succ(None) - return Result.faild(msg="Edit Faild!") + return Result.failed(msg="Edit Failed!") @router.get("/v1/editor/chart/list", response_model=Result[ChartList]) @@ -191,7 +193,7 @@ async def get_editor_chart_list(con_uid: str): charts=json.loads(element["data"]["content"]), ) return Result.succ(chart_list) - return Result.faild(msg="Not have charts!") + return Result.failed(msg="Not have charts!") @router.post("/v1/editor/chart/info", response_model=Result[ChartDetail]) @@ -210,7 +212,7 @@ async def get_editor_chart_info(param: dict = Body()): logger.error( "this dashboard dialogue version too old, can't support editor!" ) - return Result.faild( + return Result.failed( msg="this dashboard dialogue version too old, can't support editor!" ) for element in last_round["messages"]: @@ -234,7 +236,7 @@ async def get_editor_chart_info(param: dict = Body()): ) return Result.succ(detail) - return Result.faild(msg="Can't Find Chart Detail Info!") + return Result.failed(msg="Can't Find Chart Detail Info!") @router.post("/v1/editor/chart/run", response_model=Result[ChartRunData]) @@ -244,7 +246,7 @@ async def editor_chart_run(run_param: dict = Body()): sql = run_param["sql"] chart_type = run_param["chart_type"] if not db_name and not sql: - return Result.faild("SQL run param error!") + return Result.failed("SQL run param error!") try: dashboard_data_loader: DashboardDataLoader = DashboardDataLoader() db_conn = CFG.LOCAL_DB_MANAGE.get_connect(db_name) @@ -334,7 +336,7 @@ async def chart_editor_submit(chart_edit_context: ChatChartEditContext = Body()) ) except Exception as e: logger.error(f"edit chart exception!{str(e)}", e) - return Result.faild(msg=f"Edit chart exception!{str(e)}") + return Result.failed(msg=f"Edit chart exception!{str(e)}") history_mem.update(history_messages) return Result.succ(None) - return Result.faild(msg="Edit Faild!") + return Result.failed(msg="Edit Failed!") diff --git a/pilot/openapi/api_v1/feedback/feed_back_db.py b/pilot/openapi/api_v1/feedback/feed_back_db.py index 3d697263b..02afb3215 100644 --- a/pilot/openapi/api_v1/feedback/feed_back_db.py +++ b/pilot/openapi/api_v1/feedback/feed_back_db.py @@ -3,7 +3,12 @@ from sqlalchemy import Column, Integer, Text, String, DateTime from pilot.base_modules.meta_data.base_dao import BaseDao -from pilot.base_modules.meta_data.meta_data import Base, engine, session +from pilot.base_modules.meta_data.meta_data import ( + Base, + engine, + session, + META_DATA_DATABASE, +) from pilot.openapi.api_v1.feedback.feed_back_model import FeedBackBody @@ -36,7 +41,10 @@ def __repr__(self): class ChatFeedBackDao(BaseDao): def __init__(self): super().__init__( - database="dbgpt", orm_base=Base, db_engine=engine, session=session + database=META_DATA_DATABASE, + orm_base=Base, + db_engine=engine, + session=session, ) def create_or_update_chat_feed_back(self, feed_back: FeedBackBody): diff --git a/pilot/openapi/api_view_model.py b/pilot/openapi/api_view_model.py index 60065f2f2..af1aa4b9c 100644 --- a/pilot/openapi/api_view_model.py +++ b/pilot/openapi/api_view_model.py @@ -17,11 +17,11 @@ def succ(cls, data: T): return Result(success=True, err_code=None, err_msg=None, data=data) @classmethod - def faild(cls, msg): + def failed(cls, msg): return Result(success=False, err_code="E000X", err_msg=msg, data=None) @classmethod - def faild(cls, code, msg): + def failed(cls, code, msg): return Result(success=False, err_code=code, err_msg=msg, data=None) diff --git a/pilot/openapi/base.py b/pilot/openapi/base.py index 506254ec7..d8c814787 100644 --- a/pilot/openapi/base.py +++ b/pilot/openapi/base.py @@ -7,4 +7,4 @@ async def validation_exception_handler(request: Request, exc: RequestValidationE message = "" for error in exc.errors(): message += ".".join(error.get("loc")) + ":" + error.get("msg") + ";" - return Result.faild(code="E0001", msg=message) + return Result.failed(code="E0001", msg=message) diff --git a/pilot/out_parser/base.py b/pilot/out_parser/base.py index 78286f3d3..a7268ab68 100644 --- a/pilot/out_parser/base.py +++ b/pilot/out_parser/base.py @@ -26,6 +26,10 @@ class BaseOutputParser(ABC): def __init__(self, sep: str, is_stream_out: bool = True): self.sep = sep self.is_stream_out = is_stream_out + self.data_schema = None + + def update(self, data_schema): + self.data_schema = data_schema def __post_process_code(self, code): sep = "\n```" @@ -115,7 +119,9 @@ def parse_model_nostream_resp(self, response: ResponseTye, sep: str): print("un_stream ai response:", ai_response) return ai_response else: - raise ValueError("Model server error!code=" + resp_obj_ex["error_code"]) + raise ValueError( + f"""Model server error!code={resp_obj_ex["error_code"]}, errmsg is {resp_obj_ex["text"]}""" + ) def __illegal_json_ends(self, s): temp_json = s @@ -202,16 +208,23 @@ def parse_prompt_response(self, model_out_text) -> T: if not cleaned_output.startswith("{") or not cleaned_output.endswith("}"): logger.info("illegal json processing:\n" + cleaned_output) cleaned_output = self.__extract_json(cleaned_output) + + if not cleaned_output or len(cleaned_output) <= 0: + return model_out_text + cleaned_output = ( cleaned_output.strip() .replace("\\n", " ") .replace("\n", " ") .replace("\\", " ") + .replace("\_", "_") ) cleaned_output = self.__illegal_json_ends(cleaned_output) return cleaned_output - def parse_view_response(self, ai_text, data) -> str: + def parse_view_response( + self, ai_text, data, parse_prompt_response: Any = None + ) -> str: """ parse the ai response info to user view Args: @@ -242,7 +255,9 @@ def dict(self, **kwargs: Any) -> Dict: def _parse_model_response(response: ResponseTye): - if isinstance(response, ModelOutput): + if response is None: + resp_obj_ex = "" + elif isinstance(response, ModelOutput): resp_obj_ex = asdict(response) elif isinstance(response, str): resp_obj_ex = json.loads(response) diff --git a/pilot/scene/base.py b/pilot/scene/base.py index b56176991..e3478f7c3 100644 --- a/pilot/scene/base.py +++ b/pilot/scene/base.py @@ -82,6 +82,30 @@ class ChatScene(Enum): "Dialogue through natural language and private documents and knowledge bases.", ["Knowledge Space Select"], ) + ExtractTriplet = Scene( + "extract_triplet", + "Extract Triplet", + "Extract Triplet", + ["Extract Select"], + True, + ) + ExtractSummary = Scene( + "extract_summary", + "Extract Summary", + "Extract Summary", + ["Extract Select"], + True, + ) + ExtractRefineSummary = Scene( + "extract_refine_summary", + "Extract Summary", + "Extract Summary", + ["Extract Select"], + True, + ) + ExtractEntity = Scene( + "extract_entity", "Extract Entity", "Extract Entity", ["Extract Select"], True + ) @staticmethod def of_mode(mode): diff --git a/pilot/scene/base_chat.py b/pilot/scene/base_chat.py index 571706b88..deb397dcf 100644 --- a/pilot/scene/base_chat.py +++ b/pilot/scene/base_chat.py @@ -12,8 +12,12 @@ from pilot.scene.base_message import ModelMessage, ModelMessageRoleType from pilot.scene.message import OnceConversation from pilot.utils import get_or_create_event_loop +from pilot.utils.executor_utils import ExecutorFactory, blocking_func_to_async +from pilot.utils.tracer import root_tracer, trace from pydantic import Extra from pilot.memory.chat_history.chat_hisotry_factory import ChatHistory +from pilot.awel import BaseOperator, SimpleCallDataInputSource, InputOperator, DAG +from pilot.model.operator.model_operator import ModelOperator, ModelStreamOperator logger = logging.getLogger(__name__) headers = {"User-Agent": "dbgpt Client"} @@ -37,6 +41,7 @@ class Config: arbitrary_types_allowed = True + @trace("BaseChat.__init__") def __init__(self, chat_param: Dict): """Chat Module Initialization Args: @@ -53,6 +58,7 @@ def __init__(self, chat_param: Dict): chat_param["model_name"] if chat_param["model_name"] else CFG.LLM_MODEL ) self.llm_echo = False + self.model_cache_enable = chat_param.get("model_cache_enable", False) ### load prompt template # self.prompt_template: PromptTemplate = CFG.prompt_templates[ @@ -62,7 +68,7 @@ def __init__(self, chat_param: Dict): CFG.prompt_template_registry.get_prompt_template( self.chat_mode.value(), language=CFG.LANGUAGE, - model_name=CFG.LLM_MODEL, + model_name=self.llm_model, proxyllm_backend=CFG.PROXYLLM_BACKEND, ) ) @@ -82,6 +88,15 @@ def __init__(self, chat_param: Dict): self.current_tokens_used: int = 0 if chat_param["user_id"]: self.user_id = chat_param["user_id"] + # The executor to submit blocking function + self._executor = CFG.SYSTEM_APP.get_component( + ComponentType.EXECUTOR_DEFAULT, ExecutorFactory + ).create() + + self._model_operator: BaseOperator = _build_model_operator() + self._model_stream_operator: BaseOperator = _build_model_operator( + is_stream=True, dag_name="llm_stream_model_dag" + ) class Config: """Configuration for this pydantic object.""" @@ -94,12 +109,21 @@ def chat_type(self) -> str: raise NotImplementedError("Not supported for this chat type.") @abstractmethod - def generate_input_values(self): - pass + async def generate_input_values(self) -> Dict: + """Generate input to LLM + + Please note that you must not perform any blocking operations in this function + + Returns: + a dictionary to be formatted by prompt template + """ def do_action(self, prompt_response): return prompt_response + def message_adjust(self): + pass + def get_llm_speak(self, prompt_define_response): if hasattr(prompt_define_response, "thoughts"): if isinstance(prompt_define_response.thoughts, dict): @@ -118,18 +142,24 @@ def get_llm_speak(self, prompt_define_response): speak_to_user = prompt_define_response return speak_to_user - def __call_base(self): - input_values = self.generate_input_values() + async def __call_base(self): + input_values = await self.generate_input_values() ### Chat sequence advance self.current_message.chat_order = len(self.history_message) + 1 self.current_message.add_user_message(self.current_user_input) self.current_message.start_date = datetime.datetime.now().strftime( "%Y-%m-%d %H:%M:%S" ) - self.current_message.tokens = 0 if self.prompt_template.template: - current_prompt = self.prompt_template.format(**input_values) + metadata = { + "template_scene": self.prompt_template.template_scene, + "input_values": input_values, + } + with root_tracer.start_span( + "BaseChat.__call_base.prompt_template.format", metadata=metadata + ): + current_prompt = self.prompt_template.format(**input_values) self.current_message.add_system_message(current_prompt) llm_messages = self.generate_llm_messages() @@ -137,14 +167,13 @@ def __call_base(self): # Not new server mode, we convert the message format(List[ModelMessage]) to list of dict # fix the error of "Object of type ModelMessage is not JSON serializable" when passing the payload to request.post llm_messages = list(map(lambda m: m.dict(), llm_messages)) - payload = { "model": self.llm_model, "prompt": self.generate_llm_text(), "messages": llm_messages, "temperature": float(self.prompt_template.temperature), "max_new_tokens": int(self.prompt_template.max_new_tokens), - "stop": self.prompt_template.sep, + # "stop": self.prompt_template.sep, "echo": self.llm_echo, } return payload @@ -152,6 +181,9 @@ def __call_base(self): def stream_plugin_call(self, text): return text + def stream_call_reinforce_fn(self, text): + return text + async def check_iterator_end(iterator): try: await asyncio.anext(iterator) @@ -159,20 +191,30 @@ async def check_iterator_end(iterator): except StopAsyncIteration: return True # 迭代器已经执行结束 + def _get_span_metadata(self, payload: Dict) -> Dict: + metadata = {k: v for k, v in payload.items()} + del metadata["prompt"] + metadata["messages"] = list( + map(lambda m: m if isinstance(m, dict) else m.dict(), metadata["messages"]) + ) + return metadata + async def stream_call(self): # TODO Retry when server connection error - payload = self.__call_base() + payload = await self.__call_base() self.skip_echo_len = len(payload.get("prompt").replace("", " ")) + 11 logger.info(f"Requert: \n{payload}") ai_response_text = "" + span = root_tracer.start_span( + "BaseChat.stream_call", metadata=self._get_span_metadata(payload) + ) + payload["span_id"] = span.span_id + payload["model_cache_enable"] = self.model_cache_enable try: - from pilot.model.cluster import WorkerManagerFactory - - worker_manager = CFG.SYSTEM_APP.get_component( - ComponentType.WORKER_MANAGER_FACTORY, WorkerManagerFactory - ).create() - async for output in worker_manager.generate_stream(payload): + async for output in await self._model_stream_operator.call_stream( + call_data={"data": payload} + ): ### Plug-in research in result generation msg = self.prompt_template.output_parser.parse_model_stream_resp_ex( output, self.skip_echo_len @@ -181,28 +223,33 @@ async def stream_call(self): view_msg = view_msg.replace("\n", "\\n") yield view_msg self.current_message.add_ai_message(msg) + view_msg = self.stream_call_reinforce_fn(view_msg) self.current_message.add_view_message(view_msg) + span.end() except Exception as e: print(traceback.format_exc()) - logger.error("model response parase faild!" + str(e)) + logger.error("model response parase failed!" + str(e)) self.current_message.add_view_message( f"""ERROR!{str(e)}\n {ai_response_text} """ ) ### store current conversation + span.end(metadata={"error": str(e)}) self.memory.append(self.current_message, self.user_id) async def nostream_call(self): - payload = self.__call_base() + payload = await self.__call_base() logger.info(f"Request: \n{payload}") ai_response_text = "" + span = root_tracer.start_span( + "BaseChat.nostream_call", metadata=self._get_span_metadata(payload) + ) + payload["span_id"] = span.span_id + payload["model_cache_enable"] = self.model_cache_enable try: - from pilot.model.cluster import WorkerManagerFactory - - worker_manager = CFG.SYSTEM_APP.get_component( - ComponentType.WORKER_MANAGER_FACTORY, WorkerManagerFactory - ).create() - - model_output = await worker_manager.generate(payload) + with root_tracer.start_span("BaseChat.invoke_worker_manager.generate"): + model_output = await self._model_operator.call( + call_data={"data": payload} + ) ### output parse ai_response_text = ( @@ -217,27 +264,78 @@ async def nostream_call(self): ai_response_text ) ) - ### run - result = self.do_action(prompt_define_response) + metadata = { + "model_output": model_output.to_dict(), + "ai_response_text": ai_response_text, + "prompt_define_response": self._parse_prompt_define_response( + prompt_define_response + ), + } + with root_tracer.start_span("BaseChat.do_action", metadata=metadata): + ### run + result = await blocking_func_to_async( + self._executor, self.do_action, prompt_define_response + ) ### llm speaker speak_to_user = self.get_llm_speak(prompt_define_response) - view_message = self.prompt_template.output_parser.parse_view_response( - speak_to_user, result + # view_message = self.prompt_template.output_parser.parse_view_response( + # speak_to_user, result + # ) + view_message = await blocking_func_to_async( + self._executor, + self.prompt_template.output_parser.parse_view_response, + speak_to_user, + result, + prompt_define_response, ) + view_message = view_message.replace("\n", "\\n") self.current_message.add_view_message(view_message) + self.message_adjust() + + span.end() except Exception as e: print(traceback.format_exc()) logger.error("model response parase faild!" + str(e)) self.current_message.add_view_message( f"""ERROR!{str(e)}\n {ai_response_text} """ ) + span.end(metadata={"error": str(e)}) ### store dialogue self.memory.append(self.current_message, self.user_id) return self.current_ai_response() + async def get_llm_response(self): + payload = await self.__call_base() + logger.info(f"Request: \n{payload}") + ai_response_text = "" + payload["model_cache_enable"] = self.model_cache_enable + try: + model_output = await self._model_operator.call(call_data={"data": payload}) + ### output parse + ai_response_text = ( + self.prompt_template.output_parser.parse_model_nostream_resp( + model_output, self.prompt_template.sep + ) + ) + ### model result deal + self.current_message.add_ai_message(ai_response_text) + prompt_define_response = None + prompt_define_response = ( + self.prompt_template.output_parser.parse_prompt_response( + ai_response_text + ) + ) + except Exception as e: + print(traceback.format_exc()) + logger.error("model response parse failed!" + str(e)) + self.current_message.add_view_message( + f"""model response parse failed!{str(e)}\n {ai_response_text} """ + ) + return prompt_define_response + def _blocking_stream_call(self): logger.warn( "_blocking_stream_call is only temporarily used in webserver and will be deleted soon, please use stream_call to replace it for higher performance" @@ -277,16 +375,18 @@ def generate_llm_text(self) -> str: if self.prompt_template.template_define: text += self.prompt_template.template_define + self.prompt_template.sep ### Load prompt - text += self.__load_system_message() + text += _load_system_message(self.current_message, self.prompt_template) ### Load examples - text += self.__load_example_messages() + text += _load_example_messages(self.prompt_template) ### Load History - text += self.__load_histroy_messages() + text += _load_history_messages( + self.prompt_template, self.history_message, self.chat_retention_rounds + ) ### Load User Input - text += self.__load_user_message() + text += _load_user_message(self.current_message, self.prompt_template) return text def generate_llm_messages(self) -> List[ModelMessage]: @@ -304,137 +404,26 @@ def generate_llm_messages(self) -> List[ModelMessage]: ) ) ### Load prompt - messages += self.__load_system_message(str_message=False) + messages += _load_system_message( + self.current_message, self.prompt_template, str_message=False + ) ### Load examples - messages += self.__load_example_messages(str_message=False) + messages += _load_example_messages(self.prompt_template, str_message=False) ### Load History - messages += self.__load_histroy_messages(str_message=False) + messages += _load_history_messages( + self.prompt_template, + self.history_message, + self.chat_retention_rounds, + str_message=False, + ) ### Load User Input - messages += self.__load_user_message(str_message=False) + messages += _load_user_message( + self.current_message, self.prompt_template, str_message=False + ) return messages - def __load_system_message(self, str_message: bool = True): - system_convs = self.current_message.get_system_conv() - system_text = "" - system_messages = [] - for system_conv in system_convs: - system_text += ( - system_conv.type + ":" + system_conv.content + self.prompt_template.sep - ) - system_messages.append( - ModelMessage(role=system_conv.type, content=system_conv.content) - ) - return system_text if str_message else system_messages - - def __load_user_message(self, str_message: bool = True): - user_conv = self.current_message.get_user_conv() - user_messages = [] - if user_conv: - user_text = ( - user_conv.type + ":" + user_conv.content + self.prompt_template.sep - ) - user_messages.append( - ModelMessage(role=user_conv.type, content=user_conv.content) - ) - return user_text if str_message else user_messages - else: - raise ValueError("Hi! What do you want to talk about?") - - def __load_example_messages(self, str_message: bool = True): - example_text = "" - example_messages = [] - if self.prompt_template.example_selector: - for round_conv in self.prompt_template.example_selector.examples(): - for round_message in round_conv["messages"]: - if not round_message["type"] in [ - ModelMessageRoleType.VIEW, - ModelMessageRoleType.SYSTEM, - ]: - message_type = round_message["type"] - message_content = round_message["data"]["content"] - example_text += ( - message_type - + ":" - + message_content - + self.prompt_template.sep - ) - example_messages.append( - ModelMessage(role=message_type, content=message_content) - ) - return example_text if str_message else example_messages - - def __load_histroy_messages(self, str_message: bool = True): - history_text = "" - history_messages = [] - if self.prompt_template.need_historical_messages: - if self.history_message: - logger.info( - f"There are already {len(self.history_message)} rounds of conversations! Will use {self.chat_retention_rounds} rounds of content as history!" - ) - if len(self.history_message) > self.chat_retention_rounds: - for first_message in self.history_message[0]["messages"]: - if not first_message["type"] in [ - ModelMessageRoleType.VIEW, - ModelMessageRoleType.SYSTEM, - ]: - message_type = first_message["type"] - message_content = first_message["data"]["content"] - history_text += ( - message_type - + ":" - + message_content - + self.prompt_template.sep - ) - history_messages.append( - ModelMessage(role=message_type, content=message_content) - ) - if self.chat_retention_rounds > 1: - index = self.chat_retention_rounds - 1 - for round_conv in self.history_message[-index:]: - for round_message in round_conv["messages"]: - if not round_message["type"] in [ - ModelMessageRoleType.VIEW, - ModelMessageRoleType.SYSTEM, - ]: - message_type = round_message["type"] - message_content = round_message["data"]["content"] - history_text += ( - message_type - + ":" - + message_content - + self.prompt_template.sep - ) - history_messages.append( - ModelMessage( - role=message_type, content=message_content - ) - ) - - else: - ### user all history - for conversation in self.history_message: - for message in conversation["messages"]: - ### histroy message not have promot and view info - if not message["type"] in [ - ModelMessageRoleType.VIEW, - ModelMessageRoleType.SYSTEM, - ]: - message_type = message["type"] - message_content = message["data"]["content"] - history_text += ( - message_type - + ":" - + message_content - + self.prompt_template.sep - ) - history_messages.append( - ModelMessage(role=message_type, content=message_content) - ) - - return history_text if str_message else history_messages - def current_ai_response(self) -> str: for message in self.current_message.messages: if message.type == "view": @@ -451,3 +440,230 @@ def generate(self, p) -> str: """ pass + + def _parse_prompt_define_response(self, prompt_define_response: Any) -> Any: + if not prompt_define_response: + return "" + if isinstance(prompt_define_response, str) or isinstance( + prompt_define_response, dict + ): + return prompt_define_response + if isinstance(prompt_define_response, tuple): + if hasattr(prompt_define_response, "_asdict"): + # namedtuple + return prompt_define_response._asdict() + else: + return dict( + zip(range(len(prompt_define_response)), prompt_define_response) + ) + else: + return prompt_define_response + + +def _build_model_operator( + is_stream: bool = False, dag_name: str = "llm_model_dag" +) -> BaseOperator: + """Builds and returns a model processing workflow (DAG) operator. + + This function constructs a Directed Acyclic Graph (DAG) for processing data using a model. + It includes caching and branching logic to either fetch results from a cache or process + data using the model. It supports both streaming and non-streaming modes. + + .. code-block:: python + input_node >> cache_check_branch_node + cache_check_branch_node >> model_node >> save_cached_node >> join_node + cache_check_branch_node >> cached_node >> join_node + + equivalent to:: + + -> model_node -> save_cached_node -> + / \ + input_node -> cache_check_branch_node ---> join_node + \ / + -> cached_node ------------------- -> + + Args: + is_stream (bool): Flag to determine if the operator should process data in streaming mode. + dag_name (str): Name of the DAG. + + Returns: + BaseOperator: The final operator in the constructed DAG, typically a join node. + """ + from pilot.model.cluster import WorkerManagerFactory + from pilot.awel import JoinOperator + from pilot.model.operator.model_operator import ( + ModelCacheBranchOperator, + CachedModelStreamOperator, + CachedModelOperator, + ModelSaveCacheOperator, + ModelStreamSaveCacheOperator, + ) + from pilot.cache import CacheManager + + # Fetch worker and cache managers from the system configuration + worker_manager = CFG.SYSTEM_APP.get_component( + ComponentType.WORKER_MANAGER_FACTORY, WorkerManagerFactory + ).create() + cache_manager: CacheManager = CFG.SYSTEM_APP.get_component( + ComponentType.MODEL_CACHE_MANAGER, CacheManager + ) + # Define task names for the model and cache nodes + model_task_name = "llm_model_node" + cache_task_name = "llm_model_cache_node" + + with DAG(dag_name): + # Create an input node + input_node = InputOperator(SimpleCallDataInputSource()) + # Determine if the workflow should operate in streaming mode + if is_stream: + model_node = ModelStreamOperator(worker_manager, task_name=model_task_name) + cached_node = CachedModelStreamOperator( + cache_manager, task_name=cache_task_name + ) + save_cached_node = ModelStreamSaveCacheOperator(cache_manager) + else: + model_node = ModelOperator(worker_manager, task_name=model_task_name) + cached_node = CachedModelOperator(cache_manager, task_name=cache_task_name) + save_cached_node = ModelSaveCacheOperator(cache_manager) + + # Create a branch node to decide between fetching from cache or processing with the model + cache_check_branch_node = ModelCacheBranchOperator( + cache_manager, + model_task_name="llm_model_node", + cache_task_name="llm_model_cache_node", + ) + # Create a join node to merge outputs from the model and cache nodes, just keep the first not empty output + join_node = JoinOperator( + combine_function=lambda model_out, cache_out: cache_out or model_out + ) + + # Define the workflow structure using the >> operator + input_node >> cache_check_branch_node + cache_check_branch_node >> model_node >> save_cached_node >> join_node + cache_check_branch_node >> cached_node >> join_node + + return join_node + + +def _load_system_message( + current_message: OnceConversation, + prompt_template: PromptTemplate, + str_message: bool = True, +): + system_convs = current_message.get_system_conv() + system_text = "" + system_messages = [] + for system_conv in system_convs: + system_text += ( + system_conv.type + ":" + system_conv.content + prompt_template.sep + ) + system_messages.append( + ModelMessage(role=system_conv.type, content=system_conv.content) + ) + return system_text if str_message else system_messages + + +def _load_user_message( + current_message: OnceConversation, + prompt_template: PromptTemplate, + str_message: bool = True, +): + user_conv = current_message.get_user_conv() + user_messages = [] + if user_conv: + user_text = user_conv.type + ":" + user_conv.content + prompt_template.sep + user_messages.append( + ModelMessage(role=user_conv.type, content=user_conv.content) + ) + return user_text if str_message else user_messages + else: + raise ValueError("Hi! What do you want to talk about?") + + +def _load_example_messages(prompt_template: PromptTemplate, str_message: bool = True): + example_text = "" + example_messages = [] + if prompt_template.example_selector: + for round_conv in prompt_template.example_selector.examples(): + for round_message in round_conv["messages"]: + if not round_message["type"] in [ + ModelMessageRoleType.VIEW, + ModelMessageRoleType.SYSTEM, + ]: + message_type = round_message["type"] + message_content = round_message["data"]["content"] + example_text += ( + message_type + ":" + message_content + prompt_template.sep + ) + example_messages.append( + ModelMessage(role=message_type, content=message_content) + ) + return example_text if str_message else example_messages + + +def _load_history_messages( + prompt_template: PromptTemplate, + history_message: List[OnceConversation], + chat_retention_rounds: int, + str_message: bool = True, +): + history_text = "" + history_messages = [] + if prompt_template.need_historical_messages: + if history_message: + logger.info( + f"There are already {len(history_message)} rounds of conversations! Will use {chat_retention_rounds} rounds of content as history!" + ) + if len(history_message) > chat_retention_rounds: + for first_message in history_message[0]["messages"]: + if not first_message["type"] in [ + ModelMessageRoleType.VIEW, + ModelMessageRoleType.SYSTEM, + ]: + message_type = first_message["type"] + message_content = first_message["data"]["content"] + history_text += ( + message_type + ":" + message_content + prompt_template.sep + ) + history_messages.append( + ModelMessage(role=message_type, content=message_content) + ) + if chat_retention_rounds > 1: + index = chat_retention_rounds - 1 + for round_conv in history_message[-index:]: + for round_message in round_conv["messages"]: + if not round_message["type"] in [ + ModelMessageRoleType.VIEW, + ModelMessageRoleType.SYSTEM, + ]: + message_type = round_message["type"] + message_content = round_message["data"]["content"] + history_text += ( + message_type + + ":" + + message_content + + prompt_template.sep + ) + history_messages.append( + ModelMessage(role=message_type, content=message_content) + ) + + else: + ### user all history + for conversation in history_message: + for message in conversation["messages"]: + ### histroy message not have promot and view info + if not message["type"] in [ + ModelMessageRoleType.VIEW, + ModelMessageRoleType.SYSTEM, + ]: + message_type = message["type"] + message_content = message["data"]["content"] + history_text += ( + message_type + ":" + message_content + prompt_template.sep + ) + history_messages.append( + ModelMessage(role=message_type, content=message_content) + ) + + return history_text if str_message else history_messages diff --git a/pilot/scene/base_message.py b/pilot/scene/base_message.py index eeb42a285..c4c10459c 100644 --- a/pilot/scene/base_message.py +++ b/pilot/scene/base_message.py @@ -1,7 +1,7 @@ from __future__ import annotations from abc import ABC, abstractmethod -from typing import Any, Dict, List, Tuple, Optional +from typing import Any, Dict, List, Tuple, Optional, Union from pydantic import BaseModel, Field, root_validator @@ -70,14 +70,6 @@ def type(self) -> str: return "system" -class ModelMessage(BaseModel): - """Type of message that interaction between dbgpt-server and llm-server""" - - """Similar to openai's message format""" - role: str - content: str - - class ModelMessageRoleType: """ "Type of ModelMessage role""" @@ -87,6 +79,77 @@ class ModelMessageRoleType: VIEW = "view" +class ModelMessage(BaseModel): + """Type of message that interaction between dbgpt-server and llm-server""" + + """Similar to openai's message format""" + role: str + content: str + + @staticmethod + def from_openai_messages( + messages: Union[str, List[Dict[str, str]]] + ) -> List["ModelMessage"]: + """Openai message format to current ModelMessage format""" + if isinstance(messages, str): + return [ModelMessage(role=ModelMessageRoleType.HUMAN, content=messages)] + result = [] + for message in messages: + msg_role = message["role"] + content = message["content"] + if msg_role == "system": + result.append( + ModelMessage(role=ModelMessageRoleType.SYSTEM, content=content) + ) + elif msg_role == "user": + result.append( + ModelMessage(role=ModelMessageRoleType.HUMAN, content=content) + ) + elif msg_role == "assistant": + result.append( + ModelMessage(role=ModelMessageRoleType.AI, content=content) + ) + else: + raise ValueError(f"Unknown role: {msg_role}") + return result + + @staticmethod + def to_openai_messages(messages: List["ModelMessage"]) -> List[Dict[str, str]]: + """Convert to OpenAI message format and + hugggingface [Templates of Chat Models](https://huggingface.co/docs/transformers/v4.34.1/en/chat_templating) + """ + history = [] + # Add history conversation + for message in messages: + if message.role == ModelMessageRoleType.HUMAN: + history.append({"role": "user", "content": message.content}) + elif message.role == ModelMessageRoleType.SYSTEM: + history.append({"role": "system", "content": message.content}) + elif message.role == ModelMessageRoleType.AI: + history.append({"role": "assistant", "content": message.content}) + else: + pass + # Move the last user's information to the end + temp_his = history[::-1] + last_user_input = None + for m in temp_his: + if m["role"] == "user": + last_user_input = m + break + if last_user_input: + history.remove(last_user_input) + history.append(last_user_input) + return history + + @staticmethod + def to_dict_list(messages: List["ModelMessage"]) -> List[Dict[str, str]]: + return list(map(lambda m: m.dict(), messages)) + + @staticmethod + def build_human_message(content: str) -> "ModelMessage": + return ModelMessage(role=ModelMessageRoleType.HUMAN, content=content) + + class Generation(BaseModel): """Output of a single generation.""" diff --git a/pilot/scene/chat_agent/chat.py b/pilot/scene/chat_agent/chat.py index 0fc5a0375..09968d8f3 100644 --- a/pilot/scene/chat_agent/chat.py +++ b/pilot/scene/chat_agent/chat.py @@ -11,6 +11,7 @@ from .prompt import prompt from pilot.component import ComponentType from pilot.base_modules.agent.controller import ModuleAgent +from pilot.utils.tracer import root_tracer, trace CFG = Config() @@ -51,7 +52,8 @@ def __init__(self, chat_param: Dict): self.api_call = ApiCall(plugin_generator=self.plugins_prompt_generator) - def generate_input_values(self): + @trace() + async def generate_input_values(self) -> Dict[str, str]: input_values = { "user_goal": self.current_user_input, "expand_constraints": self.__list_to_prompt_str( @@ -62,8 +64,16 @@ def generate_input_values(self): return input_values def stream_plugin_call(self, text): - text = text.replace("\n", " ") - return self.api_call.run(text) + text = ( + text.replace("\\n", " ") + .replace("\n", " ") + .replace("\_", "_") + .replace("\\", " ") + ) + with root_tracer.start_span( + "ChatAgent.stream_plugin_call.api_call", metadata={"text": text} + ): + return self.api_call.run(text) def __list_to_prompt_str(self, list: List) -> str: return "\n".join(f"{i + 1 + 1}. {item}" for i, item in enumerate(list)) diff --git a/pilot/scene/chat_agent/out_parser.py b/pilot/scene/chat_agent/out_parser.py index ecea328bb..962a40fbc 100644 --- a/pilot/scene/chat_agent/out_parser.py +++ b/pilot/scene/chat_agent/out_parser.py @@ -1,11 +1,6 @@ import json from typing import Dict, NamedTuple -from pilot.utils import build_logger from pilot.out_parser.base import BaseOutputParser, T -from pilot.configs.model_config import LOGDIR - - -logger = build_logger("webserver", LOGDIR + "DbChatOutputParser.log") class PluginAction(NamedTuple): @@ -15,7 +10,7 @@ class PluginAction(NamedTuple): class PluginChatOutputParser(BaseOutputParser): - def parse_view_response(self, speak, data) -> str: + def parse_view_response(self, speak, data, prompt_response) -> str: ### tool out data to table view print(f"parse_view_response:{speak},{str(data)}") view_text = f"##### {speak}" + "\n" + str(data) diff --git a/pilot/scene/chat_agent/prompt.py b/pilot/scene/chat_agent/prompt.py index 7d01bfd2f..94151544a 100644 --- a/pilot/scene/chat_agent/prompt.py +++ b/pilot/scene/chat_agent/prompt.py @@ -42,7 +42,8 @@ 3.根据上面约束的方式生成每个工具的调用,对于工具使用的提示文本,需要在工具使用前生成 4.如果用户目标无法理解和意图不明确,优先使用搜索引擎工具 5.参数内容可能需要根据用户的目标推理得到,不仅仅是从文本提取 - 6.约束条件和工具信息作为推理过程的辅助信息,不要表达在给用户的输出内容中 + 6.约束条件和工具信息作为推理过程的辅助信息,对应内容不要表达在给用户的输出内容中 + 7.不要把部分内容放在markdown标签里 {expand_constraints} 工具列表: diff --git a/pilot/scene/chat_dashboard/chat.py b/pilot/scene/chat_dashboard/chat.py index 7e4433670..6771fb3fc 100644 --- a/pilot/scene/chat_dashboard/chat.py +++ b/pilot/scene/chat_dashboard/chat.py @@ -12,6 +12,8 @@ ) from pilot.scene.chat_dashboard.prompt import prompt from pilot.scene.chat_dashboard.data_loader import DashboardDataLoader +from pilot.utils.executor_utils import blocking_func_to_async +from pilot.utils.tracer import root_tracer, trace CFG = Config() @@ -52,7 +54,8 @@ def __load_dashboard_template(self, template_name): data = f.read() return json.loads(data) - def generate_input_values(self): + @trace() + async def generate_input_values(self) -> Dict: try: from pilot.summary.db_summary_client import DBSummaryClient except ImportError: @@ -60,9 +63,16 @@ def generate_input_values(self): client = DBSummaryClient(system_app=CFG.SYSTEM_APP) try: - table_infos = client.get_similar_tables( - dbname=self.db_name, query=self.current_user_input, topk=self.top_k + table_infos = await blocking_func_to_async( + self._executor, + client.get_similar_tables, + self.db_name, + self.current_user_input, + self.top_k, ) + # table_infos = client.get_similar_tables( + # dbname=self.db_name, query=self.current_user_input, topk=self.top_k + # ) print("dashboard vector find tables:{}", table_infos) except Exception as e: print("db summary find error!" + str(e)) diff --git a/pilot/scene/chat_dashboard/data_loader.py b/pilot/scene/chat_dashboard/data_loader.py index faabe542a..970fc92dd 100644 --- a/pilot/scene/chat_dashboard/data_loader.py +++ b/pilot/scene/chat_dashboard/data_loader.py @@ -52,8 +52,8 @@ def get_chart_values_by_data(self, field_names, datas, chart_sql: str): values.append(value_item) return field_names, values except Exception as e: - logger.debug("Prepare Chart Data Faild!" + str(e)) - raise ValueError("Prepare Chart Data Faild!") + logger.debug("Prepare Chart Data Failed!" + str(e)) + raise ValueError("Prepare Chart Data Failed!") def get_chart_values_by_db(self, db_name: str, chart_sql: str): logger.info(f"get_chart_values_by_db:{db_name},{chart_sql}") diff --git a/pilot/scene/chat_dashboard/out_parser.py b/pilot/scene/chat_dashboard/out_parser.py index d593333e5..a3fee7886 100644 --- a/pilot/scene/chat_dashboard/out_parser.py +++ b/pilot/scene/chat_dashboard/out_parser.py @@ -38,7 +38,7 @@ def parse_prompt_response(self, model_out_text): ) return chart_items - def parse_view_response(self, speak, data) -> str: + def parse_view_response(self, speak, data, prompt_response) -> str: return json.dumps(data.prepare_dict()) @property diff --git a/pilot/scene/chat_dashboard/prompt.py b/pilot/scene/chat_dashboard/prompt.py index 9fed97f8f..7f1dd4090 100644 --- a/pilot/scene/chat_dashboard/prompt.py +++ b/pilot/scene/chat_dashboard/prompt.py @@ -42,7 +42,7 @@ PROMPT_SEP = SeparatorStyle.SINGLE.value -PROMPT_NEED_NEED_STREAM_OUT = False +PROMPT_NEED_STREAM_OUT = False prompt = PromptTemplate( template_scene=ChatScene.ChatDashboard.value(), @@ -50,9 +50,9 @@ response_format=json.dumps(RESPONSE_FORMAT, indent=4), template_define=PROMPT_SCENE_DEFINE, template=_DEFAULT_TEMPLATE, - stream_out=PROMPT_NEED_NEED_STREAM_OUT, + stream_out=PROMPT_NEED_STREAM_OUT, output_parser=ChatDashboardOutputParser( - sep=PROMPT_SEP, is_stream_out=PROMPT_NEED_NEED_STREAM_OUT + sep=PROMPT_SEP, is_stream_out=PROMPT_NEED_STREAM_OUT ), ) CFG.prompt_template_registry.register(prompt, is_default=True) diff --git a/pilot/scene/chat_data/chat_excel/excel_analyze/chat.py b/pilot/scene/chat_data/chat_excel/excel_analyze/chat.py index 12465998f..036ca5517 100644 --- a/pilot/scene/chat_data/chat_excel/excel_analyze/chat.py +++ b/pilot/scene/chat_data/chat_excel/excel_analyze/chat.py @@ -14,6 +14,7 @@ from pilot.common.path_utils import has_path from pilot.configs.model_config import LLM_MODEL_CONFIG, KNOWLEDGE_UPLOAD_ROOT_PATH from pilot.base_modules.agent.common.schema import Status +from pilot.utils.tracer import root_tracer, trace CFG = Config() @@ -22,7 +23,7 @@ class ChatExcel(BaseChat): """a Excel analyzer to analyze Excel Data""" chat_scene: str = ChatScene.ChatExcel.value() - chat_retention_rounds = 1 + chat_retention_rounds = 2 def __init__(self, chat_param: Dict): """Chat Excel Module Initialization @@ -50,19 +51,50 @@ def __init__(self, chat_param: Dict): super().__init__(chat_param=chat_param) def _generate_numbered_list(self) -> str: - command_strings = [] - if CFG.command_disply: - for name, item in CFG.command_disply.commands.items(): - if item.enabled: - command_strings.append(f"{name}:{item.description}") - # command_strings += [ - # str(item) - # for item in CFG.command_disply.commands.values() - # if item.enabled - # ] - return "\n".join(f"{i+1}. {item}" for i, item in enumerate(command_strings)) + antv_charts = [ + {"response_line_chart": "used to display comparative trend analysis data"}, + { + "response_pie_chart": "suitable for scenarios such as proportion and distribution statistics" + }, + { + "response_table": "suitable for display with many display columns or non-numeric columns" + }, + # {"response_data_text":" the default display method, suitable for single-line or simple content display"}, + { + "response_scatter_plot": "Suitable for exploring relationships between variables, detecting outliers, etc." + }, + { + "response_bubble_chart": "Suitable for relationships between multiple variables, highlighting outliers or special situations, etc." + }, + { + "response_donut_chart": "Suitable for hierarchical structure representation, category proportion display and highlighting key categories, etc." + }, + { + "response_area_chart": "Suitable for visualization of time series data, comparison of multiple groups of data, analysis of data change trends, etc." + }, + { + "response_heatmap": "Suitable for visual analysis of time series data, large-scale data sets, distribution of classified data, etc." + }, + ] - def generate_input_values(self): + # command_strings = [] + # if CFG.command_disply: + # for name, item in CFG.command_disply.commands.items(): + # if item.enabled: + # command_strings.append(f"{name}:{item.description}") + # command_strings += [ + # str(item) + # for item in CFG.command_disply.commands.values() + # if item.enabled + # ] + return "\n".join( + f"{key}:{value}" + for dict_item in antv_charts + for key, value in dict_item.items() + ) + + @trace() + async def generate_input_values(self) -> Dict: input_values = { "user_input": self.current_user_input, "table_name": self.excel_reader.table_name, @@ -76,7 +108,7 @@ async def prepare(self): return None chat_param = { "chat_session_id": self.chat_session_id, - "user_input": "[" + self.excel_reader.excel_file_name + "]" + " Analysis!", + "user_input": "[" + self.excel_reader.excel_file_name + "]" + " Analyze!", "parent_mode": self.chat_mode, "select_param": self.excel_reader.excel_file_name, "excel_reader": self.excel_reader, @@ -88,5 +120,15 @@ async def prepare(self): return result def stream_plugin_call(self, text): - text = text.replace("\n", " ") - return self.api_call.run_display_sql(text, self.excel_reader.get_df_by_sql_ex) + text = ( + text.replace("\\n", " ") + .replace("\n", " ") + .replace("\_", "_") + .replace("\\", " ") + ) + with root_tracer.start_span( + "ChatExcel.stream_plugin_call.run_display_sql", metadata={"text": text} + ): + return self.api_call.display_sql_llmvis( + text, self.excel_reader.get_df_by_sql_ex + ) diff --git a/pilot/scene/chat_data/chat_excel/excel_analyze/out_parser.py b/pilot/scene/chat_data/chat_excel/excel_analyze/out_parser.py index 691c652fa..c3368f6f5 100644 --- a/pilot/scene/chat_data/chat_excel/excel_analyze/out_parser.py +++ b/pilot/scene/chat_data/chat_excel/excel_analyze/out_parser.py @@ -36,6 +36,6 @@ def parse_prompt_response(self, model_out_text): except Exception as e: raise ValueError(f"LLM Response Can't Parser! \n") - def parse_view_response(self, speak, data) -> str: + def parse_view_response(self, speak, data, prompt_response) -> str: ### tool out data to table view return data diff --git a/pilot/scene/chat_data/chat_excel/excel_analyze/prompt.py b/pilot/scene/chat_data/chat_excel/excel_analyze/prompt.py index 23c86bd4d..924a78b68 100644 --- a/pilot/scene/chat_data/chat_excel/excel_analyze/prompt.py +++ b/pilot/scene/chat_data/chat_excel/excel_analyze/prompt.py @@ -12,30 +12,34 @@ _PROMPT_SCENE_DEFINE_EN = "You are a data analysis expert. " _DEFAULT_TEMPLATE_EN = """ -Please use the data structure and column information in the above historical dialogue and combine it with data analysis to answer the user's questions while satisfying the constraints. +Please use the data structure column analysis information generated in the above historical dialogue to answer the user's questions through duckdb sql data analysis under the following constraints.. Constraint: - 1.Please output your thinking process and analysis ideas first, and then output the specific data analysis results. The data analysis results are output in the following format:display typeCorrect duckdb data analysis sql - 2.For the available display methods of data analysis results, please choose the most appropriate one from the following display methods. If you are not sure, use 'response_data_text' as the display. The available display types are as follows:{disply_type} - 3.The table name that needs to be used in SQL is: {table_name}, please make sure not to use column names that are not in the data structure. + 1.Please fully understand the user's problem and use duckdb sql for analysis. The analysis content is returned in the output format required below. Please output the sql in the corresponding sql parameter. + 2.Please choose the best one from the display methods given below for data rendering, and put the type name into the name parameter value that returns the required format. If you cannot find the most suitable one, use 'Table' as the display method. , the available data display methods are as follows: {disply_type} + 3.The table name that needs to be used in SQL is: {table_name}. Please check the sql you generated and do not use column names that are not in the data structure. 4.Give priority to answering using data analysis. If the user's question does not involve data analysis, you can answer according to your understanding. - + 5.The sql part of the output content is converted to: [data display mode][correct duckdb data analysis sql] For this format, please refer to the return format requirements. + +Please think step by step and give your answer, and make sure your answer is formatted as follows: + thoughts summary to say to user.[Data display method][Correct duckdb data analysis sql] + User Questions: {user_input} """ _PROMPT_SCENE_DEFINE_ZH = """你是一个数据分析专家!""" _DEFAULT_TEMPLATE_ZH = """ -请使用上述历史对话中的数据结构信息,在满足下面约束条件下结合数据分析回答用户的问题。 +请使用历史对话中的数据结构信息,在满足下面约束条件下通过duckdb sql数据分析回答用户的问题。 约束条件: - 1.请先输出你的分析思路内容,再输出具体的数据分析结果。如果有数据数据分析时,请确保在输出的结果中包含如下格式内容:[数据展示方式][正确的duckdb数据分析sql] - 2.请确保数据分析结果格式的内容在整个回答中只出现一次,确保上述结构稳定,把[]部分内容替换为对应的值 - 3.数据分析结果可用的展示方式请在下面的展示方式中选择最合适的一种,放入数据分析结果的name字段内如果无法确定,则使用'Text'作为显示,可用数据展示方式如下: {disply_type} - 4.SQL中需要使用的表名是: {table_name},请不要使用没在数据结构中的列名。 - 5.优先使用数据分析的方式回答,如果用户问题不涉及数据分析内容,你可以按你的理解进行回答 - 6.请确保你的输出内容有良好排版,输出内容均为普通markdown文本,不要用```或者```python这种标签来包围的输出内容 -请确保你的输出格式如下: - 分析思路简介.[数据展示方式][正确的duckdb数据分析sql] + 1.请充分理解用户的问题,使用duckdb sql的方式进行分析, 分析内容按下面要求的输出格式返回,sql请输出在对应的sql参数中 + 2.请从如下给出的展示方式种选择最优的一种用以进行数据渲染,将类型名称放入返回要求格式的name参数值种,如果找不到最合适的则使用'Table'作为展示方式,可用数据展示方式如下: {disply_type} + 3.SQL中需要使用的表名是: {table_name},请检查你生成的sql,不要使用没在数据结构中的列名 + 4.优先使用数据分析的方式回答,如果用户问题不涉及数据分析内容,你可以按你的理解进行回答 + 5.输出内容中sql部分转换为:[数据显示方式][正确的duckdb数据分析sql] 这样的格式,参考返回格式要求 + +请一步一步思考,给出回答,并确保你的回答内容格式如下: + 对用户说的想法摘要.[数据展示方式][正确的duckdb数据分析sql] 用户问题:{user_input} """ @@ -51,21 +55,21 @@ PROMPT_SEP = SeparatorStyle.SINGLE.value -PROMPT_NEED_NEED_STREAM_OUT = True +PROMPT_NEED_STREAM_OUT = True # Temperature is a configuration hyperparameter that controls the randomness of language model output. # A high temperature produces more unpredictable and creative results, while a low temperature produces more common and conservative output. # For example, if you adjust the temperature to 0.5, the model will usually generate text that is more predictable and less creative than if you set the temperature to 1.0. -PROMPT_TEMPERATURE = 0.8 +PROMPT_TEMPERATURE = 0.3 prompt = PromptTemplate( template_scene=ChatScene.ChatExcel.value(), input_variables=["user_input", "table_name", "disply_type"], template_define=_PROMPT_SCENE_DEFINE, template=_DEFAULT_TEMPLATE, - stream_out=PROMPT_NEED_NEED_STREAM_OUT, + stream_out=PROMPT_NEED_STREAM_OUT, output_parser=ChatExcelOutputParser( - sep=PROMPT_SEP, is_stream_out=PROMPT_NEED_NEED_STREAM_OUT + sep=PROMPT_SEP, is_stream_out=PROMPT_NEED_STREAM_OUT ), need_historical_messages=True, # example_selector=sql_data_example, diff --git a/pilot/scene/chat_data/chat_excel/excel_learning/chat.py b/pilot/scene/chat_data/chat_excel/excel_learning/chat.py index 646704d32..dc94f4574 100644 --- a/pilot/scene/chat_data/chat_excel/excel_learning/chat.py +++ b/pilot/scene/chat_data/chat_excel/excel_learning/chat.py @@ -1,11 +1,7 @@ import json -import os -from typing import Any +from typing import Any, Dict -from pilot.scene.base_message import ( - HumanMessage, - ViewMessage, -) +from pilot.scene.base_message import HumanMessage, ViewMessage, AIMessage from pilot.scene.base_chat import BaseChat from pilot.scene.base import ChatScene from pilot.common.sql_database import Database @@ -13,6 +9,8 @@ from pilot.scene.chat_data.chat_excel.excel_learning.prompt import prompt from pilot.scene.chat_data.chat_excel.excel_reader import ExcelReader from pilot.json_utils.utilities import DateTimeEncoder +from pilot.utils.executor_utils import blocking_func_to_async +from pilot.utils.tracer import root_tracer, trace CFG = Config() @@ -46,13 +44,28 @@ def __init__( if parent_mode: self.current_message.chat_mode = parent_mode.value() - def generate_input_values(self): - colunms, datas = self.excel_reader.get_sample_data() + @trace() + async def generate_input_values(self) -> Dict: + # colunms, datas = self.excel_reader.get_sample_data() + colunms, datas = await blocking_func_to_async( + self._executor, self.excel_reader.get_sample_data + ) + self.prompt_template.output_parser.update(colunms) datas.insert(0, colunms) input_values = { - "data_example": json.dumps( - self.excel_reader.get_sample_data(), cls=DateTimeEncoder - ), + "data_example": json.dumps(datas, cls=DateTimeEncoder), + "file_name": self.excel_reader.excel_file_name, } return input_values + + def message_adjust(self): + ### adjust learning result in messages + view_message = "" + for message in self.current_message.messages: + if message.type == ViewMessage.type: + view_message = message.content + + for message in self.current_message.messages: + if message.type == AIMessage.type: + message.content = view_message diff --git a/pilot/scene/chat_data/chat_excel/excel_learning/out_parser.py b/pilot/scene/chat_data/chat_excel/excel_learning/out_parser.py index e3bcfb8ea..b52558e47 100644 --- a/pilot/scene/chat_data/chat_excel/excel_learning/out_parser.py +++ b/pilot/scene/chat_data/chat_excel/excel_learning/out_parser.py @@ -19,11 +19,12 @@ class ExcelResponse(NamedTuple): class LearningExcelOutputParser(BaseOutputParser): def __init__(self, sep: str, is_stream_out: bool): super().__init__(sep=sep, is_stream_out=is_stream_out) + self.is_downgraded = False def parse_prompt_response(self, model_out_text): - clean_str = super().parse_prompt_response(model_out_text) - print("clean prompt response:", clean_str) try: + clean_str = super().parse_prompt_response(model_out_text) + logger.info(f"parse_prompt_response:{model_out_text},{model_out_text}") response = json.loads(clean_str) for key in sorted(response): if key.strip() == "DataAnalysis": @@ -34,27 +35,40 @@ def parse_prompt_response(self, model_out_text): plans = response[key] return ExcelResponse(desciption=desciption, clounms=clounms, plans=plans) except Exception as e: - return model_out_text + logger.error(f"parse_prompt_response Faild!{str(e)}") + clounms = [] + for name in self.data_schema: + clounms.append({name: "-"}) + return ExcelResponse(desciption=model_out_text, clounms=clounms, plans=None) - def parse_view_response(self, speak, data) -> str: + def __build_colunms_html(self, clounms_data): + html_colunms = f"### **Data Structure**\n" + column_index = 0 + for item in clounms_data: + column_index += 1 + keys = item.keys() + for key in keys: + html_colunms = ( + html_colunms + f"- **{column_index}.[{key}]** _{item[key]}_\n" + ) + return html_colunms + + def __build_plans_html(self, plans_data): + html_plans = f"### **Analysis plans**\n" + index = 0 + if plans_data: + for item in plans_data: + index += 1 + html_plans = html_plans + f"{item} \n" + return html_plans + + def parse_view_response(self, speak, data, prompt_response) -> str: if data and not isinstance(data, str): ### tool out data to table view html_title = f"### **Data Summary**\n{data.desciption} " - html_colunms = f"### **Data Structure**\n" - column_index = 0 - for item in data.clounms: - column_index += 1 - keys = item.keys() - for key in keys: - html_colunms = ( - html_colunms + f"- **{column_index}.[{key}]** _{item[key]}_\n" - ) - - html_plans = f"### **Recommended analysis plan**\n" - index = 0 - for item in data.plans: - index += 1 - html_plans = html_plans + f"{item} \n" + html_colunms = self.__build_colunms_html(data.clounms) + html_plans = self.__build_plans_html(data.plans) + html = f"""{html_title}\n{html_colunms}\n{html_plans}""" return html else: diff --git a/pilot/scene/chat_data/chat_excel/excel_learning/prompt.py b/pilot/scene/chat_data/chat_excel/excel_learning/prompt.py index ee82b51a0..9339f7cc4 100644 --- a/pilot/scene/chat_data/chat_excel/excel_learning/prompt.py +++ b/pilot/scene/chat_data/chat_excel/excel_learning/prompt.py @@ -12,32 +12,49 @@ _PROMPT_SCENE_DEFINE_EN = "You are a data analysis expert. " _DEFAULT_TEMPLATE_EN = """ -This is an example data,please learn to understand the structure and content of this data: +The following is part of the data of the user file {file_name}. Please learn to understand the structure and content of the data and output the parsing results as required: {data_example} -Explain the meaning and function of each column, and give a simple and clear explanation of the technical terms. -Provide some analysis options,please think step by step. +Explain the meaning and function of each column, and give a simple and clear explanation of the technical terms, If it is a Date column, please summarize the Date format like: yyyy-MM-dd HH:MM:ss. +Use the column name as the attribute name and the analysis explanation as the attribute value to form a json array and output it in the ColumnAnalysis attribute that returns the json content. +Please do not modify or translate the column names, make sure they are consistent with the given data column names. +Provide some useful analysis ideas to users from different dimensions for data. -Please return your answer in JSON format, the return format is as follows: +Please think step by step and give your answer. Make sure to answer only in JSON format,the format is as follows: {response} """ _PROMPT_SCENE_DEFINE_ZH = "你是一个数据分析专家. " _DEFAULT_TEMPLATE_ZH = """ -下面是一份示例数据,请学习理解该数据的结构和内容: +下面是用户文件{file_name}的一部分数据,请学习理解该数据的结构和内容,按要求输出解析结果: {data_example} -分析各列数据的含义和作用,并对专业术语进行简单明了的解释。 -提供一些分析方案思路,请一步一步思考。 +分析各列数据的含义和作用,并对专业术语进行简单明了的解释, 如果是时间类型请给出时间格式类似:yyyy-MM-dd HH:MM:ss. +将列名作为属性名,分析解释作为属性值,组成json数组,并输出在返回json内容的ColumnAnalysis属性中. +请不要修改或者翻译列名,确保和给出数据列名一致. +针对数据从不同维度提供一些有用的分析思路给用户。 -请以JSON格式返回您的答案,返回格式如下: +请一步一步思考,确保只以JSON格式回答,具体格式如下: {response} """ -RESPONSE_FORMAT_SIMPLE = { +_RESPONSE_FORMAT_SIMPLE_ZH = { "DataAnalysis": "数据内容分析总结", - "ColumnAnalysis": [{"column name1": "字段1介绍,专业术语解释(请尽量简单明了)"}], - "AnalysisProgram": ["1.分析方案1,图表展示方式1", "2.分析方案2,图表展示方式2"], + "ColumnAnalysis": [{"column name": "字段1介绍,专业术语解释(请尽量简单明了)"}], + "AnalysisProgram": ["1.分析方案1", "2.分析方案2"], } +_RESPONSE_FORMAT_SIMPLE_EN = { + "DataAnalysis": "Data content analysis summary", + "ColumnAnalysis": [ + { + "column name": "Introduction to Column 1 and explanation of professional terms (please try to be as simple and clear as possible)" + } + ], + "AnalysisProgram": ["1. Analysis plan ", "2. Analysis plan "], +} + +RESPONSE_FORMAT_SIMPLE = ( + _RESPONSE_FORMAT_SIMPLE_EN if CFG.LANGUAGE == "en" else _RESPONSE_FORMAT_SIMPLE_ZH +) _DEFAULT_TEMPLATE = ( @@ -51,12 +68,12 @@ PROMPT_SEP = SeparatorStyle.SINGLE.value -PROMPT_NEED_NEED_STREAM_OUT = False +PROMPT_NEED_STREAM_OUT = False # Temperature is a configuration hyperparameter that controls the randomness of language model output. # A high temperature produces more unpredictable and creative results, while a low temperature produces more common and conservative output. # For example, if you adjust the temperature to 0.5, the model will usually generate text that is more predictable and less creative than if you set the temperature to 1.0. -PROMPT_TEMPERATURE = 0.5 +PROMPT_TEMPERATURE = 0.8 prompt = PromptTemplate( template_scene=ChatScene.ExcelLearning.value(), @@ -64,9 +81,9 @@ response_format=json.dumps(RESPONSE_FORMAT_SIMPLE, ensure_ascii=False, indent=4), template_define=PROMPT_SCENE_DEFINE, template=_DEFAULT_TEMPLATE, - stream_out=PROMPT_NEED_NEED_STREAM_OUT, + stream_out=PROMPT_NEED_STREAM_OUT, output_parser=LearningExcelOutputParser( - sep=PROMPT_SEP, is_stream_out=PROMPT_NEED_NEED_STREAM_OUT + sep=PROMPT_SEP, is_stream_out=PROMPT_NEED_STREAM_OUT ), # example_selector=sql_data_example, temperature=PROMPT_TEMPERATURE, diff --git a/pilot/scene/chat_data/chat_excel/excel_learning/test.py b/pilot/scene/chat_data/chat_excel/excel_learning/test.py deleted file mode 100644 index fdfaf146a..000000000 --- a/pilot/scene/chat_data/chat_excel/excel_learning/test.py +++ /dev/null @@ -1,271 +0,0 @@ -import os -import duckdb -import pandas as pd -import numpy as np -import matplotlib -import seaborn as sns -import uuid - -from pandas import DataFrame - -import matplotlib.pyplot as plt -import matplotlib.ticker as mtick -from matplotlib import font_manager -from matplotlib.font_manager import FontManager - -matplotlib.use("Agg") -import time -from fsspec import filesystem -import spatial - -from pilot.scene.chat_data.chat_excel.excel_reader import ExcelReader - - -def data_pre_classification(df: DataFrame): - ## Data pre-classification - columns = df.columns.tolist() - - number_columns = [] - non_numeric_colums = [] - - # 收集数据分类小于10个的列 - non_numeric_colums_value_map = {} - numeric_colums_value_map = {} - df_filtered = df.dropna() - for column_name in columns: - print(np.issubdtype(df_filtered[column_name].dtype, np.number)) - # if pd.to_numeric(df[column_name], errors='coerce').notna().all(): - # if np.issubdtype(df_filtered[column_name].dtype, np.number): - if pd.api.types.is_numeric_dtype(df[column_name].dtypes): - number_columns.append(column_name) - unique_values = df[column_name].unique() - numeric_colums_value_map.update({column_name: len(unique_values)}) - else: - non_numeric_colums.append(column_name) - unique_values = df[column_name].unique() - non_numeric_colums_value_map.update({column_name: len(unique_values)}) - - sorted_numeric_colums_value_map = dict( - sorted(numeric_colums_value_map.items(), key=lambda x: x[1]) - ) - numeric_colums_sort_list = list(sorted_numeric_colums_value_map.keys()) - - sorted_colums_value_map = dict( - sorted(non_numeric_colums_value_map.items(), key=lambda x: x[1]) - ) - non_numeric_colums_sort_list = list(sorted_colums_value_map.keys()) - - # Analyze x-coordinate - if len(non_numeric_colums_sort_list) > 0: - x_cloumn = non_numeric_colums_sort_list[-1] - non_numeric_colums_sort_list.remove(x_cloumn) - else: - x_cloumn = number_columns[0] - numeric_colums_sort_list.remove(x_cloumn) - - # Analyze y-coordinate - if len(numeric_colums_sort_list) > 0: - y_column = numeric_colums_sort_list[0] - numeric_colums_sort_list.remove(y_column) - else: - raise ValueError("Not enough numeric columns for chart!") - - return x_cloumn, y_column, non_numeric_colums_sort_list, numeric_colums_sort_list - - # - # if len(non_numeric_colums) <=0: - # sorted_colums_value_map = dict(sorted(numeric_colums_value_map.items(), key=lambda x: x[1])) - # numeric_colums_sort_list = list(sorted_colums_value_map.keys()) - # x_column = number_columns[0] - # hue_column = numeric_colums_sort_list[0] - # y_column = numeric_colums_sort_list[1] - # cols = numeric_colums_sort_list[2:] - # elif len(number_columns) <=0: - # raise ValueError("Have No numeric Column!") - # else: - # # 数字和非数字都存在多列,放弃部分数字列 - # x_column = non_numeric_colums[0] - # y_column = number_columns[0] - # if len(non_numeric_colums) > 1: - # sorted_colums_value_map = dict(sorted(non_numeric_colums_value_map.items(), key=lambda x: x[1])) - # non_numeric_colums_sort_list = list(sorted_colums_value_map.keys()) - # non_numeric_colums_sort_list.remove(non_numeric_colums[0]) - # hue_column = non_numeric_colums_sort_list[0] - # if len(number_columns) > 1: - # # try multiple charts - # cols = number_columns.remove( number_columns[0]) - # - # else: - # sorted_colums_value_map = dict(sorted(numeric_colums_value_map.items(), key=lambda x: x[1])) - # numeric_colums_sort_list = list(sorted_colums_value_map.keys()) - # numeric_colums_sort_list.remove(number_columns[0]) - # if sorted_colums_value_map[numeric_colums_sort_list[0]].value < 5: - # hue_column = numeric_colums_sort_list[0] - # if len(number_columns) > 2: - # # try multiple charts - # cols = numeric_colums_sort_list.remove(numeric_colums_sort_list[0]) - # - # print(x_column, y_column, hue_column, cols) - # return x_column, y_column, hue_column - - -if __name__ == "__main__": - # connect = duckdb.connect("/Users/tuyang.yhj/Downloads/example.xlsx") - # - - # fonts = fm.findSystemFonts() - # for font in fonts: - # if 'Hei' in font: - # print(font) - - # fm = FontManager() - # mat_fonts = set(f.name for f in fm.ttflist) - # for i in mat_fonts: - # print(i) - # print(len(mat_fonts)) - # 获取系统中的默认中文字体名称 - # default_font = fm.fontManager.defaultFontProperties.get_family() - - # 创建一个示例 DataFrame - df = pd.DataFrame( - { - "A": [1, 2, 3, None, 5], - "B": [10, 20, 30, 40, 50], - "C": [1.1, 2.2, None, 4.4, 5.5], - "D": ["a", "b", "c", "d", "e"], - } - ) - - # 判断列是否为数字列 - column_name = "A" # 要判断的列名 - is_numeric = pd.to_numeric(df[column_name], errors="coerce").notna().all() - - if is_numeric: - print( - f"Column '{column_name}' is a numeric column (ignoring null and NaN values in some elements)." - ) - else: - print( - f"Column '{column_name}' is not a numeric column (ignoring null and NaN values in some elements)." - ) - - # - # excel_reader = ExcelReader("/Users/tuyang.yhj/Downloads/example.xlsx") - excel_reader = ExcelReader("/Users/tuyang.yhj/Downloads/yhj-zx.csv") - # - # # colunms, datas = excel_reader.run( "SELECT CONCAT(Year, '-', Quarter) AS QuarterYear, SUM(Sales) AS TotalSales FROM example GROUP BY QuarterYear ORDER BY QuarterYear") - # # colunms, datas = excel_reader.run( """ SELECT Year, SUM(Sales) AS Total_Sales FROM example GROUP BY Year ORDER BY Year; """) - # df = excel_reader.get_df_by_sql_ex(""" SELECT Segment, Country, SUM(Sales) AS Total_Sales, SUM(Profit) AS Total_Profit FROM example GROUP BY Segment, Country """) - df = excel_reader.get_df_by_sql_ex( - """ SELECT 大项, AVG(实际) AS 平均实际支出, AVG(已支出) AS 平均已支出 FROM yhj-zx GROUP BY 大项""" - ) - - for column_name in df.columns.tolist(): - print(column_name + ":" + str(df[column_name].dtypes)) - print( - column_name - + ":" - + str(pd.api.types.is_numeric_dtype(df[column_name].dtypes)) - ) - - columns = df.columns.tolist() - font_names = [ - "Heiti TC", - "Songti SC", - "STHeiti Light", - "Microsoft YaHei", - "SimSun", - "SimHei", - "KaiTi", - ] - fm = FontManager() - mat_fonts = set(f.name for f in fm.ttflist) - can_use_fonts = [] - for font_name in font_names: - if font_name in mat_fonts: - can_use_fonts.append(font_name) - if len(can_use_fonts) > 0: - plt.rcParams["font.sans-serif"] = can_use_fonts - - rc = {"font.sans-serif": can_use_fonts} - plt.rcParams["axes.unicode_minus"] = False # 解决无法显示符号的问题 - sns.set(font="Heiti TC", font_scale=0.8) # 解决Seaborn中文显示问题 - sns.set_palette("Set3") # 设置颜色主题 - sns.set_style("dark") - sns.color_palette("hls", 10) - sns.hls_palette(8, l=0.5, s=0.7) - sns.set(context="notebook", style="ticks", rc=rc) - - fig, ax = plt.subplots(figsize=(8, 5), dpi=100) - # plt.ticklabel_format(style='plain') - # ax = df.plot(kind='bar', ax=ax) - # sns.barplot(df, x=x, y="Total_Sales", hue='Country', ax=ax) - # sns.barplot(df, x=x, y="Total_Profit", hue='Country', ax=ax) - - # sns.catplot(data=df, x=x, y=y, hue='Country', kind='bar') - # x, y, non_num_columns, num_colmns = data_pre_classification(df) - # print(x, y, str(non_num_columns), str(num_colmns)) - ## 复杂折线图实现 - # if len(num_colmns) > 0: - # num_colmns.append(y) - # df_melted = pd.melt( - # df, id_vars=x, value_vars=num_colmns, var_name="line", value_name="Value" - # ) - # sns.lineplot(data=df_melted, x=x, y="Value", hue="line", ax=ax, palette="Set2") - # else: - # sns.lineplot(data=df, x=x, y=y, ax=ax, palette="Set2") - - hue = None - ## 复杂柱状图实现 - x, y, non_num_columns, num_colmns = data_pre_classification(df) - - if len(non_num_columns) >= 1: - hue = non_num_columns[0] - - if len(num_colmns) >= 1: - if hue: - if len(num_colmns) >= 2: - can_use_columns = num_colmns[:2] - else: - can_use_columns = num_colmns - sns.barplot(data=df, x=x, y=y, hue=hue, palette="Set2", ax=ax) - for sub_y_column in can_use_columns: - sns.barplot( - data=df, x=x, y=sub_y_column, hue=hue, palette="Set2", ax=ax - ) - else: - if len(num_colmns) > 5: - can_use_columns = num_colmns[:5] - else: - can_use_columns = num_colmns - can_use_columns.append(y) - - df_melted = pd.melt( - df, - id_vars=x, - value_vars=can_use_columns, - var_name="line", - value_name="Value", - ) - sns.barplot( - data=df_melted, x=x, y="Value", hue="line", palette="Set2", ax=ax - ) - else: - sns.barplot(data=df, x=x, y=y, hue=hue, palette="Set2", ax=ax) - - # # 转换 DataFrame 格式 - # df_melted = pd.melt(df, id_vars=x, value_vars=['Total_Sales', 'Total_Profit'], var_name='line', value_name='y') - # - # # 绘制多列柱状图 - # - # sns.barplot(data=df, x=x, y="Total_Sales", hue = "Country", palette="Set2", ax=ax) - # sns.barplot(data=df, x=x, y="Total_Profit", hue = "Country", palette="Set1", ax=ax) - - # 设置 y 轴刻度格式为普通数字格式 - ax.yaxis.set_major_formatter(mtick.FuncFormatter(lambda x, _: "{:,.0f}".format(x))) - - chart_name = "bar_" + str(uuid.uuid1()) + ".png" - chart_path = chart_name - plt.savefig(chart_path, bbox_inches="tight", dpi=100) - - # diff --git a/pilot/scene/chat_data/chat_excel/excel_reader.py b/pilot/scene/chat_data/chat_excel/excel_reader.py index 4037840af..00cb27a2b 100644 --- a/pilot/scene/chat_data/chat_excel/excel_reader.py +++ b/pilot/scene/chat_data/chat_excel/excel_reader.py @@ -4,9 +4,8 @@ import os import re import sqlparse - -import chardet import pandas as pd +import chardet import numpy as np from pyparsing import ( CaselessKeyword, @@ -27,6 +26,8 @@ from pilot.common.pd_utils import csv_colunm_foramt from pilot.common.string_utils import is_chinese_include_number +logger = logging.getLogger(__name__) + def excel_colunm_format(old_name: str) -> str: new_column = old_name.strip() @@ -240,33 +241,45 @@ def is_chinese(text): # print(add_quotes_to_chinese_columns(sql_2)) # sql = """ SELECT 省份, 2021年, 2022年 as GDP FROM excel_data """ - sql = """ SELECT 省份, 2022年, 2021年 FROM excel_data """ - sql_2 = """ SELECT "省份", "2022年" as "2022年实际GDP增速", "2021年" as "2021年实际GDP增速" FROM excel_data """ - sql_3 = """ SELECT "省份", ("2022年" / ("2022年" + "2021年")) * 100 as "2022年实际GDP增速占比", ("2021年" / ("2022年" + "2021年")) * 100 as "2021年实际GDP增速占比" FROM excel_data """ + # sql = """ SELECT 省份, 2022年, 2021年 FROM excel_data """ + # sql_2 = """ SELECT "省份", "2022年" as "2022年实际GDP增速", "2021年" as "2021年实际GDP增速" FROM excel_data """ + # sql_3 = """ SELECT "省份", ("2022年" / ("2022年" + "2021年")) * 100 as "2022年实际GDP增速占比", ("2021年" / ("2022年" + "2021年")) * 100 as "2021年实际GDP增速占比" FROM excel_data """ + # + # sql = add_quotes_to_chinese_columns(sql_3) + # print(f"excute sql:{sql}") + + my_list = [ + {"name": "John", "age": 30}, + {"name": "Alice", "age": 25}, + {"name": "Bob", "age": 35}, + ] - sql = add_quotes_to_chinese_columns(sql_3) - print(f"excute sql:{sql}") + for dict_item in my_list: + for key, value in dict_item.items(): + print(key, value) class ExcelReader: def __init__(self, file_path): file_name = os.path.basename(file_path) - file_name_without_extension = os.path.splitext(file_name)[0] + self.file_name_without_extension = os.path.splitext(file_name)[0] encoding, confidence = detect_encoding(file_path) - logging.error(f"Detected Encoding: {encoding} (Confidence: {confidence})") + logger.error(f"Detected Encoding: {encoding} (Confidence: {confidence})") self.excel_file_name = file_name self.extension = os.path.splitext(file_name)[1] # read excel file if file_path.endswith(".xlsx") or file_path.endswith(".xls"): - df_tmp = pd.read_excel(file_path) + df_tmp = pd.read_excel(file_path, index_col=False) self.df = pd.read_excel( file_path, + index_col=False, converters={i: csv_colunm_foramt for i in range(df_tmp.shape[1])}, ) elif file_path.endswith(".csv"): - df_tmp = pd.read_csv(file_path, encoding=encoding) + df_tmp = pd.read_csv(file_path, index_col=False, encoding=encoding) self.df = pd.read_csv( file_path, + index_col=False, encoding=encoding, converters={i: csv_colunm_foramt for i in range(df_tmp.shape[1])}, ) @@ -278,10 +291,11 @@ def __init__(self, file_path): for column_name in df_tmp.columns: self.columns_map.update({column_name: excel_colunm_format(column_name)}) try: - self.df[column_name] = pd.to_numeric(self.df[column_name]) + if not pd.api.types.is_datetime64_ns_dtype(self.df[column_name]): + self.df[column_name] = pd.to_numeric(self.df[column_name]) self.df[column_name] = self.df[column_name].fillna(0) except Exception as e: - print("transfor column error!" + column_name) + print("can't transfor numeric column" + column_name) self.df = self.df.rename(columns=lambda x: x.strip().replace(" ", "_")) @@ -292,6 +306,12 @@ def __init__(self, file_path): # write data in duckdb self.db.register(self.table_name, self.df) + # 获取结果并打印表结构信息 + result = self.db.execute(f"DESCRIBE {self.table_name}") + columns = result.fetchall() + for column in columns: + print(column) + def run(self, sql): try: if f'"{self.table_name}"' in sql: @@ -304,7 +324,7 @@ def run(self, sql): colunms.append(descrip[0]) return colunms, results.fetchall() except Exception as e: - logging.error("excel sql run error!", e) + logger.error(f"excel sql run error!, {str(e)}") raise ValueError(f"Data Query Exception!\\nSQL[{sql}].\\nError:{str(e)}") def get_df_by_sql_ex(self, sql): diff --git a/pilot/scene/chat_db/auto_execute/chat.py b/pilot/scene/chat_db/auto_execute/chat.py index f92df7a3a..00ddce1a2 100644 --- a/pilot/scene/chat_db/auto_execute/chat.py +++ b/pilot/scene/chat_db/auto_execute/chat.py @@ -5,6 +5,9 @@ from pilot.common.sql_database import Database from pilot.configs.config import Config from pilot.scene.chat_db.auto_execute.prompt import prompt +from pilot.utils.executor_utils import blocking_func_to_async +from pilot.utils.tracer import root_tracer, trace +from pilot.base_modules.agent.commands.command_mange import ApiCall CFG = Config() @@ -34,11 +37,15 @@ def __init__(self, chat_param: Dict): raise ValueError( f"{ChatScene.ChatWithDbExecute.value} mode should chose db!" ) + with root_tracer.start_span( + "ChatWithDbAutoExecute.get_connect", metadata={"db_name": self.db_name} + ): + self.database = CFG.LOCAL_DB_MANAGE.get_connect(self.db_name) - self.database = CFG.LOCAL_DB_MANAGE.get_connect(self.db_name) - self.top_k: int = 200 + self.top_k: int = 50 - def generate_input_values(self): + @trace() + async def generate_input_values(self) -> Dict: """ generate input values """ @@ -48,27 +55,35 @@ def generate_input_values(self): raise ValueError("Could not import DBSummaryClient. ") client = DBSummaryClient(system_app=CFG.SYSTEM_APP) try: - table_infos = client.get_db_summary( - dbname=self.db_name, - query=self.current_user_input, - topk=CFG.KNOWLEDGE_SEARCH_TOP_SIZE, - ) + with root_tracer.start_span("ChatWithDbAutoExecute.get_db_summary"): + table_infos = await blocking_func_to_async( + self._executor, + client.get_db_summary, + self.db_name, + self.current_user_input, + CFG.KNOWLEDGE_SEARCH_TOP_SIZE, + ) except Exception as e: print("db summary find error!" + str(e)) - table_infos = self.database.table_simple_info() if not table_infos: - table_infos = self.database.table_simple_info() - - # table_infos = self.database.table_simple_info() + table_infos = await blocking_func_to_async( + self._executor, self.database.table_simple_info + ) input_values = { - "input": self.current_user_input, + "db_name": self.db_name, + "user_input": self.current_user_input, "top_k": str(self.top_k), "dialect": self.database.dialect, "table_info": table_infos, } return input_values + def stream_plugin_call(self, text): + text = text.replace("\n", " ") + print(f"stream_plugin_call:{text}") + return self.api_call.display_sql_llmvis(text, self.database.run_to_df) + def do_action(self, prompt_response): print(f"do_action:{prompt_response}") - return self.database.run(prompt_response.sql) + return self.database.run_to_df diff --git a/pilot/scene/chat_db/auto_execute/out_parser.py b/pilot/scene/chat_db/auto_execute/out_parser.py index 577cac1ef..bd1dd9de8 100644 --- a/pilot/scene/chat_db/auto_execute/out_parser.py +++ b/pilot/scene/chat_db/auto_execute/out_parser.py @@ -1,6 +1,9 @@ import json from typing import Dict, NamedTuple import logging +import sqlparse +import xml.etree.ElementTree as ET +from pilot.common.json_utils import serialize from pilot.out_parser.base import BaseOutputParser, T from pilot.configs.config import Config from pilot.scene.chat_db.data_loader import DbDataLoader @@ -12,6 +15,9 @@ class SqlAction(NamedTuple): sql: str thoughts: Dict + def to_dict(self) -> Dict[str, Dict]: + return {"sql": self.sql, "thoughts": self.thoughts} + logger = logging.getLogger(__name__) @@ -20,32 +26,63 @@ class DbChatOutputParser(BaseOutputParser): def __init__(self, sep: str, is_stream_out: bool): super().__init__(sep=sep, is_stream_out=is_stream_out) + def is_sql_statement(self, statement): + parsed = sqlparse.parse(statement) + if not parsed: + return False + for stmt in parsed: + if stmt.get_type() != "UNKNOWN": + return True + return False + def parse_prompt_response(self, model_out_text): clean_str = super().parse_prompt_response(model_out_text) - print("clean prompt response:", clean_str) - response = json.loads(clean_str) - for key in sorted(response): - if key.strip() == "sql": - sql = response[key] - if key.strip() == "thoughts": - thoughts = response[key] - return SqlAction(sql, thoughts) - - def parse_view_response(self, speak, data) -> str: - import pandas as pd - - ### tool out data to table view - data_loader = DbDataLoader() - if len(data) < 1: - data.insert(0, []) - df = pd.DataFrame(data[1:], columns=data[0]) - if not CFG.NEW_SERVER_MODE and not CFG.SERVER_LIGHT_MODE: - table_style = """""" - html_table = df.to_html(index=False, escape=False) - html = f"{table_style}{html_table}" - view_text = f"##### {str(speak)}" + "\n" + html.replace("\n", " ") - return view_text + logger.info(f"clean prompt response: {clean_str}") + # Compatible with community pure sql output model + if self.is_sql_statement(clean_str): + return SqlAction(clean_str, "") + else: + try: + response = json.loads(clean_str) + for key in sorted(response): + if key.strip() == "sql": + sql = response[key] + if key.strip() == "thoughts": + thoughts = response[key] + return SqlAction(sql, thoughts) + except Exception as e: + logger.error("json load faild") + return SqlAction("", clean_str) + + def parse_view_response(self, speak, data, prompt_response) -> str: + param = {} + api_call_element = ET.Element("chart-view") + err_msg = None + try: + if not prompt_response.sql or len(prompt_response.sql) <= 0: + return f"""{speak}""" + + df = data(prompt_response.sql) + param["type"] = "response_table" + param["sql"] = prompt_response.sql + param["data"] = json.loads( + df.to_json(orient="records", date_format="iso", date_unit="s") + ) + view_json_str = json.dumps(param, default=serialize, ensure_ascii=False) + except Exception as e: + logger.error("parse_view_response error!" + str(e)) + err_param = {} + err_param["sql"] = f"{prompt_response.sql}" + err_param["type"] = "response_table" + # err_param["err_msg"] = str(e) + err_param["data"] = [] + err_msg = str(e) + view_json_str = json.dumps(err_param, default=serialize, ensure_ascii=False) + + # api_call_element.text = view_json_str + api_call_element.set("content", view_json_str) + result = ET.tostring(api_call_element, encoding="utf-8") + if err_msg: + return f"""{speak} \\n ERROR!{err_msg} \n {result.decode("utf-8")}""" else: - return data_loader.get_table_view_by_conn(data, speak) + return speak + "\n" + result.decode("utf-8") diff --git a/pilot/scene/chat_db/auto_execute/prompt.py b/pilot/scene/chat_db/auto_execute/prompt.py index abc889cec..e7f0e0ee0 100644 --- a/pilot/scene/chat_db/auto_execute/prompt.py +++ b/pilot/scene/chat_db/auto_execute/prompt.py @@ -8,24 +8,61 @@ CFG = Config() -PROMPT_SCENE_DEFINE = "You are a SQL expert. " -_DEFAULT_TEMPLATE = """ -Given an input question, create a syntactically correct {dialect} sql. +_PROMPT_SCENE_DEFINE_EN = "You are a database expert. " +_PROMPT_SCENE_DEFINE_ZH = "你是一个数据库专家. " -Unless the user specifies in his question a specific number of examples he wishes to obtain, always limit your query to at most {top_k} results. -Use as few tables as possible when querying. -Only use the following tables schema to generate sql: -{table_info} -Be careful to not query for columns that do not exist. Also, pay attention to which column is in which table. +_DEFAULT_TEMPLATE_EN = """ +Please answer the user's question based on the database selected by the user and some of the available table structure definitions of the database. +Database name: + {db_name} +Table structure definition: + {table_info} -Question: {input} +Constraint: + 1.Please understand the user's intention based on the user's question, and use the given table structure definition to create a grammatically correct {dialect} sql. If sql is not required, answer the user's question directly.. + 2.Always limit the query to a maximum of {top_k} results unless the user specifies in the question the specific number of rows of data he wishes to obtain. + 3.You can only use the tables provided in the table structure information to generate sql. If you cannot generate sql based on the provided table structure, please say: "The table structure information provided is not enough to generate sql queries." It is prohibited to fabricate information at will. + 4.Please be careful not to mistake the relationship between tables and columns when generating SQL. + 5.Please check the correctness of the SQL and ensure that the query performance is optimized under correct conditions. + +User Question: + {user_input} +Please think step by step and respond according to the following JSON format: + {response} +Ensure the response is correct json and can be parsed by Python json.loads. -Respond in JSON format as following format: -{response} -Ensure the response is correct json and can be parsed by Python json.loads """ +_DEFAULT_TEMPLATE_ZH = """ +请根据用户选择的数据库和该库的部分可用表结构定义来回答用户问题. +数据库名: + {db_name} +表结构定义: + {table_info} + +约束: + 1. 请根据用户问题理解用户意图,使用给出表结构定义创建一个语法正确的 {dialect} sql,如果不需要sql,则直接回答用户问题。 + 2. 除非用户在问题中指定了他希望获得的具体数据行数,否则始终将查询限制为最多 {top_k} 个结果。 + 3. 只能使用表结构信息中提供的表来生成 sql,如果无法根据提供的表结构中生成 sql ,请说:“提供的表结构信息不足以生成 sql 查询。” 禁止随意捏造信息。 + 4. 请注意生成SQL时不要弄错表和列的关系 + 5. 请检查SQL的正确性,并保证正确的情况下优化查询性能 +用户问题: + {user_input} +请一步步思考并按照以下JSON格式回复: + {response} +确保返回正确的json并且可以被Python json.loads方法解析. + +""" + +_DEFAULT_TEMPLATE = ( + _DEFAULT_TEMPLATE_EN if CFG.LANGUAGE == "en" else _DEFAULT_TEMPLATE_ZH +) + +PROMPT_SCENE_DEFINE = ( + _PROMPT_SCENE_DEFINE_EN if CFG.LANGUAGE == "en" else _PROMPT_SCENE_DEFINE_ZH +) + RESPONSE_FORMAT_SIMPLE = { "thoughts": "thoughts summary to say to user", "sql": "SQL Query to run", @@ -33,7 +70,7 @@ PROMPT_SEP = SeparatorStyle.SINGLE.value -PROMPT_NEED_NEED_STREAM_OUT = False +PROMPT_NEED_STREAM_OUT = False # Temperature is a configuration hyperparameter that controls the randomness of language model output. # A high temperature produces more unpredictable and creative results, while a low temperature produces more common and conservative output. @@ -42,16 +79,17 @@ prompt = PromptTemplate( template_scene=ChatScene.ChatWithDbExecute.value(), - input_variables=["input", "table_info", "dialect", "top_k", "response"], + input_variables=["table_info", "dialect", "top_k", "response"], response_format=json.dumps(RESPONSE_FORMAT_SIMPLE, ensure_ascii=False, indent=4), template_define=PROMPT_SCENE_DEFINE, template=_DEFAULT_TEMPLATE, - stream_out=PROMPT_NEED_NEED_STREAM_OUT, + stream_out=PROMPT_NEED_STREAM_OUT, output_parser=DbChatOutputParser( - sep=PROMPT_SEP, is_stream_out=PROMPT_NEED_NEED_STREAM_OUT + sep=PROMPT_SEP, is_stream_out=PROMPT_NEED_STREAM_OUT ), # example_selector=sql_data_example, temperature=PROMPT_TEMPERATURE, + need_historical_messages=True, ) CFG.prompt_template_registry.register(prompt, is_default=True) from . import prompt_baichuan diff --git a/pilot/scene/chat_db/auto_execute/prompt_baichuan.py b/pilot/scene/chat_db/auto_execute/prompt_baichuan.py index 95aa962fa..4888cbd7f 100644 --- a/pilot/scene/chat_db/auto_execute/prompt_baichuan.py +++ b/pilot/scene/chat_db/auto_execute/prompt_baichuan.py @@ -36,7 +36,7 @@ PROMPT_SEP = SeparatorStyle.SINGLE.value -PROMPT_NEED_NEED_STREAM_OUT = False +PROMPT_NEED_STREAM_OUT = False # Temperature is a configuration hyperparameter that controls the randomness of language model output. # A high temperature produces more unpredictable and creative results, while a low temperature produces more common and conservative output. @@ -50,9 +50,9 @@ template_is_strict=False, template_define=PROMPT_SCENE_DEFINE, template=_DEFAULT_TEMPLATE, - stream_out=PROMPT_NEED_NEED_STREAM_OUT, + stream_out=PROMPT_NEED_STREAM_OUT, output_parser=DbChatOutputParser( - sep=PROMPT_SEP, is_stream_out=PROMPT_NEED_NEED_STREAM_OUT + sep=PROMPT_SEP, is_stream_out=PROMPT_NEED_STREAM_OUT ), # example_selector=sql_data_example, temperature=PROMPT_TEMPERATURE, diff --git a/pilot/scene/chat_db/data_loader.py b/pilot/scene/chat_db/data_loader.py index a9e4450f5..63aa3c12f 100644 --- a/pilot/scene/chat_db/data_loader.py +++ b/pilot/scene/chat_db/data_loader.py @@ -1,13 +1,48 @@ +import xml.etree.ElementTree as ET +import json +import logging + +from pilot.common.json_utils import serialize + + class DbDataLoader: - def get_table_view_by_conn(self, data, speak): - import pandas as pd - - ### tool out data to table view - if len(data) < 1: - data.insert(0, ["result"]) - df = pd.DataFrame(data[1:], columns=data[0]) - html_table = df.to_html(index=False, escape=False, sparsify=False) - table_str = "".join(html_table.split()) - html = f"""
{table_str}
""" - view_text = f"##### {str(speak)}" + "\n" + html.replace("\n", " ") - return view_text + def get_table_view_by_conn(self, data, speak, sql: str = None): + # import pandas as pd + # + # ### tool out data to table view + # if len(data) < 1: + # data.insert(0, ["result"]) + # df = pd.DataFrame(data[1:], columns=data[0]) + # html_table = df.to_html(index=False, escape=False, sparsify=False) + # table_str = "".join(html_table.split()) + # html = f"""
{table_str}
""" + # view_text = f"##### {str(speak)}" + "\n" + html.replace("\n", " ") + # return view_text + + param = {} + api_call_element = ET.Element("chart-view") + err_msg = None + try: + param["type"] = "response_table" + param["sql"] = sql + param["data"] = json.loads( + data.to_json(orient="records", date_format="iso", date_unit="s") + ) + view_json_str = json.dumps(param, default=serialize, ensure_ascii=False) + except Exception as e: + logging.error("parse_view_response error!" + str(e)) + err_param = {} + err_param["sql"] = f"{sql}" + err_param["type"] = "response_table" + err_param["err_msg"] = str(e) + err_param["data"] = [] + err_msg = str(e) + view_json_str = json.dumps(err_param, default=serialize, ensure_ascii=False) + + # api_call_element.text = view_json_str + api_call_element.set("content", view_json_str) + result = ET.tostring(api_call_element, encoding="utf-8") + if err_msg: + return f"""{speak} \\n ERROR!{err_msg} \n {result.decode("utf-8")}""" + else: + return speak + "\n" + result.decode("utf-8") diff --git a/pilot/scene/chat_db/professional_qa/chat.py b/pilot/scene/chat_db/professional_qa/chat.py index abdfd9f00..fde28d91b 100644 --- a/pilot/scene/chat_db/professional_qa/chat.py +++ b/pilot/scene/chat_db/professional_qa/chat.py @@ -5,6 +5,8 @@ from pilot.common.sql_database import Database from pilot.configs.config import Config from pilot.scene.chat_db.professional_qa.prompt import prompt +from pilot.utils.executor_utils import blocking_func_to_async +from pilot.utils.tracer import root_tracer, trace CFG = Config() @@ -38,7 +40,8 @@ def __init__(self, chat_param: Dict): else len(self.tables) ) - def generate_input_values(self): + @trace() + async def generate_input_values(self) -> Dict: table_info = "" dialect = "mysql" try: @@ -48,12 +51,22 @@ def generate_input_values(self): if self.db_name: client = DBSummaryClient(system_app=CFG.SYSTEM_APP) try: - table_infos = client.get_db_summary( - dbname=self.db_name, query=self.current_user_input, topk=self.top_k + # table_infos = client.get_db_summary( + # dbname=self.db_name, query=self.current_user_input, topk=self.top_k + # ) + table_infos = await blocking_func_to_async( + self._executor, + client.get_db_summary, + self.db_name, + self.current_user_input, + self.top_k, ) except Exception as e: print("db summary find error!" + str(e)) - table_infos = self.database.table_simple_info() + # table_infos = self.database.table_simple_info() + table_infos = await blocking_func_to_async( + self._executor, self.database.table_simple_info + ) # table_infos = self.database.table_simple_info() dialect = self.database.dialect diff --git a/pilot/scene/chat_db/professional_qa/prompt.py b/pilot/scene/chat_db/professional_qa/prompt.py index ca4110398..c84f2eb7a 100644 --- a/pilot/scene/chat_db/professional_qa/prompt.py +++ b/pilot/scene/chat_db/professional_qa/prompt.py @@ -54,7 +54,7 @@ PROMPT_SEP = SeparatorStyle.SINGLE.value -PROMPT_NEED_NEED_STREAM_OUT = True +PROMPT_NEED_STREAM_OUT = True prompt = PromptTemplate( template_scene=ChatScene.ChatWithDbQA.value(), @@ -62,9 +62,9 @@ response_format=None, template_define=PROMPT_SCENE_DEFINE, template=_DEFAULT_TEMPLATE, - stream_out=PROMPT_NEED_NEED_STREAM_OUT, + stream_out=PROMPT_NEED_STREAM_OUT, output_parser=NormalChatOutputParser( - sep=PROMPT_SEP, is_stream_out=PROMPT_NEED_NEED_STREAM_OUT + sep=PROMPT_SEP, is_stream_out=PROMPT_NEED_STREAM_OUT ), ) diff --git a/pilot/scene/chat_execution/chat.py b/pilot/scene/chat_execution/chat.py index c6d7bbe2f..2615918ff 100644 --- a/pilot/scene/chat_execution/chat.py +++ b/pilot/scene/chat_execution/chat.py @@ -6,6 +6,7 @@ from pilot.base_modules.agent.commands.command import execute_command from pilot.base_modules.agent import PluginPromptGenerator from .prompt import prompt +from pilot.utils.tracer import root_tracer, trace CFG = Config() @@ -50,7 +51,8 @@ def __init__(self, chat_param: Dict): self.plugins_prompt_generator ) - def generate_input_values(self): + @trace() + async def generate_input_values(self) -> Dict: input_values = { "input": self.current_user_input, "constraints": self.__list_to_prompt_str( diff --git a/pilot/scene/chat_execution/out_parser.py b/pilot/scene/chat_execution/out_parser.py index 3826b35df..60260a9d3 100644 --- a/pilot/scene/chat_execution/out_parser.py +++ b/pilot/scene/chat_execution/out_parser.py @@ -35,7 +35,7 @@ def parse_prompt_response(self, model_out_text) -> T: speak = response[key] return PluginAction(command, speak, thoughts) - def parse_view_response(self, speak, data) -> str: + def parse_view_response(self, speak, data, prompt_response) -> str: ### tool out data to table view print(f"parse_view_response:{speak},{str(data)}") view_text = f"##### {speak}" + "\n" + str(data) diff --git a/pilot/scene/chat_factory.py b/pilot/scene/chat_factory.py index d33f89e76..10a588c04 100644 --- a/pilot/scene/chat_factory.py +++ b/pilot/scene/chat_factory.py @@ -1,5 +1,6 @@ from pilot.scene.base_chat import BaseChat from pilot.singleton import Singleton +from pilot.utils.tracer import root_tracer class ChatFactory(metaclass=Singleton): @@ -13,6 +14,10 @@ def get_implementation(chat_mode, **kwargs): from pilot.scene.chat_dashboard.chat import ChatDashboard from pilot.scene.chat_knowledge.v1.chat import ChatKnowledge from pilot.scene.chat_knowledge.inner_db_summary.chat import InnerChatDBSummary + from pilot.scene.chat_knowledge.extract_triplet.chat import ExtractTriplet + from pilot.scene.chat_knowledge.extract_entity.chat import ExtractEntity + from pilot.scene.chat_knowledge.summary.chat import ExtractSummary + from pilot.scene.chat_knowledge.refine_summary.chat import ExtractRefineSummary from pilot.scene.chat_data.chat_excel.excel_analyze.chat import ChatExcel from pilot.scene.chat_agent.chat import ChatAgent @@ -20,7 +25,11 @@ def get_implementation(chat_mode, **kwargs): implementation = None for cls in chat_classes: if cls.chat_scene == chat_mode: - implementation = cls(**kwargs) + metadata = {"cls": str(cls)} + with root_tracer.start_span( + "get_implementation_of_chat", metadata=metadata + ): + implementation = cls(**kwargs) if implementation == None: raise Exception(f"Invalid implementation name:{chat_mode}") return implementation diff --git a/pilot/scene/chat_knowledge/extract_entity/__init__.py b/pilot/scene/chat_knowledge/extract_entity/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pilot/scene/chat_knowledge/extract_entity/chat.py b/pilot/scene/chat_knowledge/extract_entity/chat.py new file mode 100644 index 000000000..373bb4e5d --- /dev/null +++ b/pilot/scene/chat_knowledge/extract_entity/chat.py @@ -0,0 +1,35 @@ +from typing import Dict + +from pilot.scene.base_chat import BaseChat +from pilot.scene.base import ChatScene +from pilot.configs.config import Config + +from pilot.scene.chat_knowledge.extract_entity.prompt import prompt + +CFG = Config() + + +class ExtractEntity(BaseChat): + chat_scene: str = ChatScene.ExtractEntity.value() + + """extracting entities by llm""" + + def __init__(self, chat_param: Dict): + """ """ + chat_param["chat_mode"] = ChatScene.ExtractEntity + super().__init__( + chat_param=chat_param, + ) + + self.user_input = chat_param["current_user_input"] + self.extract_mode = chat_param["select_param"] + + async def generate_input_values(self): + input_values = { + "text": self.user_input, + } + return input_values + + @property + def chat_type(self) -> str: + return ChatScene.ExtractEntity.value diff --git a/pilot/scene/chat_knowledge/extract_entity/out_parser.py b/pilot/scene/chat_knowledge/extract_entity/out_parser.py new file mode 100644 index 000000000..4093e460f --- /dev/null +++ b/pilot/scene/chat_knowledge/extract_entity/out_parser.py @@ -0,0 +1,39 @@ +import json +import logging +from typing import Set + +from pilot.out_parser.base import BaseOutputParser, T +from pilot.configs.config import Config + +CFG = Config() + + +logger = logging.getLogger(__name__) + + +class ExtractEntityParser(BaseOutputParser): + def __init__(self, sep: str, is_stream_out: bool): + super().__init__(sep=sep, is_stream_out=is_stream_out) + + def parse_prompt_response(self, response, max_length: int = 128) -> Set[str]: + lowercase = True + # clean_str = super().parse_prompt_response(response) + print("clean prompt response:", response) + + results = [] + response = response.strip() # Strip newlines from responses. + + if response.startswith("KEYWORDS:"): + response = response[len("KEYWORDS:") :] + + keywords = response.split(",") + for k in keywords: + rk = k + if lowercase: + rk = rk.lower() + results.append(rk.strip()) + + return set(results) + + def parse_view_response(self, speak, data) -> str: + return data diff --git a/pilot/scene/chat_knowledge/extract_entity/prompt.py b/pilot/scene/chat_knowledge/extract_entity/prompt.py new file mode 100644 index 000000000..77349bd28 --- /dev/null +++ b/pilot/scene/chat_knowledge/extract_entity/prompt.py @@ -0,0 +1,52 @@ +import json + +from pilot.prompts.prompt_new import PromptTemplate +from pilot.configs.config import Config +from pilot.scene.base import ChatScene +from pilot.common.schema import SeparatorStyle +from pilot.scene.chat_knowledge.extract_entity.out_parser import ExtractEntityParser + +from pilot.scene.chat_knowledge.extract_triplet.out_parser import ( + ExtractTripleParser, +) + + +CFG = Config() + +PROMPT_SCENE_DEFINE = """""" + +_DEFAULT_TEMPLATE = """ +"A question is provided below. Given the question, extract up to 10 " + "keywords from the text. Focus on extracting the keywords that we can use " + "to best lookup answers to the question. Avoid stopwords.\n" + "Example:" + "Text: Alice is Bob's mother." + "KEYWORDS:Alice,mother,Bob\n" + "---------------------\n" + "{text}\n" + "---------------------\n" + "Provide keywords in the following comma-separated format: 'KEYWORDS: '\n" +""" +PROMPT_RESPONSE = """""" + + +RESPONSE_FORMAT = """""" + + +PROMPT_SEP = SeparatorStyle.SINGLE.value + +PROMPT_NEED_NEED_STREAM_OUT = False + +prompt = PromptTemplate( + template_scene=ChatScene.ExtractEntity.value(), + input_variables=["text"], + response_format="", + template_define=PROMPT_SCENE_DEFINE, + template=_DEFAULT_TEMPLATE + PROMPT_RESPONSE, + stream_out=PROMPT_NEED_NEED_STREAM_OUT, + output_parser=ExtractEntityParser( + sep=PROMPT_SEP, is_stream_out=PROMPT_NEED_NEED_STREAM_OUT + ), +) + +CFG.prompt_template_registry.register(prompt, is_default=True) diff --git a/pilot/scene/chat_knowledge/extract_triplet/__init__.py b/pilot/scene/chat_knowledge/extract_triplet/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pilot/scene/chat_knowledge/extract_triplet/chat.py b/pilot/scene/chat_knowledge/extract_triplet/chat.py new file mode 100644 index 000000000..28152b92e --- /dev/null +++ b/pilot/scene/chat_knowledge/extract_triplet/chat.py @@ -0,0 +1,35 @@ +from typing import Dict + +from pilot.scene.base_chat import BaseChat +from pilot.scene.base import ChatScene +from pilot.configs.config import Config + +from pilot.scene.chat_knowledge.extract_triplet.prompt import prompt + +CFG = Config() + + +class ExtractTriplet(BaseChat): + chat_scene: str = ChatScene.ExtractTriplet.value() + + """extracting triplets by llm""" + + def __init__(self, chat_param: Dict): + """ """ + chat_param["chat_mode"] = ChatScene.ExtractTriplet + super().__init__( + chat_param=chat_param, + ) + + self.user_input = chat_param["current_user_input"] + self.extract_mode = chat_param["select_param"] + + async def generate_input_values(self): + input_values = { + "text": self.user_input, + } + return input_values + + @property + def chat_type(self) -> str: + return ChatScene.ExtractTriplet.value diff --git a/pilot/scene/chat_knowledge/extract_triplet/out_parser.py b/pilot/scene/chat_knowledge/extract_triplet/out_parser.py new file mode 100644 index 000000000..75606bd0f --- /dev/null +++ b/pilot/scene/chat_knowledge/extract_triplet/out_parser.py @@ -0,0 +1,57 @@ +import json +import logging +import re +from typing import List, Tuple + +from pilot.out_parser.base import BaseOutputParser, T +from pilot.configs.config import Config + +CFG = Config() + + +logger = logging.getLogger(__name__) + + +class ExtractTripleParser(BaseOutputParser): + def __init__(self, sep: str, is_stream_out: bool): + super().__init__(sep=sep, is_stream_out=is_stream_out) + + def parse_prompt_response( + self, response, max_length: int = 128 + ) -> List[Tuple[str, str, str]]: + # clean_str = super().parse_prompt_response(response) + print("clean prompt response:", response) + + if response.startswith("Triplets:"): + response = response[len("Triplets:") :] + pattern = r"\([^()]+\)" + response = re.findall(pattern, response) + # response = response.strip().split("\n") + print("parse prompt response:", response) + results = [] + for text in response: + if not text or text[0] != "(" or text[-1] != ")": + # skip empty lines and non-triplets + continue + tokens = text[1:-1].split(",") + if len(tokens) != 3: + continue + + if any(len(s.encode("utf-8")) > max_length for s in tokens): + # We count byte-length instead of len() for UTF-8 chars, + # will skip if any of the tokens are too long. + # This is normally due to a poorly formatted triplet + # extraction, in more serious KG building cases + # we'll need NLP models to better extract triplets. + continue + + subject, predicate, obj = map(str.strip, tokens) + if not subject or not predicate or not obj: + # skip partial triplets + continue + results.append((subject.lower(), predicate.lower(), obj.lower())) + return results + + def parse_view_response(self, speak, data) -> str: + ### tool out data to table view + return data diff --git a/pilot/scene/chat_knowledge/extract_triplet/prompt.py b/pilot/scene/chat_knowledge/extract_triplet/prompt.py new file mode 100644 index 000000000..dd391bce8 --- /dev/null +++ b/pilot/scene/chat_knowledge/extract_triplet/prompt.py @@ -0,0 +1,57 @@ +import json + +from pilot.prompts.prompt_new import PromptTemplate +from pilot.configs.config import Config +from pilot.scene.base import ChatScene +from pilot.common.schema import SeparatorStyle + +from pilot.scene.chat_knowledge.extract_triplet.out_parser import ( + ExtractTripleParser, +) + + +CFG = Config() + +PROMPT_SCENE_DEFINE = """""" + +_DEFAULT_TEMPLATE = """ +"Some text is provided below. Given the text, extract up to 10" + "knowledge triplets in the form of (subject, predicate, object). Avoid stopwords.\n" + "---------------------\n" + "Example:" + "Text: Alice is Bob's mother." + "Triplets:\n(Alice, is mother of, Bob)\n" + "Text: Philz is a coffee shop founded in Berkeley in 1982.\n" + "Triplets:\n" + "(Philz, is, coffee shop)\n" + "(Philz, founded in, Berkeley)\n" + "(Philz, founded in, 1982)\n" + "---------------------\n" + "Text: {text}\n" + "Triplets:\n" + ensure Respond in the following List(Tuple) format: + '(Stephen Curry, plays for, Golden State Warriors)\n(Stephen Curry, known for, shooting skills)\n(Stephen Curry, attended, Davidson College)\n(Stephen Curry, led, team to success)' +""" +PROMPT_RESPONSE = """""" + + +RESPONSE_FORMAT = """""" + + +PROMPT_SEP = SeparatorStyle.SINGLE.value + +PROMPT_NEED_NEED_STREAM_OUT = False + +prompt = PromptTemplate( + template_scene=ChatScene.ExtractTriplet.value(), + input_variables=["text"], + response_format="", + template_define=PROMPT_SCENE_DEFINE, + template=_DEFAULT_TEMPLATE + PROMPT_RESPONSE, + stream_out=PROMPT_NEED_NEED_STREAM_OUT, + output_parser=ExtractTripleParser( + sep=PROMPT_SEP, is_stream_out=PROMPT_NEED_NEED_STREAM_OUT + ), +) + +CFG.prompt_template_registry.register(prompt, is_default=True) diff --git a/pilot/scene/chat_knowledge/inner_db_summary/chat.py b/pilot/scene/chat_knowledge/inner_db_summary/chat.py index 34c8260e3..f7c81bd77 100644 --- a/pilot/scene/chat_knowledge/inner_db_summary/chat.py +++ b/pilot/scene/chat_knowledge/inner_db_summary/chat.py @@ -1,8 +1,10 @@ +from typing import Dict from pilot.scene.base_chat import BaseChat from pilot.scene.base import ChatScene from pilot.configs.config import Config from pilot.scene.chat_knowledge.inner_db_summary.prompt import prompt +from pilot.utils.tracer import root_tracer, trace CFG = Config() @@ -30,7 +32,8 @@ def __init__( self.db_input = db_select self.db_summary = db_summary - def generate_input_values(self): + @trace() + async def generate_input_values(self) -> Dict: input_values = { "db_input": self.db_input, "db_profile_summary": self.db_summary, diff --git a/pilot/scene/chat_knowledge/inner_db_summary/prompt.py b/pilot/scene/chat_knowledge/inner_db_summary/prompt.py index 924fab2c6..3f81906c0 100644 --- a/pilot/scene/chat_knowledge/inner_db_summary/prompt.py +++ b/pilot/scene/chat_knowledge/inner_db_summary/prompt.py @@ -33,7 +33,7 @@ PROMPT_SEP = SeparatorStyle.SINGLE.value -PROMPT_NEED_NEED_STREAM_OUT = False +PROMPT_NEED_STREAM_OUT = False prompt = PromptTemplate( template_scene=ChatScene.InnerChatDBSummary.value(), @@ -41,9 +41,9 @@ response_format=json.dumps(RESPONSE_FORMAT, indent=4), template_define=PROMPT_SCENE_DEFINE, template=_DEFAULT_TEMPLATE + PROMPT_RESPONSE, - stream_out=PROMPT_NEED_NEED_STREAM_OUT, + stream_out=PROMPT_NEED_STREAM_OUT, output_parser=NormalChatOutputParser( - sep=PROMPT_SEP, is_stream_out=PROMPT_NEED_NEED_STREAM_OUT + sep=PROMPT_SEP, is_stream_out=PROMPT_NEED_STREAM_OUT ), ) diff --git a/pilot/scene/chat_knowledge/refine_summary/__init__.py b/pilot/scene/chat_knowledge/refine_summary/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pilot/scene/chat_knowledge/refine_summary/chat.py b/pilot/scene/chat_knowledge/refine_summary/chat.py new file mode 100644 index 000000000..2f3181d5e --- /dev/null +++ b/pilot/scene/chat_knowledge/refine_summary/chat.py @@ -0,0 +1,39 @@ +from typing import Dict + +from pilot.scene.base_chat import BaseChat +from pilot.scene.base import ChatScene +from pilot.configs.config import Config + +from pilot.scene.chat_knowledge.refine_summary.prompt import prompt + +CFG = Config() + + +class ExtractRefineSummary(BaseChat): + chat_scene: str = ChatScene.ExtractRefineSummary.value() + + """extract final summary by llm""" + + def __init__(self, chat_param: Dict): + """ """ + chat_param["chat_mode"] = ChatScene.ExtractRefineSummary + super().__init__( + chat_param=chat_param, + ) + + self.existing_answer = chat_param["select_param"] + + async def generate_input_values(self): + input_values = { + # "context": self.user_input, + "existing_answer": self.existing_answer, + } + return input_values + + def stream_plugin_call(self, text): + """return summary label""" + return f"{text}" + + @property + def chat_type(self) -> str: + return ChatScene.ExtractRefineSummary.value diff --git a/pilot/scene/chat_knowledge/refine_summary/out_parser.py b/pilot/scene/chat_knowledge/refine_summary/out_parser.py new file mode 100644 index 000000000..104419e88 --- /dev/null +++ b/pilot/scene/chat_knowledge/refine_summary/out_parser.py @@ -0,0 +1,57 @@ +import json +import logging +import re +from typing import List, Tuple + +from pilot.out_parser.base import BaseOutputParser, T +from pilot.configs.config import Config + +CFG = Config() + + +logger = logging.getLogger(__name__) + + +class ExtractRefineSummaryParser(BaseOutputParser): + def __init__(self, sep: str, is_stream_out: bool): + super().__init__(sep=sep, is_stream_out=is_stream_out) + + def parse_prompt_response( + self, response, max_length: int = 128 + ) -> List[Tuple[str, str, str]]: + # clean_str = super().parse_prompt_response(response) + print("clean prompt response:", response) + + # if response.startswith("Triplets:"): + # response = response[len("Triplets:") :] + # pattern = r"\([^()]+\)" + # response = re.findall(pattern, response) + # # response = response.strip().split("\n") + # print("parse prompt response:", response) + # results = [] + # for text in response: + # if not text or text[0] != "(" or text[-1] != ")": + # # skip empty lines and non-triplets + # continue + # tokens = text[1:-1].split(",") + # if len(tokens) != 3: + # continue + # + # if any(len(s.encode("utf-8")) > max_length for s in tokens): + # # We count byte-length instead of len() for UTF-8 chars, + # # will skip if any of the tokens are too long. + # # This is normally due to a poorly formatted triplet + # # extraction, in more serious KG building cases + # # we'll need NLP models to better extract triplets. + # continue + # + # subject, predicate, obj = map(str.strip, tokens) + # if not subject or not predicate or not obj: + # # skip partial triplets + # continue + # results.append((subject.lower(), predicate.lower(), obj.lower())) + return response + + def parse_view_response(self, speak, data) -> str: + ### tool out data to table view + return data diff --git a/pilot/scene/chat_knowledge/refine_summary/prompt.py b/pilot/scene/chat_knowledge/refine_summary/prompt.py new file mode 100644 index 000000000..8029efcef --- /dev/null +++ b/pilot/scene/chat_knowledge/refine_summary/prompt.py @@ -0,0 +1,49 @@ +from pilot.prompts.prompt_new import PromptTemplate +from pilot.configs.config import Config +from pilot.scene.base import ChatScene +from pilot.common.schema import SeparatorStyle + +from pilot.scene.chat_knowledge.refine_summary.out_parser import ( + ExtractRefineSummaryParser, +) + +CFG = Config() + + +PROMPT_SCENE_DEFINE = """A chat between a curious user and an artificial intelligence assistant, who very familiar with database related knowledge. +The assistant gives helpful, detailed, professional and polite answers to the user's questions.""" + +_DEFAULT_TEMPLATE_ZH = ( + """我们已经提供了一个到某一点的现有总结:{existing_answer}\n 请根据你之前推理的内容进行最终的总结,总结回答的时候最好按照1.2.3.进行.""" +) + +_DEFAULT_TEMPLATE_EN = """ +We have provided an existing summary up to a certain point: {existing_answer}\nWe have the opportunity to refine the existing summary (only if needed) with some more context below. +\nBased on the previous reasoning, please summarize the final conclusion in accordance with points 1.2.and 3. + +""" + +_DEFAULT_TEMPLATE = ( + _DEFAULT_TEMPLATE_EN if CFG.LANGUAGE == "en" else _DEFAULT_TEMPLATE_ZH +) + +PROMPT_RESPONSE = """""" + +PROMPT_SEP = SeparatorStyle.SINGLE.value + +PROMPT_NEED_NEED_STREAM_OUT = True + +prompt = PromptTemplate( + template_scene=ChatScene.ExtractRefineSummary.value(), + input_variables=["existing_answer"], + response_format=None, + template_define=PROMPT_SCENE_DEFINE, + template=_DEFAULT_TEMPLATE + PROMPT_RESPONSE, + stream_out=PROMPT_NEED_NEED_STREAM_OUT, + output_parser=ExtractRefineSummaryParser( + sep=PROMPT_SEP, is_stream_out=PROMPT_NEED_NEED_STREAM_OUT + ), +) + +CFG.prompt_template_registry.register(prompt, is_default=True) +from ..v1 import prompt_chatglm diff --git a/pilot/scene/chat_knowledge/summary/__init__.py b/pilot/scene/chat_knowledge/summary/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pilot/scene/chat_knowledge/summary/chat.py b/pilot/scene/chat_knowledge/summary/chat.py new file mode 100644 index 000000000..be4ee00c3 --- /dev/null +++ b/pilot/scene/chat_knowledge/summary/chat.py @@ -0,0 +1,34 @@ +from typing import Dict + +from pilot.scene.base_chat import BaseChat +from pilot.scene.base import ChatScene +from pilot.configs.config import Config + +from pilot.scene.chat_knowledge.summary.prompt import prompt + +CFG = Config() + + +class ExtractSummary(BaseChat): + chat_scene: str = ChatScene.ExtractSummary.value() + + """get summary by llm""" + + def __init__(self, chat_param: Dict): + """ """ + chat_param["chat_mode"] = ChatScene.ExtractSummary + super().__init__( + chat_param=chat_param, + ) + + self.user_input = chat_param["select_param"] + + async def generate_input_values(self): + input_values = { + "context": self.user_input, + } + return input_values + + @property + def chat_type(self) -> str: + return ChatScene.ExtractSummary.value diff --git a/pilot/scene/chat_knowledge/summary/out_parser.py b/pilot/scene/chat_knowledge/summary/out_parser.py new file mode 100644 index 000000000..cc4de7356 --- /dev/null +++ b/pilot/scene/chat_knowledge/summary/out_parser.py @@ -0,0 +1,32 @@ +import logging +from typing import List, Tuple + +from pilot.out_parser.base import BaseOutputParser, T, ResponseTye +from pilot.configs.config import Config + +CFG = Config() + + +logger = logging.getLogger(__name__) + + +class ExtractSummaryParser(BaseOutputParser): + def __init__(self, sep: str, is_stream_out: bool): + super().__init__(sep=sep, is_stream_out=is_stream_out) + + def parse_prompt_response( + self, response, max_length: int = 128 + ) -> List[Tuple[str, str, str]]: + # clean_str = super().parse_prompt_response(response) + print("clean prompt response:", response) + return response + + def parse_view_response(self, speak, data) -> str: + ### tool out data to table view + return data + + def parse_model_nostream_resp(self, response: ResponseTye, sep: str) -> str: + try: + return super().parse_model_nostream_resp(response, sep) + except Exception as e: + return str(e) diff --git a/pilot/scene/chat_knowledge/summary/prompt.py b/pilot/scene/chat_knowledge/summary/prompt.py new file mode 100644 index 000000000..404b9079f --- /dev/null +++ b/pilot/scene/chat_knowledge/summary/prompt.py @@ -0,0 +1,53 @@ +from pilot.prompts.prompt_new import PromptTemplate +from pilot.configs.config import Config +from pilot.scene.base import ChatScene +from pilot.common.schema import SeparatorStyle + +from pilot.scene.chat_knowledge.summary.out_parser import ExtractSummaryParser + +CFG = Config() + +# PROMPT_SCENE_DEFINE = """You are an expert Q&A system that is trusted around the world.\nAlways answer the query using the provided context information, and not prior knowledge.\nSome rules to follow:\n1. Never directly reference the given context in your answer.\n2. Avoid statements like 'Based on the context, ...' or 'The context information ...' or anything along those lines.""" + +PROMPT_SCENE_DEFINE = """A chat between a curious user and an artificial intelligence assistant, who very familiar with database related knowledge. +The assistant gives helpful, detailed, professional and polite answers to the user's questions.""" + +_DEFAULT_TEMPLATE_ZH = """请根据提供的上下文信息的进行精简地总结: +{context} +答案尽量精确和简单,不要过长,长度控制在100字左右 +""" + +_DEFAULT_TEMPLATE_EN = """ +Write a quick summary of the following context: +{context} +the summary should be as concise as possible and not overly lengthy.Please keep the answer within approximately 200 characters. +""" + +_DEFAULT_TEMPLATE = ( + _DEFAULT_TEMPLATE_EN if CFG.LANGUAGE == "en" else _DEFAULT_TEMPLATE_ZH +) + +PROMPT_RESPONSE = """""" + + +RESPONSE_FORMAT = """""" + + +PROMPT_SEP = SeparatorStyle.SINGLE.value + +PROMPT_NEED_NEED_STREAM_OUT = False + +prompt = PromptTemplate( + template_scene=ChatScene.ExtractSummary.value(), + input_variables=["context"], + response_format=None, + template_define=PROMPT_SCENE_DEFINE, + template=_DEFAULT_TEMPLATE + PROMPT_RESPONSE, + stream_out=PROMPT_NEED_NEED_STREAM_OUT, + output_parser=ExtractSummaryParser( + sep=PROMPT_SEP, is_stream_out=PROMPT_NEED_NEED_STREAM_OUT + ), +) + +CFG.prompt_template_registry.register(prompt, is_default=True) +from ..v1 import prompt_chatglm diff --git a/pilot/scene/chat_knowledge/v1/chat.py b/pilot/scene/chat_knowledge/v1/chat.py index 321fb27ac..d2936cd28 100644 --- a/pilot/scene/chat_knowledge/v1/chat.py +++ b/pilot/scene/chat_knowledge/v1/chat.py @@ -1,6 +1,8 @@ +import json import os -from typing import Dict +from typing import Dict, List +from pilot.component import ComponentType from pilot.scene.base_chat import BaseChat from pilot.scene.base import ChatScene from pilot.configs.config import Config @@ -12,13 +14,14 @@ from pilot.scene.chat_knowledge.v1.prompt import prompt from pilot.server.knowledge.service import KnowledgeService +from pilot.utils.executor_utils import blocking_func_to_async +from pilot.utils.tracer import root_tracer, trace CFG = Config() class ChatKnowledge(BaseChat): chat_scene: str = ChatScene.ChatKnowledge.value() - """KBQA Chat Module""" def __init__(self, chat_param: Dict): @@ -44,10 +47,9 @@ def __init__(self, chat_param: Dict): if self.space_context is None else int(self.space_context["embedding"]["topk"]) ) - # self.recall_score = CFG.KNOWLEDGE_SEARCH_TOP_SIZE if self.space_context is None else self.space_context["embedding"]["recall_score"] self.max_token = ( CFG.KNOWLEDGE_SEARCH_MAX_TOKEN - if self.space_context is None + if self.space_context is None or self.space_context.get("prompt") is None else int(self.space_context["prompt"]["max_token"]) ) vector_store_config = { @@ -65,7 +67,7 @@ def __init__(self, chat_param: Dict): self.prompt_template.template_is_strict = False async def stream_call(self): - input_values = self.generate_input_values() + input_values = await self.generate_input_values() # Source of knowledge file relations = input_values.get("relations") last_output = None @@ -83,20 +85,34 @@ async def stream_call(self): last_output.text = ( last_output.text + "\n\nrelations:\n\n" + ",".join(relations) ) - yield last_output + reference = f"\n\n{self.parse_source_view(self.sources)}" + last_output = last_output + reference + yield last_output - def generate_input_values(self): - if self.space_context: + def stream_call_reinforce_fn(self, text): + """return reference""" + return text + f"\n\n{self.parse_source_view(self.sources)}" + + @trace() + async def generate_input_values(self) -> Dict: + if self.space_context and self.space_context.get("prompt"): self.prompt_template.template_define = self.space_context["prompt"]["scene"] self.prompt_template.template = self.space_context["prompt"]["template"] - docs = self.knowledge_embedding_client.similar_search( - self.current_user_input, self.top_k + docs = await blocking_func_to_async( + self._executor, + self.knowledge_embedding_client.similar_search, + self.current_user_input, + self.top_k, ) - if not docs: - raise ValueError( - "you have no knowledge space, please add your knowledge space" - ) - context = [d.page_content for d in docs] + self.sources = _merge_by_key( + list(map(lambda doc: doc.metadata, docs)), "source" + ) + + if not docs or len(docs) == 0: + print("no relevant docs to retrieve") + context = "no relevant docs to retrieve" + else: + context = [d.page_content for d in docs] context = context[: self.max_token] relations = list( set([os.path.basename(str(d.metadata.get("source", ""))) for d in docs]) @@ -108,6 +124,31 @@ def generate_input_values(self): } return input_values + def parse_source_view(self, sources: List): + """ + build knowledge reference view message to web + { + "title":"References", + "references":[{ + "name":"aa.pdf", + "pages":["1","2","3"] + }] + } + """ + references = {"title": "References", "references": []} + for item in sources: + reference = {} + source = item["source"] if "source" in item else "" + reference["name"] = source + pages = item["pages"] if "pages" in item else [] + if len(pages) > 0: + reference["pages"] = pages + references["references"].append(reference) + html = ( + f"""{json.dumps(references, ensure_ascii=False)}""" + ) + return html + @property def chat_type(self) -> str: return ChatScene.ChatKnowledge.value() @@ -115,3 +156,27 @@ def chat_type(self) -> str: def get_space_context(self, space_name): service = KnowledgeService() return service.get_space_context(space_name, self.user_id) + + +def _merge_by_key(data, key): + result = {} + for item in data: + if item.get(key): + item_key = os.path.basename(item.get(key)) + if item_key in result: + if "pages" in result[item_key] and "page" in item: + result[item_key]["pages"].append(str(item["page"])) + elif "page" in item: + result[item_key]["pages"] = [ + result[item_key]["pages"], + str(item["page"]), + ] + else: + if "page" in item: + result[item_key] = { + "source": item_key, + "pages": [str(item["page"])], + } + else: + result[item_key] = {"source": item_key} + return list(result.values()) diff --git a/pilot/scene/chat_knowledge/v1/prompt.py b/pilot/scene/chat_knowledge/v1/prompt.py index 6788d6d35..55d74297f 100644 --- a/pilot/scene/chat_knowledge/v1/prompt.py +++ b/pilot/scene/chat_knowledge/v1/prompt.py @@ -13,17 +13,17 @@ _DEFAULT_TEMPLATE_ZH = """ 基于以下已知的信息, 专业、简要的回答用户的问题, - 如果无法从提供的内容中获取答案, 请说: "知识库中提供的内容不足以回答此问题" 禁止胡乱编造。 + 如果无法从提供的内容中获取答案, 请说: "知识库中提供的内容不足以回答此问题" 禁止胡乱编造, 回答的时候最好按照1.2.3.点进行总结。 已知内容: {context} 问题: - {question} + {question},请使用和用户相同的语言进行回答. """ -_DEFAULT_TEMPLATE_EN = """ Based on the known information below, provide users with professional and concise answers to their questions. If the answer cannot be obtained from the provided content, please say: "The information provided in the knowledge base is not sufficient to answer this question." It is forbidden to make up information randomly. +_DEFAULT_TEMPLATE_EN = """ Based on the known information below, provide users with professional and concise answers to their questions. If the answer cannot be obtained from the provided content, please say: "The information provided in the knowledge base is not sufficient to answer this question." It is forbidden to make up information randomly. When answering, it is best to summarize according to points 1.2.3. known information: {context} question: - {question} + {question},when answering, use the same language as the "user". """ _DEFAULT_TEMPLATE = ( @@ -33,7 +33,7 @@ PROMPT_SEP = SeparatorStyle.SINGLE.value -PROMPT_NEED_NEED_STREAM_OUT = True +PROMPT_NEED_STREAM_OUT = True prompt = PromptTemplate( template_scene=ChatScene.ChatKnowledge.value(), @@ -41,9 +41,9 @@ response_format=None, template_define=PROMPT_SCENE_DEFINE, template=_DEFAULT_TEMPLATE, - stream_out=PROMPT_NEED_NEED_STREAM_OUT, + stream_out=PROMPT_NEED_STREAM_OUT, output_parser=NormalChatOutputParser( - sep=PROMPT_SEP, is_stream_out=PROMPT_NEED_NEED_STREAM_OUT + sep=PROMPT_SEP, is_stream_out=PROMPT_NEED_STREAM_OUT ), ) diff --git a/pilot/scene/chat_knowledge/v1/prompt_chatglm.py b/pilot/scene/chat_knowledge/v1/prompt_chatglm.py index 7f66c1e6f..898699e89 100644 --- a/pilot/scene/chat_knowledge/v1/prompt_chatglm.py +++ b/pilot/scene/chat_knowledge/v1/prompt_chatglm.py @@ -33,7 +33,7 @@ PROMPT_SEP = SeparatorStyle.SINGLE.value -PROMPT_NEED_NEED_STREAM_OUT = True +PROMPT_NEED_STREAM_OUT = True prompt = PromptTemplate( template_scene=ChatScene.ChatKnowledge.value(), @@ -41,9 +41,9 @@ response_format=None, template_define=None, template=_DEFAULT_TEMPLATE, - stream_out=PROMPT_NEED_NEED_STREAM_OUT, + stream_out=PROMPT_NEED_STREAM_OUT, output_parser=NormalChatOutputParser( - sep=PROMPT_SEP, is_stream_out=PROMPT_NEED_NEED_STREAM_OUT + sep=PROMPT_SEP, is_stream_out=PROMPT_NEED_STREAM_OUT ), ) diff --git a/pilot/scene/chat_normal/chat.py b/pilot/scene/chat_normal/chat.py index 47d1e70b5..0191ef943 100644 --- a/pilot/scene/chat_normal/chat.py +++ b/pilot/scene/chat_normal/chat.py @@ -5,6 +5,7 @@ from pilot.configs.config import Config from pilot.scene.chat_normal.prompt import prompt +from pilot.utils.tracer import root_tracer, trace CFG = Config() @@ -21,7 +22,8 @@ def __init__(self, chat_param: Dict): chat_param=chat_param, ) - def generate_input_values(self): + @trace() + async def generate_input_values(self) -> Dict: input_values = {"input": self.current_user_input} return input_values diff --git a/pilot/scene/chat_normal/prompt.py b/pilot/scene/chat_normal/prompt.py index ad0724874..dae412987 100644 --- a/pilot/scene/chat_normal/prompt.py +++ b/pilot/scene/chat_normal/prompt.py @@ -11,7 +11,7 @@ PROMPT_SEP = SeparatorStyle.SINGLE.value -PROMPT_NEED_NEED_STREAM_OUT = True +PROMPT_NEED_STREAM_OUT = True prompt = PromptTemplate( template_scene=ChatScene.ChatNormal.value(), @@ -19,9 +19,9 @@ response_format=None, template_define=PROMPT_SCENE_DEFINE, template=None, - stream_out=PROMPT_NEED_NEED_STREAM_OUT, + stream_out=PROMPT_NEED_STREAM_OUT, output_parser=NormalChatOutputParser( - sep=PROMPT_SEP, is_stream_out=PROMPT_NEED_NEED_STREAM_OUT + sep=PROMPT_SEP, is_stream_out=PROMPT_NEED_STREAM_OUT ), ) diff --git a/pilot/scene/operator/__init__.py b/pilot/scene/operator/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pilot/scene/operator/_experimental.py b/pilot/scene/operator/_experimental.py new file mode 100644 index 000000000..f0ee06179 --- /dev/null +++ b/pilot/scene/operator/_experimental.py @@ -0,0 +1,255 @@ +from typing import Dict, Optional, List, Any +from dataclasses import dataclass +import datetime +import os +from pilot.awel import MapOperator +from pilot.prompts.prompt_new import PromptTemplate +from pilot.configs.config import Config +from pilot.scene.base import ChatScene +from pilot.scene.message import OnceConversation +from pilot.scene.base_message import ModelMessage, ModelMessageRoleType + + +from pilot.memory.chat_history.base import BaseChatHistoryMemory +from pilot.memory.chat_history.chat_hisotry_factory import ChatHistory + +# TODO move global config +CFG = Config() + + +@dataclass +class ChatContext: + current_user_input: str + model_name: Optional[str] + chat_session_id: Optional[str] = None + select_param: Optional[str] = None + chat_scene: Optional[ChatScene] = ChatScene.ChatNormal + prompt_template: Optional[PromptTemplate] = None + chat_retention_rounds: Optional[int] = 0 + history_storage: Optional[BaseChatHistoryMemory] = None + history_manager: Optional["ChatHistoryManager"] = None + # The input values for prompt template + input_values: Optional[Dict] = None + echo: Optional[bool] = False + + def build_model_payload(self) -> Dict: + if not self.input_values: + raise ValueError("The input value can't be empty") + llm_messages = self.history_manager._new_chat(self.input_values) + return { + "model": self.model_name, + "prompt": "", + "messages": llm_messages, + "temperature": float(self.prompt_template.temperature), + "max_new_tokens": int(self.prompt_template.max_new_tokens), + "echo": self.echo, + } + + +class ChatHistoryManager: + def __init__( + self, + chat_ctx: ChatContext, + prompt_template: PromptTemplate, + history_storage: BaseChatHistoryMemory, + chat_retention_rounds: Optional[int] = 0, + ) -> None: + self._chat_ctx = chat_ctx + self.chat_retention_rounds = chat_retention_rounds + self.current_message: OnceConversation = OnceConversation( + chat_ctx.chat_scene.value() + ) + self.prompt_template = prompt_template + self.history_storage: BaseChatHistoryMemory = history_storage + self.history_message: List[OnceConversation] = history_storage.messages() + self.current_message.model_name = chat_ctx.model_name + if chat_ctx.select_param: + if len(chat_ctx.chat_scene.param_types()) > 0: + self.current_message.param_type = chat_ctx.chat_scene.param_types()[0] + self.current_message.param_value = chat_ctx.select_param + + def _new_chat(self, input_values: Dict) -> List[ModelMessage]: + self.current_message.chat_order = len(self.history_message) + 1 + self.current_message.add_user_message(self._chat_ctx.current_user_input) + self.current_message.start_date = datetime.datetime.now().strftime( + "%Y-%m-%d %H:%M:%S" + ) + self.current_message.tokens = 0 + if self.prompt_template.template: + current_prompt = self.prompt_template.format(**input_values) + self.current_message.add_system_message(current_prompt) + return self._generate_llm_messages() + + def _generate_llm_messages(self) -> List[ModelMessage]: + from pilot.scene.base_chat import ( + _load_system_message, + _load_example_messages, + _load_history_messages, + _load_user_message, + ) + + messages = [] + ### Load scene setting or character definition as system message + if self.prompt_template.template_define: + messages.append( + ModelMessage( + role=ModelMessageRoleType.SYSTEM, + content=self.prompt_template.template_define, + ) + ) + ### Load prompt + messages += _load_system_message( + self.current_message, self.prompt_template, str_message=False + ) + ### Load examples + messages += _load_example_messages(self.prompt_template, str_message=False) + + ### Load History + messages += _load_history_messages( + self.prompt_template, + self.history_message, + self.chat_retention_rounds, + str_message=False, + ) + + ### Load User Input + messages += _load_user_message( + self.current_message, self.prompt_template, str_message=False + ) + return messages + + +class PromptManagerOperator(MapOperator[ChatContext, ChatContext]): + def __init__(self, prompt_template: PromptTemplate = None, **kwargs): + super().__init__(**kwargs) + self._prompt_template = prompt_template + + async def map(self, input_value: ChatContext) -> ChatContext: + if not self._prompt_template: + self._prompt_template: PromptTemplate = ( + CFG.prompt_template_registry.get_prompt_template( + input_value.chat_scene.value(), + language=CFG.LANGUAGE, + model_name=input_value.model_name, + proxyllm_backend=CFG.PROXYLLM_BACKEND, + ) + ) + input_value.prompt_template = self._prompt_template + return input_value + + +class ChatHistoryStorageOperator(MapOperator[ChatContext, ChatContext]): + def __init__(self, history: BaseChatHistoryMemory = None, **kwargs): + super().__init__(**kwargs) + self._history = history + + async def map(self, input_value: ChatContext) -> ChatContext: + if self._history: + return self._history + chat_history_fac = ChatHistory() + input_value.history_storage = chat_history_fac.get_store_instance( + input_value.chat_session_id + ) + return input_value + + +class ChatHistoryOperator(MapOperator[ChatContext, ChatContext]): + def __init__(self, history: BaseChatHistoryMemory = None, **kwargs): + super().__init__(**kwargs) + self._history = history + + async def map(self, input_value: ChatContext) -> ChatContext: + history_storage = self._history or input_value.history_storage + if not history_storage: + from pilot.memory.chat_history.store_type.mem_history import ( + MemHistoryMemory, + ) + + history_storage = MemHistoryMemory(input_value.chat_session_id) + input_value.history_storage = history_storage + input_value.history_manager = ChatHistoryManager( + input_value, + input_value.prompt_template, + history_storage, + input_value.chat_retention_rounds, + ) + return input_value + + +class EmbeddingEngingOperator(MapOperator[ChatContext, ChatContext]): + def __init__(self, **kwargs): + super().__init__(**kwargs) + + async def map(self, input_value: ChatContext) -> ChatContext: + from pilot.configs.model_config import EMBEDDING_MODEL_CONFIG + from pilot.embedding_engine.embedding_engine import EmbeddingEngine + from pilot.embedding_engine.embedding_factory import EmbeddingFactory + from pilot.scene.chat_knowledge.v1.chat import _merge_by_key + + # TODO, decompose the current operator into some atomic operators + knowledge_space = input_value.select_param + vector_store_config = { + "vector_store_name": knowledge_space, + "vector_store_type": CFG.VECTOR_STORE_TYPE, + } + embedding_factory = self.system_app.get_component( + "embedding_factory", EmbeddingFactory + ) + knowledge_embedding_client = EmbeddingEngine( + model_name=EMBEDDING_MODEL_CONFIG[CFG.EMBEDDING_MODEL], + vector_store_config=vector_store_config, + embedding_factory=embedding_factory, + ) + space_context = await self._get_space_context(knowledge_space) + top_k = ( + CFG.KNOWLEDGE_SEARCH_TOP_SIZE + if space_context is None + else int(space_context["embedding"]["topk"]) + ) + max_token = ( + CFG.KNOWLEDGE_SEARCH_MAX_TOKEN + if space_context is None or space_context.get("prompt") is None + else int(space_context["prompt"]["max_token"]) + ) + input_value.prompt_template.template_is_strict = False + if space_context and space_context.get("prompt"): + input_value.prompt_template.template_define = space_context["prompt"][ + "scene" + ] + input_value.prompt_template.template = space_context["prompt"]["template"] + + docs = await self.blocking_func_to_async( + knowledge_embedding_client.similar_search, + input_value.current_user_input, + top_k, + ) + sources = _merge_by_key(list(map(lambda doc: doc.metadata, docs)), "source") + if not docs or len(docs) == 0: + print("no relevant docs to retrieve") + context = "no relevant docs to retrieve" + else: + context = [d.page_content for d in docs] + context = context[:max_token] + relations = list( + set([os.path.basename(str(d.metadata.get("source", ""))) for d in docs]) + ) + input_value.input_values = { + "context": context, + "question": input_value.current_user_input, + "relations": relations, + } + return input_value + + async def _get_space_context(self, space_name): + from pilot.server.knowledge.service import KnowledgeService + + service = KnowledgeService() + return await self.blocking_func_to_async(service.get_space_context, space_name) + + +class BaseChatOperator(MapOperator[ChatContext, Dict]): + def __init__(self, **kwargs): + super().__init__(**kwargs) + + async def map(self, input_value: ChatContext) -> Dict: + return input_value.build_model_payload() diff --git a/pilot/server/base.py b/pilot/server/base.py index e66efcf43..488c919c3 100644 --- a/pilot/server/base.py +++ b/pilot/server/base.py @@ -6,7 +6,6 @@ from dataclasses import dataclass, field from pilot.configs.config import Config -from pilot.configs.model_config import PLUGINS_DIR from pilot.component import SystemApp from pilot.utils.parameter_utils import BaseParameters from pilot.base_modules.meta_data.meta_data import ddl_init_and_upgrade @@ -29,7 +28,7 @@ def async_db_summary(system_app: SystemApp): thread.start() -def server_init(args, system_app: SystemApp): +def server_init(param: "WebWerverParameters", system_app: SystemApp): from pilot.base_modules.agent.commands.command_mange import CommandRegistry # logger.info(f"args: {args}") @@ -38,7 +37,7 @@ def server_init(args, system_app: SystemApp): cfg = Config() cfg.SYSTEM_APP = system_app - ddl_init_and_upgrade() + ddl_init_and_upgrade(param.disable_alembic_upgrade) # load_native_plugins(cfg) signal.signal(signal.SIGINT, signal_handler) @@ -148,3 +147,15 @@ class WebWerverParameters(BaseParameters): "help": "The filename to store tracer span records", }, ) + tracer_storage_cls: Optional[str] = field( + default=None, + metadata={ + "help": "The storage class to storage tracer span records", + }, + ) + disable_alembic_upgrade: Optional[bool] = field( + default=False, + metadata={ + "help": "Whether to disable alembic to initialize and upgrade database metadata", + }, + ) diff --git a/pilot/server/chat_adapter.py b/pilot/server/chat_adapter.py index cb486021b..64b72739b 100644 --- a/pilot/server/chat_adapter.py +++ b/pilot/server/chat_adapter.py @@ -215,6 +215,16 @@ def get_conv_template(self, model_path: str) -> Conversation: return get_conv_template("llama-2") +class CodeLlamaChatAdapter(BaseChatAdpter): + """The model ChatAdapter for codellama .""" + + def match(self, model_path: str): + return "codellama" in model_path.lower() + + def get_conv_template(self, model_path: str) -> Conversation: + return get_conv_template("codellama") + + class BaichuanChatAdapter(BaseChatAdpter): def match(self, model_path: str): return "baichuan" in model_path.lower() @@ -268,6 +278,7 @@ def get_conv_template(self, model_path: str) -> Conversation: register_llm_model_chat_adapter(GorillaChatAdapter) register_llm_model_chat_adapter(GPT4AllChatAdapter) register_llm_model_chat_adapter(Llama2ChatAdapter) +register_llm_model_chat_adapter(CodeLlamaChatAdapter) register_llm_model_chat_adapter(BaichuanChatAdapter) register_llm_model_chat_adapter(WizardLMChatAdapter) register_llm_model_chat_adapter(LlamaCppChatAdapter) diff --git a/pilot/server/component_configs.py b/pilot/server/component_configs.py index d700de94c..4b7f1bb2b 100644 --- a/pilot/server/component_configs.py +++ b/pilot/server/component_configs.py @@ -5,6 +5,8 @@ import os from pilot.component import ComponentType, SystemApp +from pilot.configs.config import Config +from pilot.configs.model_config import MODEL_DISK_CACHE_DIR from pilot.utils.executor_utils import DefaultExecutorFactory from pilot.embedding_engine.embedding_factory import EmbeddingFactory from pilot.server.base import WebWerverParameters @@ -15,6 +17,8 @@ logger = logging.getLogger(__name__) +CFG = Config() + def initialize_components( param: WebWerverParameters, @@ -28,6 +32,11 @@ def initialize_components( system_app.register(DefaultExecutorFactory) system_app.register_instance(controller) + # Register global default RAGGraphFactory + # from pilot.graph_engine.graph_factory import DefaultRAGGraphFactory + + # system_app.register(DefaultRAGGraphFactory) + from pilot.base_modules.agent.controller import module_agent system_app.register_instance(module_agent) @@ -35,6 +44,8 @@ def initialize_components( _initialize_embedding_model( param, system_app, embedding_model_name, embedding_model_path ) + _initialize_model_cache(system_app) + _initialize_awel(system_app) def _initialize_embedding_model( @@ -126,3 +137,23 @@ def _load_model(self) -> "Embeddings": loader = EmbeddingLoader() # Ignore model_name args return loader.load(self._default_model_name, model_params) + + +def _initialize_model_cache(system_app: SystemApp): + from pilot.cache import initialize_cache + + if not CFG.MODEL_CACHE_ENABLE: + logger.info("Model cache is not enable") + return + + storage_type = CFG.MODEL_CACHE_STORAGE_TYPE or "disk" + max_memory_mb = CFG.MODEL_CACHE_MAX_MEMORY_MB or 256 + persist_dir = CFG.MODEL_CACHE_STORAGE_DISK_DIR or MODEL_DISK_CACHE_DIR + initialize_cache(system_app, storage_type, max_memory_mb, persist_dir) + + +def _initialize_awel(system_app: SystemApp): + from pilot.awel import initialize_awel + from pilot.configs.model_config import _DAG_DEFINITION_DIR + + initialize_awel(system_app, _DAG_DEFINITION_DIR) diff --git a/pilot/server/dbgpt_server.py b/pilot/server/dbgpt_server.py index c6e084a93..c26803cfd 100644 --- a/pilot/server/dbgpt_server.py +++ b/pilot/server/dbgpt_server.py @@ -2,6 +2,7 @@ import argparse import sys from typing import List +import logging ROOT_PATH = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) sys.path.append(ROOT_PATH) @@ -39,6 +40,7 @@ setup_logging, _get_logging_level, logging_str_to_uvicorn_level, + setup_http_service_logging, ) from pilot.utils.tracer import root_tracer, initialize_tracer, SpanType, SpanTypeRunName from pilot.utils.parameter_utils import _get_dict_from_obj @@ -127,6 +129,7 @@ def initialize_app(param: WebWerverParameters = None, args: List[str] = None): setup_logging( "pilot", logging_level=param.log_level, logger_filename=param.log_file ) + # Before start system_app.before_start() @@ -141,7 +144,7 @@ def initialize_app(param: WebWerverParameters = None, args: List[str] = None): model_name = param.model_name or CFG.LLM_MODEL - model_path = LLM_MODEL_CONFIG.get(model_name) + model_path = CFG.LLM_MODEL_PATH or LLM_MODEL_CONFIG.get(model_name) if not param.light: print("Model Unified Deployment Mode!") if not param.remote_embedding: @@ -180,6 +183,7 @@ def initialize_app(param: WebWerverParameters = None, args: List[str] = None): def run_uvicorn(param: WebWerverParameters): import uvicorn + setup_http_service_logging() uvicorn.run( app, host=param.host, @@ -191,7 +195,11 @@ def run_uvicorn(param: WebWerverParameters): def run_webserver(param: WebWerverParameters = None): if not param: param = _get_webserver_params() - initialize_tracer(system_app, os.path.join(LOGDIR, param.tracer_file)) + initialize_tracer( + system_app, + os.path.join(LOGDIR, param.tracer_file), + tracer_storage_cls=param.tracer_storage_cls, + ) with root_tracer.start_span( "run_webserver", diff --git a/pilot/server/knowledge/api.py b/pilot/server/knowledge/api.py index c0966cb62..47e3910a1 100644 --- a/pilot/server/knowledge/api.py +++ b/pilot/server/knowledge/api.py @@ -10,6 +10,7 @@ EMBEDDING_MODEL_CONFIG, KNOWLEDGE_UPLOAD_ROOT_PATH, ) +from pilot.openapi.api_v1.api_v1 import no_stream_generator, stream_generator from pilot.openapi.api_view_model import Result from pilot.embedding_engine.embedding_engine import EmbeddingEngine @@ -24,10 +25,13 @@ ChunkQueryRequest, DocumentQueryRequest, SpaceArgumentRequest, + EntityExtractRequest, + DocumentSummaryRequest, ) from pilot.server.knowledge.request.request import KnowledgeSpaceRequest from pilot.user import UserRequest, get_user_from_headers +from pilot.utils.tracer import root_tracer, SpanType logger = logging.getLogger(__name__) @@ -46,7 +50,7 @@ def space_add(request: KnowledgeSpaceRequest, user_token: UserRequest = Depends( knowledge_space_service.create_knowledge_space(request) return Result.succ([]) except Exception as e: - return Result.faild(code="E000X", msg=f"space add error {e}") + return Result.failed(code="E000X", msg=f"space add error {e}") @router.post("/knowledge/space/list") @@ -56,7 +60,7 @@ def space_list(request: KnowledgeSpaceRequest, user_token: UserRequest = Depends request.user_id = user_token.user_id return Result.succ(knowledge_space_service.get_knowledge_space(request)) except Exception as e: - return Result.faild(code="E000X", msg=f"space list error {e}") + return Result.failed(code="E000X", msg=f"space list error {e}") @router.post("/knowledge/space/delete") @@ -70,7 +74,7 @@ def space_delete(request: KnowledgeSpaceRequest, user_token: UserRequest = Depen try: return Result.succ(knowledge_space_service.delete_space(spaces[0].id)) except Exception as e: - return Result.faild(code="E000X", msg=f"space list error {e}") + return Result.failed(code="E000X", msg=f"space list error {e}") @router.post("/knowledge/{space_name}/arguments") @@ -79,7 +83,7 @@ def arguments(space_name: str, user_token: UserRequest = Depends(get_user_from_h try: return Result.succ(knowledge_space_service.arguments(space_name, user_token.user_id)) except Exception as e: - return Result.faild(code="E000X", msg=f"space list error {e}") + return Result.failed(code="E000X", msg=f"space list error {e}") @router.post("/knowledge/{space_name}/argument/save") @@ -90,7 +94,7 @@ def arguments_save(space_name: str, argument_request: SpaceArgumentRequest, user knowledge_space_service.argument_save(space_name, argument_request, user_token.user_id) ) except Exception as e: - return Result.faild(code="E000X", msg=f"space list error {e}") + return Result.failed(code="E000X", msg=f"space list error {e}") @router.post("/knowledge/{space_name}/document/add") @@ -107,7 +111,7 @@ def document_add(space_name: str, request: KnowledgeDocumentRequest, user_token: ) ) except Exception as e: - return Result.faild(code="E000X", msg=f"document add error {e}") + return Result.failed(code="E000X", msg=f"document add error {e}") @router.post("/knowledge/{space_name}/document/list") @@ -123,7 +127,7 @@ def document_list(space_name: str, query_request: DocumentQueryRequest, user_tok knowledge_space_service.get_knowledge_documents(spaces[0].id, query_request) ) except Exception as e: - return Result.faild(code="E000X", msg=f"document list error {e}") + return Result.failed(code="E000X", msg=f"document list error {e}") @router.post("/knowledge/{space_name}/document/delete") @@ -139,7 +143,7 @@ def document_delete(space_name: str, query_request: DocumentQueryRequest, user_t knowledge_space_service.delete_document(spaces[0].id, query_request.doc_name) ) except Exception as e: - return Result.faild(code="E000X", msg=f"document list error {e}") + return Result.failed(code="E000X", msg=f"document list error {e}") @router.post("/knowledge/{space_name}/document/upload") @@ -177,15 +181,29 @@ async def document_upload( request.content = os.path.join( KNOWLEDGE_UPLOAD_ROOT_PATH, space_name_dir, doc_file.filename ) + space_res = knowledge_space_service.get_knowledge_space( + KnowledgeSpaceRequest(user_id=user_token.user_id, name=space_name) + ) + if len(space_res) == 0: + # create default space + if "default" != space_name: + raise Exception(f"you have not create your knowledge space.") + knowledge_space_service.create_knowledge_space( + KnowledgeSpaceRequest( + name=space_name, + desc="first db-gpt rag application", + owner="dbgpt", + user_id=user_token.user_id, + ) + ) return Result.succ( knowledge_space_service.create_knowledge_document( space_id=spaces[0].id, request=request ) ) - # return Result.succ([]) - return Result.faild(code="E000X", msg=f"doc_file is None") + return Result.failed(code="E000X", msg=f"doc_file is None") except Exception as e: - return Result.faild(code="E000X", msg=f"document add error {e}") + return Result.failed(code="E000X", msg=f"document add error {e}") @router.post("/knowledge/{space_name}/document/sync") @@ -202,7 +220,7 @@ def document_sync(space_name: str, request: DocumentSyncRequest, user_token: Use ) return Result.succ([]) except Exception as e: - return Result.faild(code="E000X", msg=f"document sync error {e}") + return Result.failed(code="E000X", msg=f"document sync error {e}") @router.post("/knowledge/{space_name}/chunk/list") @@ -211,7 +229,7 @@ def document_list(space_name: str, query_request: ChunkQueryRequest, user_token: try: return Result.succ(knowledge_space_service.get_document_chunks(query_request)) except Exception as e: - return Result.faild(code="E000X", msg=f"document chunk list error {e}") + return Result.failed(code="E000X", msg=f"document chunk list error {e}") @router.post("/knowledge/{vector_name}/query") @@ -231,3 +249,58 @@ def similar_query(space_name: str, query_request: KnowledgeQueryRequest, user_to for d in docs ] return {"response": res} + + +@router.post("/knowledge/document/summary") +async def document_summary(request: DocumentSummaryRequest): + print(f"/document/summary params: {request}") + try: + with root_tracer.start_span( + "get_chat_instance", span_type=SpanType.CHAT, metadata=request + ): + chat = await knowledge_space_service.document_summary(request=request) + headers = { + "Content-Type": "text/event-stream", + "Cache-Control": "no-cache", + "Connection": "keep-alive", + "Transfer-Encoding": "chunked", + } + from starlette.responses import StreamingResponse + + if not chat.prompt_template.stream_out: + return StreamingResponse( + no_stream_generator(chat), + headers=headers, + media_type="text/event-stream", + ) + else: + return StreamingResponse( + stream_generator(chat, False, request.model_name), + headers=headers, + media_type="text/plain", + ) + except Exception as e: + return Result.failed(code="E000X", msg=f"document summary error {e}") + + +@router.post("/knowledge/entity/extract") +async def entity_extract(request: EntityExtractRequest): + logger.info(f"Received params: {request}") + try: + from pilot.scene.base import ChatScene + from pilot.common.chat_util import llm_chat_response_nostream + import uuid + + chat_param = { + "chat_session_id": uuid.uuid1(), + "current_user_input": request.text, + "select_param": "entity", + "model_name": request.model_name, + } + + res = await llm_chat_response_nostream( + ChatScene.ExtractEntity.value(), **{"chat_param": chat_param} + ) + return Result.succ(res) + except Exception as e: + return Result.failed(code="E000X", msg=f"entity extract error {e}") diff --git a/pilot/server/knowledge/chunk_db.py b/pilot/server/knowledge/chunk_db.py index f1e792377..1df3cf895 100644 --- a/pilot/server/knowledge/chunk_db.py +++ b/pilot/server/knowledge/chunk_db.py @@ -4,7 +4,12 @@ from sqlalchemy import Column, String, DateTime, Integer, Text, func from pilot.base_modules.meta_data.base_dao import BaseDao -from pilot.base_modules.meta_data.meta_data import Base, engine, session +from pilot.base_modules.meta_data.meta_data import ( + Base, + engine, + session, + META_DATA_DATABASE, +) from pilot.configs.config import Config CFG = Config() @@ -32,7 +37,10 @@ def __repr__(self): class DocumentChunkDao(BaseDao): def __init__(self): super().__init__( - database="dbgpt", orm_base=Base, db_engine=engine, session=session + database=META_DATA_DATABASE, + orm_base=Base, + db_engine=engine, + session=session, ) def create_documents_chunks(self, documents: List): @@ -75,7 +83,7 @@ def get_document_chunks(self, query: DocumentChunkEntity, page=1, page_size=20): DocumentChunkEntity.meta_info == query.meta_info ) - document_chunks = document_chunks.order_by(DocumentChunkEntity.id.desc()) + document_chunks = document_chunks.order_by(DocumentChunkEntity.id.asc()) document_chunks = document_chunks.offset((page - 1) * page_size).limit( page_size ) diff --git a/pilot/server/knowledge/document_db.py b/pilot/server/knowledge/document_db.py index 232f75bb4..39208ced4 100644 --- a/pilot/server/knowledge/document_db.py +++ b/pilot/server/knowledge/document_db.py @@ -3,7 +3,12 @@ from sqlalchemy import Column, String, DateTime, Integer, Text, func from pilot.base_modules.meta_data.base_dao import BaseDao -from pilot.base_modules.meta_data.meta_data import Base, engine, session +from pilot.base_modules.meta_data.meta_data import ( + Base, + engine, + session, + META_DATA_DATABASE, +) from pilot.configs.config import Config CFG = Config() @@ -26,17 +31,21 @@ class KnowledgeDocumentEntity(Base): content = Column(Text) result = Column(Text) vector_ids = Column(Text) + summary = Column(Text) gmt_created = Column(DateTime) gmt_modified = Column(DateTime) def __repr__(self): - return f"KnowledgeDocumentEntity(id={self.id}, space_id={self.space_id}, doc_name='{self.doc_name}', doc_type='{self.doc_type}', chunk_size='{self.chunk_size}', status='{self.status}', last_sync='{self.last_sync}', content='{self.content}', result='{self.result}', gmt_created='{self.gmt_created}', gmt_modified='{self.gmt_modified}')" + return f"KnowledgeDocumentEntity(id={self.id}, space_id={self.space_id}, doc_name='{self.doc_name}', doc_type='{self.doc_type}', chunk_size='{self.chunk_size}', status='{self.status}', last_sync='{self.last_sync}', content='{self.content}', result='{self.result}', summary='{self.summary}', gmt_created='{self.gmt_created}', gmt_modified='{self.gmt_modified}')" class KnowledgeDocumentDao(BaseDao): def __init__(self): super().__init__( - database="dbgpt", orm_base=Base, db_engine=engine, session=session + database=META_DATA_DATABASE, + orm_base=Base, + db_engine=engine, + session=session, ) def create_knowledge_document(self, document: KnowledgeDocumentEntity): diff --git a/pilot/server/knowledge/request/request.py b/pilot/server/knowledge/request/request.py index a0cb4ae17..fccb85c58 100644 --- a/pilot/server/knowledge/request/request.py +++ b/pilot/server/knowledge/request/request.py @@ -63,6 +63,8 @@ class DocumentSyncRequest(BaseModel): """doc_ids: doc ids""" doc_ids: List + model_name: Optional[str] = None + """Preseparator, this separator is used for pre-splitting before the document is actually split by the text splitter. Preseparator are not included in the vectorized text. """ @@ -108,3 +110,19 @@ class SpaceArgumentRequest(BaseModel): """argument: argument""" argument: str + + +class DocumentSummaryRequest(BaseModel): + """Sync request""" + + """doc_ids: doc ids""" + doc_id: int + model_name: str + conv_uid: str + + +class EntityExtractRequest(BaseModel): + """argument: argument""" + + text: str + model_name: str diff --git a/pilot/server/knowledge/request/response.py b/pilot/server/knowledge/request/response.py index fb7aa55e9..5c1c7efd1 100644 --- a/pilot/server/knowledge/request/response.py +++ b/pilot/server/knowledge/request/response.py @@ -7,6 +7,8 @@ class ChunkQueryResponse(BaseModel): """data: data""" data: List = None + """summary: document summary""" + summary: str = None """total: total size""" total: int = None """page: current page""" diff --git a/pilot/server/knowledge/service.py b/pilot/server/knowledge/service.py index 59d8855a6..97bd4d7d4 100644 --- a/pilot/server/knowledge/service.py +++ b/pilot/server/knowledge/service.py @@ -10,7 +10,7 @@ KNOWLEDGE_UPLOAD_ROOT_PATH, ) from pilot.component import ComponentType -from pilot.utils.executor_utils import ExecutorFactory +from pilot.utils.executor_utils import ExecutorFactory, blocking_func_to_async from pilot.server.knowledge.chunk_db import ( DocumentChunkEntity, @@ -31,6 +31,7 @@ ChunkQueryRequest, SpaceArgumentRequest, DocumentSyncRequest, + DocumentSummaryRequest, ) from enum import Enum @@ -200,6 +201,7 @@ def sync_knowledge_document(self, space_id, sync_request: DocumentSyncRequest, u # import langchain is very very slow!!! doc_ids = sync_request.doc_ids + self.model_name = sync_request.model_name or CFG.LLM_MODEL for doc_id in doc_ids: query = KnowledgeDocumentEntity( id=doc_id, @@ -290,7 +292,6 @@ def sync_knowledge_document(self, space_id, sync_request: DocumentSyncRequest, u ComponentType.EXECUTOR_DEFAULT, ExecutorFactory ).create() executor.submit(self.async_doc_embedding, client, chunk_docs, doc) - logger.info(f"begin save document chunks, doc:{doc.doc_name}") # save chunk details chunk_entities = [ @@ -307,7 +308,33 @@ def sync_knowledge_document(self, space_id, sync_request: DocumentSyncRequest, u ] document_chunk_dao.create_documents_chunks(chunk_entities) - return True + return doc.id + + async def document_summary(self, request: DocumentSummaryRequest): + """get document summary + Args: + - request: DocumentSummaryRequest + """ + doc_query = KnowledgeDocumentEntity(id=request.doc_id) + documents = knowledge_document_dao.get_documents(doc_query) + if len(documents) != 1: + raise Exception(f"can not found document for {request.doc_id}") + document = documents[0] + query = DocumentChunkEntity( + document_id=request.doc_id, + ) + chunks = document_chunk_dao.get_document_chunks(query, page=1, page_size=100) + if len(chunks) == 0: + raise Exception(f"can not found chunks for {request.doc_id}") + from langchain.schema import Document + + chunk_docs = [Document(page_content=chunk.content) for chunk in chunks] + return await self.async_document_summary( + model_name=request.model_name, + chunk_docs=chunk_docs, + doc=document, + conn_uid=request.conv_uid, + ) def update_knowledge_space( self, space_id: int, space_request: KnowledgeSpaceRequest @@ -390,23 +417,82 @@ def get_document_chunks(self, request: ChunkQueryRequest): doc_name=request.doc_name, doc_type=request.doc_type, ) + document_query = KnowledgeDocumentEntity(id=request.document_id) + documents = knowledge_document_dao.get_documents(document_query) + res = ChunkQueryResponse() res.data = document_chunk_dao.get_document_chunks( query, page=request.page, page_size=request.page_size ) + res.summary = documents[0].summary res.total = document_chunk_dao.get_document_chunks_count(query) res.page = request.page return res + def async_knowledge_graph(self, chunk_docs, doc): + """async document extract triplets and save into graph db + Args: + - chunk_docs: List[Document] + - doc: KnowledgeDocumentEntity + """ + logger.info( + f"async_knowledge_graph, doc:{doc.doc_name}, chunk_size:{len(chunk_docs)}, begin embedding to graph store" + ) + try: + from pilot.graph_engine.graph_factory import RAGGraphFactory + + rag_engine = CFG.SYSTEM_APP.get_component( + ComponentType.RAG_GRAPH_DEFAULT.value, RAGGraphFactory + ).create() + rag_engine.knowledge_graph(chunk_docs) + doc.status = SyncStatus.FINISHED.name + doc.result = "document build graph success" + except Exception as e: + doc.status = SyncStatus.FAILED.name + doc.result = "document build graph failed" + str(e) + logger.error(f"document build graph failed:{doc.doc_name}, {str(e)}") + return knowledge_document_dao.update_knowledge_document(doc) + + async def async_document_summary(self, model_name, chunk_docs, doc, conn_uid): + """async document extract summary + Args: + - model_name: str + - chunk_docs: List[Document] + - doc: KnowledgeDocumentEntity + """ + texts = [doc.page_content for doc in chunk_docs] + from pilot.common.prompt_util import PromptHelper + + prompt_helper = PromptHelper() + from pilot.scene.chat_knowledge.summary.prompt import prompt + + texts = prompt_helper.repack(prompt_template=prompt.template, text_chunks=texts) + logger.info( + f"async_document_summary, doc:{doc.doc_name}, chunk_size:{len(texts)}, begin generate summary" + ) + space_context = self.get_space_context(doc.space) + if space_context and space_context.get("summary"): + summary = await self._mapreduce_extract_summary( + docs=texts, + model_name=model_name, + max_iteration=int(space_context["summary"]["max_iteration"]), + concurrency_limit=int(space_context["summary"]["concurrency_limit"]), + ) + else: + summary = await self._mapreduce_extract_summary( + docs=texts, model_name=model_name + ) + return await self._llm_extract_summary(summary, conn_uid, model_name) + def async_doc_embedding(self, client, chunk_docs, doc): """async document embedding into vector db Args: - client: EmbeddingEngine Client - chunk_docs: List[Document] - - doc: doc + - doc: KnowledgeDocumentEntity """ logger.info( - f"async_doc_embedding, doc:{doc.doc_name}, chunk_size:{len(chunk_docs)}, begin embedding to vector store-{CFG.VECTOR_STORE_TYPE}" + f"async doc sync, doc:{doc.doc_name}, chunk_size:{len(chunk_docs)}, begin embedding to vector store-{CFG.VECTOR_STORE_TYPE}" ) try: vector_ids = client.knowledge_embedding_batch(chunk_docs) @@ -441,6 +527,10 @@ def _build_default_context(self): "scene": PROMPT_SCENE_DEFINE, "template": _DEFAULT_TEMPLATE, }, + "summary": { + "max_iteration": 5, + "concurrency_limit": 3, + }, } context_template_string = json.dumps(context_template, indent=4) return context_template_string @@ -462,3 +552,98 @@ def get_space_context(self, space_name, user_id: str = None): if space.context is not None: return json.loads(spaces[0].context) return None + + async def _llm_extract_summary( + self, doc: str, conn_uid: str, model_name: str = None + ): + """Extract triplets from text by llm + Args: + doc: Document + conn_uid: str,chat conversation id + model_name: str, model name + Returns: + chat: BaseChat, refine summary chat. + """ + from pilot.scene.base import ChatScene + + chat_param = { + "chat_session_id": conn_uid, + "current_user_input": "", + "select_param": doc, + "model_name": model_name, + "model_cache_enable": False, + } + executor = CFG.SYSTEM_APP.get_component( + ComponentType.EXECUTOR_DEFAULT, ExecutorFactory + ).create() + from pilot.openapi.api_v1.api_v1 import CHAT_FACTORY + + chat = await blocking_func_to_async( + executor, + CHAT_FACTORY.get_implementation, + ChatScene.ExtractRefineSummary.value(), + **{"chat_param": chat_param}, + ) + return chat + + async def _mapreduce_extract_summary( + self, + docs, + model_name: str = None, + max_iteration: int = 5, + concurrency_limit: int = 3, + ): + """Extract summary by mapreduce mode + map -> multi async call llm to generate summary + reduce -> merge the summaries by map process + Args: + docs:List[str] + model_name:model name str + max_iteration:max iteration will call llm to summary + concurrency_limit:the max concurrency threads to call llm + Returns: + Document: refine summary context document. + """ + from pilot.scene.base import ChatScene + from pilot.common.chat_util import llm_chat_response_nostream + import uuid + + tasks = [] + if len(docs) == 1: + return docs[0] + else: + max_iteration = max_iteration if len(docs) > max_iteration else len(docs) + for doc in docs[0:max_iteration]: + chat_param = { + "chat_session_id": uuid.uuid1(), + "current_user_input": "", + "select_param": doc, + "model_name": model_name, + "model_cache_enable": True, + } + tasks.append( + llm_chat_response_nostream( + ChatScene.ExtractSummary.value(), **{"chat_param": chat_param} + ) + ) + from pilot.common.chat_util import run_async_tasks + + summary_iters = await run_async_tasks( + tasks=tasks, concurrency_limit=concurrency_limit + ) + summary_iters = list( + filter( + lambda content: "LLMServer Generate Error" not in content, + summary_iters, + ) + ) + from pilot.common.prompt_util import PromptHelper + from pilot.scene.chat_knowledge.summary.prompt import prompt + + prompt_helper = PromptHelper() + summary_iters = prompt_helper.repack( + prompt_template=prompt.template, text_chunks=summary_iters + ) + return await self._mapreduce_extract_summary( + summary_iters, model_name, max_iteration, concurrency_limit + ) diff --git a/pilot/server/knowledge/space_db.py b/pilot/server/knowledge/space_db.py index 3f8ad957d..a14df5405 100644 --- a/pilot/server/knowledge/space_db.py +++ b/pilot/server/knowledge/space_db.py @@ -3,7 +3,12 @@ from sqlalchemy import Column, Integer, Text, String, DateTime from pilot.base_modules.meta_data.base_dao import BaseDao -from pilot.base_modules.meta_data.meta_data import Base, engine, session +from pilot.base_modules.meta_data.meta_data import ( + Base, + engine, + session, + META_DATA_DATABASE, +) from pilot.configs.config import Config from pilot.server.knowledge.request.request import KnowledgeSpaceRequest @@ -33,7 +38,10 @@ def __repr__(self): class KnowledgeSpaceDao(BaseDao): def __init__(self): super().__init__( - database="dbgpt", orm_base=Base, db_engine=engine, session=session + database=META_DATA_DATABASE, + orm_base=Base, + db_engine=engine, + session=session, ) def create_knowledge_space(self, space: KnowledgeSpaceRequest): diff --git a/pilot/server/llm_manage/api.py b/pilot/server/llm_manage/api.py index f5602d3c4..617018642 100644 --- a/pilot/server/llm_manage/api.py +++ b/pilot/server/llm_manage/api.py @@ -33,9 +33,9 @@ async def model_params(): params.append(model_dict) return Result.succ(params) if not worker_instance: - return Result.faild(code="E000X", msg=f"can not find worker manager") + return Result.failed(code="E000X", msg=f"can not find worker manager") except Exception as e: - return Result.faild(code="E000X", msg=f"model stop failed {e}") + return Result.failed(code="E000X", msg=f"model stop failed {e}") @router.get("/v1/worker/model/list") @@ -78,7 +78,7 @@ async def model_list(): return Result.succ(responses) except Exception as e: - return Result.faild(code="E000X", msg=f"model list error {e}") + return Result.failed(code="E000X", msg=f"model list error {e}") @router.post("/v1/worker/model/stop") @@ -91,11 +91,11 @@ async def model_stop(request: WorkerStartupRequest): ComponentType.WORKER_MANAGER_FACTORY, WorkerManagerFactory ).create() if not worker_manager: - return Result.faild(code="E000X", msg=f"can not find worker manager") + return Result.failed(code="E000X", msg=f"can not find worker manager") request.params = {} return Result.succ(await worker_manager.model_shutdown(request)) except Exception as e: - return Result.faild(code="E000X", msg=f"model stop failed {e}") + return Result.failed(code="E000X", msg=f"model stop failed {e}") @router.post("/v1/worker/model/start") @@ -106,7 +106,7 @@ async def model_start(request: WorkerStartupRequest): ComponentType.WORKER_MANAGER_FACTORY, WorkerManagerFactory ).create() if not worker_manager: - return Result.faild(code="E000X", msg=f"can not find worker manager") + return Result.failed(code="E000X", msg=f"can not find worker manager") return Result.succ(await worker_manager.model_startup(request)) except Exception as e: - return Result.faild(code="E000X", msg=f"model start failed {e}") + return Result.failed(code="E000X", msg=f"model start failed {e}") diff --git a/pilot/server/prompt/api.py b/pilot/server/prompt/api.py index 18189f6e1..901050bd8 100644 --- a/pilot/server/prompt/api.py +++ b/pilot/server/prompt/api.py @@ -12,13 +12,13 @@ @router.post("/prompt/add") def prompt_add(request: PromptManageRequest, user_token: UserRequest = Depends(get_user_from_headers)): - print(f"/space/add params: {request}") + print(f"/prompt/add params: {request}") request.user_id = user_token.user_id try: prompt_manage_service.create_prompt(request) return Result.succ([]) except Exception as e: - return Result.faild(code="E010X", msg=f"prompt add error {e}") + return Result.failed(code="E010X", msg=f"prompt add error {e}") @router.post("/prompt/list") @@ -28,7 +28,7 @@ def prompt_list(request: PromptManageRequest, user_token: UserRequest = Depends( request.user_id = user_token.user_id return Result.succ(prompt_manage_service.get_prompts(request)) except Exception as e: - return Result.faild(code="E010X", msg=f"prompt list error {e}") + return Result.failed(code="E010X", msg=f"prompt list error {e}") @router.post("/prompt/update") @@ -38,7 +38,7 @@ def prompt_update(request: PromptManageRequest, user_token: UserRequest = Depend try: return Result.succ(prompt_manage_service.update_prompt(request)) except Exception as e: - return Result.faild(code="E010X", msg=f"prompt update error {e}") + return Result.failed(code="E010X", msg=f"prompt update error {e}") @router.post("/prompt/delete") @@ -47,4 +47,4 @@ def prompt_delete(request: PromptManageRequest, user_token: UserRequest = Depend try: return Result.succ(prompt_manage_service.delete_prompt(request.prompt_name, user_token.user_id)) except Exception as e: - return Result.faild(code="E010X", msg=f"prompt delete error {e}") + return Result.failed(code="E010X", msg=f"prompt delete error {e}") diff --git a/pilot/server/prompt/prompt_manage_db.py b/pilot/server/prompt/prompt_manage_db.py index 28828e43a..5a1a531fe 100644 --- a/pilot/server/prompt/prompt_manage_db.py +++ b/pilot/server/prompt/prompt_manage_db.py @@ -3,7 +3,12 @@ from sqlalchemy import Column, Integer, Text, String, DateTime from pilot.base_modules.meta_data.base_dao import BaseDao -from pilot.base_modules.meta_data.meta_data import Base, engine, session +from pilot.base_modules.meta_data.meta_data import ( + Base, + engine, + session, + META_DATA_DATABASE, +) from pilot.configs.config import Config from pilot.server.prompt.request.request import PromptManageRequest @@ -35,7 +40,10 @@ def __repr__(self): class PromptManageDao(BaseDao): def __init__(self): super().__init__( - database="dbgpt", orm_base=Base, db_engine=engine, session=session + database=META_DATA_DATABASE, + orm_base=Base, + db_engine=engine, + session=session, ) def create_prompt(self, prompt: PromptManageRequest): diff --git a/pilot/server/static/404.html b/pilot/server/static/404.html index d4360fb5c..d252dd264 100644 --- a/pilot/server/static/404.html +++ b/pilot/server/static/404.html @@ -1 +1 @@ -404: This page could not be found

404

This page could not be found.

\ No newline at end of file +404: This page could not be found
diff --git a/pilot/server/static/404/index.html b/pilot/server/static/404/index.html index d4360fb5c..d252dd264 100644 --- a/pilot/server/static/404/index.html +++ b/pilot/server/static/404/index.html @@ -1 +1 @@ -404: This page could not be found

404

This page could not be found.

\ No newline at end of file +404: This page could not be found

404

This page could not be found.

diff --git a/pilot/server/static/LOGO.png b/pilot/server/static/LOGO.png index d08919a7fffc2ba44d0f2319365fa13173d26ac7..3983e4adee124fe44405644cfbdf23b33817bce7 100644 GIT binary patch literal 31388 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 literal 133365 zcmV)jK%u{hP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR94SfB#{1ONa40RR91pa1{>0Chr+?f?Kl07*naRCoc@z0H$tOOoAnzg|_B zTB6l0XcGtnWC8{-XU4zJ6ebKX%$OiEOfpO|)GbxLcfa`k)^d-%&&j;+qpMn7y>H$) z9`4JRyGO*{J93{qnQ#B~Uw?h`=FQiyZ{G64F)yf;)kkxLqOiVw`}HmV;IF)V z9Z%ft20s??8VkTuQYqwtY{QS?@M8zm5Cp2H* zwwuh1@j1c1etG-ly*yt&y?OWU>zj9PzkGS~C5gfF1%2}TOxQ1m`jUW6`I8Jn19|iH z9T833MwJH|B61YdbZLoRCt0&02li{^ZbtCHvg~ud;iV>{7QhgU(pL@{NKN25K%+= zj=ok%0w5Gq5{N3Y`0^EyIT$|k=)@D*u4@0uFH5==6w%fe*Hk7XOF)&7z;tzd!)J~S zF5!>iWoQ&U>mGcm55H-Kzj&(%zWU}P;>4e%Zj@tfexu(CCh3g;H2KFR%~SUno-#iA zCt-rF_H+?CVAsGEvxwo(APqQxlpjfLjwg!EY?vOqRoZ3*@IS(kt-jsUF3mIk04j8r zj&gFKRwND=+%A+W6;)H$O(@Bvcfwa2Dv55w#9HJd{gw7Ft~UuAXaXpndo_3>!CfbEB@vvN7^P%Ve960m{a_X&DE{@8iw`M?wlOMcUJiQC!P;j-BqFz)xKOZ~ygQ zl`}Opz$s6=u?=u?sjzqD&B@!bo3iGji@UL8FuS)|Hq5a*nB1y^cM%7-cmLKjm0|6k zj1<@_AVaFl-0Brnq%t-qVywdW?t`)?BLIL;8D^lL-J{80)Mv19NBcSZvuhh?Au_S+ zl8XOd%TG+dWYFSap3xvDC#}lW$3uKd(7=ckpO(@4%04k;VuBoTk2FokN@F=KB8k9| zePPKP5e!zbGZKjy-(h&?HmVG$?}FR7Fx&PE{$QYu64u?lDYzFWcfg%rMUZdauyO9Og3)&(9Hs2JRK18s68N*@`Gb{j=-pOIhnq-ue*#rG9rohTD?lMsMw4T3_5RPRqiB|NG z&Nbnq4rYU2bzJlt8vK*;k$8GmgxCREgvw}+aJb+U{%CCp548wN2EoV2?lb0CR~Y{7 z_O*o|KM8`@q0uJh6Yj?L2dMXUk!j&K`kRC_IJF2KH)08&vi=l+s z0_N%qJVOKGj^6}KDXW%O_|N{2he^11$Kb{*2d~|NC>as?B$JKo@GuWyNE|s2QaoP4f$4av2*x#l3?>3rUgs-d2;Uc+r-?jeefvJX z7bcW$H{UIt34(-_b^UHi%i1b4j@(qXep7V2n9j>e1yC$44 zdF(iBPo|%9JXGWooIFcwZWADRZWLj#AACkY#nM?{WpSoA357w*(jF_C$fF1z`SQDI zN+|yx2d1KKYkGRMB2@l=uIOmAy|6aij1L6MP%0C+<#XkI(h2?y!tlq6e2nrK{6Q1N z=qn$X-Fv-vIndv;-c!g`FSO_MPY9b^LX*NxQ$RC$S)Jqdjq^*#dqtIBQivPmFRS;A z_AcyG$WPSUh*#L@|D0rhx?ac_J&s>gZ*B%J*JlfnEGvHo@6?+(G!ONrYo4ziFKaAn zlFiFZ{<%J!`CTh69fw)gzocG#&GuXMYBr;XdWAn6hoM@!r{38JYDkzfGy^)TKi2xU z7(?cKH%jY*=(d&nbH?DOc^TBmSuhC^>78CciiP{s=}w^ABM}$*h@kcjsijj|n@!ZVkIz%I+Vfj}9|nr^+WmtL4a=A&dPQ*6PEt zrQUXXvFdjdI$j}l3NlAdDf&AMLmht{pJhoQxKAbI!m-I3;?{l2Wnc@K6!30VGB!tr z9v5FyM%hx<{>xq`5Kc1=kNI{;Zq;0M8F&qGf3@3TICg}4fLH4kb33kj6Aeql-XOm~ z{JHh+X#4@{O~z+JEvIX3%Xyjo8Q0AJW4*5o=u3i2bK)BItZ_o`0&~gVx^|w%H-Kv# z9=qR4NBx%hw^;9s@TV^8_?h)u^W)JGIOA}HOxb+^j$0FXN{8;N$G7Q!aR4KxOacvU z@;l@3%KW~X)A7Fxzc`)O9jD+KP2kY4Li)7lJ>4DCESS!$Sd?Ub71G(V00`+cpS!H|e@L>>x<#_GY%>lx> z=-zlEi;*}FPU6M=I)&smr$fwrW+REt+y&WVwGua51|wGKm4UQx!o`oEk=>r#mBlwc zbO=~&n|gly4w#H=R{X&^j%;!GyZ&=n~wnCVu#0*Jbqp< z8$O<0=?EgViA3|>r&;c8R6BIdj+QS?`SLj#UyDIvXOy5843Bl?QJM7M!Xrs~<&5{O zNzenx)X;?qy3v>=v0Q88`8#&Sr~_oeg|GCKf3 zNZF%tDx2_Fk6@_9OkV9;?_^d14g`#2U$4vk1U*9HF3?WFM`IdEw#+85m>R$fp7EHv z^a`}@BEqAK{=QZ@fEJE2UX!rnn0yuwxHNa+&KKUHFIhED?HLgCKUQxOSd1i@(M>1G zBq6IX*PXs18ugyv<_|dV85VMoCSEq{elJtNz{kF*0}n}Y2O6(e>Ro3uhc@GH8eKnF zmj`9B>QM64GS^Xa5s7tmby%9GdP^TKn{_vhkhC?ibesR6HlMNHq04jC+cWTrkP@K1 z*9#$z%VWLap`ChzPa@+!32(TQKO{r*YQ3$cL}>vRzrm+F2^86S6HC|~x(SG1{ey4H zB)zFOg#ajK=(mf~dUL!KR41Ix#wF-@oO-d_939 zAD7mfCR-D+weatU|#(MhMS&hl7m_y0{jq3 zsFJu0PeNfjaA@-&=t5JVBX;`|v0uU4Bq;iWELmzaJ-ckw$fscIj&cP{rn(G5@fn*8 zMQg;$kg|1#!hNP=s zF+;TPUmBq? z$2|r#Ro?U2bP_B4Y8*~Abuf)6kE30zy!0zpHBlazf>2vTUvGGQr>ev~zt!{Lw8TvDlyg@xq6bPSgvD(hpQIE+x3ki}yic)`JAtx{Ny8+&jM}&KIIMTgq^b2j3bywFIHv#3HHhxxg4&?IR zHC38Mv`4TT=MzW;nkWx%BOYG|${1lw+5$Q(0m&bMwoC|@rm6(0viyW@SAqX~EPSb& zA=VS?IIbq?Scr-aY}o9E?gUbSW*h>l=2jgH;%^!`ezM+>;drW>d?tmB<)?;W-ysvd z-SJGf%88neNhB+7bh&ePBj9as8Q4@b)d=Iz@z@qX@Fv$}30MB$WiEeO-1s-c_vP#R zd^*(!eE6gH{vAAG7%9w0U+g;A*k#k3Tf7eiyHDbW2=OJ#KD;xw+q)!TAZRN`PnT$H zYfiFQK@b8Zre?2S9Eodcn=``wm_p)Zpb7`^2p;tfbFmpuyRnk3Nr$i)E8xm0T8+F%)=`wX=0p{-y1Ni(Au{aJ#pmG>NG) zW=;2saJhHOb@#8lwHP57onm_OJ|hYc`@$8LN%@x^5A|+H6FBL&%=E8%PwkC&5^5?Z zp(6lW`4m{!)7{_$T(~G?4gfvwrq%t7*97>ndbg-+s2eHmr6knPNoccdT_?ZOt?<+q z_G9$N|0QEJ2N2=8-e6{ae^I@#onuQwaiSgLljd|QJhk<@@u_&|9)ApX=NH{pI`syL z+~caZ9J$VoZC{?}cYU?r5^4(Tv|0 zHp*-5Dd!lE<|*IlZgu9k2=lz<|J0q~ZD|dIe8U$YS?gWQL%rwLxUiy5d#69j3cfRH z#6&gGicLCnqz`5ew@fI!>u0wV=3{NuK!(j*wRq5w_>3+1C3F3xGSuTy1PqnWFoeGk`H+Jv?OP=E)?R@M9Zt_#eKCzqd)EJTO~dG&D#p#6V<{5|DkK zr+JcxKSmuLBj5JbQS&t6jEp-bTI<3*d%$!J=2JS~bk|0f1a*cOa$lSY6i!l}DOL=d zKtX;UNMDp$ZF-o8+#(`tAH9~~Rg5euN(^!q9Y7!lkE@X29k}2FAD=@>Kb7lRJkk?B zdQ)fx#go6wIp@m+!*S>p3}Kg74{4jcswywIqY-OeQf95VK7iAy$*|`*@)6clcY4K} z^rX`SgF7I4iH>6H-Q42#Kz}+2I!Gl`<(Y81Dz~fg)T>8lV3Ua{@R)4I^iXf~uQtZY z@lbD~Ukn8`|JHjO^JZw&=6o2JS(6~YG_G8}DroJd_UC#r?Pv@`!C}Iw$FRMOj`^l^ zLIeG=dLJ0G5>ju~S!$WJk7DyKE_iMXbwQ&f$%%TUesCieq|qsQROHLA5$8J};~ z%aEQJ>vu8#NWJ%1w?H$VH>>o`A<9N;b!}C5#&^sDRC&Nt{~4cK!~u=Z#%ku9|G-o1 zWO!$YZ}qm#c6~86jT7M{qp9G_7VyoXVk@=Xel_+ExG8m=)_lVo0c5{!;VKUE<}6cW z!j-;Puq)OwPd>oc*ElDo7lCTpOf^4YCtUQC6`(z%wZ3p@w(4&=3^mH)?;!;y$>R5V zVzH-Q{r8A(X-;Xw5Xe#1;r3w>6k+V}fs;ztw6St)wmMTWgtzKG!|~>qPY39xUv7rl z1+^Oo@OhW^!pAN?o<7g3d-`rC*y8w;Wd7C>w;60ax}6|?KOKU{>>hYPn9_Yq@$1{q z>~8S*;_nV*oA#Nva_I&`p}xyWHSE~fe6Tml-sSWDP~9hfz>sHGc{>#WRx`;qOSVL5 zw>v6ys;7DZj@0aYYIGQzp6*9p!Q@o?HAkdzL0>~c1K@Q<;g?r)pdTTxiJNsP61^ki zR=Dq&7qg`&ZGMlSkn6yT7t{BF$BGTjBgPC7iDm0Z6xRUU@A>}19{_~P0nZlM=X-pr z#E%zKa&qT^A31!$8CQIXMsi&OIPx!}NW2*&#x!XN-<5(Q3030|%AZj~+8VWX;hhDh z;{?0#UC+9wmXZ=QgsCI|7=N#Nm;NekHNKvrj&QS{ zERIm4-5;-a9ftMPyZQ-ox(FPgInMcVCVDkLF~21V2hHzUuMA6dPjf1YwR*!Y;+ypz z=>gvdJB{epxZcJQVOCEfHb#w7vi#_q2^cbNCd}>uF!}hiZo1F&v+0tYy0N-f1y+|lNK--D z*=d*5hdE@vye69zVMt-0$xw~0c z&(Jx|-LP4@V;C*36ygHo#Um@iWU^9j>(iCum-x)4c)AeKtxyixJOB(HRM)4lDM&p%kyh0HzK$Gax=w7L!$>AG|J!DflL&MHZ_8{?YaGVd`K6|(gfNf8W4-vEdKWUT!PAt#SsfbqwFh%d z6>N{bLf0GW?N*TFAY-M=7y1WNU`5tyggS1$W_hDhUcjW2ZgpT=lwD#iw#b^0?ZO}7 zx!&pzv>+Yw)p~EaHCqE6WU;|K*Be-ov{;)-UY0>F71wd=9ua{ru;JKRZmzW+62jH@ zoAuUQ2jqU8daK`QHAeuAU2N+`x0qqtv3jl-b0aRvVXNb~Z)ej9f1@Y9Y2=u6PPcKp z-T+i@-Vq~==kX7PlTu7+QRY0l>W!7I6}_w%cw&W2iu4-eq0P-RYjlRJ3*xk)#)BA8 za^veOdkFW1bPYat%-$;d6i~g{1(5rt&tuT~FYncQQSu5tJFXO*B9x-*)H*7=O3==UE9CAnB zWSSeif@xErGUgn}j7O~~*y{NZwASq78AG}N7%>=pBlv^V+2)}C%JWno%JS(CCQ*pf z#0HGbXWn!+71l!>vR_p6UxGw*8>(Y7vP>(n%L2=`I|G;QwM&L%$LMB?oi*4r; zTm`NX6Amo=MnGX(TJxX0q`}akkO37#4>i# zV;%Ux1K$y9{&zrACcqKQyNHBs^Fks1@Ek#&WakhBaA*|;bi&H(Rqp|4sXZ^-ZKrvSAulgSU;^C#he(8|V^}|8%h?z&%iBzZI!}syDG~Z5jY3 zNb9Y(s%;0~GVk>!eiXWGI!hR;BsfDffQ?vs9bbAL+s~{w;ahJBt!qh+fa%hItKQ}V zG!@MVr%OXQuhhGNsQjs3{Wg=6hC*?70c5&lI77L#;4gS2Ey-UnVgSQ`>WceSZ~28k z9~;N8J&pjq4AIg~8pphenM|@4aj$pNyLd}+!Z5$crC!?SdP8oA4R^2Cxa$bh$#x>% zUf%Lykq*ac8yf0r$c1dUjY+7IKAl^OI{ORnr{1k|!;g?o?z7&Exl!6SX^Hx7UGQ!T za;Q#GZGDnQbT?1pi{YgsmaUunk$3O?{D*H4v-wM^K5a@Y8Xf`>bha-%15SMG6}Vdx%KjtYl=!N0A^?|NiJ=@*4+}nL9HCv>6w-W&U!TOmf&h6N!0DEE#jql^(2qtggyk+|^i`nJ0nbMBdk1 z*AMWlH;7pe_w|-Z2s1fk3>?+qXFVs)$qD^!eIldJEQH^l%fnI1VRn!CU;*!UBfQet zVujah1K6!K!#7@2pSsMr?XYbNm77U8+~+H}zg+ zzDUS)9+lOYRcM>Z|33-fg=J!`<#yZXDJcJ(s|S3*BsZ)29Ev5uyK zVO!U|9f#x@`HHE-#{E{k2N0}*p6dOn>;DkPD;zetcb98<9kt{=pyBn##Zu5{@ILJE zj+?G`JMn9~L4m-ng?qn}D!H3&?!pnShg?`Cx#1t+K>1`FB05 z%6cZBMxmelLn9&G(^jNAg~TfVO>;0ADoql09z$Bd(P+PXg5Tz@&d6z~a#~aMXg=7` z!$x~F$00KzSYNALS)WTYhGUH&TWD?X{ADZGEk)r`77WMHAlDS)hvu%I{1@B^0IEOL zp>K$znf!NT49EYi*G|9gnr3m+$adWGHPD>t?f4CaDglBTIQ%9DSUR|^qr zX?2Mg)}v9CVDn$pMN)uoJrnmVk#%{2wTs?8zrGA}m0bhNg*m-S-1DW3x9jWw9gj-uKDMzo`~ z`r@DJjj0U!F7hH$TGE>^{HMA)2KdAl{~AmLYkh6`pA3&Y!uaGR16uuay|HUr&ayQC zU`?&J5}gR0qwP)ALUZhgMKW+L2Co^$NXXv9i0WP2yL&c&K5}svz)`CkrBv7-KFcP{ zRO?8By}6be<-rT+NX>BB^A2toc#i~8M9a?49hmoE0d5)i1ab0#%0CBUlKvPR39`5I z(UTiB82xQBP1JWkf%z6>zTB;D*EoK1mbaGK%@&D<4@|Uc?kNEm_e>mJaNS!-BpXLW z^JzCa8#EkG%IJQNCL{Sw+YC-7O(iWubinMQ{N*y~H!I%kMc|9sr}e`kykw?8eb^HW zC0@V!;D8{}1&Pc3`(+~r1;R8g;GWIi4UJN2`ZFzprdgI=prJn>g>HTzpZ*tb@zl$S}PQFAC1vG z4bRj3-mKU7H&FbSesQ;ge_6e-<(TuOX}mhW&3p0piX_;CiaK2^qgmnJO=PhLCVddg zck9;k_{U55F5o(zu0p*VAb6BL9_l6i+xX+A;|Vto;TrE3^&b5#pF`026M3^e)?Zd{ zuZM?muLHz?t~UXGR=uZu%WgWidLG55eb*T``AkKpyA?iIP1Mmd)B@~OpV#SDKKUd! zOjo$4`3>7ItCt+^e{1+k=;RU7-qF4Bd7wJS?GBoXsLWe^ay|H#8PAixx^_BmsY?DR zy+`^uEo^S!2x@fi?|#%YDe#fuY$oksbQ{s10?dYwKEG_59P%NC0QfyJYz_0?F`K)R z5U3kDHi(J9w$k+dN)(xsmdPb2Y$)vpM&^cQyHl@fF}DCyA7(64hL%?jBmO}T(wHO6 zHVqNI)+ArpU|C^j$p$~xOe4k9wUjJGT=dGmidXb}0brX`SOD`&0huj6Cd{L-y5w=K zMBS6Im1K4>I+h?E41m!fk#;QdHmEOZ!6YDlu7@$Iw$ywNQ4!bI*Qb#Z9sIZt&Fgr_ z@P;?kcn(psYUd=}^{-OjjN4?~VAwOJ)0;#x7?Xc}tiKT_K!)JJs|-nzf&X4j6FwBD z+ro_!$(Swe7;;`*^&Wk>?v++XfATNwsVgpr;090d^s)Xyj#FUSPIsa=%$C;0FsGU+OD|#~X1b5Q%9r$q@>w_zYd95E@vUz4v^`qdFRpj1Se6-|r+Ts8 zhv#{I9W=er$ddVS{X^F>ka4=~3OiMSr@; z2RZ9t{GJB%m2T@eTvxpb@KEpJ+|q6e#jD;cnZ|`KokXgB*{%NM@DuemE6^O}IxU*RQmddH@HM?& zZ*C@mPgD3^bL5vMZ}In006{8f_#%GWYUne_n8_pg(z4TH-0dgZYIL$5!QyE$Q?;V= z?w$FHEjLVj&_pSJ9^VWeegn|R2PSUg^ksaOu-0x&GG+dbOY5K%eaE!xXqGsK0Ep3gPue1Iurh&r+e{+(N<9k5hmcOL!AV&9_*4ldXzyp`FiBZpLlm&pu|{@4Dz6K zy}9%}L|*xfCfMKs7^!&(7jGNw*a%<*agrtf8Pwp%JNb*_kR)xo;Z%(dlWe6M7Q4cu zH-IU`JxZODKn2?C2>;dnhE)Dzyt*c2xbho%Ga;c-2GOjBA<17gHr2MKu476~lg!l| z=7bw~mG^oR19%S|fA*1TMC0WE?qRobUg-Ljpa>kct+&XyPh?)s7w$pY>NZ__F-d>w ztu9EKx)SJc$Pj|l-UV&v2#Gxdcr@)(qqJ+P^{ES>m^#{?dXvzF$8^4$>xN6u6}=BOL+y0zXG6^Ev6Ew}EtZm}08BY+i6mB?r4 zHlcbiVe(g1{xxnos`+Y-qIMaNGF_cs)*HeHXZ?ojGw=lFb{Oi zi0RH;HoNQB135j$;Hj?zn|G7l<*SNUw_eGGzz^%ki3sx2C%NR3!oP_plKd?u!4MBy zSX^(Yipel2H~)-a(y2z@=k*+9tI#i;GVtG{FW4(;QEGrHZKDysLY$wwRhAVmg-3jJ zS5yAeKV5y(*>voAETVe4@>d`GbZ;69tXC<F)&eD7nP|Q~3ntpM;L!XyhX-(w0-YtLX?eYjz zBpf8f#VuF1(R57E2TWVv4r5)El|r;aOFQ~@pW1SkFwO_w-YZ27{fV_eqh}18Sk;z* z!{&@Yx5_JM7^^=3eR3TAD)x2DJQ=sNr|v8D?l?8!Lo>X?vQb{FH~D+q>)kNE25_o- zrQW!ox{grRr|!h!rR$S?a_j7!0&pz04ei+Oq@m$xS1CzeT~!OMoURE}Uu8llhE9%K zfYXgpRP%q1vibuMnxpvbee<>aCl_#rrrilT5l2{uqhE)*r47p~^$xYkR8$I)-4#@( zd&az)wx_NmJn0Yk?Z5u3a?TLj*}zuek9PH~&u+occt75|=BY&G^<#gol5DwTOUm(S z2ZeY0#Zv$~Ek=@?V}&d>GY8KB8CN8(OMbYOP8#B|1?1P1bk5l;u$lOD-qj@rKQ$QR zl$U_WyrG=uQYJ)~go%$7Fv#61nJ!A4`O403tB^$HGzx#WN7v}d zfv)Mbv?EkW%}i`eG~zZCmN3CpH~$J_9VPoZaC7~4G)9TU5w=T6s#+ec@<;g~pgN@;>upY-=hraL z$HUJEVr+TI(e=@v4m?T9D2V(Lyz&;6S8wnE7)ew(r~D*`+_XcnMFdHcn5i5*{)%^vd#N2ES?j!`4ffQ~QtC+w;z>b-CAD z-LxI&2i4WFUV69_E8pI91eyZpDWlO5b~d^8O(zVIbDnzX;}9RnT&v?=4OW0SVxO#qorDfP&QXV_z6VBk z(n%#(YMHNBt25A9Z#xv_k^G`q84bs)1GG_UeX2;ZOi=tIhf=aQs^1jv^)lmJ`#3r# zHBGl^Xq@9v3CoJbfJm3gXPt0)uZH%iI1MkWd#MpO&Q^rHu^yrW`N?|2B!MhbV7o0= z?c?#3bNob9uh(4vRZTu;e%C5~9Kv3fZ)pN)fM#X3=Pr!bEq|H91~RBvlb+HZhoOqe zGoAg^Fr5$xO}Yi;-bMCV6zLeLe2qMdWdV;})3#2jgTTiM;K(lsoRzpkmkh#RH;}@r z$t%x|;xDpK0g?PebLnO$XO_h3o5EPI<)_Z@wVZVEGcItFSJCs&ikbe&mwj1pjk zWd9Q2+!ZNcR+o;!M=-)_40pP+3)E@`8U%C|oON-!p$DGPNhQNy@3e4*({{Np;Y#Yp z;h?5_GDGMgTlo%Pg#vz2JAuMz#09@ojuUZT ztT#{ZI=OY1FldxLxD>eO3%M?<$NJC>K&ssJ>uWdBz2xpu27S@|Ez~=4l8^EV&6bv< ziCvjAjU;)834J=ilrTK^1-Efd!0|lrj=||Z5x3j)9PsoTZE{9)r|3-WmFPqj9Hpf>huyOND^ zy2~2sSDM`JnXrU+(IiW`0`^(Xq~^Vr?OTr2p@muP)(ntAiLC}xZgK<1u~4zSeG)Nv z^D}lBy`N7iQMMvEIf4fbGkTbj@W{Tc=?lD4ZdLgDIz!<3;CFzea)Dl>As{)-o?+Kd6z zL0yVU+&1M$7T=>oom?c_q&EMgh_d;Ga!@#i!63(87~K`*+(0Y&y7tKF98F#DD|5pg z!W0_!9iZl+SD+ISI=VfO%O2$bS~!4s4S&W(dGUZta~E#*D?+6ca}4`(<-dc|2-uqs zjtIb#&NYDaQEoa(CNcC1RN*AlaHor~`B#u9?hRC4mHzjDE%uubeeH`n@PO-}vrw41 zzWXPd;#kd!d2N|_(?ky~sZ_X}B=x2bK0hU*ejfosd-fl71m@42 zwAM}TP$hS*6$m=WyevG{J9G`j>yv~p-)5MWSgnOt{PIjULuWbBE94lVfi~PVxI15X z;h{Z_H~I@(V~Ll(a7U)YZp@57ZRcVTb&g3rBe@jTl1H|EKgWbSn|U%wZmq0SR)u%n_@x}`&frs{VoO*)ArRlD!A*wOVGQ4}%SB}nd}5E@Z0@CL~BMYG-9aFa`tC6LIro+1uVuSb4} z6+H<25Lk@v5tDF!<6!oL{y7cPY*trpQR3Px!ZF3}99Uw$s<-n;c{pmDo3E+mWIm=; zs?m|m*WD!y3}xWtM9bxp@ zK_(=@U2ob`B@J7*EAyYY;2I`DKg7IPQM zrZIskq%F27jC=HGs+{!7zb?iKzwQ|#VR5MGUWgb>I^-)ZYNEXJ3y3vLDdcE&t%{Fw z0?{kxE=(?Adu$4B(1&`%4|ej&z;5u2ZTRn+hkEN6v$RbT;c`eGJ6}S!5HJHT7+_#k zPCiQ+W2lz99l#^x{AGRJYrMdZkMxQ%Zh~HgVO?AwwgU0r=+J^kFMG>V8qDE)BObRELsZm}6-Qcs`zCEK`Ac{?N-Y+Zt3>a`=5Z1{42o!jcx?j1CTrQi<+ zCU$`CP8DrFf3_C)2K*7>;K3r~n|87rfcO-#1&%d3kI>mT)za>&p;9bgYrPTDAW<$5$##LVP_V-2*r0G&tg zH~oGhR`+<>V*{T@5pTbKU>^7pO?~(V0MQ|~iwm88=$K&47w;c`_G2YzeX_ttik2C6 zOO-sabq_L(89m z%~{5JW<7e!=P=bC&F`_Mt^r-PqUNAiBI-IPZ!~Y-@Top7o?gwl#SjUkXN0fkxPl(l z3L9tpyl!HnI^76Q^IP}ck527`qXd4fJ?*fawO!JusJHHkb`pBhoNk4u_NVAKpW^P$ zXdb)wa%!4sWpqgxI7QW|%Q&2H2KSQjFraqI4^ z{Oo$0&217p0vl~dyRdCLNZWgO{h&Y5+r}iCv!Y9fNI6Ag$?cDAm&$PJHbv*o>MEN> zfP>pG)pDQri)XAzH1}h!0C|_TbaKr@6p5rW7xxjL{qaDlOgMiTf@g~U!s6ruhPy8q z!}E*lz~@~`@vyYdFEZI}A0%GpzP|YcHOhWiHP7a6^{Udzu^4Z}`u-{|6n@e(bftUi8HW_5o1}_Suon)E#=qT*GXssMr8E6{=(~(U&-Ai?Bs^(}cIu=MiA)ibJa&glotv6GZUf8xqH7g6>qDonUpIe49%w2cW{|5KU}nUT2eni>b*?vIlaG7J#&R6|G^>hd*(`v>3Oho84^5Ld+^UaIMY{#qZok(@;src-W(|3Wcg%Ino238izkKsQ{FiV3>`$Ty-m%ItLTF=7{m`ODxmIXG)4%U&?6wns|q^*0f4tuHomegE zUT>MpNqg!I`HaLZ|L1yf$&nc#zjOfMat%KHsaw|doofhuuKPE9a!+(C3*g5V&s58GjCh#=VKS5c#+E8H2Lx5iElS?;V0EF zc@@YnI{txgL)mIjLB3V>yX4M9GBABNB6Hm_rz8vp5|~`*O#>wIGzv*rfkV!FzuG^x zwg7EFlE3TH;qh=-`6BJzXy7cO#oGm^njpb-E7 zKmbWZK~yk0X#DyZz*_t(!@eKy$ooA-p8&dkI>LRczLz9JnGkz0tn3c$nV?V&0aVxl zw}&~NS#MHY^Kqm*K2h{o<-__kh_-o6*mgDv*IzUy6tQ92HQ!iEkFt1l2k$^#2L*66 zBJy~ruo$ec0cFU%6pxF=H#?!v-RQ2SDI{9Ju}ofz(i()U(BXT5o*N8h~#fSwXY?BD>)#g;$*&JP{+`*w@*ihCWsyj;rWPrrAQ1s?S( z@@lXQP&osV{80!f&A|si1SdLYBKbRX8HX7|I%tBl?a_f|0DI9#p-?*3TIncGl79)Vdn1Uq1Sm?(e? zN~n*J-qmy~o)e%$*0l0-OM3TSEu8~qcr+Fyq4#H2k9ABOvg-311pwB`GaAtI%m%Da zNe0foYViCFUrF85xz$sT%yq%XDv57!BkIrNqUK`+?AZ%`=I8#nqS4LC%x*-h&xjla zEg(u*QrvF-5w6e)-u#%`TOzWXjq%s`kE^> zRi6Wm!=xn*~j zWae#R_l8V?PXlx{nulFh3wkYOgj#bjYr0aSPK1x&x%j?3P z1y_&!;zd2;wTAye2%hS|PIj;_Yy+L;WMUH}@Ev*88;#dwkqn|V#sV(b;=zGGdfiOn z`7pa^p9I6jp?Y~1HY{;8T1*Gfu5FJMM3n&{%9bO4s?eB;)~_?Jp*@B6%GWkP0X-JJ z{f&6_q4|+|&EOjUtKRybdefbH$%C(Z;LS{R^a@diKKzYxc#ImF23CrCoBklCMg7YODWOwLorr@O;M zB=lTH-o5$2btb>n)j^Xw5hMO|!xe)!7x;dX52KiI>ycqt$j}1Pt@W60_y<7nkji;R zHYGPf!RM&FEw8fP=4&*!_%G8bS<}&XBz=~6;yFaMz7#TUI@|(ucFgE3Z0wsJ%IdEt zAdQy+o4aAkIWZ4U0|EE$nmh;dxR7E@MWhG1>4md->V>J!$T_$>dr!&jMi|EnN4<_7 zYYx+^0Ba=up6Z3H_~?bF>oQuNYQpr;$QH#*LH&-yWxb@Wk)Wk$dI1>sbQ^Fr6F%K* z0O{s?hNB>dvN!eA=vl$-j^XmO?iR57KZhSBH~0W^ z+H({4EOP#H>y97q3Ffy1!@?HMU*N*VFl$sk-#S#$&7S4V2TgJ==R+P~TNOJ8=-mPW zbA-OW=flY1^kEVFpZcTv{H-}B*grW3H2Iok)+HLQN96fKo?3CK!o(5e%7SE&B=rR{ z*R{&eEiSjiz&Ug`hxY#X+9pQZQP>3OWy0;Zgtow#gEJ(~c7}+-7qB~K??aVKn1^|N zYZzV@6hAZY^<$pkI{R4vc7j7% zh43roa$!6Y&_L^A&wA6m_*kNF$(sZ1ogZ($pfOO+7uT~?o;c#I+Io?Z5>0;3m&Lmh zV@Q7WHVIfi_H-@s!V+~*H0;l+bJuA&HD2(E2kdLc|{E&%ol{&aA1%kLTe?DuoG!1C}=l|nhz5CpYLNHuW{_@Yh{`GHp>zPXWiRGJf`DyurD49$PDtfM3 z7RY(HOXj^#3T!!<#LiuA(@CoMhyz38MlY#!%|MX@0EaD_I5xK}R8t^<#YKGC z+C5Zs%}njSzWMn14S$C8x^a}N=6id*5Sm6xaz^3skv})gE2lxe z2jx2tRwgZM=pmI{$|Q(PWt@k`jhvH#^H6)0^BSuWE?*(R=$zx;ZHT*OQGds;O*sQF zsCuzY`zaUw@A8S94&-E$=QLQBak5g7>#y!iizPF6bHLPX%(ZL6{TZF7-hoF zXcr?Cgd|$SIxV`R(O#I)heQ5V9HGi-7t!bh%2ergG!i6}6A>pgwoS0oYBX%HBg)oF z(@Jp1EW;rc9_19D)|<3V zA;LZNR_Ef`qf3T7;WX_YI%j~R?@;TT{X${WrqKGKxkh7|8WFafmZK%8F21Xi(|^C; zL&ta5V}dy=*_dJO8ur;?_BZIiV+V<~!;+laGq)&>j_Mrgb4vc@Km7bZ{!>0x_L)n; zZ-4mofB)NGaiVGb`sF|WvroVI@aa$g^xa?lgSY?YKfL|-KlnY^Z1q48m5_%N4F}2! z>5-@J4x6_FqUGd6C%(Ko=Cl?d!ywZuyp-s}Se>)ye~#4)h)gdC9%(*2`9dGqnh zo4@)YjDbM?z-1ydfnUS(;m!A-1rxVZ!?oyFZ{Gmq zZ8KxHKm-Qqv+slP#U`6nTOhY@@5tXZah2Q?fB2mn`d|Ipo9X9IvkY1ZfIt29n}7Nb zo!skatQ}JHD2j*o8mo8OFir@J2ot)f1>;F!tObTsZ^RsA==3qqS5;6u)v! z3u*5fnFi$tw{~G|0p9m=s%zkvU3fp+ry8#7-u=9FdV6D$a!bt>L5XFltVu66Y`OWl z>hh}uoyXwaBl>Veet!NBWPS=z{_MJf&nL%1=K1M44=(vM^r!PtV)*$DGW^0AULZD} zg>iefn7-l5r-O4PiX|7gJqgVlw_F*(a8Q_IrJ9bJY;1tzYecmw9F|leMSqBDxcS0>&;1*Gh3@{ zu$U01*=?oscE>Z_;N5;1UJ|;lnmhwWgFf;sU5SXgcyk2fs?2)pdRER#PK(*4n=_Qf zC7v9pNRsgPd|~BVP*52_fZz=(5UX^EwhX{STbun54RB6xTpghOD z8~Cw=kiw!c@A%Sd+|w;W$`}sPC~>cFS&tHzvIhyE35&diV@!qpc)far>^2(F)wSYa zLLa%&*GQfu&>Rf7`BXUF<}67PJ4gVS+8xSvoBkDb93SdE>jrRme!N~{6-7Mb_5zih zCv;!@_S$2T2kbXay9Sb8fnrQOrl`iHX2ONYhV!>S(ud6TFwuLF6dPFAvwVbbJ2Mt! z;7u4A02W#{96b9$%9++AMCIH0xqxsPF-p#qhW+htKYjW5@gMy9-CzBOj~_pN{b&El zhkyK=@BhEwe#cu4|L9krKYjZAyWf4}$5D732;-Gu;|S=Sz^b9Hm1C|E-Hy)DfneXO}2BLhk@lz&~a;7sT>O z_~&_+;Yd|mhd1oN>>F`358Y;>(aT|2Gc3hd+kqkn#vJ{X%?TxC^^p>*v)R0vyZ`Io zzWE(b^+>X5G@p$a=PA+(xT~USEfH|S@rUmp_JRg0W~(bVj;e2gT8>O0AFX6KMa8Aa zYEI!zZ@NakQmct}LZ^SCA7yEc736f2&pFp{^&F8t|IY%es$AMUTHWxUe1dGA1sLe} ztk)-k4QbdJac+B_18P)x*E`pp*_3e~#p3V#2(GtM;5tyK+FT3ha5L_&NqhG$KQ$1Br>7KDS(q<4OK1HWS)Z-ONY zI!@l~9py!lZxK++X|}zvX_FDotOvcaKIy8(7^`_JUwDu%K0<=eN6U-vRHjNHvNXBi zC&hd`S!dJK@2qF!MmCdd7BhOuR^Xmr$tR1~QS!(LB9c_HR96dKlosB8T9HCDC69Cv zi%IV;qj>6$LtZ4wVU#8?eZwTewC02+`Bdd8cRK{fVcMFO;-p<3yHE9Yey!<6y{Lk> zUZiyIMMcqgwol#5P?Geg-lr0>q)oXLTW>2JT3+JiP$XFOV{N@pRg@MsK*8DkXuUnH zhHR+sbtsQ|$0X}{FwO0ntb#MeP5xd&qtNoje@+~p0C6@U_mQ4g!c7~DCp%rf0K|D< z3GUEIBm-3T(*5w^&F7Dt2Dygk{PJY?925+Xs9ckkR^Yq%fB*dtpFaJXJs)rBeEj&s zufBW#PyX~X-~a#a?Qrz~; zjbZbDnqMn9N5*{4N|fz(ez#j}f+UCaUHVa$)g)_BN~m-@bj4_hwFqL;6A+}=tXj(x zF!SSR09lG5OuvJJWsM@|=yaqLmpFKV-4qa52OJ>HBl4|5seY+>ElS~rSI&y!LFRX} zF*#20sb@#HzR}q5pQ8YTW1JU;352tTQc_X&;%T+LLI$9Cujz4jR2jTJ7Yq?z%$0AovsAdI zyY$_`u@l6Ek~b!L1Hjw_GBV+9p_9PV z1>JJ5>6k)N&M8VESxJ01<#K}(z;!ggtN*&B*KKuQ-DoYq|DBp36U78lewRnRR7F2F zXN@O~kM!)Kk6czIkjMgHEhqo4HxH-p#+5CVB95AL?DOObu`= zu*$<+lBsv+%kep`*_uqZFH+3WwCOY@UQDLr-JqCIMr&hW(K@a?zO}@Jg)@`$f&)SK zeD${ja$)Q$&-Ys1EG&Q78sa2Im+JKPDqW)&hY#<*e$F>_d}1$G^^Ac}lD>G7g1yZn zG9XUm?>>C_Z~yYcM{W$s7R_&Yd-$tAgZ|OhPosI|dH?1&@4tNh__YrNA?v_QE-jy2 z9DV<3jgn^pEq0$Ya7y@Pxi`jIMy@bJCvl zme$Y>o~rFNx2~(xMR*w?Ts9#|v-A5{pq$CSm9{Nm-K{ri7^m~QT{P$L!y+6ad@)$Q z5=}jKM<3YahU#g?kp+}Dg*l77gT{9*2I9eRa`OC!omme*FT$Dc_AGeB#mmR{aQx61 zKWLUrAoQloTgiMJB>Yt3K7f_6(EyOCbeLkT=*LIs%j2K2z>Ax({7F(I99e38w$GWM zvMk=hTZ<C?5u{6ZdXL>If6{b^{l}Ac5KcrC{X)}qq6rlP z#rR~Y*m1rtfOm)w0-W$3T!8#JLccdhF9Vl#8S~u$7-kj<=Ryqt7he29xfYy#_k#H; z0wDnKqh*iP^~o)y(RgLKrrWl;4gRcW04>T8;fJrPWOm^t?1_*7;M*lHI2zQsn+Lt?jolLIYu_c|5 zM4ymJvasee4yw$@mn(q`k0y`C6A^K{!lBw$a{z#*z~gf2J(viIs&tQB%e^&9CoEdy z@e9%mK-->!jQjSbP+PqqC2>V@-;rJh9UazKAu-HsKA-s-_ z7-l0S)P`%n>4*$Kr>J_7jW-~HvAfA*h#`2M%~={fHOp!CX@muU#U zu*LlRo?_++z(T0$ntC~47HS^=hPB3a32Jxgzqx$|Xxx-g_loW;{EfAB0q-)w*)*5BX9mm*TZ}iHMI3Y>5Y{#ZG z&`gx-jEc$%$J4kccKq?P+yr#uIpwjKp5UD~{ zHZ{CX&Pcm{CVH|kmLQv44%5pC%axOZm0znp7;<-a7ntw&&=`mG68+4nmwNKYhFdPJ zytZzuz^mk*jDC;p&j@pGEo@#N*gk&w&3E7b$*(?q;%UH_uRna@Y9p?J!k|xvr-I=)Kgms!5F2A1 zIt8OSo>HnC*owa1=Qnm~qil`%jd06GOh|fuZDv9nXUxUyQlU2km$a>)_^GXhT;(hh zYpy>73*RPG%)}duz0F&;_JW~%9qaX=jJYngcU2#+3mj1SSalyiU2hNrwjy3)o|rG| z-NHLw@&($_pyf-BI4bQ?{q%52COha0n&8vbW#_9=^vke=C;@|qk_}=3 z-3u0jMzid$VU+2POgT`xo`uxgoXo~o*Dx(cf*`m2DDQBci#hzBL`(RDhc{tUJd{~5 zqf6k%S&%Us7>wn_PuY}Xjk38FS^1&GEyn>Ien^h80_5e_1M6rvk0?zef|#!P!VZ3| zs_zW1){C;JAZ<2>2Kq(y0zStipFumr)pX1&($rh+$$t_G(+>M7#1PAJLNw^AE#c0u zHAAg(>vcO4CeMKNL}&>rcA~4avV{#MclslD+zMk+st-f1=*FshFOo2EiRN+#j4uQZ z<)&oMD`YuwloppH0Bj!lSD&k{B_w&-^yAm{c?saVKrbWwKrz>Beh(PmDDtfu7Y_fV z6&C>BJ^ucm|M{2y`Y+!7^MAr;X}vf2X~5=cOix3@PRlFjm-Zii`1phWfA{wD@A#xF z-^rFL>5~Os#hf;PLJ;DHXFyUeACa z&(CBEP1HG;1bNe?1(chvf-vi-pya)IhIsJO^u*n?zq~ZRFQ(6~ z#|sl#!C`WK3JkJd;3CP1kR~uWQ&F;T6jpO&1adqrf=T}95%`ZH{^J^FR8xH;yPcui zL>+#=_|I55xr|Ayog6FzGl^;fp3jjj4v;Q?z3<@5Mucpz=i zW^wJkEpFVm**+;_x%zScoS1`%j;~d}gcL}N~jMgn$e#uM2nMstGxNK_M z0Q8EXl%oXiHxiF$C^(V)7aESh%7h*-?VGS9p;jLd0*YA-VM3!dFfkm_sH{_RK&fNC zjAepxPs*r4`GGv>KYR9v0B%?UhH&(Dzdb7B#nAM6?pIZTuxGG zLzAD$gYz1r-lckP%i{2Zy|X7{`?Q&$8i%5DNhL&DKQR z9a0pZ{SV&i@?ME{GV{^V4jw1B7Xb~lEK|OrtAGl3E6H_@@L%}ja`3XJ3=d}uS08_y z9f5N(1z!_R3K`ZAWQd~~Hp2#BFa?fk5MFAYOs5;aKlZ{0ge>-YHzO$LhBN|Nt!@1 zx6S`!+JrPXfPwnjGLKNIW-D2a(~aZQ;))MzQZx|QXykwNGfDtC7m`2$-~;Zu?%<4b z>OyXrqF7VO)&+@UC#yWbSZ~b)Ibc?x*-tnoz=@{HaSSzG`iVY&1Qw zviI^2j&uIM? zk0khsa+5}lH;(*QP+B2!Y$`7Sikc!IHeZDRi#>9MTGvl925Caa!E-9pC&%5nL*4kR zZ`#0Av~7TpTo)F+;*MI2Xay7A1KHsTfAtx*;105RuM23|2BO@fj_RAz>hIyu9WwRl z@CT{g!xyi=($pBGawEp7y~C2T2_67*M6jt4Sgi+kg!K`dn4>uI1daMRpS20j0IG;m ze&mpvMU)+Ud$C?28@q)h5RI`?fh#S`td4l8XuVPg)F$1_dSDXh)nk5-AQY$xGkY>m z3J%pY-ZisVqtDrx+uPh4Iq|$Hst&XOe=s9ne*b}>-5W4xY5vMc*feoPaBbu~oYROu zE6f8t)=p~mEyB6eCq{mDxcP7=Uy${($2YAK8%{9i?+P zAh$kUF$WjHCX>d>cIrBk84brQdv0~T=;mWUsKqi69g)UlB$FKy9_@ zhez9PTWwKM9*3yd(g-wDKtLv?kx3>QGLVoEGeahlR3(*EYQ8nz@to7Y-}|oh?S0O@ zsU(%Ot?Qn<_FDhp{SRw>>s$NV-~P6nJsrzY(^;s9@eYUUKXO_|!-jT7JLDBbbCWd^ zKD+2HTw6hFV+`ErG{_o>Ijva&V0*YR8*yh6BWmIn{KbJZiZ!?q9?+6vX3A^vK)i`= zkslGQi76kLCIQK%A)1;ODW-ISv|Yc%pMgl9j$I^PnR;tk6DtCSha1J!SQYlkcVW>` zxOqb(lpn!#6^ja^(P35%oqnOUAASB@vxoF+KP%aWLN>b z5!eG+=^WkEbW4y3Ki?q}r&b_2>s4>OV)Ea+b-k3g>mG5JTl(m81&;%|n>qH8=eKv? zaMOM7`@qRR^}I)3e#v1o5Ex!51jp^GdqvE@~8)xw+U^5 z#>GJPl;<}$?>l?`@KGN;z`wc+f_JR|)h(|vbYB?om^e7T4LPP&PrQaR8zb!^NtTmF z%&fKTTc%!E09Kw19i+pfAI!C&`n<#)Jr7cq{4VYl#s)7u5Vt(vBu_)Byn zhp0!l-hSkGGjJ8FDct}(f75ur$_aUKF{d{cm$CEH=lm<3BP{vNp-o#~b>EYyU3O*( z9am$`Ba&5yHb=gYWA?SqDMdge&rEh9Jl=7Lc0^~ZC0tuWXuB~X;t z4hG=lJnUH(ruO10HtJF1<}mY1DrTXFhT){$$6w(cux-ooBW&ju?Jl@+$1XJgvW_H# zC8fA&TgQ+{!?n0WsY_?4@{UZ*j$z|eZ*v0XVAQR-k zLu6##VzLv;jz8pK4L5jCkE}l*m=5jnD8cTWSlXfUPcc0mgN{73PJkF*c3Pba%7?DH z10>GUmeQSQ?TRZtqR40_W7};X{>S}syc7j1&Tx0F`k#LjAG^%Y`mb*O1z$V$IW`iR zX`~?-W&}bZWy&P(HG##yXq8)y2d@Wgv16_j@jQ}Zw~e*B?&%oPNv;-SS_S^ryJ8h6 zjke9l@Slc&vny=6N=LV;us7+2Y?rpyKe}Q*XHgyJLlGhV+g&1!fY@o|Rb^yqv09R* zdcu$}KbXx?J>3EfKFhx0jx#r(+r8$xOD?&D z-`3c8;MDn>?>T+V&dy=h|DC<_`7WaO1#WEKx4UuL&ycx|oa3#>aZja5JwA;!Jl&1m z+`&GwHBtvk0+DJA7jy}$+A?uRsZ5{Ia4fwk&21YD85B-q z^~82AV8o0!c5s|}sB$LD1`KH=2{$W?1KyJ^0YE#Ho4wr9xj*wL%(N7rAG#5Pt-y%2 zXTi;LUgpVGO>Un10=`QZ_V@=))Bej^=>5Yi9AH8A?q4I}(1r=HSdg-WVaaeHhK`s{ zrgpOuG34DK`h8=6rH9%l;EY_T(Eg*n-a+@Sh`2J#d! zgFvGc`z?zQ-3*k3Deqw7A*?9cXjxEbOaxzNdrYA@&Dxc@#7k$o1cJS=@@hAHy`@nt z6&|!G8G*%r8f^~-+zM5$@un_k*eXceOLMJ?Lo57ga>P5`hD@pRi}K2H*)Y!Is$ z)Q?plN=XGx9JdYGO=Y4=aaFj#Fy8*ZM4qv`?{9#A$IDP)CCxu}V z?X9h?+a5S~^os4R6PxG!-U(MLdCR_i|Hj4%w}89cTgH7rM2Xt{D0n^bd>$JiOk#-Z zZO0|)n;Q?D+xV_`-Ia?6s5DySr!dXYE-Q5@I!MF;kFyCipg0gNot0@QLs4*gd6|Y( zX?rmg5$F+AT!eT!C~NKL=8QOqJz`Wr3GQgvwb*q?ESQaew9q-T^Q@m2e#+KoKEXS_ zl!4w?{jsaT5G6~p5cO=1ZphM?)u|MP(=t&(mXfy556W-VE|N<_n~||z98bF-wNl5b zg(Sq*s;spaVkOsW@q18AYK_d^aDL_>Ucp0!4Ai#^6pV5zX!-zFyDO@F#pB7q#QFF? zcoC@HLW%fVyg?YrpQBI}zbsNl%xJ>P6+M&n#N;ERp!g;dvc5&28$@!Di!=??6B!3T z=f4Ii%)FwreaM^t(C43LNB?=gwx0_$JRS-L_&v)4;(8EuEk{fbP(*?h;7RaNkSdJo zAey4y3#hjtu`1D~ATifL#|dUGSt&L*E<-Hvkh{5|b{#}m4~NKb!(O-m#(W6>ZC42~ zNj87^&r6qhdNa|y+El{U$V`=I%~;TMU&u3nTyRVq_jY$QJKP;#=Z|@ohSdx;(n@y2 zrxD+;#NM2ru%I(E>L3tg)3+YoL8cDofx~jy3z{hvd6;>%P@z!n|>ny31 zlGYoc0WN;+wqd-3*p@OO4u+XgLP#@Z*9h#V!vD(9UpEi|Se2v}W{qe!e*h{qSvEe_ zc=hFA5q8W78x$?ZRqOUcS#{%(4orc{AB=Z;J4}id^q>hHiZEqm-KcO0g~f`qqqB~e z`H6%iGh&thV+cemD_DTE(4gr7vB=Yi@Q}euveBa_N0O>)`9D|wDkIrh+QS)(f|HHD zl}DJrNYaqiHn!$^3tyHO4*l2`ncYLYk>5GDwR>joJkOKjx1i2&{@`N+mjNXAHjeFG zaw!|XJa>#^YgpMkdi)T-g?pB(e7pQaiMNKIKfH5@?cnAXR|bISkBsbklhVc+-p^|| z9_mBR6LCgj2bG4N?!D=jJ5OsU0T`t8Ft?$Ao2x2XlOX5=_zob30M<$WO7AWkFfy;2Rjb&)*Iiq_fNlO_xeZVf+;WtG7Ew| zD8`}}E&`!Xq1CJNExj6OrUyHus-j*29!AE8OBNX66&S@%-Aayb#}naNiAI^`~wZA0fMq1)15kF%c^;EUw#~#t@(>r$Gg+_zZH* z@uK(=uhN6n7(*Bt(4(P7(~@ruHwG|z!p;RekA$2x!S=x7=*;CnrLwj1quy)_Z1kI- zNJdE;@!I2wg@dEe6nOI=hb0$*_^{8J&XMotz`dhRd;avg9*YszgIOmql-vCh!VXu3 zIQxo&95^|h#|Lx~$-2Qy5~2q#YBM{oK77av6-xZ?TVX;lxa>_}gWRPMNk6OPeWsgG z6N)piIM9S%d$Vgd>VgNs@RMjmv}x&^V_5t_r&MgcE%m?JlAs#k@X^Refa7FfzAeVr zFq8l0fjMHfGrmZ8Z7UbE%UAK4N%G359fn`)RDK{+xv6{9qss!MkYrrYXy=S zhCSzVCF>n33%(-~8#-@L*#SzEJn)$S^$}8v{?dTGE?*$%h8h2cv|pV5m#4!rE67sFbyr;`UbNg zH3-K>M)F|16Gw?5HyX9;`i9K@Qjlh#94Ib#)82vvcg2bTtaUC{FhOkyu-ae*(ae(0 z@kqzz*Xi9z#u3_Ouy5WF^Ar#_>M>mndE5p8{G1D*Vnvxb701%5g`_d^*kqf@iDPGT zhhGZWImE}qd#C*d@ZLG!FuDyS1E-j3!tL*KWz zdG9GsiSDSEA`C^5jC*^X1Eo*Olp5MKwuYn}XpGXzwaft&xW4NbhA3nG9P8m?RDa_` zgkmDlPR;<@NU6iMQeutDEW(sT@xrn=+=e1`xaR6c)CxADopdasqQym@7{QRb-`W(Y z{IVLX`#(IKS<)Az55x;~PF0xc4ZZYMRT7MUW68+oicXZ{Hqhe~#)~nqH}jNCi3`H( zwej%JuiwrfkPZ@|_oU11yRIF;a8!D|*KW88V&d}($2*6$!l(77`R0b^}t5| z?85N>sw^x>>*_0s|Jqt+>S8_--DD9I1*x6|XiK5L)RG2Hwb;)4w6HM?oHE(936T!k zNgu=4JO+^~1n1B5Tq)-R`HrOfF9yYpBNk+-p$p7{bRc@J-P}BU*yoi?)E$NBI8QRg zc&U7Jfr>zZY_>blA)A1xDs&(pDt;!re|Cd(8@B+;Um{ISt1o^ zMTj4!!fbTg7cN35aadWFDL%Urk+^P~Sy$c)CXRs^osx|yEqC(WY2xxcd*4m^D+v$!;iX`0>6bmLlbQ_H~ zQWa=iDosV2`{FI!ti1_$uuV#?$d~8)znt*gf_dR>cgLTM^X%#2lrbT`9PJF1Z#|hM zInq6|y3n}K<11Vo@gSQH4hk*-0tLm3Z8_m#WK2BeeVa&lo(r`ld`#KpilFzD@hcN$VlR~R`{3f;15<@Y!Z(0%}925;JTItncCuw#U_pKuAM!7+U1a7AqEY;CJjRT zCav=F@oi)C=<(x-xm6X(6`a<{E!`-#i~K;SE>FEWea7YXp_R?e?d`*d_#yXCXfch6 z#8~1ywQe(ZwoKHi2Oi*kz2PX5Iw>Nze3Gt zt;T}IW_2!$(zDM)F4HgTP>xpZMhlh>cd=i*l`vt~&^#{VXAH-m;qmmG1N#tItp2+c zZt2@Ov~zBE_ss6Ovt0Re|F&^~>jsyk=*9(&~Q zRo5K4^Srv3Y#usydglQjD(KY!o+rpXf^GyiHqW0u&qq>cS!4Y<1K)1;qQa7>g<^V} zKN~F_hSA|=(n~P`3vb10Yt~4tSc~+<8wd(GR4!0kBMixl!02+%+>Z5y#TzmCB`1IJ zd7UXBXG|`?kr|%+I(63q6qoe+G3|k%oI)daVlF$y#ml0!Yv!vzv7tB*(G1H*ScA@F z;Zo$HB|88WPM3aR1uojG6<$N5TY&@gL97*cl;XFYUYiwJY8n;|Pp_tXnvG*U`bIqz z3a?h7=F6}LAui3VmAZ1fZ{BQ1W3N`=1O7CbxPV;_I)l1o2It&d4; zi5o3){J?$pe(=V3zwcddfA1f@tjvA3OcAq26Kt&bc%@)ck6r=R=T z&r>clNoB?0J7xHP`|Y>>=u3a#d%x@dTr=`9`L6J>W5+)IGd}Zw`1)`7ywCq*mtB52 zP@-$2P%*c$_raTPdd16s=RNO!_aVO`bg`n~q&J5479!oqfDgzsp83ode&H7%IeH9B z@xNn_bnW{}TBrtYl0Y>lsZ+PS>FVfe7MS`V!oEo*b5iuEV(RQG)2hTJf)YnPC5CmJ zsZoa}PzY3c-G@-hv7R!0T?=5<6s?h_7GOGrmg$i+p|CZBT0&bW2rk5^t*WGYbXWNG zyzm-RV8x{q;-IW~0;N6c*&d_=lwc||Js%$Gblxzg0bt&l%neyAgGAv(h!wR86=JQI z1$%fHD?^fG=49_$SGw;sBDv(56F==BE5@FWxnG%hrQvk##bjqEO?yx)7MHrHhGE~? zLW%QvtqOg&6FwNiADQ>-9elfkuMD5x^SgrQ`7~%_^MUi{-hJ!6H{5pLBTpQ!Su=&V ziGUsC*>j$2uJ*?&w;tfBgJ;;1H%1buB`04BsH-Gs}dw1R6onp;R5Z@~plPO#q z*3guJcwznuL9GD)8|92u`LwAH9O=xra@pW}X&?gD`~^B)o{l!2*)WuI3eLK*Wp z-L|V$m3{4y5RBPTE3hP?42;+3LQDZ|O@y`vCDdh69d>z{(Rpm9SN{vrNEiQ+kXxuq zpfV|9hPV(aGUA;k$8!X8Y&*REpQp)*P;%dvX3OP=roN-gxaAC&qlZ;Ynj5TK5e$~? zob8YwCp=v63bXOyE?6FZc_=_M$(g@4!8=1d;awe@J}v>8arAPOtA~Qu{K!*KvPV>1 zJfYXuN0)~%c;yei%cDWqb#CX%-tFt#Uiwe}?uXv@-jCJR0r^WWzv3&u>6>5lb>DRP z)z=(gef-_#6dbm#?|u7QU-t7q^V>iFGxyzn^5aCl;>xR@{>*1T_cNc*qaB=68B7w^ z3CM`uaocS_@`K;^{onJQ7@AwBhhp>8sZ+oEikH3f?Qi>rKmQm1>^J;{E3dqAOcN%I zlasT=?)%?&;}3k__x#wudFewQ{dLdyF!~wKeAe?{@VQ(3{z+%0Q_z+l`{qc#6EBMNs z25KglacGg;7jH3VHta1<)S=Y1#X4C&k=6pjw0+AOYt9nFj2LSdjeX2fLry;-+$;)ufJsb zfvue*dq?g&bL-R2Zt-z@+$J-h{rIha_~l0~JGynp{o613^>Z(KC)@8)E;+pMt$$+s zdDrtzosB15yZhb0xp&9?er~fWriEc!g-CPBA7blmyE9$G)BTF;?0o`L%~u#1ZijOY z9(2o?2BVE>GaWFo@UH*>KmbWZK~$cN{oD>?M3t$e;PJVQb#8qdUX_u0m`+=6`U|nJ z+G^};{y4FgZVo+-M^4TFdO(H0P>5RTHMfr6h@ej>&82JO}Pz)GKyv&5OV>9sUkH!vZ1gt)&go?x=V^9 z9E-%8j5GzPy7ItQF1}?hGktR`2HF)NR|LCv)T{i>S0Ip=h;NDL)C2eb`ycwQpZM;7 zrt=TAoPOZ`cf9d+Z~nbkTzbV7k9pElxF$rbhKp0!N?gT;xVv-ywZHi*|K^{4+s!w= z=b;*0>76}u`t7fO&AD^up8lE7|3rRFoHWOGc7bPJ_dCD-L;vJkU;A6XdWP$lA9p!= z?AY_a;Dt~7)K4WjV~FxGs_!Uv_day<2Y%@L{`E`0|9jY(eLQ7x^MMEMf8YCVyy~i} zpZt`k@?ko3V5ynD@4MlKAN>CB{qZ0D;YIl4X&gOz^m)(!oWJom|BvUt;B)$ZpmR-& z{&Vs=_Xag7F2}R_U@z|>|) z)V`J-;(^EpYfz_40tJv7RuLNX0u`dY(r07D8(Y$*eE3wWvc_2v546_RVJ+S28eLkA z*X9y$=x{y8OXsD3bl2mJyyALt{x**X@B5%*Aq+NR%zz zccQjPB4#_wrV@dM=;)Vc0kUeEgLISLotR#k-?*)J0)S2GQ zN9`Y99A;Oy#nb(F&-$AKd~}I4mj`!myzSI4z4ik?{n`(__qO{VamDe=j`C&U4SsTj z4IlUadBM-dti5{RRX`j+dG`E!?mvy8yLWd^5eqj78=da(-(+|KTDpVC#_p~T>FPdF1_V2 z-9u+Kc{I;GkK;y{0eQQtUnbn}Hz-g(3o;|3(0hoK8Co^UtrKC^M+=*E#u(W(vQ%A{k| z^YDQ%X8W3exRlg#V}k}>Ev%sxC}jl-^8zhcGDEL;+pUK#Mlx5I?l43@CEBwyy;%C< z=Wn_*%$0~3wub5I;?jb+=Jr5QVP>`vi~Ka8dKKe@-LPo*7mIL)QTmgzG$zu@6UUV- z9O8n^7+M-0G3v5qbCV=XDLL^aq2zTuU>{Ua~=`#0~uc-g(wL$iV| z*F^jL@QiatpFFX|pFjK7H@)fguY2v&pZTo3n{c=uLSbio*PVBK=tDPG_d_>-@aKN^ zXP*1q&$|A}Pv$*@R~mMAZoJ`!@B7~G`l+Azv5zN~#kb?fk3aXbp7$+(?XN%Qxt~3* z{5j1Xe2)d^L8c%9IZx3`ojL1lmLLm)&5GDmJt)?rUE;-9+KPG`b|^a0)`QjJN47$% zZm4w`R(+7R?hlOF9i|e9Pz9Y)BzB3YmsO~do{3)pZ7s;_tf4A^{FqMjBUg22(bA0+ zK^lHu7WzjO?*tL4DC+_8hR5~50vdd_EJmME=A7%Imq-^|u(BT;*{*Lzpsh7fQnV&k z%+?JyaLAxf2^|H|xI@>wz4K-`teP&GAYnn2!g)O&jLl_{MYPo7;zJt{F)_F?r&uEG z3pXTj^N?Q}^D7+8dd?fzu&tEq`YxXxAH96*?AGq-?cKerH(ztl-S2+Y1Ap}e*I&hV zh}S|!JArGUhYz}$Px_jJbUSJzY9(Cf z21-&<))2rz^Ha$7hut^x_R z{wUKawm1;~wO?0Nu)V^a-RhRF_=k&kKWjkEbwI7ai?fUZo&Ci(2NVu=*noJ{%-Vl#yzaws+eH-~W5R@ynm|gzF#s$xmIh9zuhS=Iu9s;Jt5qOBcaY_uu!c zKk?E}@J5g`xZQz^+TgPLh}=+O43J?AsN??-;TT1*>t5y^DbP|%n^&c=+(7!EpX-Sg+q z^O^6z`{|!#|3{m0)BE4|ikJWPqaX9wC=hjx!v&k>!19H>#n;{jv+X_efX(Q`;-@d)mK09NuR8fBO?w@efFiDF_V~T z4IJqTrIF~Ew0HUT84&5>RLv!6u?VC z3rQa)7@oFr9B`cU#tF8mxUqd?^UxKCj_{CZelqUN?x|aMUirS;zw&91>LDM`)T7~( z2KU%m`gB6tcbz$V?(p96OSZ%A0j5v7hZFb{KPH1N-iwol-hQ|eA(#^)p{)rAcdfsY z+(%63pf1D<)i0`sSfaRqNgQ`R@hqPUAHVa^smu26c=FjKSUGe!A;0>)J3sq|bC0|F z&<%I&{=%Ejk+F%f$L-6G2Mh6q&%4 zgw^82sPCmrdbtC0!HEfVJISM4Y;fX;dIz+`uX|xd!fGj%rxrP-@{7Q#u?U3J-eR}z zSg)mG$lw4f={ULCj8}BD84 z4kI@8gkz)sd-!xG)vzjVJbsS^-5@A0rJwKOu$Xc|>t?7y;J5h6hdR9;nSG|)J~ifn znI`+f?i&5la1LeF#WF-*=vo{PcM`={B4oD_%@o>gWJkg5g3f0zPyh7Kdg`;htFLaM zBm_Rk%xbZdp;aR;^o-(x`|o?}YhLwpFa6ic6~22;-uWM1`rS`|?(>cwzjXSi^*FG3 z<-;ESC4c76Z}V6aAuUTIMh3-~2PsCrclVvQ|Ik1FJ8yseYw?+H^4@myO%I~+&{%vs zXSa@Q%_uR1a`ki~nqiFF$d`iOVmG@y^Q( z@AMc?m3HP4XX1_jfr)(hX2GDES6b7^gfw2fndxY-A?zc@jd<4<5*I6RQAX?pIbt<2 zG%~nkMzKU}qmIQ5)h3YEYH?C{&Dc(vTB6rRz)>pxh!^5|n6QH?RKW|jmW0LT>N>&`|B42ETOmDyYY{I_1vXL&fl8{V|2(WK=yv;oqNCg z?j2^`X}@Vr>I5hkKln4k>5+}KqChh_1r(oiwKO%7cpFVt=Ltl|NumaelSZ9zxE6s( zA&Z#AH5|1kAbbG?9Yk3CQ5LW4q?A57(}x-QAoCKi(N(2>PAe321&f6i zh^c|ks^C*SP=vwZ?I}`uEtz7120##zX3_#(4v$65$Cp`HPk9+(NeEZ+J`NsFqWlzTaf?Oti+NXau?gH4Y zaFH)LapL%;*#phtgigU9%UZkiP%mEb?GV1Fyzu;v>L;{tFZTy;eD5E;?$!BD9^1RE z>mK*SZ~pdw`IKir$3c#(*%XcQ76iH!rqB*w?c3e$cW}EAM4mZVsLL#CfakpzXCad}dVS7~H0&`ODjN2x>s8ZUjNjeV#H(B`ORA1G5Iamp*fIwTsD zaz`w+V?>%>DMW6_423Y;j=cQ|CwYq1z+f(JH{KdTvTig3k&%?x8=e__(0J>cT8XY* z>ZE>uyfqz%%Eg4vLaB|gAeGWw!IIga)*7|QIT&H(na&w~Rs)2YX)a=QgB58lUZuK% z#;BgS9%b@CnMBYC^;I)=eUKFh&L+x-!kyq|S@^T>eu(1W)-Qe9Yx9}ZFE_S>TWN&NR4~;oFO$0$N zKeqkIqenS*5aI9sv*&;Ny|>w!MA%#^IB@XM9);|5yru zG!9By8Uhf=Ml!kNZJelLSBZ~Q^lQk>*Qv6`nxuWNBx>YyA9;3AXXMQEMN4PQibda! zPB;QPN4f$n-VMo)?*nJ|d@9C1kIlvQAs@KL^SXJ0_kQkBM?tS!{js7Y1ghCa+R4xFhq#AlS{QrDs{#1Wwq+qGSvTSttF zUICZ(&<$O!Iag`RBDzp)mOE`Z+ZsEKvv4#G(mCQ86)p1219996n-bjWrfE?LD0RLVFBWb zJ!gDw&hy^Dus9m&4-vz`O@k3oCq>R?LV~Atwuas~m|XC-kIPcA;n70y>`d7!ro^A- zMP?FY7sp~#8VsWtr)0jqHp<@K8-MrZx8L%?FMRRWxmBqQVs1X;cO=1qHl-*`1!+8=u#r6tDXN5)OaVY-1wsZIAT;n+Vk`uYU3T(DFRvl<9H&%B1qarR`pmF zEDdTK@e6(ux9TnvX=y}of2EqGAnR?kC^fV+;zgvIptzx9Af!fq%>&g}(E2^QRb2Of z22#7Lc#9l)&;(2wuT!hQCDzW6`!FxHQs%I@9`8)Gu%Q!$uyuRk)}IQ*gAW%k8xnEm zwy%@KmPp?E7%wlavyh??&O*2LSmo)V<@9o1#0bd zN~GO!m$)`zoOsc)YRc0e6EY|(oX+z#0gs3%7DW#KFRE3+n3Ernx;K2NSJ8Gtu9XAb zHO_E81{cfn3(w1RCsD^P!UDnw&k>2jker7@(>3%fk60VCtLjkmwc${Yh$_BJshA9a3205 zGN(A-+jYLfFDTSv3TK6Ri~wJNO*CmHwjAc#OtEzw^G1?Z!nD~ zEqfu0-gXBdWGY+%Tv*$Cul$W)eCfaV`+xkazh0#&sk;d(X|hctW(Uexi;>yf`m7gz z$t(Zk&%OWM?}Wz}5pH_-JMt(ifA*Zz)itve)A!wd*N=V2x4-BA^h)&*q>+62|*Wdr{cW~F;LVu73m&(}cJ?nX&_moe2ZpHXbj}PAP z?(=8IX6Ta3F8{1A{L+Dt%(P8#v+Uja!4G`@KlyvF{>@)Gd*;j}UgVX>$J~AL&K$FF z9bcvpwSUTD1ywK0U27oFa$!Rk%8mSx8-c8};^}Zo6Scl_XHB7iwXVlT zrhJ6!p$3-#+E!!`6%Ti5jEF)P5Huld>CA(~8>tA6R@EnY^=b~aXK8zJa9_L;)A)*= z1V&d{!(1AbS7EKB>zHStbqO(6oUUULWHoT{OIZe};Aqi6UiCQQ8d}NNrPD(|v4GR1 zO-F>J3vm~yI8f_Y)S&OrgEgzFRCmy7Olbc^rg5MS0r^E%gdCgHl{c=qM3**?pgqi; z)924~-Rc~x{>Ii0AGPqC!<&b;w|GkI<~g=-`9^R~NI~JN!ACbvU%L19yY73-YffHu z;@J7)8;`j9_%>fs<#~Z;HtxCi{98`md+(W@qsO-{Il+Z{-&ecm)Cn*3r4b)TW;jO8 zM;%wn=h^TPwUoxHX5+QBUK(o!M|%qLT1slEr3^zW?qC5M$+ddStl{0tbCNe$2p?1j zC$mI116cJn*mXmJnv%-Yhe<&fib(Ew#ej6QUx+w?a73G3>LsUH&OXI>Y>#1^l(nTk0hbB0i`V~&k zsbY-J5#o_MF0aVB3uGsUd-)v05w?+x`{4ovwr|@a0GJO%JSPguNfCq?1EwUUQgpSBWQGO_eU9SC8!Rmxoa!n_yxsEi2zP zvKF5||GU5OOaJm)zlBW|k9|QgCbX*oR1l?s!+wI$o`)W+US*fHvB8%o);{yy<6(Qo zm!ca{Wc{Um>i&CP`cJ;~Wxx3EAM!4+uuIL;q+j^ef9A1Ie%eAI9rxUM$7}x6e|*C$ ze`_H=cmr>*diWzRzv}AMMsRoMem_ffuL+k8S_yIB^Gu39uG1|T5{WpBiKlq!k zf7Q$K6CDq3jfD6?F@HT#MH*1y7);MtyBl|(yyI7X`Imn6mw(~NVNM)tfE|=I!ht4V z4Y~W|$q(H0el7>nF8AuIui+8aJh_I!3|h?DiXRR;4QEc?o6vM3>?;zK?|gI8AZ;xTB9`^ zc^zIN9C>I9rR{-lL;;MzAV$=%!WD1&0}+{G4Q_FfDZTzodC9>q*EZT!iM(j*rW&FuI`$1t4nXJ)ONBfy=BVG=3xDenYxtq9ZH@qL_=E3S zZk(Jp#Nu3V;;KVz0Z(7;je*B5;Tce-Lu*@`mmc2cIW(8}eJvLi{@1?CyAi~RCMk>r z6-RBgZ1L-MT&LXPJ`haCyn{jUu(kFeUUfsCER4j>5~qrG83mLKMvzbfMT^|6C^9En zpwwL`GO<1dhVV)N*_c=;F_b7KNGSPOJYKacu3)3)++-x_mJW;a^$|agvne8)ia4^; z5>vR%fW$BqRW34_dkCPVVy494W+Dj_KxzS|JTkqJXlMm&yv&4IG*wy2<0fG9#H5?16G0hi5gUj1@+{`@!LdAVluk zfDCFt;IqMVnPVX;6f?_t1m#EUuyl6wWz_V`-yeZTT=f9SVHu?&R&aT=R(Q8i*+}?aJ~@oIm=5 zH~sKG|Ms`O?$t<+`~Qkk{j|HtPqHJKlKEq9`es3U@b0+dwx9WlAN^PV;w3(Gwq~a0 zNAtQK2=dom_oy#_@mD?Wv5%kbWH1C8g4u)_jxjNN!bormjRMb!sjqp1lkx4c_VLO-m853JwhcXII#Cm5%Pdc!N>MiqY24 zM^|)vmSH^<5#q1{iLpklk#D@ioqhQqaZUAvp$f--+t!R}5QGZ3arF&PcTSZ@R!@>x z0kWEn4PoDJWR4B5;*T=b3bgH+`LaY~q2>);6Wi#b;!MXeCM~R(TX`5)S5@;6TZ0%% zop1j2YK950C08zWBf{Jfc%Fxgo!dB?J2VJ|TL$rAcbjjGa0LJ#w|FQtx{60-FJ~%# zn0S-RiN|uoZZ?TIZnH4(`;)x6adl8J;>umI{G$0AUi+$-{H?z--twp;5aF;*O!(#@ z;(E@XQ79C9ZL_E5vxv=&H@*6mciwtSFhJP4?(t9Tx{bUEQw_A8cfI*P|H@DPF#gkJ zN6h87Yp;8BwJusC7uCT`e4%V^-hAVG-uKS8@q}m4-v3AM__d$g88lea+{6$ye6fQD@e6y}bY4d*1zyKfL9GA6R*S5CR!=a+^CPA(@*yZol;>f9yxT z^E+Nr;ihY)__4Hzh--mg^rAoURbTTbxi>LTTERAL2bBMIM}f$AIk9yf)~eu`Y8S{m zSD7csXDT8fv@?ePRhaml=uG-fF!}s<0(%sgS@At8VykKj)t}kdH(eS2)yoico6>f* zMgS!(yg~Iv{B*_C-(fwpSuH|J#GiVVZjV4M$L+Wf#o~s(m=S5BB|#$)thXz3i8omL z;tgwo4F6*B#{NaCX*@Yx;vFfN8Wk$B@y@7`km*=i5NXcS8`UrYuYsg*6yd8FN<+3w z?D-o|v{|hB)jb+W3uDm?{80`(#xAY39ftzmJYM!u|} z32Q0UOcy|nO$u#-&_rTaM3j`+t)TTH5L-yBQCJ&Yi4Gq*#FY^qp}=>#8>!9&5aDE0 zWRYqmTv?$E-xh9V=+07*+J%Ys(2W2CbzxC#T7he~8E6MewIWmX#Y$QAs_n8av;w78 z#GmY?F<|pj0qe4v2s8Panp2tAnHCY(M?9>RT>YQ@fjnc>`PpvH_lc(y_+&EOB3v|H z?;FbmwobtAvNYXYpsF0noE4c>o-YwfJ>)&dxhpg2^DKz2N2*WvlgQQnrc!*BK};f$ zXMl6VVOWEybw6ch>uFA7ElPTo)vfCdRyCRnNJ!4l5Arj_o#?5%0J&`Pzc?8o#~>@$ z&MuE!d4F7#LUH2fVqwjh&1O7dnjX3VGa8+&*2V{Ke9v$GKmYcgyY8^>o_PBipYifXal*LxRfWqh9JVXZKefOOFwV(dc zPkr9!c~P*L;U$4xdCkMV?wkL*L&ThsXU%K&c0L-O#qs8w-uJKn(ciuG<_|jL7CwnF zGd*vaBHx+7+`HrU+kgDu{LuG&=XXTxp;si~*zw~}e8Q8y>?>aUXa4LrTye!!IH;j9 zw=yM#*CT{E5bznlS;_H#T!db;ueXs$00obiP~y4%i;$VmDG(Ie5y(YBEhtY>vU@?~ zdwkio4WG%&g%OntE(PULtDYHEE?uoG#MuaKuw+w8T5p5~xcI5d6n_%iQl`F_Q3oca z{`BY=@WwE$uN#ODu!b`YaE&z82%Eb^D>Ly7Av6Pl3uGj29^N zEyb~$Q5(Yz0P%trNr;gf3tML1KrlVn%8Dm_!eTetPR_P#2x=x|R6uWlF{f@nbpdT* zby-%>($E@I-H=hEX~0^FWbhN$5Sd;L9H?>LR}_Pw!(8jz+PL({Ha``-jlA4`JdAP|7>B57h=pmTCOQ{s-v2x zEjKmEJx{5HbKPYu#+(Q_Yw>S25MrW2UGSx$4PfwrtBBalRE~XyA;nTCegH7+3=lp`b??UC0A} zp#H(5!2c0%aLO9-#_hq4t5F-37u=b?zV#}PvyW%uAV!8mh577zivTGHvoFl% zD00y83RIrt#HoGnJV&$F*PZU>D6`YIhR6lV#~TrYVFVv_=$sA{0O8T-8t8IJH&t}8Gp1IaBpm@ zIcnG6J$7I>yyFjk>U;kAJKprV1?u6S^q8kS`!jeBmT8Gaz3Lhz)~fJB8cIxm%FwPf zOWSE4?DARd)sMK2&tZK7y}Ntzj@#D6HrcLy`8WQRh4K&@+;`2s@X=3t@}0MSh?&5h zfA4zp8-C#1|Ms8!=Ku8(k9y3dmtF37H?W|a8B(2Vdkocj6sYsLGavG5+7};3UfAA(3WqDHIv!4CzFa5F?Uw{4e z@ePlL(Ryv-gX_5?td51}E&V@`dkwDSJ!>e=IEl;j;AM@dG|bLPXW5#(hlBW)kKm|! zxN*fIH_GNbVN!=(T5&AG&3613X`NO69D;THr7dRuN(oG(Uqmtkiw~{%m7D$yqtSrl z0vAmE8LjYYEKNb>jnaG~U;Iud#cOCis3=NKT$(P@L>t|SeBiaN4%msWp~~gODh>UK zOe3mqPzq9m2-?Vz3%%{Uj8!yKLc+5C(6$>Dh*{;bf@SzdJb4r13Ai_?bPzE%9aBAj zW2e{&rujHClVg{4xZPlgw)`Idyd{LNCc>W(p1D6jxIAe%JlRdg5)`P4&T@IR@Bu<_^ zch?zyrr0fG-R2F{RYwnBafI8IbX^Cnl!s!vfC+X4VDse^L_7pB#5>Zf`OJA|mtWxU ztIHm(CK+zDv=UMx7cJK!=w;JM%^%k>IhpWr)(%%Su{(=U{U0=S1J=nTEAV=vb7RIq zq^sRX43$Yxn0A%bC)CQxplRHkgM%s5qFC6FM*3){Xl_-qIGLZ#vzuGTc>q7rB}l^3 zUK{|IMm>i*tOTb-9au2UTjb*d0+#7v8>J~0VfYM9am~b%yQx(ox-Hs@J;5V0tV9=P zy($s3!PQ>=iZapKYaLXZZ75P7YHs3JK<-p%Rxt!oi;Mou#v+N5WeQY&&Xr7t>AzT! zlv@XA9Edjp#ycZh8c|+Vd05>zdE1wT{@S&M8Z-K4k&d&L_{N5{0-+w<)Il#oHXgzhsE?T2<=WVyV z@>l*t?*e3CF1>7ZgWyF~9s-fw-j{scH{I~|Kj7ijsB;tKtA6bl-}d^~e)boB>EoXK z)FXWHqS=hY&hq9t-V`w$z9tgnn<29XzTZHxr0t*3s< z(_iu(-}%HRelkL$`SeHgL&JCBjB`$$j=N(T!;E=|qOK)8))Yg^;b=35X2qaiR9?Xr zk{&h1g0oK^QruwBoqiO>CDEl-I(5bB0bDZB{h!J6IAIguMfJs>pzfPF*sc2TC%v{? z$2ip}>wcD0%*pq)<}PfEu#(Av6J-qz&yqJarL5BxfY>q{N)>@dhz&;v>PDc3_?ke- z0v5FbLu}0sV(VsWycXMT{b2Fdy=6Yk?ocm%VvTt5gTI+2m|e0u^ov8C7tZ|5cJs-6 zXlW#=eaFOcK|6~reA);)Pa;sGhFSHT{zn`4Vur4=IkJ|d$qIt5CQ&u6Cv8QA_K=$N z3MHyql4_sDe`C_zsL>EA&{&|@}uF14J*8ScqlQRMV8fHWP)iaQ(wYEi7|bX^!r zr%pkBoW!V|&6DO>GMMpDJYrcj_z;1qTod&s^1$;Z zN0%_2!q-pmBsMdx<55$Oo~i5=sNNB%#i2Nwb#&5r8p|7A{X1{`y_ZeGNBi16+#=0K zy`TG~|2>}z3(x-^y`7iypsg^!5zOy)@VDrGtc}I=;loFs@mVkUSk*tG{PvNf{Dkr6 ze%V+3>QDY~cbr({0wK3Kenj011r~2*H7yweXEP(q1agbEM_LwLw%VsoJph-rjA5VC z!Fj8A`mj2$pwIv^Trn!I5$MdW^qpm+F%ZICY(^3ME}!e6H^ zGu&@4f#UUQbB0!^#(YUb0eaWD;v>|;W zS7s$(a5`gR)37$f&GW3+0Ck|DQI>wBFp=CvNrdsnykbtX|Lm~3F0gZ%jJ@$I9V5A2=?>geW? zV_PTOK}Mi<#!{nc&jZOrI)T+@cbu{7!h&NyLZ;EUK4{4Q*3D;vPCJsUHUve#QmjPbz*F0lf ze4S>ZHe+PSuWxoN_&wMmsiAsHE7xD?DWwax;t7eOJzXl@S|d{|@+d-YJp=}TF9UDC zA|7^z4_o0b)(==Iecejp)REdgG2e%$b9&Xi__NZsL)73~R97e5=UglWCU-zdw z6J&;|8TIT>M%mN+K+c4$q?|bl>-Z&#KWFUH81dHG$wiXF&P@{>Avq~>**B-9?g-}! zqKHzAhZg;O)@eoUsAfvVYSt`3GwD#K8UHh-5|{Y6rDyOmCusM=Z`_pz3tK2@PS0Ff z#st%u}zW5uz z`D_2uU*kfWOOJU=on@VFQnwH4<1x1YaU6fjXMFaTe*IruC?8LQ3{&F1H9sZyXaD-Q z@@e*bs!Oq?QrLfozmM<9vve!>S8E*KR40lz5kj};BFT@W;d>z`44>6vM+WCm<wG zc8#QR83Gq`779pw8uK4E!sG6UnPIJ9l>a)nwY_uf^6fJ|vWy4Ouro6xFnmdSUjNfk z6v7FV36Fa?!$m<|scxjIu7$ddO4fmhNbJzmP{Pc4jbFE8BY1B296xeLg!$@mg|k#@ z1v9B@(X*FlP)ABK=@HZ2rO6$#Uike#G5m) zR#b|lti{SITbYe9z4B_!u0Er+R<9hLVoJNqbpT zr=16lcSb701U0%sm4eKqh#BHS7)n#JM)}q-&-NS+IQ`JdWO8$s1DoUDQ*%}UW`GL> z5QX+5-XsMzN|q#FAu5MA!ym+XXObB?S@XRe2pqtMq?Yn3X7$9XF#Hd-G9JKQcZ?YF z@q~^h`gImsl@Abz5X5m7E9X#EE37O`tRy)?M16>*2+#b?7ku&8{y9D~<-sukX)6P! z#X7(%8Q$erSRUd-q%ZW(9m&?#r+v;J`-Z>qZC74%?S%plg_0buEAoAjKk@Z{@sW>y z+<*Lum%imSul)Ek2DtY%l92gPZ&TFy)4{I;BoCs$VU0@Gg4GUb?gDduRe**=F1Xze z0Ypb%q5=#-_Fhg<TMxwU}Cg3V$^6o&J@_f?e-u zuL1qC-RabNcI$K9S*%wN;^KhfYu%Oi5v^j0)S64Dc9(9`Lbnbrl3Hp0Rtn0F08~)G zG6jlX=cR?)BL!lmP+209f587WZlGhat<*X&yTjb<7Pc-amO~Zh%3S=ZfFN;bkwgqu zy907gA6P6n)W+@@S~nuMJz0WOf!K;DGCxDe`o{cZ0!)y=D9lu~o!MJ;05K#Th6*uM z-zpXxFrnGRRvUKGqN@Cq0j7o^_cI&>y@4n1&lR8Y>d&@eQew%4J0nO}$L45~kp4rC zXO1c!?f{8aJ*38m5Jc5T9e~8XF>m~0Woz@?v7Dh?z&QheXoxWbHYH0;$aG?^qktTL zTu)?e(Zk>)Km!3~BTyx4*X@Xf%i$@$r^{@zfZF8}Cp$s@^AQ!B!sa@+?kPGpVJdK3 zN4+MnUnc_xJErjma1_-w1Ej$Hb8ujxg4e?MZ#ML2sJIvP+N52ilowM;FPJFj=W4v0 zj`dhzljnB^R9d{!2R!3?V1Dn#cP#XS7PsPUWR#p^O}i-_iG|Y)r&dt615mm~67M1q z%3*IKP_Ayoj$Pa zOc)Kao5hGM;Td*5M>bkmFgR*6FB7bod>e_02+P2tt^h4mu!!9mXE2flXHiy!HAOcE zDa|YbODc84)gs|^sFK0h-Mr@Nhkx>?Jewz^4E_Bt^=cn&BxOZAcKp&OJnb1ze&(k? z{wdFR)MKBpngob6Z=|T+TW?-^`IY=i+ue8EmTNwVv}Q(xD`Y)hD~+hhgxv1K9{H$e zKJRn+Chv8ReZrdTC$wocH;!L=>GNOo+MAn zB46gc{BnNnEz`_t==$EZAFj77q_Ax9KAT%pJXvNN2f2gmma#&yv827KZum0F>kf|g z^r_u3)q}POgNzi>U4Gf+&;GRMT=%F?;%>!juYLH#AO47@-Mwk%d|k+)qd&!N-7aEu z^)~)g{(xlVVbMSguJ{v;ZgtmYQ6z(0JEZr;Sn;4ww57AZaWG!&trfUH z=|d4`yjgeZX?%@Vg`py=cy?x0r-w+VqOu(((B^nC0we9PS~C4SK|qOo>w?t^6ubPV zltBZ`#jDaMKwVwpYy+r$^q{SIA=*-EWTDhDTtQ-Gye!?CPFIj-27Ug;xROT2_r*1HGLcp)o44M}lilZg(7AAk&qbR21a+hG9PF$bE1JX{ zd```7?6N|k2buqvUo|*+&%L072X<;?ROh{2?h));7qb&Ly(nU#mc8-4tV7^HqM+q{hC+3@&~^6yLfxb_Uj2xy#Aa1!e4&k zlb%F!9F!E~%^uynhjBz=tKODXd23jUe8m{(i3SMm17#teIdkUZU3ah-MSv$V;_!(R zmv(Qru0-Gqv2FbcC{Sgsn^^D_+wZ{AMQaIo5EJhrU?Wymkp>DnWeITDt?1}H*h`G8 z1lnDUmeKA3R?O zlJ+E(k)%betq~^p0biWqpc{~DAy+B~<#5JX4O*62xS)*#FvNk@Rjw53t_@WYJP(ZK z_u{z7&U5Z}cJ4oS{QO>4$@d^ef===m zH>h145}^XYr-rCZDEvrC!!gECkdKA}G=h~&A<4gr{L?qCZ1TbuaOdcu^N)GN$xDxK z+;(#N{U18!Bk+L&u=gF-)~b$WFZuhAz^t+nWV=Y(s8yD#&q~>rn9n+7(P0BB$J*$4b^yuh2tLs>Aj2>6WJwuh0gUh+@3utDl3)nBXY@gu88 zXK+9>$y|kxb-E%T1DBF^8>PTq8j-j_vef^N>-wd)nHY5Scb=HjU~V5eeB!bb`Sqyb046%Y zmU|dXY?6sQscx4x zg-&Ck&^SOZxA#pXNeZmX8(YdkpM*&#iU$>_95V5AXf0iJ(;3z$T8S`Ar>g@M4#w!N zQHJPHSTrZnq}TMSe#r4IuEw7O)spJcYffj4LEl#Ku3Qmu33F*gVUA1Y1J+|AYi06+jqL_t*ZXLfcT*g1Z7 z*N5>Vpt+c#BK$nUGZgxbm%OBbB*(19hV1O4@*%7@mWu*Cm*3on4eND#QOr6pJlxvg zq5Ce;3BdDRLq;XvaWn%c3Ty+SR@er*wPh2ybJ`8r&b3#aI(Fpj$@`Apa_8Y*;6TGq zjh!}OWrnv8^AvCkF%9oB z0meqq6+8|lP6hNdwNcoFW5MMzp)e(iHPwfFR92ExsZh|x2x8$CZzeyEczt|~ zvpV^z&SW`e^z#lAn0~8GUY2q-9n>n9MCQ^9nXW`34bV1 z0h*HWK?e{Ud5LP;IIIbL&b~qGU9vNl@pa%JPEjC()b5~!)%M6kWJ=cP|F5M{kGv%t zxHH0;j>+w~hv#;Uzv($|A!vFd0qe8h51QL7=1z8gas$QO3xL~4wVi8`KeTa-ANxDb zGN1rl8sK++rf-}1<`3Q=karzQA(PcyqiL7ek?Q=!_Ofe)E31cM2N9A~J(SQh%o?ju zf@E$Z+iHyLcNNcq?DZFNEr%Wx;Yh$`v{1IrT^R2Sb6>o1Xt=|mbnZ=Larz#hH%5E|$#OdF#+RN=qBwEtKecH2 z3v#@tJ1(KYRU(Hi{G6>aF1E-2An3)4>nN}^C6glrgtOX%2i-kf)U|Fz1!Mim!w~m& z-gwWY@3?jA)LEXZItL}G)(QT15LHb{zB&*kjJDEirQMD)5Ia#XJ-qwmv*#Xu=Xrmpi(i99i-BOIC;&M`!mj*;l9?=mh!LwWxso*Kid7~! zp-%CpqQb>5!fX#@?j6cyn(Ef>f>TS2l>?0?O3SfQE;WC8m?&(`Qu^%W6~zdz69YB~ zsx-i9MU6y_M3@S+A(H=x%E)R>P}iR{76lcnyw(t(?%F5}ivb_v<)+rjDQ|0*(r3@t zZ4Q_|6p#)Ecx%S_6=VHenAFksEXxZ{WXq_p%egjJeR_<0;`feXxjpRtGD-JddwF}8 zkDGzgkIXh+xfH~f(zPJ#3&G=thFnhY$%@N(s8G9bz|DyEsw8xgG9)VI2%#}3Vd+C} zt;l6gG3m#FeEndI5%$WV4^#6@ZdSC28y!RxD;LM4C}*urmJD8^AipRPz@o0TomW$e zd{&LIzkv`H5>7FS)Pg6#+FFRR|BIAHx0rHd;ye^y>s6c`xiLw3W55Rw$nbx>5JiTP zE~_w;#p}&NM8Fu+qQU8b1#S)043MsD_{68-M0J|1vlbbBi##=@ig{bEIfw?8IpEqC znasMdRIm}LcmdQr8MJ{00tbiA;dA?ffQu%M$W~`lvprJunvg^rQEtSBs)s57lp_TnV}G7+jD#uILTA228ON0 z?Igh?y^?jq5y`*_r1g(J-uhNOlM{Q?ZSRY>rXw&UA0*yois+fs42MTy_*fn}5Hjas z3|k97Ce#W@*CLO7=vfS_LVMkL+t_GI5v&6fvpK2A&>9_4ali$gzqNwF90vnaegxKY zg1AdxH%1By(#1;5*&TbJm=GhZ;l_+>SkFK&o+z_KgkpSjsh>wEl5UGKh_F$yZvx%`J%+^}u8eP8(8)v9cf$LIZ$GY~Tr;S|IV=Kr?wELmE zH}8EQ7ykUXOrMkvRKuaBm{sa#V}>(`GUT?l*_^ZnYMEUHS(n`3hMzacQ1ziuIs-=c z$mD->^UUeZljk!PFsys7X~{Gx&wDKB0ky*&!8%`5}(;vVsTwXJb|aVKi+wiA=6wb z?UzM#C!!!`*}|kKEM7?Fa-eZ?^@ULnF#1AdQg#R9>CmIp%QKC$$Bc>%ARpDyTMlNe zf|D&5mnD&B;$i^-PnMkj_>?)bS&ZU4bv?FG^vH~#I*(Y=flKdnM$ zbR(iQH&CJ==8iLtA&Ex)EY~)si9HU4sTRuw!qZQ?mL@&U*o$=iSCQ1yWQjKz-FWf%exu_rk|r>Tb#vxjDv^&`9{!Vi5^~!p z;#E-u^*MadnRwv4rny^k+BE;e*{ChUF$FYSd3{*W)3i5tgjoH5X?qXA+penG``q*d z0to~{=q0q6gph<5T4+H)Ac`OzMd?MQNa*DWf+!CKDTWdeL_sNn(#1&cok$P@g0v74 zq@>^b{eEMtwa>XXfv3;!?R)M%bIm#Cm~*bZ_S)<0Q~m)2kA5^wX7NLCkfd!OtHa5_ z)gvW~$sT>>R@5F&bYVNxTWj)PDnb}@1#nDR1v)*F&5~I|X7G=fpdh2{oMR)g&{=HGBkcjP zW0*0z+E?*&E^^BvskLwR;lSi+6qV$w#}&WfMUaM`u|^bnBRHBoh~Ds8(euQLDoS6u zh0bP3unJ>q&<@3bJ)mtCz&_wkoOSET1p`Pg96++bVwvToVB|X@U=?ri2GeRYUh!@D zD4VsGSjV1L3Q^Z=p-3TUOgTqw;lzu7Y+3X942XF~Bz589$L(@-WiubyvW;i*2(#!# zFz+^^4nYBu)pJ9+Bj+F*gu?lsjun~2#@?gXM0wSH{+6A4^KFTMZM`+DwNp!83@mZY zD*ADNQvL`EeR>l23ie3*cHwSrrq=)Vp4%2b8c2VRJd%8A2QWdg3NL5+XLzGgy=EJs z<7^JGB5ZCuG&fCyHt7uJn5%CZ%@MhA*-Ho_4)zk;Qg6D#<`i@*9$1Ch)HNh^$7(Na z){8x(VnP0Q>&laZr3~L3x<>DO z5+?&Ku=KWYlk=o#wjEt&6}@z9Q*HtT6Tp3rb%*Y&uO^ocf4iET?7`!%NRh0>R4UIn{79mP4b# zpjsLa0eg_Wsex>`z9s}LRX`C0YR+S*jm7)JQwMt|GO=#@H$s}zU31R-g+Jg#46tEM zAkFnISyj9E4%m!YFjZL2(vugEftkFkSr@c?Hu1c?K#?|&@{gfd@_E$g1grw8;n-!g zj6Bngm1W|8wt;VBW-G^(vC!nYup58wuU_m$jJ?R}>(xL}HVXRz=TM|%qlKSc0|}ob z7ZjS^bXrip_d-GxY4%oB51w;AxS+S{3eFqD5_JWR9syF|l^9U%}y62U(&;Ur2Ss zz4&B~xHvWkG`Lg-uX~RY6k!>#CKf6&n0V@APz>cJf9Qk__y!(WmEvU_IY^e~rl6Jo z7q%7Lpxf0Oemq7#v(M2$kJ4OP@6qhK<0s+q|+8!z25J3-FKRX|I#y%D%}HuxKXB-t7rA+udFCRSeRW3PJ&J+G5h z^_UizxWvNb{MO`?urb(1`Ph8$KRWlYl8GV0YwwYY%`BH9D96q3DWGWyaYHOlMDj&g zFOHjV>!;P*}c({q;ZJIQv~D+!m=%} zMUyPG&7_nkd?q|IFG!N`FK%d(Z_)@?F%bt{lhLJYaaht&*r-lxz*5vIr>I;;bV#3mvk7EM}`*4}3`9G_-LnV$1`OP95yTflg; zBH>3fodL4o^HV#S>;RB3Z$Pv0l@UD>LKxE@UP%tY&5C{IH=uo%PM$_VNLQ#aZQEgs zo|Y@cbm_p`hZTdRLB)3c@PdSg3!?-zaJJbev;F_~GYKqPlQB;+Z*I+*IWz(ZQ$ugm zp`zslA|D3j`@*yV=u2O5?~rf)f=Q=wfN1WT(l~0|i{+ru=UxfYGvojdvj0m;@8j;6 zbbLmcB#4TheXt#$iJeF?Buj)mkN&R?h@*`X%*pX{aD_o+!JH$dVie~D*ObYG985kz9WKD?#-8S|I42mC z8L0C^XoaHU5%AbA-5y_+xQwZ*Ej6vZp)EPFz`538KZyxPR-TLDQ6FCuqv3iYoIQxa zpu)oZ${New=rBgp$uU_Gy1fu^td~sEi{%2=y)l z9uCE1j%;UONFd9e`ud@9+W?4c*Rij)(4cnT)xUTa(zK`V5(Q_yQf$M~(mE;~qgp?Z z-N&>;cj-$W0r<3RQEs*de^l#;vkGg8jNLR^TgOyn(*V$L*%xng9p+}PYlbz|1?w%W zgtI_9B>E99%~BgEq4GS#Z9L~M;o{z7X&SBqMa#mgBnM1Rh)Lu5pc0tpKL8OqIl1oT zmD+g0)H5em*qrZR%1f~hGA`))Iz34^ek=gmOc{aWG57&kqc`^qts`qSXBpe(-2QFy zhLSn(q(AW^BBqRE7~pNJF-Jgb5PbpDK^52&i-j{x+*WMQ>TSaA%_P3?G{a6Sk|#ZH zlHtyLI(u6Sa;#t)m!OHC8pE$w$i>G-YX=Rc|LHbEEIfiQv3Y|*+%&A71o^m%h; z&kF!L)I2?^ewhOW+0qX^M)o61^%dh9E2w_o$)i(|vdoRKyT zJ+@Xc%WWzRv{_TVMud^a$ZRw0l6m<{-q35<0z#GOBdatmXm;5WN8g2|+B9{XYzk~C z1co*T^Q=+(l!d1&^6W7y!JwZetUqUyKj!V~9jfV9P?fEBRt-X9>P299Gt^BW06lET z!_2@lH^RYKUG!c@JtZ>wBpP}T91MNA6?Zk#l}rH!V}(}7#S}?>90y>r&WS5zgL9L_ z5YXl>povXK^G}|Dn@N*5uO;@(-}LIZZFTB7t2cf3{2!dXZ5Pg3UNpiZY|E~GB4p=n z=W)X9bndx)NrBm6D=!|=`jv&i!0(j5_r&B*SD_~}0XfB-DurcE#if7iC)WX|m#*iy z9*q(LOWD%eV``*;#ImKbM1SR!haBx0E?5GVqL4DV;pcZm+;WDFezcu99(0m)jYUXN zqp!-=y?QLQFRF=H6af{wA$A(oKN)r()X-FRN*YWHA%eQrUYPZ!XG1n!eWrpw>?0S= zV{64Uc`N}I0c(AIN~~%|?@XoEY$ajOodp(xZt+^Vb3nFfRV_9XOFk6gf-KGcS$ zg6jdEkc#ch!nAv$Pf&b}xarm~WlD2E{-aFfXnO2o1>jyrzsCWM!GxmTy1v+bq-e*V{gy4rmwf18Bs z`_9|8?Y^_WS-11Ht^9;DYck%U*@ai-%n7Tld~BPUf!E#$d{lf_f2wZVE<0`8c`L|s z`4wY-zi!)B_gl|raY@YGGI(4mZsP}W{kkJc-hs#uCA;Rc$!`Rr7q69cotpUJvTeY) zv*iz5fx${;=bgW0*DMu%ci4`|flEE!#jqcvbh(V*_?G1TnSo_eWH+Wz+|V#BhinW&S{ob6QXyoi zTx=a2Ax#4hWE-RGn9?jjYcV`!Xrb4Xd@jP9!qMv_9LHG1#e&Em~#d*x^arC^2xpGEBjnG*S zo?%7Ebg3!)#1u&~P-B7?Had+K66$=T7CaHMO&1|RphWh_3 zj)-tJbb0DWN@<#1FG5J9U8Ki6-GUI=nT5Vcw>oJSkZ%Vw)Bt1jIB*1Kv3}>|eE*91 z449I=88GUz^UcAYC`A`d07l8sdH`Y!q`hxB4Jppn!0R~i?MY(`=rjDZ#8;s(jD%GaZ1DQ{UGDazWl(!DBJ-_;y!5pF>%1$Y}WWX5@1 zbCeThOre=YJgahMVG&kns47=s=sdty!@0ROHT2SZNki+5J<6H( zE3($KsFZVhkDa#cwexD%ZLH^3yY0kZ71)WjARh~18Mg~J4!mi{IuGlXUGu?U){9vq z?zGb`{s{sm2UmVf8e4oZ$lto+??3Hy{(0cN%h;KfUfs&-FmFC&G2=wR-&XV07c-Tw z>MYIF%}*`AXQ~+kYdOCk!HmU4hV{+X^LJ)t+A~xK{>N1TM;^2D+XFEN5o?Eh`qgWe zq2eSsn<}>AcusQ%<*Vx?z>4jw4-rf}Wx?Fj;BFgJZQl z(3wB(?T}Ga0CI-Mk%pmLOl31v^zIfw0uf@uCAsMCSz_Wa^;#D>Q3%obff5={IG9v4 z;BkSl7=>&D-_TK_8P+mPpmOJNbKyci0kr4I>j};*-J)T{AVw%Yix)KAO!eP z?*@;BG}T&zzmR%i>vXh+Uub3id<>_Wt1yCf*#{l}91~bLrO^8g3$=cb3r()sqnMGg zXB$xR!{`bpcaNl1>)ypst3rbeUw){CJ?j9^*J*9to}D^m51NG7S798okpX+}B)Pzf zxgN?1M6(}CWA@ZET=ex7UV{3BgOr2QTZT*8v4S_;3|cBQp@@4TmWPrxQD8nLshp(` z8a?>_3jI?&QIK-KtqS&*2X5vTaWVeC5k@wH+>Gq_%Lz~lQP5N1)#eO6#}BQt)>^i7(87(<4j)3|IvfXwmG5gPUDE2uWTRhuXFWG4d9K%a3tpjKjsee!R4AkT$=V#H zcYH_h9>?Z6yd@f2VKka(oQ6D7pQbvLXL|cw&P@%D(#CO9FpW4AApe9db;+-%rUlSu z4AL%ws4^hvmZlvcU-y7x8D8Skc30R?OxSEnXBKPy&?I8z?hO>>4gw)I^;lb`!tfNZ zZbcfXO~OngE=|}X%Mjd1uZK889sLqWc)F2c@2s1fi=9~3ISkgB#t5&rA|W7I57>EJ zEG>u-i*KwkO#zDmr9-pbDA&f(p^0LNNd6mhT1|mS&9tC*_U!~5nGrelWy#JL`^vDS zt(-GM1RKsXydJ!HwbcueoZRhWkDV>2XB;pBs|Gm}ux8T15NOKbnng^w4Z;soF#UkB z<-~=DG}^EV3z&vgq4h7g$;Lqu1V&aYriK zNv9-{i}8&=LYQa!IumT*0LDgf)1?~l7R=UD2CEDz(gVWXrkB~)p?EA)5S9*a5SuGk zfgFg%eMcc|@|Bi-wk0do38#<_^kAh-qZA*#9BCFXiN^B|PqIaIK|%dS6$7?`Yd$1A z`ZoweC$aL5#GqOnn?af$p6c0W1HaA(sg-sgYyqX!DUS8tuHL~np19!Vayt&K$eEv` zh4Ia~>UrZ;E4T7F5dh_6$QfV=CxOK0IO5*Z(vu-+#Oe|Oc1K`i@iw&Uu$)0U_+v&c zzGek{SA#Q+6#*b!SemhSdB_QaAqb1 zAEb(wTJq+(X@}a|ih1vt47ySrXA;;@B{MnkwU@d!!gnU4Df8c$yyDobOdV5rK#gZo zMYe}@9oxjrw$F>>rt-fcZxXkcHoeBtLbWJw(OGC zFn{T&cwhAMn)}>zKJ~&$=P=3Q$7gh$-TnKRsV5&=$cS?M*iBYgzDS13dg>MRV!CvQcW>*Zfch*(%~| z!c@nhR)8{lXv28W5{lPC@#O zOh#7aojfBNoe*gIUU4 z1Yp(slr$KniZjngTi3qG_r|=&Dh} z=o|r!*l^LK^X!RP3cGVX?nX$cAPB0H^azTcMboypw+ma_y>2Zlc2}6FF7+1VP|hski8^<5frEV6b2$+nIJ2+bLG}`+`X_e&qbev z@o+lg(@|Ubi+Q}8tgJR&+*t}F4C1qwE^T+xtL;8cYwIQwln1EB>2)DIL6muIol1)D z7A6y-& zdv_HW=K^NOEp!QhjYq}c2Kl=C*I6yOwHA;&2yHgqVI8rPT=^riOIUlikY!(e4O-K# zV09b4)O^NCJ$axj)qI+UB|s7w%&;|;3Ji%v9LyV?AnIq;8^Xn!7N5u9z;{Kp#j7|= zubcvYAA*qFj@LnKPlJfyv09LC>e0J2`(0g6ycEKCGUMEhLvW>)w8r8oL6XYi;Kaa( zHpV>YVk>tSNhpyZ;YONgE!9%L?IzZE;{c#;rx-gC(U?llA{*IqZa~u0OaL3~V7avz zK@DD{&fFBFaWjLf52qMWBYGq?OfOakRhS)c2n0>94m>14bK>d47R_Qs!SvbGkRhzb zr;RP$xY7P^i3|JoUd@5D`{+ezq?%p@AclR9LfVcT4p$aG*w6(v=dx7iwE)N7zokPs zz6_dtUQjm18&3ElsB{l&rd>ZN=&SXKksVulrgzb3+Dknj2y3%@P{}9w?&`kuo=12C zFUEvZ#0=D|;%=d7c0X|DgNI$D;~Ee9CLVxw4p{4DPZdtdsR%rk_Iw1}qpyqf*;1(z z^-2{nd!(f{SoDh{c$|a(@RKc_I#PoTifVC)Fdv5ml z;BP*YVNhLYy&y+`wU89oI{*u91wEofFoixLx4J}cmP6AJOTFRt)oador-}d;_uk24 z3>&AXf8_~-371B5W=ljTrKn7}VnQU@CYr#rlUqWq1Mfm=Af*MFy+}f&=?mQ+P>}tA zjniwGlK?JB6Jvy#m54fa?h0pgp6SM-k^N=&*z)@a=1r$jg%hiv1KDW{f1UTd^Ugc> z?6XckYtOUJ-^~HVJHVXo{;aHwD3p_R?iWVr$2Yvwo5Pxp3Ik?=Xz8* zQ%9!-{dH&Zp-?y>aY^T4morN}1Yfu2Q-lS8kvogONJ)d){k-!5@HaWmJ#SpL>=uCO zC`q&RdGzb15;;wG?drLYBGzaI)dqgiZ2B%F!@aaHY(z2tEV3PwtOXqk9(_y7wFa=A z9Cd}33|aYeK$2Uiz|>S`0u zoLzFmWYTrSHGZM?Dw&&SGQkfxr)BvK&EksOFthcZoVuA(_zB?j$42VpW}J!1%z`%) zhgB5M&?jvaaa)wMNZ90x%!vV)FqD%S(Jh3X<=bjdyNAh$lrrOx8Fiz z<|+D+UdYaT=2p=_|FaE-g;q{_BU#Cs7%jo3Q2ULvTLL;uh{YG$04&Xy?SlCXICpdB zbWA_+8F1lQRrBn-0HOm=k9UP9dDl$2xQ5@C?1nYE9Q^knbgU+pg9@ec@|4*>F{^E< z!GI=C6^09-%-LIx{Lv2?6m4{CeDY5f!O$HrHUH#B4DtC_NzU-JMr1Z?$*Y}Viq`5x zZhwslIysb2XPVtw$6{TS3qbEp{O}u3b!=a-hjkDdB;giYtU<)I&{}Hp8UAV3t4S_$ z0OglwBb-Mv);=RI73sZ0{u|bo5!Z_DH=85eG?rFGVIEoKb+|MOFvlb$VUX-Gwdr)x zB^{ciG^{zjmBDVxWiAy~OgS&)!IWvCF9LbVG^QOnI)nIZ6rT9sh|%OE(5jN5GxL

Cg|0{7#o=l$8JjW2#;<>@e>K@VV;rpmUM=YDGZ_Hj$?n6eyi1@^+Ka zfDXI-*_xtPnV3MiY0d+gA64di&6=ZO-wi?fG-Qqh%q>qT(OmgI^tBRmwlVSGJ|gk? z6KYPO(dY&yoXR2bIo3%tn?aT;(E3fQ&;743*ap30L`q)1B*!458wEAg#vUVwW0}d* z`BdKlHge7(XeLJPV3;MV4q?`5h`QiD^4cz`$O(=cL5RTV`@(c4#wE;x#a^@@s|A zu$fge>4$GE*0UgMltGCbV{GthjjB z5IxWU#=IP43#?Z|i=jR7gE78p|C?Kb>J-lAZ?l9X8PVRTrX4t&DkIlOQ5-Im94*Vm znHpv020)r2ROCb7W0A+P6qW7~GflZOkZGOO;dlWc(&duFp$7ub#HQ_?GgD{N++Ipl zdTija&04%x%qD)L)G7&5+6jfQbrU=&S$)ENeL0cKRp0g2-bD9NUL!KR40H7G4ykjtzwVT_(|MqV^iHBLj(ZuqKk zNCdprYO9mFNbVXAsqh?-y6#wSFs2ImKyO!L?DBNmp*ht)OOmbiZWOF`U2iGKum?9@ zgO;Z>J);?)DQ%4QRAlD|gGo%njkwcf7v(iDMr7*k>C)+Ro*M~-OHLeMOU|V+baJ36 zPvmw{P3?9}HhbO8q*pLj=RgNvq9^$f8Mg;WiJow&D;AT}L!2kDGEY{H za@UY`Vn)~!PK9aKV` zq+|6~%eI|)Kb|zB$oxuq0@4-kyD@qT0cxkT8Apdl6POWuR2IC#+=5NoEB}bx9=pvF zFz}$F?3>VZ%JZU6)xxL7Y&X&qony2l*?5IlxtJ;}6%BpZz;}~>$~?EZXc`&4Bt=fd zXh!KdJLweg=h1qrXTRytW=vI&dW#xd)6;{tJ}8Y8`t8PmlyR(SX(I5}aQGRmBK+^D z=OpB9sa$CJ>}-azcKmbxhQalXe-T*HvbQ5LO3>u2920@#smCU@3e3HooK%+J;Da#H z&4Ek1E?g98wa2p33Q5N(BiPh=G=b(9fEpgLvg5@MfxK%)R?xP~mI*g$a}t{HLV`7& z>!(B#qNZ_TWF~EaR7x5S#K1;ZWac7`&i*2^92_XD9RZDqF`Z^5Y{;1rHkDR7x5^DP zb^kZd3#TQNfc&!c836jeTw|HOIZyc(`K%71?!0x2qhziHLz-g>0E358I^SNW8)!XD4*s`dO0vbj~!do6)L|tvRUM%qP~xB*#Kj(q_H{*l3n&^Hj3N09qzg z70RzE1$A$z01WzH*p?JF^T*F-v(A$_WLt{b#B-cI)WHA;Lr%>Hk&U5_atw#LFd6}Z z)0O}AiAx6Xm{Lk8ej|z=y3ITrH_axwooRv1o^(>qbVpWfeolk4a-=J>xy&gJwdZ;} zHnl9tW8z@7H}nw|WFwYGkS4ci81S6J?PJ$inVSnnbN|)hS6m%)?bW}0dG+out-kXk|CYvj%S>X;?TiX*a}L%f zCa?vs(BqYu@y;Pe$s^UHq?_&Oty`VpxdS@8WZ)-BDjOgDQXb}HLo>zZh}kUwy78=O z0#FWQ@Z1R4eYX{VccA#fKn!6x4=Q=%Tn3sA(xAgDzB-g-Hsv2~DK_~V1!dEVuw7AF z<`(x24)u+WuvA_2jFT#60xD-G6z`m$q(-V`T%0$W^{s+^-FGO^=JuvhZ-z%J9pN_X zg>L)JPvZK5$h^m=ul#C-XI&?)#EFlux41O1K=fQ)ZR4XHxB*VbaFVVIrom`Se7+gb z1!d0SvACo{`BQ6I9(suhC%fmtMw% zu`@CUqdn+XQgBTaP@Nw*Re*I~;g61xxhD^W&{63e-vLL1ZYD;{d5SY?9%d4-#5Ni6 z0KB`IxY@&IJ|R?!(Rn2gc5t%C6k`A$CWXyS%*Iv#(SP2CwGkr>N}l3{uj)?v5wJMF zb2TMNzrzu`vNM9r&d9l^$*^PIPBi-Tf1Wd zq5B-qafplg1}~HO$87_zc0@454tP@zSr3O`H&vEn&~7|0%_ zUYf$wXzG#_R>btN{F;V&HtSZG3AR=DfE8y`xW{Mgmr&q0^A|qL568@^%yHX{T%OH+ z6J9bZq28tINLiwkYe6@?je0rqIF4}`{h+B!8YJ9}Q-pe*ay@PA_tr8(M>pz?L#-Wh zVv?JwD(2Cy=svN4jc`%o%YX%nQ7_!$Y$lPJ{hE9;>|AFcTs-fD8;PCL)GWyRcgE)}ibHG@Q972rDSE={!+{DF#Y>z}(8T zI5#;e5$bYzp?t8Pp(e=agaIRby|eT)s$>-1#WH8 zcE4`g4oQXhWSBWK=Mc=pVcJ`F;dgyVyMO0B;Pq}M54l5;4bITkLjTyJ5oHhqwW+Id z&t3gH!gfu)lBB+~3CSQ_*b>I05Dh!z=n^G(Oaoqb_GJdL@Cdh0OwaW!i57hct3m?;(TbL!>W zn_guZzOD#ID3)TJBn;!+ONW%}Zk9#N9h!OuviIkmvfRmnfS*L^@IpUMpbnbMCgb)7 zu}CNUoX%r1q7sm%VJ4QtxyvWa&?hbuT3+&jhm2nSP>_Anzpw}z7rccC z@4{|b|3PR8VIF5OnkE*KDvg-KV5ObQ(v3u;j#LnGa-~m*l7wA9o73=hd75n7X*Sr> zbzL2rOfaga5YYc%XD?jHW>*j*R(HsWXbu$}5K80YfQY%zVPApItB80Ya(hocEIINs z`7n53J02JZ2r8Xn`EWKYc12*zT?$@)IC8f7O%aS9?z~x3F9_)HX0EFzWO~gxE$O(+ z3?7>?2Fy+$v1o!Kgf#3RQ@oI^(J`2COAe}R!@-^({a}94N{ieC zHav~%|1}rJ9^C0UOm?8Q2@h|TcEo0x;T!Ohmt!1o!Bf2!;^a=MkRvZbl~cXe$3c=J zN4>Mm&3X-*oJwK>Y4TZQ4tPXoNHN)jam4d}9ED>V`UtoAkY4IN-!UFWZ6i3FNgVWS{)Qdl5@1HrLoiM z%yU=o|H|t9|F*jNrB}al`0Bb>Tpe{4mxF)*`PIqakMr=0FT3>Z4m=L3!g`1&zq*** zErLvLQS@ZAOQCjrqR$e5@kF<`e_BW`3} z5?X8wdL#`rF$$<4lmCaysJ9{FTecB2dL8S$A;?d&g)c&RHiIS&z|u~b(%h<_EuVMk zAZV5ZaDMUnB$7*!Kl$MT(Tg!{FVCDpWyhOuc&X7lC#8FU-Z{&R2GS%;%j_n%Zg3fA z>lS{C+Ax_5=3lD|J6|i~&-!A_^u#I8Fk%V9JvE$NW?+gek5qHXrNym!5(4imnt2%+ z1ADUO))Xt?b74eabb>@nxMU8yHw*iI@f@aB$6Mh^FeyZa4NXe26A%c}Jv|e=`j{*q zv(rx2-%$hhD8!{Ok3xaDBuH2dQVoj`#eaQg{Q8F9-l&khrIATu!AVfFO4l{Suy6>{ zmMLj3O>f!J_`S9N}- zA~)AlPU^2ia?!=}E6xM&V$o%8_}ihg0M86-BO4={Rmh^SiPF-gl~Snap^Rwr!ne|G za8}_yVL~|~w%(|9P{6!65Fi=)Tu`&E9DFk@o$3jzX2eP@Sjq-wAXUsBXuV)kyM_d9 zE;cS~YyP#^V~NMU@^HMFZ2I7G!HwERV zF%M#BoQ2e(WEce8JR7&c0YKZh$Rq#Q;*r^`l4K(aY%UNpD{2Iv5IuEJ_$iurjT%wW zOchHkoXjWQ>pj|yc?|bVVmb9(SS5kc*_jriiPNx=6{Ed{a0cN}E6xa^<3#cOUT<;A z>FAIduWdW=Q9V^cM^fI-i&cAZw6O}qk$=4H#NIC?o3AS4^TdKLH~e&vlz*`*AmVN+ z@Y7q|L*r}1`Nm7EAz&BQFq+iH#^K#*SO1_2*R?NvXZ6W9uMWH1>dALp-SV2Nt6XyR z;Me7Plrk(On`yz9X7`$^ydV-yki&Q5X*#J|IE&3ul9KBzcOvKk?z}9SQ@%FcvbU2w zj_fsUY}gm9>Rh;40`gJF`j((x$TlgByh-qC`pNTI_AB7*r9Es~N6EPM9S} z_6dT3s%&$Sn`%(*mRuHj_%`L3n^L1&QPOLMraEIeWPeV*v9`1&uvxddjZB)-sCT25 zp39~Yu&(;MnL|U*=3??2`++46FlU#@VKSK4worx!TV^*gaPsT#1_YDIWeGOQ$$SC8 z=$wqXOy;!oT#^=3ryd+~VtYCQ&NRnUUaHx4S}B`0W3~&F*q~<_2QCZ8DgnsV&~!rY7Ly4Gj6N8Q1`Q`B`;wRb)4eO9OuQMa zq0$H&J%d#KjVQ8bTMk&@12}B|g{Mt-;Y&)yBuOXCC6sAkC;5@iEQdBpuBk?zc34s$ z{mX#bd1pIMeXcsr+wHx$X9*TA-3k;h3$b!^q(nmLo((4hW!*MjI5e4nMnQ%dZqv~$ z^bK`);d58YHNRnkXAmMxr$PzA^iNFjW}kfG;8kHzC+tXK_!}H+o(ivT4!BV1!m7il zw|M);G*VU~Bz${`y@J_EkpJsugQH#qaXW0fxs_y7#*3|i7Gb1Gdm{~G_1S~p$Uyfs z^}0+`m47q;SxDoq>n(Heut}J0JWsF2sj_hf?q@tTN{u7pX1zU_vo2vf)Vq-n?wg6p z)~u#Wyfce(3iK`=5WKi9CMbItI)c>Tm`W`tcoSd?Va4u8<_5Gsjogl)3B!ce4ty^~GH*Gx4lMZ`acx7lpQTH=N=WjdzJiaetVdw85UMl_@A(E8o z?qSsCmM;#I>a{PoI%t2Ffcx#e`qbA~C;nSfGO5Hd6OcRlVU8JV+}PS=5174wEpVsRuGv>P47fmE zbdbmb;s*Z`YZD(t(A||Wj==10D-b1p1o=i=VOXbt)rcG04$TeAq)q4wY@^-OW&nBF0uZVK(e$4aVg_qEA~*9$IT{&yNryRfMy$X- z+4@?`@fN_uulemX`BSdIQLjW{ieN{lZu@9MNRWXXK*PElrx$Qp^1MDPO(hB`>x2#rDR!t|&+y zHU#sjYWsa_tnTO4n}{;-KXtLUdn5atG8xq#@HBZEQ%A0pPF(F4glxFz-OP}g>2l+| ziUlkjYXTvL#wLm}9Yv^#=mnBnj{-pR96wk~fEU_GhhmFZtjA0`Xld;`M0t__6Pnbt+$&z40|xx48Q1(93zN?Cqal zz3hFfe>-*c)ALt*@8xwQ!QE9PtU`}bRr635WUkRGOt)&tqQ2A5I+#^l(0i9o?y++c zL!B^y96QznAy=P0clR3}ya&jb2V!wB#|i_pJzxIV4cKn}D1^5av4TnJ0S4@Dj4=fs zC4nMsGl^z_sb?!isxGIx*&)qDU?Wc0=!&|BL!Oe&%v&JJMG%p#F=uNeLUZP*#T=U9 zW5#+<002M$NklzG=?HkbcoXag)Z$ZM<=;414=M!ZnK5Lwxm%c zu-vl7O>p}0*jrugSC6^Y-EMc#U2k{Ly?^=eKYqp|KX~HX8;+sxxKEyBq!;^aVVW~9 z8p{eGrNP{dN)f3|&9>E>Pk8Y=UUvdA{3ei9F96X%F26`&Rp#|NKA$}CT|fTe8G~iD zdh^R)@SKO;duje3g(i@U#L^`Gn;?1Uy%AiTp|Qu4wg_Pq`){B7>~G)cX5ab7DagI; zYo)OQ=y|SpCSTWlbP+sU7t^tQvzSWp@TjHhsPrk1dBn{QyT;K+9(?m74*JELUH^f< zevdc*-Rq>yOMEk#TS6@X)&BU$KYrIcJtC~t@_s29?XZpfzW3el+~clyuFdYvHY?n8 z8Td_A4#D7WfbM~&^VXd}a+oZQe0*=$3)Uw-@v&PUeH8knE`MQmMWTU0BEV06^rLsZ z<8ABE1_)zd>Wx>QVbPZdTiCFrx}nrN*6u|W9FImn<*Q%$%x69sg}X0&?z6vm>zjT3 zYo|2ka4+8YZgs3MgRk@1)YPFxEcN0j#$4y4Dl}1U$G>&kuifQNuYL8a27KG`glz&NCZL z1}}q086^K*d?=fI9TUQ|F#+TJ2|hze$FifVHLB_)pIEv)DxCgGc@BljprPcIOOc|oG_XBky;c_x+er6*H^=Z>Vbqb*f_%vTwt26 zuf(f!8=NFIBbrfY1)c}|{Bv3PoxhFW`QtN7tn(D-H!=lg+{A@kX`+Z&K zvHo+(=*EiB&l!TjD?DNl^mXkhvP}Y>dp$x* z+jDhs9(%b*-h0p0Uc0$i&z1 z$6)|96<_#HfXEVv6~6G&1dDsSQw^(4+xp(@-!thxD+NN83wDebOSH_tT(VI zHtMai$#2#RZko!lt}YZbN5mayV_hnuy}9-}df{?X!>Z zr?2>sl(J3aMqlWEj<8UH8PUTiLyr&5rP8Eltj&692H7YOIz{kM?NYDF48f^Wr5s?g zR;yz*`Y2`JT{V#hXYy%=J(heP;d~}>MPo$2S zBD~MX0~GZ6$S*<&>cp4f1707!Dm{50)C^#cMT@MDkFQIk!A$yCDvrcs5IW zUg83Ro1?{G=-KP*I_alpuZ}-)_1-V7eteG0+1++?Y1NnIcy@j7=Y`_XJxeV- zk_Ps5lC4+UM!lQOB(~ zxsk)4>^%|KSlw}AaSr5F8fkF*uUvU+bj8<%O$S__5pp)#^b8s~nS+-zta*4w8BS`o zz(c|-4orQhfiulDKfs)9n&x~LT*I%$c$)@n-T=@2Hk4o6w(0w#}?7I8a zuXUYkA9Cb>eB%_;;N|$X)!)DFpuGlzx9Jtza!gf^}ct!=_Sv3y#Dmk zPOHy;^nHKy_y>i9SF7j!)eE2X$X~h118;Z43!n1HAN|-Hd(6W0c>$KT)9Qn7f8*<4 z^2eA^@;LD=uYcp8KcD7D-t`Yp{qO5ifeeBbR%JgAz54}^fB1uMah)gp+HFtzxL))dS%32@U;e^J zK4|(ot={{_*FNRG$3Epg$3E@XkA2$xj(zHVkNxUNU$A?(p8xjOp0FFAlu52Hdg^07 ze&V~Icih8&{pjmF`fj)V+{ZrPtIGThP+s7^^{-EOz@2V!uUp;VCC_=5d z+w=A+zu?H<_~cUo-hpt&wcmE;w*Xgr?y=`Ju6@wcpZVM`o%DqdzW+oImlOGxSHAou z_q+F9Z+N{!?s3;+KbzZE9QkKF^@)G{htK-zSO4vvzxFGyc-c!ja=!ol?>+q~PrUtY zkG|PaM;`as-#z1u(|b_Tk*ja~`_~`%oA3)hk~1()--= zuGc@};CtTf*w1{LJ7g(xwR+n>zU4s=xZll=I^vNJd*FvY@c!sKP*$&g)hmAKcDK68 zjShdrLm%*+?|!@eKlh~LDB-{^!-_QxHzx0O_q)Jl`S{;^)J<=6Z1vsmefQVzb=OaS^5ggT z)jJ=3qa)5b>umD<{`XIP##0`D``g_7W;Z4rxf zeDAye%BMd0ar&i?xBmSbU-&0~e8MY_Kjs!UzU57C@S+#|Z$^?uuU20^`Q#@({;{{X z$@QUq*-KwshtZ)hvZe9nH~!u4Kkdmn@TJUi&%Mt*e)Xi2zEJS%|K_#NefIBT!uT)$ z{N8VT^BXw5^KJid_q!g;A0qpmhd=m%zi}TlJ-BC`eKx&x>ZBz_(wm|KuhgL z+b%YW3*YL3t@x57NaRI0YuJ$m01v`CA%EZkwNZpVlwyS*AQ5Z zvi3dlj z4cpO;YP}O!l__zdi_!fINtanLU6=m@A)RMs@aY6@GsbJ^=w2Cgl{GkN;+J>r&pc=K z!hc@9`E#oupSRkXyJ&l^cFA{Xn-52Jzr9um?Cs++7hPS3{obqnBk#4VkPF{h>MU7I z2O-bXM34K@o$Tp)CmaU{hslIZ&$&h^+YoqKREsH^g%!054vzyx(Bgq0XWJd3wJwOs z;|421CG$GA)-ST%mmg0HXKOg3BTo#hoW&(NS+UIP= zCNspDyo@yGHPr=7jB)ZX-*kP;ABrgGSVoli8jtiJQDfB)=(V^GMBy5lOOSGyl()_fd?J-PyhJ(pZxF)`)u3l#J9g; z{{yaoNan{s`|)4?!l$3`yc3@F%D3*m$6n8T=skUN0#koHBGG7`e(HC>`^~SDm|k44 z(}ek&hh6Vpzx$+}cHa3;zxnWAeek2rdA0iCX{Ubo8(%|cnXh=}_ z-n#oC4+url;cfR58UiY}iKj|(1_?{cx_$I8$z|)^6eev^8 zJnqr=y7#aD{Xe{u8+A{7{A12J8y6}6>eYYo+P`}BBY*qRuYT>{Uh#@ozW;siabCV~ zo)NS@U*Ji#97oR=mOG#O?5F?qPoDR<$3OA;fBNF@e&;)+WHmc&xyQZldzZW1ZU4(0 z@OzJY!fkGIJCxub`rzL>^URhuX*XqU&WAl?W_MH-RTf|;^Q9m&2N6=gx9?851;pf zFQ5FS6JGvOOc%ZA-j6-*N!R{`gKu{9EfKgEh>{FH|Jl#r!p2d0--+*i`coeNutz@X z9q)PHuifL`4}IWoocyJK#Y#9syyjJ3KjoB{z4Fx$d*tuF;`o=m@5Fz$+|}y0ANIhD zUF>3i^TxLx_k^ds=?$;{;0NDl{V{pc=`ZY>*Sz+d-}tv@vx?oaVsZSr&wQG28n&$7 z^7n7N{1vZ=2%fe64^KZG`MO75?{UXHY3H4He$Yc6{)pdsv{cz%@@Ic~=yeWz?d#rn z@F9mj_c_lDw~lO;8@k{N-H+VB*CCEDw22O3VC??MTfo$eh$+xZDiarX&dWJd?R?di zz|cyVaU(eM(i)JXu&!kqaCG8wDKto&c;o9?mMWURX|P^07!C;(5@6dk(+XWyH98MZRcbdSjfBv<@|QV|xmbe+PC72jD0u&!iNY&s7w zFGs?XO7Np|=nzfhnFo;eo+r6m9e@yD9(O!t-B!7v?0dZNNsp&TtV6%Ww_j&w1??gyLLP$smP z(lTgm%y0$GX7g(%O(~)D?IFa3U=v3;LarwKV%Q82{MmpsA~l()g#3DL(r97KIQ@WH=goHa z?0rWwp8{czBi%=~$T*^o2Kl8geA;uK{?KPX?V*o;=r8}yZ{7Y0&-n9e9CQd^Zk)XC zFaPu&zwtXazWMDhcZI9m{}E5(L&6_D@f{EzaM>$g<-mhJa^kySvxj=K4s?smXcuJ&t>IPNF^c?LHEJBEzQmIN+&naf`NI!7LO=#jhavByW> z^S0l9&I|Xr$VE*u$&iMZnH=?luXog~?tHh)UFmA~e&li7dXz0JfBVXp-tq4DKKQyv z?tSr#-|^S(eer!SK~Zrsgsa}H0x2;Qw6Qsc9)kQw-tSVE=H?mA^uf00KJNtwAA0D1 zm)`#Y4}SQ!zV#pf@y)L@Me~N{Rj+p7UVB~Sx`!We`72xz>^bM0d+@=BJmE=CzwG5M zf9->Q;okTCjT8U*pX8t;v)$yTM_>Kw*Sf?dF7dmMdEAf32lB>vf9~`C^x#9TbLmU( z|DcCFf)Lz0#P77zPTOOTJ+FDKYwxq~CGK?WuRQ88$DMlWcOm3hzvM+Pc<94^`oRm>SG@F1pZX&d*1VoRNy(n*^#)p!)*d7uut2z-S>X?KkTq0Zg`^`-{W5Q`PfH4 zVs=}%UGo~(qMVEDb&7?}_x%HLiKBq^m#3ku2gp2O&_btrTY{&MZ z7e1c__sx&K<;C~e_l|e|mD?P1yO+K6&#*2d>bNI8^@>-%%3bby_rs68{>MK0Ve}jt zZgXD!n%BDYr7nG)>mL5BKYX5Zg`JY4@6j0K*E;B+OI&ilPk!QKv_Jfz58UN$cmMDQ zKY;v`AOHBXpZ*kefz8ny9uOXOxZ|G!4>|O(^s7`H>$~6UzE`}`RUZ9&kN?+`zWDv# zWNjtuXd*ATmBie#Raoa3Jv;O~0P|2+d`BnE2nIwjX(tx(nE<TAJa+ z-FYbxP=ed25RExx35ZUnau$dw%RWtkfs`{5%cfitNlvdRC7*Cg&10UqGyVX0NYf#8 zoXigR%A0wq0iRw`&-|aaV)L?Jo?aZ zrysb`xM}nCQ1h`~V zQ6x|0p(97a^`Q6bsUr`F){8$2jy?1^{^+dL>prpi^AlGu-Tv{4_pd(vO+PEuBPHc# zl!U6OB61J?P#SeR3;vv3nZGEYLx#R)n+s+TY2&yKwU*XObUZS>>t9GJv&n{L22XRA zOjN;jh@iOXSu0u|t*E|%k@tYdY9qiL5NYHOW|%x!!OVi!*20!77oncnFH8tL20wBP zG#9p7m%7kvO8#Pl*MIiIf*jERO#Hw!f#^pdp4h@reiS>_i#@SIR(QNFu-io*FJgsf z&)8tx&oC+1Wq}tvhB~K>OM?uNnFMXlw6R4gqpLa_EciGnQ|6)z+_obH1g8yDL-?Awk51W)@0aY}Y#Ih)Y~zKP;!8 z{{3^$Ir|^p^cUB?!Oh@2?R($)(GO4m_P4(Nrq>-WZnfI?l9&4G$zQn9(RYCPCbz!x zhfjRlE$(pF&wS*47vFckt6lRDqJRD5FJ5flOJ3=!*8og&r=51b_H}RgwUfVay<2!U zixBp}vgDOA+6wGj#?rhn;p<=e;@ka5*#YSU_&muoG`Sso*4aOK!Q&qOs}Fh9Rjz$VUp@2VT5Md}d`>qW zakE=`9`x{?7;wbN%a#ZoX-cdLG>?c3QfEm@Dm!79m z><$39?0EazTY!$f|2*S#mVL3TZgs2M@-8QDP=5N;pFHc#pYFQLu3tOltCzq074huW zmm+|7+if=%fB*iquYKr4@BhlbefbAJ_yISQ7+9%E>`^zlX$H3A`-mg2fAYy+x&zv6 zt6Sfi5T_I3Q=j?-D=k8ta>`e)aD^+~@PZC7z@wT_UJ=To4mX*E|5g|i%r=51X$<2;dwQY6Cq1XAr z4^E?Cx@J~`dTb}1^!ZEgf0@_6{;y-#feYDJPx;D0zi>!FH^1er(aOr7LZ$Zm-T!N+ zoburhz5lD$ewwu>?#W*|>5`Y+@4%~HUEFGQ*~?w-Rj>Wq%Im0Yo78$E+{yoX((fJj zq$&w?gBu>j(y;jumbL6|yY1fQbq>4kcfRfWDb%;;vM$f zYfpI1a}Y&H+PA*VZFz5+yRaYm&8~Tl1$r+i z0KK+FP0Nt}DN8u*Yg;LVNaZanPAtBSu}~SoItEfSTeWK$YSRdrdo$d|&t+3Pd)}R( z_fnOefo<@E>@~3=fOO-0ui#T+2^hv%Q4@>O%xg})>Qb*l^aU)iMKIUtsF0?L>e*)l zzeYvUo_gCe1xU-b^h284b=@QkZoQK&tqTh3djw}vC^qvSo%VmMx6zgW8%+xNKh)bw zyAO7=Uc7Z5y9*4J2FjlMcn*tRi-AGxJ*`DJDbUfK`g04^5Y(wjf_g^%agOR`G+@p=PFYghs8vq_f}#m$qDW0G@8J{Fem07 zA$!lXOsQsAD^kj050>p_x4Pp2m%l0tBbvW>r+fX@-EaJ_pa0~w4nF+sGkH^$TDG2Z z_Sr_>vO4mpTV3(0*V1vP)ls+lrN27YzkT`S!;ZWj1BCXg|KjC;@rvVbajRnvJ?y%B z?X}nY-*=)kPF`@kg&W}N+;h%(=!5S6pa1!vH$VCo*SorkHhgDd2>~%5mHVUr{eo}($2Z^lmN!59 z51w)UdFQ|6Whd;v|Ndv4?VI4-*Er{#vzx=wx47jsuEEi#79#Mls3|07O}Lo}#f#i| zXa0~+@I8Lz(%lNrJo8L?cnN{-0S|iUMK5wOJ@`@nU3a}SKQ@%Xg9rDXAM$`-=QD-e zy*u*yH~hhA-~X2r-)oF*t256!bDw?p#T~hE7Gb-vMqO|C@-{J7*}X4z@oMpc=j^l2 zsykVb9wwS>l`VVQ>MnP?#~ps@&hLEZ+url8cl^4)a1)VRdPf|2y-$7WAJ z>HUli-}+7O(X4)RzXp_Wj6V|s<_tr8_KfhhMBSFBq zId_kf5w+gkJU!K;>S?Y?)^;DQz#F0qGN1XUb{uGlS^N%VySmO2i!<(+-+7BwMd-Ap(iFgvm9- zAgqRKGBSCrRm(d&Q#qPY)doa=oUee0on+& zK{)FWW}tM}ntxO|^K4%wrDooJ3#eDq9{Ug`nu-cPBb||_*5E3zZ(^g~Ry`Sc7C@Iz zA?-xce{dSRVl?b(Qn=81qZIYC>czHUO^Y7}2|F3KU2Z8jdB%*Bq*_Ds85xMyH z{#=f0Nwj#1IkI^u!WaNa+Ee=5&f38@p9>3Wt~?SkEbg2t@PG?Fj}C8n<~*o4PC$f_ zDF9ZY%k_8icxq5x+&xb!B;nEWD!AV-9D4n)opKTj!AoEE3QT{89D4nO55KYGJFhVJIo%V&K5 z)Qj(TsT_^f7e4xdJKXQV6YdG%8{l+Z%~Dq#;7bj}vO47ZeBcHQOjSH9Y3KKg-c9&|8Z3i#LuPUPcg0QeF~=yJ$OVs<#F zUZhN8+m?@g?1TJ#$t`YiYjfMO?ZtogCr^IrGjDf?JCf-4PW|p_-#;}hMg-30b;v5V zee@$A`rPL}^X~V4AmO&W_OJdjcGJSjd#QX7jhk3ie)?0NxaYm@i%j`1`m;ZI>eHWj zyW9T~(C>ctJACUx%$C&`zxeqxPCxyq8{hPS4}SP>KH$OkyxXt5_BDU`JCAzoA6JK)+a@t2yYIgH0hhhp$3F6*1FwFKM&VxFm9BghT$X{SOKd~4W%bja{N&AV zdc)oCdG9+NdzU-^@?H2=^7H@rIk)}A+lvf#9JZYPhaG;z4^BIcPXylJMn_?#tNBLG z2j2fLFaGma0+X2k6_)N9Ea{|4igD?d>bBEVW&G_nT$VyA2#gY8FeL5*D*)6|uZ%*~ zcJVFbH-Td4cvY7e9SzF$%s*wyi~kHe6wNfLW4^y!NYm(n#z|U5cyXJw^8x3;FkJVXBBL1mS4}6A!H!Gdo=bK7l9>sVzZGH7j zk`mVL%F@=@1Oz`0F@-16+!GD6>G4!>RCPz$N1v2~>4?%b8m#Jh5W0c}o!qDPG?rW| z%%f1294bUNOYnap*njkHyK5*hw9H09+s)_=JM2ZZQMRE8`63&sosfOguCkreR9c{H zcQ@)J+rB8k2GavkC1RmXZf0-|c zAXl?l8b1MZwSy0P+iQ+jxo!2~cfR$fKmO5;ZhI#kr+=aut~#E5qzMMpe|+WS*F5j{ zANdD=>MwL8b1LGG_;FmiLEc4S8ThLqJMWU!Ji~@}PgdLR^N`>En^*k#iEn@F*S_?x zuYAED^Jb{bc}JdLPG>aiWp3YaY}?)Z?$_3TKjo``{pu4Q_3#Hj@=?EcvAy@fw)MQN z7rDqq`5YS~DzKpVLqO0XMFC3wzH!c@uK4-FM#u)0e(<65rt5^a$(0|!`|fwXecRjJff86CUX&2~UXrxVIO7L@oDivW%ib5gC|^hY z=}&&_oSoxyt!rN!cRo1yOLx5UU%u*pn+C z4MHF7_X7C!JmBc6Q3C0+72bXm|%A29((R(?R)MCzxTSxo8R#IfBvWU;7*eS_zYhh(i}bkGmy6I zbo4E6{o)t?$x%n$6!+`j@Tj-E=?%QieboaG)LV946*7c)W-y#~D&1~+F&dVKuzqv6Zk&EH*PaSja|G4HI?yHN`~PX0CZq7i8X~K7bg(I zXQ@}7q|u2bzl1zbMyA|4!`%6BX+|($7|b(?w5L4zG7AqlnC2GHl1X&QQ=0ng!FWx{ z_Czi0?TJP)`=}k)5^KnQ<60n_cr1EJFER?G7oR1P)e}iNT=WMj% zsb91eiZpzj6D|QY%NcT?(m~azRHK^xT8?7T$C8VtRhhKK&4_R?qQ^eh*xKt})B+xU z(Jt4Efo#qtW;9fo`vud~mS(3!l;)7~Q(C%#D0!nBP2y5Ql1~#G32?AWC9U|eDbA+u zQM0cwP6~snnf!u~O=P2%YQUj%8xB*L_yLGDV>0+qEzMGmaI%+{qTq};93~gdJT$dKf?4=WwKTz^kt1N8Ql0w9 z-ETHySzD2OvyaowlgwZN+hsJQcHU7haa3H))3woaZlV;^AT1b8rmK{}rS1Qt?L7c4 zyUKd+^R}5uGBcS;GAWZTO{EzrA#y`7ga8Qvln$a25Rf8-kV|h~il~upL;?W?QACZA zB3wFL0$hZvess7PAfz*yNv6E>w(s}*KWpuC-WfpnzI)f4+2>hL`9Ec?z4ki$l($Z2 zl!#9~eEGXErISE)np>g5e?x2)r$J7SZhg{S@Bf%5 zzU)blJm8@92OqlSevdqtn|wpq_j~l?Uvt5ee(o3VaQ>^`(xcWz1^JXec;iLS|Gj6N z9T)TS=fCEy2d>|kbenEV2kj)q5f0ZF10c@n(PeMDh_{$u^|Z$}gVE?=Pde{@k3P3< z=by~#nZ4z$Zu5pedyC%*0DGBtoM(RbDbIMp^PaVJ>(Sh+d+fPS;G4Fl z%FwNhZg+>1Zgs2M@B=Q-e$ESj?I922YZiCD%gJZo_jEQlyg+&03tsZ{r#=w}S;$s4 zY}m*>ya$|p2HQTqP<-L5-*D)mZ2ovpbLPoUeFonM=I$5YP)1Uf;QsX`G3t#)E7o7K0zQD^T@c6#S zEC0}HS3CQh2fpxm7x3#aAN3Qm9k~HP6&%3~UcbHEf!Z`ehBhbI+ zuii_1`UT5#vJSxLH_v_i)1UgJ+ur^TfBL4kbh)7lj!9Z2-sr|_PlL{Cwmm`8tSWTx z784G(`YDK1z`&x`c-^E{v$j{!Mhvf@*?tKX!y3D8Bzn=P^I+Rlu)a3#1<$Lh>>wlK z%+-oV(wCR6_?~ihTdPph^#FLnC>n-&VLMirZlQLjEPdqU?aY|upeR7bP!VZR7Z(_E;jBOqsOw*c932@)Y1>ENE=G8RYLBAGI+MoYP)JQ&BR&=xhBz12~i+k zbsKUcHLVs)$%;imYKy$l$WY=s>Q^gU$S|A$apTnv?a<`pvtvLG4T4G7gNkZQ8SKoWX0rCbTG*gZ;& zECrHoUUsRId|`d+&ow_Pm#AvkATpF)Kf->{LAhzq84fwJ`A-`RQ?H7r@tbK6vh=YC zVW=URNihRCiCPSV73|P0V&8l#u*i&k$hYb^nQz&1ENBR%)$Px!i_+LF-$*@V7XJ+S zHl&s{08>BMzA`tpJUczbFQ@ZOUgv~264aQPo?2M+4Ps|WP9DRv#HPaSK$o7}J!I!+ z3jEL1_nS?n$xGOz?MxFn-x^WXtipiwhLhc#>$b~G$S-(G+kn0x?h7u$eshaY(ipZro2X^xr)%6uVmtCBKM zBEDt92dxe}{HW?yO#V=IE!=^}d}(R%rXSw0`S2t39w=OcZ>9;rF2LEKwIwFDaCdCq zwm83M^ASfGPHY=MhC_t(v7+(*Z;dbhOWCW-M7iYmu3N@9hQorwwogJ3Rrt^IzkcrW z&4(Ov;w^9EJIgDhmp}KJ>(;G%_Dfy?IO8oE7dA}2SLY83l6#g*=bND=&6xTHa{&4A z|7)(hX6sQ~L8}OPVj<&`rpzKk4WES!{hd2+;*)LJ4=MB_YJ`EBp5hJG>#n`}sIA8u zaP;d{1h?F-x#p@Pk371%CdYKtnfOulXc?=NEHdeZIv!H@AlGqnMz@Zp~sPw<-%XUxnt^bNGg@anw|qII@#of6#`5 z)*sXXlH3??%r2@WGxA;OYp=d)>oLc&r<@eE0J>du%LqBSv8|SEFC1joCUXiBv23uEo(DYXCpLw6rk4u)KYK{rnOiJkG`g zwS04fC;wy|=e&Ra!^YRrZrDEh*uSnJV7|rgwk9_d+J2?~BrWGPUR+*yRhfcvonjVy zt?^tkU`xqjA_-XCl1Le-QsmKcNV3YQR12u5a4uvjn6@84Szcb?m$s&+7Ixj?m}_>V zxOfN1*$_Jt&jpJT$;&vhkh%pcP9hqM#yS8*-_iltX@N5z29909y{1G{wCLo!9a*&X z3tJi;u3li$-+29=!@jp`X3e^(={bK!PM+(vm59$8-{rk4_kYZuqmI)NpAVh^w=bP~ zQg?L2uF?86{$-JBI1(gH$LSQa9VbsH)OuHoN#oufKvYO}Vn%Z;n&>uWhpO&y1i?}v z{V7_dx919|FL|l2FYb82;e#`W)ukXC*;cxki7-h=w+_TOgGIP zFaZqL-41~K>WY_1Sl+GAFRquOx*)hBwvm>Ty(173&b-vY87N52M9&q@<;d8d=qo|% zdEy1JK?tORz}*pBPe?S~+eAT~ZW~>#s>NgU-DDWBh8-E5vQ;@Y<+QS3W0xhPkVf3n z{OHSHcaa%l?lFrPcb%PT&L5UnmQ>cktVE(Ysn{t( z#m)5W>`_N<)s^OoSoaMglMvKY!YDB2&L4z3ND)zYj#U?9KKFLavB$$yHTqghO!LDl z5Dhc<^h(NBFS#|NL2cv4gK?L@^)l!WL^&Dshj_}%pf(Wu>k|-xHT^!CQC;%?DCx*=NYJS?3pU!}HcDe4E5hP=HsPs`h&+#NgT+9WyVl*Os%V>$ z3lj>~O)@FVz%*WRC!tqHv6v;EnmYPWZwFj??aGmdvOAnUc*E4;o2Tcdr*7P7S-<_= zKZ>)2l^s=xrURt&qb<2CHilgneWPdI~8WuHh4lX$WmU=I|l znZL_x5-`jHrVn0KakOGt=cIXyM5h}1K&wiSKC!VLs^+7qiPz{1z6x6EsPH4j3N?7i zs%Y&}Vgia=rw69ci6yg6bRipFpODxo88=l}@P_jaaM7y8?(s)2YV@!uNSOdHAD>$aIlc zRLo|B$G^8&+y@v|o%UJIyzQrkDjYe%SmWS9XC9R_%Y-K$JYU7ZRo`EJ^0{diib8|( zTn!E?JSt*U8oJZBLc@H>CvZX6dN`5OiQ3rQG<%T9>(qml;5@sMce!32T2~(Y>QzIJ ziK_IA2QphO6HQ)JA(^S`niG(s3x)zh5CBP`pkXF!Njbu)3yJ(J0~KTtW0hDqh|fbO z{&(lcbGD}iiyPJ@wz(>xTgZeICdaz-D2#EoO&By#hNc5V-oQKg)O%j_{r|Y=!dHCj zYhT%N_>t$o;H7uE^C^6Z(ol)hU(-ki)Y)Hg^d&$;bbP&K=qq>wabUy+J+-L)pJ`VB zN)j*K!jz){yTBqU)O4en{9yL2Ay_Lt#;n~ubgTWIP#i?%(WG& z*YXa`@~-*iJO2Fak%vv+aO3hxzc{mP+scW@PT#m=<*I8m!&kEPSt?HmIy@ZX^34wm zkOXqH*OcYg5Cp@byT|nXpsZ%Z9XN0MC18$OgH;FJn+s8>WlOa{JBf6oPm;^q<@hlTAmqLKu>T;Rs_)~SQY3=@FY_`DDoW@y-&PY6%(`uV|oRoi!l?bXWeX~C{*UC;=(xDEDIABz?Zd=GN<_>e zkyARgs^s!Au!pU0+Bh;zJo!z5{{hi!)Zo)7P+Jp|Cpt!1trNT?Yam9NHgM|Qhr};3 zCk7`+2#y9nS-~+?rNB%Ys3>g>Hg)IbkVEjRA(J)Td`2@nSQ0hv2q`V+u)>Txfmt@!rR!@I^ru*%?eWrPl|%4 zR?_r5Uvey%ee|^tj=N~+Xcj*Dnp8Z&x5&}ANRC;nr)gGQ#zx-Ajgh?X_}ciEv3QOs_Ln1F&3?)HPa$32-zj-E}Jm30SRj6TaN6x|Y&<5{DQu-AI|Xotysd50;NV+IKQ{?cz;l-gp^D<{2Kp z<-C!`lK=hKG8yuz7>Fy&fm&MlX9D;G34XVY|GA3f^Ylu6w+)osYN39vS}RMw1(E_7 zE>J8DUSx%;WmcMUq-aD+x1=~S?CJ_1K3>#~fe`YkSu=6Ua*+YpE2oF>w7!mcxugr&^rqfyR^Qn&&AT`1JT+Ql7F<$}F>T1#P#YE%Rm&fe?*op+!nm z1uoh!_d=jnoMu{@T@8_VIYP7;Cc1;DMX9k?ISg^d(yx;a8v zU5>UvFTKVn*!@Kv98j0>0inC56rLb8U?>D$tY>c!ha0ovAPt^m)dhLp3)YP>qy(s=!hf2<6k$1>zNL>r;X8|iAALazU#}W~8z}5bq+<~~ zK2pPpK4hIQjtQp5&ek>G;dvu035oBpYAyRo=Eu}=Ud1V`Nnt_j5;P>O zEWKM=B`$*)>pVD|=$ujs+@}y(sIt}Jyb%$f)GEc{ghiX6b~jvxjb+{_?k$Px^)FE3aMNesg`m+Mp6mf@pap(V_t* zgiPL+uA!5*;xbh1Zmi+J=7e_#$OjwY=B7zjfsC?4=BHe+^+AWVF&~cxu$HwF)%vOX zAZusSOHoAZ!1ZojF+?b244X|b8Z%AMtdBy17oH~j=) zz8VfvJx;WJx)YLBQFPDB1t+q;o>iK)qGp29$r&+M+yDST07*naR8FoghTee5^-UkV5_LV(pooxd z=aJLaRJ=l?WeprF=Mw~7&uarOmxwEFv&?V?H`2o8D4r`RZLqRKE1lJJaw#XG()0o& zb*D5fgupga#5qfTHoz>BEF#u0zEF1vvPDC&j9O~p!$QYmh7dll#OI|iU^k$ti;~RL!lfQl5rdw824PDm_)pbqE38^o0 z@l}e#?BU?kLBFNeZ{4BRm=Ix_T}i=D#Fl7MznH7_Q^$rcLd9cv4WA2BF|B3zRxk0O zUmUu%H6+NkM@+(9+T#y?ArJUPG%u+tMW|*hjmlY2Qdpg+C{Wp-F!zj_5JdzEauq&m zor4L@LuYC?76&kB8J>(jx=}`LASN6LXbXtQoiMe6Dvx@KFhrqoRJ|uM5T&U>Oo|9t zk*ki)QFuis1p5Y1-s3`i`eSj=w|Gc7>6ipP^70rAahP1tEP9pz$3Qs0Jy3O-qz8wJ zX{rO8u6uUH;aK5SS2{Qizhd)5(F+p5%VVMGrE-aV(N(cY*vv|!$jPVA!DvhoY?Vf+ z?mq!cLN((q2MTfwTL^XLLG7OgX+CYc`mhh0={( zEb^+v2aSP1FHnt9PgR_N42yn~@B}|cE5gS+__$^*G$4f!U_A$0rZumC5wOT`Ypr%* z39QD^y=9r{GG0;gM=h865 z@sdCLV}Au#FTVWcRfM71GXeKTM8lfoen+QWss?Kze6{1wBU-HGJcsY3(ptYww2yx6 z?FRiwlb05*dZlkTLJ8th$aCuAo-*DOup+}m(a1T{&8iNJ-Npo`i;5HLrcnBYUs7E} zzwqr;Je`@q;*}T!t^=A8$e|g&@yje?I1W+w)cJw~BG8ZJ7`K=na?>?l&5MygKd6r2PK+(uaTr4) zNuu;Cg%*B21)VWw;t#Dtsw3S*pCpGx#u6CiQ4JsvceNA9yD^~jn*rEu)KG1`R1L|pZ?O~!rql@ zu3J7}-PD>nUySi<_Fw$!((E)p#xVMy|GqdsuOs(^oZ3MU2^LLXP&MINH+-{bnV3p4 z$hyJLW|0RnB4QVqo4o$Sz)XH^gMyiAT`An088eF?Tdu^hS3F%! zk3+tlneaWSK(1&-DAzwO-%Nl~TjeMj6^G-jaKQW0){AirJYl1uEN;B)!D=5)sQ7v) zWY*Nt?#!I^+}qEn#fKL^@M>l{#d<}0EZ7!~Y6+@B8)yg@2Dni$pfu*UhGo^6GP->M zMxIOsYISUjb$15{u&hVTG)0uIYGRjD)-+?He(nlX0J=aSi6rwLYQB4clozM$qWn{G z?BROYh2|(|Z)>Ubu3k#eMPyV9O{-O_gp5G}{5k{dhsdz8_| zBC?e^dUzpn*CS>Ju;wakY&GJ|7%qW)zF;vcg?qv5kTQej$b*}IGi+F8CWZWXeJ(A! zOhYLp6Q9KuHKvNMQ^j}A=$>Fgs~cFY6SrYFwG<@E34OvPnV1))sngZECh+M3qlbQe8UMcVq(GwKFcy{~%raG9 zj=c$mp$oI5YW!!d0xGRS8$!fo!-puR{bx=*PDTwd9j@^InO7uz$WuQ|u6V76y>aqsmf_jmg@xu$Q7m5D~K| z_wtKlg`ByqjCMT_o2KVm09|?ES9V#u0HNojhg5*XlfBB=Z_eCQCa|grYM5B34xV2y z3L4nWpwSfW!InS<*Tk@yX9xk{dEh>_}cFD=(^qDuFTF(U3D#=hhrD0NiZZ_ zPs9r>&RWXF>S`%lilRwVhQKm!h?xPgI8H0;rswKJor%c)Z#MB z8hcTe4|IHY*rALGfti#1P>u@=rxj?|Dm_`mI8OowS1Gh3U0bxERb}A?p#>gw_pb>- z>CDvh4DYDtnouBva;4j{E-uF?HBDo+RY>Z`!O$&n@l_)H0w4f`G(vT9w2PGg8l)9b zDB;T}g_t*YWnOmB(Jy?}ty*_yeG0k}I_>&RP)}WL=mApUz^PE>bl0dCt(5=veQ*#z zUQ{S|L$^!Ii$@JS6v9BrjA(FFD@-A)J}CU;d;_eb{TeT06!K||%$Jsdv#BML2x8`m zZ7yl0So9D_Q|sJ>S*L#jh$qu5LgYr3;b8ZZiEhL5|CjbNnpub+*=kU0*oOK>yLl*u zZcDN*Z74*?0*ByOqiAoKIzx@R`S4supw;>9F*gRPu1NJ>n8cQyyNh549M46x;Ib0o zG#f9}v7=KnAsZb-b6?~icXA&Dc3YumHFQ%*njmP|Tl7t^#@@6WG+L}fd^8YH@O`I4 zW3q8$293V|_jChw}2@|b@xhjli)=*GQl<8{N(Ig5XXw_9X zYF^v-0g(mqtmNHXWpNvOxs4q+zS#7O<(N z$ioPB4bOtq5WVuuUcqYgFsMM?vH_>UMq1WYoJ{}5$<%g|OvaJ(0z9~|Tj865tR9M_ zV_EtYb$OH?YlSXxxab3#%*M7%esVAp9n|i#927@;G-PEX+pFZSOTfjDI%ukjDAib$ zV8NcA)dLHfuUgTMQQksOnZ2McRqd8$me!)7rvm9VeplofM8PL)H7>n4Vo5_|@rqqP zzj=C^yKB5jyfnSAn6-;|IIS7i#nHiskLC_!&CJ%%XYUabHyGs0NA(OMiva2FT%P&i zLj47&6ay{ybW@wA=4W|foki6k{57tGlcfVkc;yE`j5@K2o*4x=wG`hJ*&xpFnXcL8 zsoA{*%u0+GLlw(UaY}gkh`HxFV`S|L>K1G5bLvPc94Sxz&9|7YRYdVI3i{ZQE{`-?RIut;ghrvF{3b*RU-`!1}K) zg5@N&2+2wcg22K#Aif}9*}Zeu53aiM7Pq*SvJ8*~vLao-t_;MHc#Jracr;uY5+$}8 zmZgnfl~^c|V70^iQB(wRJ3<%CZ-0_LFy;_Fxvk>Y9< zQ_pgu*hI!V*-91;WWx^uPYwv_su)V0Fq@!i(>cwf@d@gI_)8~rLLU$nl_p2wV^vJM zrTBj^UxR9m%HT-isUp?a)-IOA>tvdCRQ(QpnXT2z#3pNnqKuezKC+`jVSS|CyL ziVhJPTM_6v@_EIDex#m#Jh_>RE;EE2{=i$IO3)ojRvcO7N*YhKX9sxTzl1!@V|9SEu!L-d6N!SQPX@N z0yQwi6x#;fv=WANh$b!99An@y1*)#z%eX5vtcEDQ`W%OR3xD7QpP5zecv3k`p6zr| z%U4FP#sr}O{3qk8pWnn#9nz zN&|w_nH+OPJfL|>E7F`(HQ5Oc0ukOSRjqsS%~X~!4FRGmML&hhbJIEJ-nW>YovR;A z=hfFyM<4%y2mkgNXFjxSIoc{USLBuRpYXtY-R~i1|JrZjy#hc^HQXfCQa+JgRjJMa zX#Gx&KL5%8{tI`!%Rw7Ak-Muu;J#U)ACHxTs&cB^q${IG-T4-O^7kLzdff4aHoi|V z8ol;8PdnjOzwm31d$QlaO$@OY;5E;E+W)%zlW+du zl;{5O8{N?4oha9bq_XXX>mPI0X$7)(VJ~9-^hHJWxBvW!Lk~O5(;ZC&RF&~|NN{JK zbXjp|tbWkwxdB>Ux%BVf^Np{69)JlJ%&N8EBPFX+cRlZC&rCy%JsTs|w1c3p3qW(Ra5o2v%VQf`Z;q;7%u0sx;>~GKYO!Fqx=2i4(#V=MvJrTYo_+jjP`Pm zZEk9jpT*_lfwQ9}2!7y<&nWYdo?4{;t1zFwGg?-2f1}rRR6Dx4706OJ#YWJ#Wb;~DcWAIuT5$*5=Xj+}!L!~ z&-xO>A{;`ZhQ`o7Gzn5{f)#_ZOusQ3onc5SVPq~q=?FhOr8SoZCR6-Dq|ENX90((g zet`^Vt(&J)%S;B3e zQ!Kb09|XkZz0y*cN|h+`fs`29Bt`*Z*aDt(HyXYE&)TxIBs)dBc5G`kSPCdO;;+$$ZZKw;X4}P`K2rU30*{%xP3j9VVUDygHR!F}(c6b;@fov;2^-^qsDOo!Xp+Cm zuNpSB3IQU_N=N+i9;K!}p-{HE3rHz6wQxlLF|9mK3U${LnIr&Q)wQpkc~uJsUf7La zXDd2o&aqDRwgn6y157yI8xrSB^va~8=h;O;2Tc=0l{9Bo(aLqBQV?h(91Aj7nT@Ko zxavumFy+@gY*RE`(jST=V*)es;XqJhbNpF1WALdQaJsdHAEQ*K8KBo-#n59MaWp|< z;(Qc_%^ElOvIiNv9l5ca%2scBw7_PT+{*5~{^_;@SElEe*+3GCi+yUv-+JSX?-jm1 z&0pOkLpOLSQq`Lv+FsByn*{QPsC^w2B6^Gy~BwqpPAjz4?e z6CeEO({KCib07GPfBz!-Wcoio{J!V>_Jfud7cYGFlV0|;$GAgE81H-MTh4p%>5sqH zNq_Xr$KQC})oA+2<$yDa6PqsmDpbfORVNwMkzC3aO~%4y$)g4TFZVg;{qK4^gDT$< z@sxh=U%l-f_k93T=Rty*=58%?c9Y3V{I;`nwF@ob@`u8^-u~8yo^`J?PPx-FpYl65 zTzj>#`L4*y()_|JU-qK=o_@-M?|+|*UVq_^9oq z`r()Vw-+P4;riFuFma>pysm60B=;|V9GCLjZ#@DX9Q{%_9K{6;8QJCeobjAvmv^fMg z0YItHk9zCgi=PB06rw3|p;W#VWM!224FjW}HQ&PdQAePflgaSnf;d~g(fJYiR;CFU zDPv`LeWZ$>xb%(d&&+e#jN|ezI8-`_hE~$x$`d^2j6_p!I7n6IoGM(k(YM1fL}>c9 z2-=f&QE11(aL`k`VC$%W|LsXX-L&|iWfv7e;z|ULah#0}l7~3CBuEf{(?LB|!j(x; zURQp2?z-Z?_7S`}y398){8Zk`6d!kU>04r_<4Wb0PXix-=SYlMdZ;A0B|;j+gpvT< znAsALLtC~k(b=vnPRF9rDuu8xw>kLnl)~bSa9#lCkD8%Q+!InZg9PpArn!AbtGtKK*K#5vY^ovtwLQLcf9jWl)+Z%`s zP31KlBMh*rs|bgox8}5W-QCmVb}gSh;|3LnGyTq@ppe;=cmYm&Fxonnb1jIL#50c5 z5V5ZrI%auI4`w`S4~#>Ly7WRJqD_{E4*S_e14|(jS+98e-yeDG@h|?Jhc7SkD!0~{L|&=2 z0@(qL*kK6UlaS9Nb%O%I<+PcRcy&=U?(y?>Y9k;~)Q9kKnJ$i#{5? z@VU?Y{`bE3mcRV#Km3!|e&ZWozvL}{-iC2%^re6K!oU6Nmo9qKB~N+Ud2fEx8-H-+ z_ca);Tzl;`?|SE7T=5^@x%e%A@#LpH?VY(5!Ibv>r~ipu$fzD2Om3BMGglj4l^4c-&2H1evf+@$yh&}Hpep92fh>hvST zFx-<&H6~hjCu;)CZixz0X^H#kgLL3@)gV+1fotGA)uWAiht^3mRow*AOoB`ZH;X-HXx^jgEQayoCF->7FD4Pvo8o^ zeW(fRW*cuw#dvde3>Kb!Rj({CO2+_|Ugs#75aP%L`%)Hsoi|3)MD8Akid=KtnyZgp zd(AOxt~qMVFfMZ?%lo+bJ0c7noD5(h zcOS+bNEvm>6NXh5POX>f)*#nLjXJR`|VU) zUR6J1iH!s12qaK@CJ~hkl*=3?ph)58V}eqe6`Zu6S!({38QRLq!t(Oom1T}%##1{s zFX>s7n20aO?mp@Ob_ArQP)VuUO~#x;$gvdKaX$`Faodg+9$GvGv~o8_=rt@bk1;@h zpc^siyJv@zfR#}*RZo*bNJsCoRL=9b0>$K5k*k!pDo*E6rWIOD11>+#0{-EHxkM{# zc6*5N;k5T`v1Q&E0Sxq0Bh~uJ9F9}Ozq+HosAVpxpM z_WBcUeOpe9hn)M=_rCj*Yp(k4kz0>DWXs`)9C0{j%`JZ6c84E*90)jg&zoQO*z;d> z%IRmZo;>!v7kvJsAN>5sK6uKRXBz-9l4dRz6%R*G_at5lCPGUt@L7Q<6ibm-$~b?U z_E`^m^re4s@yYi*qwers_RdSrdBkI``1UujswD(L?86_r&wbAN?)R?v?;rfYdoKOJF~=MS=5wF_lIL9T z4DP3{S+j;Xcign&g)e#e+BIvAKjDNAy#KOKee&avc;s)ii7^^I`*|-~yLR1iC!F}f ze}3Qp{QPH6J@qtv{_VTpwPE8%Hjc!w<*+T!`mfJB|GcOE=5If4-2n$w`XozWSAPF{ zm;K}4zvt5TpLmN~!hhjQUUup!clyYOKXmUi?~B4)-}>h`I_a11jPAo8@#ufL>{6?v zKBRZq0E*jYrd$wwE>*4&AVvcJ(jaee}^S zL*g!chb#+fG@E+OaFmrf89erG{K=#Z(t!zQXl2+$12;q&mOG9HRe<_zuqt+Dg*|BM zCB-OWQmR$O5Ze-QEc_A;?plq1ntT&Xg{{-Hil=od^4@9gdbbQK9j$si17Oon%)%R@ z>VpEEtc%GYYM6Mgq1H7u>}rU_jL0($qSjSNE}r2Brp_+|tuCT!xxPy3q+BGP(qj%g zZ_+ZKr7$g)7`kVAxe%x@$do8w)qVs+!@}$OK9|n`1TicG6Yx6liV@84lR=>n2-R3J z244bo9SF&#DvY6lNDZxAK5+K0zkFaVPIS%D9SVs_*4`HylSrF8bfA#>ZgGoT_vKT2 z6tYe6<16f(EUAH5G2Z<3*$?e;6k1OyNu1I{*`?P_n@eeARUZbJo)14rmm{Akgh9iV z?_9Ua`bs>|xh%Sj2Q29icE{dbLdcPblaT9RKrhhNjN$+92ukuW3MW%ap9CwrtZ< z9l3pu6vYWZi)kcrUGS&^kw0_71%-Q`xm}s+^mwY?I;6!#aiF!%Q3?978>9pwGi}f; zPIa5i(4vWt!XE^IY=B`JR6=R-#IGFluqu=BWL`FXYZ0{4E6v8DLz@VdUh&59#JJ*A zQ~}4Ng%|ffTfXfQPh{ndZ41y&U>~k%w45-R#dLD2@sw=QY@Z(JacEaobwn}99JAut zp%4fQ9A-@u)%hQ*;a(J7CuJIzo>@FO-

u%|uhAQq!+zk1(sznb6F6Do2odc$4p& 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�WcjDPj(pBh~+?=<;@;+5vfMAHug&a*ysl$Wd>3fooKw` z^U_C0r@S$@x6RpP|BO^JtGuVUE0$SR7E5z7o^yIudvwxdbGB;2M=xtni|x@Fg{5z7 z#f*dhrb;4|}gHHh}Z4E)z%Ip%o=>I7pe* z5({Va^L{d~F=1pR{)bP4LM8=Mk_-xZ!b+E+n25}6zbsHS;Ut>V1Az&lOfMwONVr+Z z2KH?>P3l>7)t&9m1RmC$C- z13K*SMiX9=ep#_Plpb`QZwSXKht9}hprlE`V2xgc31DW%T%5E`1SSN))>3Gi5JVri z%o^%f0=FhadWngKGO738&fM^gtIZ{>mHOo=$lO#g-c7z&cuU{#75+8!CoAD=d=#1{ zlPb#!6*n0MnDn)fy?QaF!Pe|2$QV{(+t*L4abmH;t!iPbgi`r9dSYpAG89|bl=bWX zojLlBn>uJ~ARfev`ks)c2Vn-U0J_Vj`d+*vUCy^E1)&12#VS-tt+1P1!?)vYp5KT! zmP03HW)CmMMdZ9(^pcAujl+^(MVf4tL$sP>s?uwBkm|?kt(#Xioa|;6> zIs(+ZCCYnVLSqzGYSh?6&^QU%q=l=RdjqI%xp~Qujlqp31t(9x9FT?DPfkDo;q8a- z-#q>Olb`+k;@NL~{e!PhUS6HtJ-xrYKDfQS<`>*Q;vn`f6VPH)aGuO5B%`1#Gr?UNUmCs$`o zYfN+{czW(!zNI=GCBALDOhn|cX`&LJIGNigG<1yEoq=*4V4n+R=jl2^pbP$@jE>1! zV@&&2bKI&G$0GVE@xB>$*M5IZ9-A`3exgPzFJJe^N2m8EJm_`${O7k{e0FnmdHR~0 zg5jp+;lcOb<2#uTzIdTC<*QqTAlM{|)c{!Z(Z`oJ-@d&5C*OPZ+n-*4=jky|L;6@G z9~<#8LG}F*H~Hk!;XO%tEW)1Cl3Jo5`a z26q4Y#jES57w1T*@yFJX3p8+%?@Km@`@%BXnIutEjj*iOB-1zmX+ik9*m8>?{B=aR zdYhz^PlX__0&1v~|E^H0l{}q>276(bzNNKQzG@!xVUd`zI-%LyD)x)C?SiZaJWD)H z5Q^X@{OM?Ma2;c42DqCn^Hv--E=^k>x890vr)jg4H+f(t_}FZafX}|Q`TYF z71R|KfpMo0tT^;QqaIR(4@K(wb1ivz1D3D_CnBJHeNz5ePf5|+Z#L;DVI!h z7Hl;&{-Hy!`L?oIB^g2hY;Sq=JX8Xoydvfq7^L|04s0;fuSSa=S1(Ry9Qj%R@^)`f zPz^r*^%{H+YN>Ciac{esiH;StlXsdqPLHZ&w1%R-Z9x(%@uhXb9sbc*J+_Ha5xy*2 z6wE?EZAg2NqZ5_z2;1;iCy_`{+Da)HTiFz!rs`W59ragP{cN>OQ!w^)zEQu1Kr^(0T*t5u=u%{TQJ=uqu+!W6B(y$yaEHp~rQoVcUCtqpNBlUya6LG(sv4AR*0 z>I}U_;%=!`Qa<=CBtp=pYtgJ-GY}m`iCuGAH$!Xh*vhR9D#suDDZ_A!x2~hGYsDLq zkjuc8P$lRnU)*pZqnK|zsxtP8%$=6qatc^fv0MaiTmi3ZMep8Zvm!`waN=UZ0B8{z zzSOt4_i)t$EVebO+5(W#KK+^^U0VQBkL&8|Oa)Id&M`}SxvEd5qSL#Ri>uS`-G2P< zAOGpIvuD45{tG6e&+fj0(5FWqe0B7Si`19LFK)fm+<*J(L+*NgarX6Rr(g1-l)3AJ zSMUGHlh59J_4v!P=l|gDM?ZQ0XE%qpH^+Cs@#o+Bx1appd)Jpgy84xq*JsZ2A;A9Z z!ig_*6_ODfI}DJg0fktsz&Gt^t|S^?0@0|KRH~I~!K7XATyC<+**Vq_l^|z_!P6aXMt}Yi*e90Fzy0$2PjAj2@!=YL`{5YZfG7U4T~>nfF&6N> zGq-5Y2@jx<3A0+MG+_41)NtTrEn!V8jF#p$dJuS(qCLa0Jw$5@w1mlv>zgN!&Z;7Y zl-!W8?N_(5H1@WTntID)tMed~U|86+&Z}MP@@3#X5h$d*LQ8c?IJ(7|T-IpZm~1pm z)P5{#CwsAOSyABGr#;oZQ#k9Om?fW%-ECvtzyp_P*uA-W=0yh2PB`pcyJW#cXHjH) zw@b>empx8P6Qbrkv;n~_gE+FxAB)JWmyk?&0AfrNv=CCD0j%6w%kXl9cc9Q9mG)sL zufQOfm|d32h~XkkePqn`ty=?(kPs+$W4eLBRKt^H6`>e>z_4(kHT)ZK2OblWj|`%4 zmjtsTug+4KCzWUm>Bn&pTjL)(F2qBdNlvMWwjdT;&opn{Wi8G+6*>188*j4&fSC~= zeJwLTGQ%o?eyP!v3_vMe?fAPzw%-0@-2kOEuK7X-3dTNGi3kE1nw;m!7VCb(Zl5QbAz)~ztj?>daH zG_~Al>Jf1Zco|JPW(g@N&t8w!NMTn6LW5na_{6=!+zR#Egj6Wj5pxarfS1C zZ{sBjEq7l>K#WJg8%_#uwuZm{*dE4P&DhFrjg7{?5C;zE8Lm;YHRt|t7y>m~rd!ao zdM=Do@xv#a>?KS({9@C7syg&(wmk(c-oOv8pfMQqrL&{Iu^9+qgBr*2UF7YA2-I^mBW|LoVk`tEyQKmE!3KmFqTD{dVAz5nptfB!3g{NC>YuW=Kx6qs+}b9%71Peo>eId)ph; zy_S$E_VO%L$~~0M;K%deBT8Fxu^C9M8QBUl=TC@LSk=O|)pD~z?vlJw&*`(X4t@=* zR(QeJwjZzSlp0&`5}pyT@UjewTfQHL&k8W>9Pv=P$onsVVijH z=wdd*%aczK6U!OUlqFMnlh-$VgW||VNA>6sUBJw^>q3^S{6F#|zldDl&a(&_w5%;p zxVV_2Br+ScO{|lRH8pe3+{FT0K}aD=)ba^po5J5OX)1}eG^FaP4*cjRCi&DBeJ>;s zXh<~QzveSR2wnJ*ZR8r-&Oa<|>Mc{e=Ego%zqg;4d)mzM2YhTKnY6MS!lf6Xjpivp z7!Z_1958elWl5I*p1$lGFMO)6s~KiZtgt+1>Hx?hI8gErbFC(g>6C^8fW2mnnVDm| zub%{JxTlX&=tz}vh$-3eS;FWgpD2aTFRKrx>+x<$9O+&el!yaO!E8xV${7^Xx~WM> zeYVosFSM6zi@t?yZ{h>8JW8PDB@}$u953}A@;$3{6t%6e7l43n0TI51hFPe36e5i& zP?F42Tgl#wS9Q0lQ;2#*4|nEJ$8If$g4N1xOeWvtA7NwBL#uP+8NE@&8K0E#T*^}#^o__Vc>yJ3)d6((g$x9T^ z_zDw#LgVPwKfL<>pPYYjb9DaV+(s;`Ct?1)5XyP#pvI4VpAyH`7!N@fvuD3zkF_!$6EqkFBA8eh3z1%8f zf6qmZx!lPWi(g(T-)o{moHyE{qlR?1`^#Z@K4k#@lCU(ob47UIk#rFwWV9&Z_8U zwko!|ALEq6-_{UOIR-jH7*Gol?hgskHmJUwJi{&X>zv;TbNrx zS%w%`^}FXYwfFj;Z( zSoc|#mB24O6|tuYU3`!wnxjDvSz_{Xf{zN+RkqXh8`dV_N#cNyi4&vQ?iL zu@MF;=+nd7Rz+b{5IO~cDnwIqfsRDM(nqcO+kR`+Bxo&!*%UeKL5j97X?bWYKB2R? zMSqjjcnFl?0z^2TP#Oc(C$t$EA&^!<(yGpqR519Bw~bpiQq^Ry(5jLqww(9M5!i}L z%2nHl4cYcZZ4-+6Y%BlNiZJQ*8QUmSxw;#=r)|&P#u=mqK4u)$&wfPKbI!Z3j6%nN z>N(%0&gil_HFTJ=(8&n&v`VZI6iP>SgI2MP`XUe-b);5&%SLuZi@A7?aPUJXB@ms? zN(i}1%wD|w$5WhZK?BdR{ry*;K0kZG1>_&T_`%sVzYlSE!iOP_58i+En6Jb8?Js`> z^6|~_KmPhxe{uZPC$HW=zdFA;x;?!+d;jFc*QeLN@%ay)9lv^fcMhjt|M~ZyTwVU= zXFvM+qc4B__4l5blr69&>S53`Y1AD|{Kh*th z2p$vs>d#)j`26O{g$u#?Bf|_2JjUtS-Szi={}11L`RerW?3Aw&<7Z0v=G*g&N009= zFAsPk@Z{8g+-3C3avUqA$$f#Lhi8Q$8KMb{E1C1EdGS`o&~uEs**ZX}voi(o$=BZ@2G68hX*hCMn&#hk}RN6t6%A?>XHm*87wxNlj;jx4$^#3)_Wvd zL3i%^Vn*5wF9h{GM-1{jm44fOi`dLl3 zsN@^?QlpicIQc*b3bROBQ>ykQCQiKfrk!3R+0NQZ78;F^@q|||nmKyUkAg1KRouEW z(p1Yh#AwZFoY$;=KNBh<@paHW1*v#L$_2FZs8b)YfSg4h%T3M!-vQ@!S?3*TxRPP9 z=p!A3;!P{TT&tN-7l;x~o;j*!cC(nH$PZa2SrQk(&%_90C9aX9PX76jP46;Bk{kHy zy9h}uupk*T69M?Sdxw>G6{SF%NQu$b-kzU!Pp-uUC(y*b?x~B`917m!c zMg(ug+w?SAa)i#d#nN38YRhC+LPox+httM#gQTF*vTAjM{|gHGT3gL45wCqhoq_@F z_9@9EPEo9G-Y9r_ zbMfT*f<};Y`W$@g)knZ)5;}ZxbICNzEOmZ$_UY@7@x-)ze0KuEKR5BiGxVNF95V|aO+mA%6Q zmx(!I30rs0&%~Zubo@GLADA=HtSv`$~8 zti%av=s0`tp{YD*uz@Q7x%$WKO`ouA)6x?uDjo$>=F9CCe$}Y8w<;O$tph^>BrbUW`}^ zI~!HU+%)85a1|&4{L>SOj%A;DGppv+e4?NBfwzGK^8G!0pagu^D8fO;*K$-Kf{e3V z3#&NjJ;JQ^B1P!Ypir1oe(57@lx9lrVpQ8ED>-=N$peK?cNe@ z7WJOwi{{^^yeR=Mv)n)c06+jqL_t(!--mn?*F-xgiB1Z6dYYp^&P=Rkd-8 z7dh(jILIAI12(ZoYw>C2oA>(4R{j%jyiY{5R;ex7cH&2w?J6(}|>r-VoT zxF}XuaA~AH18iAn4J&?m<(6A7sK}4Sx`#ya`j|Q^PBjWC}fBxNyj89hXOB*#Uz? z#)zjP>1B@tF6wDi**eRS+?*>e%RBWo^#z>&WZ@D7ZLnBN*~H?2ZvbE|$o(hJPi;AGTv@6*9sm78h83e6fkhtd*79Q`MRP_#zmU#V3C5oO|D%O7N%KF!1@j zy?7fqk0JYN4|4!pK%~FH1Efy;L1gKxFp=i9vh65mi@7EBG3|aUv|82w*Yq1m3E8dT zZ$?(s(hZyRy75x5zcvMAF?=Il^Q3wb))XgMBaUOrJ=!ht)GB2?WG{jqQ30?wuMj_suFG;0_8u=5;Dn4K~0jsqR@(Rm2-4v<7w&OIi4GB(J>DG_~Mkdv=H_S z5$h)=tp!c*k;QY_Y%s_Sa5-&F0;RY+mR{n>%o~=O>vc8S<0#I{AaP5{j6}@<%O@JE zZOazY&TJGiG2_X}=KV)Er-yeptl(UX2*r<+!qkFG4Gzq!T$i|+Koa;*nWSRulU7X^`wOt#ry??dvh0Oc`&}v ziltgkRJ<<5+ML|o-QL{4y1IRNb$xbxea)RzK_=A{$TDvj|K<;G{?V_V9G>x0bzYRA z=^f7d`}aTK-L9+;WFe~f3fd`s+R7V6l^7uk0xU{1TD)~(UmI6ip&%71D>MtPFnpc~ zSGx?LucC%gi33VO$iPa8_MjJ&3OsV9dvSgJ-Ua<`vwa3iwka(AAv0|r_SosVl2Ol) zu$;oQ79S}aj$)wGR4pvTN_GxvU;Sl^?%;2d;M)~QBGgrcRs-Iqh8DqF@v7?PFNt5plt`(6B!S-a1#z#JIs^Z zFFeF}O(=}XB9od?jTmQqvQI+>yEefkVuf`oqswFLIr6TwedJi%PF0Yzd zv})xj%;zC;XPa<%g&7d-^&0~K(8rUD=E}p0c5%XlB{C-rX%m=#ZDWtjzvR;rGoCV_ zD0Fd|ddyVUrwfj50_qwef4m6w?w)y8C^T3Q@M%SBrkkF+=R;nZAgqpSrjEpB+PQ!U zXz!}eKlWBVansWk3OG5SK_Wd=UrNR~vaDs%QN_YdAwL9F5}gx|HYcB#dmD# z+f&mt{8!)_x154}sN$&lu|-mlUA(bDrTY5}_;xCOaJJ_SZUZM`m5WpHG3K#} z-6OZmDI1QF2S_1}sKvm&Lk4(MH`^$P(ZX1)m?nq87y>)D3uAYTUpx#qtNJgol-V9THP;l61p;lP-QDsAaAX zN4=>?7BZ=-kH5*u>x1{db#ZpVha%W=KJF4Tjx#sX8V_+G6SkDQx0Uvu$QbZD$gXG) zKltF_!w>oC4MTAe=qA4+kQlE9MGJG6g}sg?X*9Wj6FT=w+*f-Y=6G;^didd`pV&o{ zO?I7dqHgT^)j30fNByp@?_WGWd3AOE$6q~r{?!H70+NHyd~o>n>klq(|BHX};x|6M zJmd2q{8%qvL```17GL7aQ0CejEP4(ZzIs{pa!YS`w*X&yKL+2?wleBst%Lo0ifb>|o2zRJ%KCtFCuu8yK64K~VeZTiX9 zf+|UFxd%VZ%{awIuV3YOtj;!{jDpe_ZoB26`ZM_Va0H}{Erkugd>UFCQ7{h=)MNN? zmru2ZAKDo-T4d17Xcg3T2|es97MFJ{kCb|Ln((Y|T->o$?Dzl7L!j^N2Do*m%0wJ?t!ETdIX~`O~MA-8O$QG~)A>%&K+OS0j36AU!5)kig zR2L?=r{sIqNe%bCJdd0(%y@2td59K;aqU~5p0^^<rZ-f@m%0B$>>(1FP<4@BAQkxtwvP#_rhZNbCkOm6QLs;vLSltNE6wCH@Tzcc zGTlt4s#J5~LRi)cqrzcV2_5( zZ5aYpZm11?wJv7rOFYTbZ_!(@A=@e_E&_!Jt!9jRY`i)DG}}{{S`-kcW%f%^i+67I zxZl+1ki1axs;|PllTAg}9Nd+sX;3+NQZ0n6v9e&A z=VHJ&!shC5+?Sa=KqMOHOJU=R$+IWUJ?|Nx)-IH@Gqr z5eSr-1?>+WgL`yx@#Il`r70}2nK?`gx(?UuHy7JPT#wPFk$>*6=CvL3xi9?W6VJIf zkp-yXZ(#6CA4LMEEN#u*@r zC$~2roZkI}@7(6@E0+p!kjcw#hn-Pg=7bjf76 z>dhqR6eb?ES~n4rB<1rzB)zWi&mJ2?yH133K;%{sO+(CAO>r!Xkf8$WrcN9hYv;c5 z!&f&qe0(_LC)VOevxSHI#Y?2}+6q<|@l9AdVr+r5r=zSms+*dHZX3j2)nF@MYUuB1 zG(hx|+t#X3SdC&>YZI_=>SWuy5Nz|NWC6%_X!^*$oD;%ib`@v_@=hfQb?Lxs3yipn z#<0$hECqQuyI{;&?&2yd6!AMELTwGLcm*)$2EKR*#8p{fJfkVI*2#x8Ho^c<=FiqG zP6}Jt5el+etEPYFXyuf9?$LxMCmAbIP-$gya8;Cl3?KM&0^yE4q*DZT;VV#HF=-+h zpS%PX!X!v6Y@KPmy9QspI92JM=N1B{Qc`GkUFT&DCp}MLqKg;M&0UBhbH-BcKY-;f zpQKAKNEBg#kg22nH5jfDi)<8$3nz)deI6O~trnxJJp89iv>0$|L%T zTkpu&(&jZUSq%|Wqk%Y)Pjv;92KBYAf>;mqOQgaLXTMN)9-Z^s*+o2Hpx zXgW>2e&ouB)uut^I(Nv1L;COoOaVnCSun|KnqRzKrLE z_(PW&l9~2|CFAP@-p=GLU37UTi^bg4)vfDD_}t&0pRukyyt$!x9H{%N7l+TE9bLSC ze{#-RWQC9Kqk|7W=2H(|$DrGcHRObAur$Fklk*mtHwYfw$}{|>+ibe`zt^l3k~h+a zWfP^+ysygb2A)VQ|o zdiv4j#m)1VPtUKuczNl?$RrpV6a5cAygln@g6Rd`cm{)OiEC&eq_apha>pd}(xwKb zWTgi>PGlP7KtqicmD7;YB%6m8C4@gmnk~7;HHsxln-y8PvHs9eEcWzmN}}h?h|0@+ zYGm?@hs9InZL54$%gY#5-|Z`}NO|flu-}jkx?aX02mvbKAY#(`whw_p24N{!n79^l z@GDd+9`_3qFQUEH)aHBcViSQUWA4dKJcgnhlI(BD*_DQzRAlIM!2yGWWK-NzNWUZ~ zAAs}SNh%KYM3}*o@qi~rS$f?C5~`@6>Sa+N!r}E2R6>>`b(XIkKW*yAQQKFm$JqZh^#@WnnL>yx|KhlqItY^oe9Z84 zy%y3~q|u*97XJXfsc%HuiT_LKZ~5HvvyU&FcXA=ubS^EFB56XKb7jkSCD4gtiKP;e zDX5$5!+Hx~SBTkew}aC8Y!%LaX^eNs=t=EOqFIDUhC?K1xy|7%2dlAuMN6dbj<+Cn z9ZZW6c8_e6*uFW9mu-i9Xrqro+08gv2$64UA_Z+EMb?=Jt+`+25kjzx$?^I5BR*8ZM`C5{v#heRIIGB8@KDS}4=eABC1erVSo`o#I6j)LEsehH&??JKGi5i+IHC5m z#G(N*cWC@}{EFSGu(Sbov?vc+VO_Un&FZTjS`vkm61Oww9;6Bf2e+KsV#Nso1n9BXu8rVV z6~A&!>On9L5UAP=D~wGG=AJL?sLN8#L{lf~#$ZrWj>}CyQP*t@9hX*j+tS}OMX7?S ze-(XsyQ$Bv)l{sPaiTCvxK^RDQdw2)BTTr_3=_qx>952mR>S8V{G~uEUV_@JDv*jT z6AtBMzKVMm!5l3cW0Rf2QQtzHIEy8E^(PT%XG0ig@2C#)v?MRXvjHr?#)G>WWG{RO zQS(?YG1uKl=coq_B5yeg1DK|QsIts^Y_f{4=e=;Y>UgJhc~0@o>bP5NO_UUCwF2A{ zIQmhLV+c{(6tHb|AX{xkgKW%@r-$6}%9+0MK#Qf(7pkIfE7 zaLM_?mKoAZ%)!M4-%fJC*A<_i9pByXZDmJ~E_e*im%e)gqu;)+cfs*=s7s`=vR9G^&YPhc)nw3y)4(Mw;9el4P{G&!6+F&eREwdyDZR66=uxzUi77-|9QzMO( zX~|_$Yp#Q8CPAZ>gMj%z3NymQ>1?T^*cIGbmN<04{lWFk9YYHQ)3vs#VpxPF=P0`X zR<>0)*$_-j0t{aZ9ThcCvP27_@k+o$_Lav+^#_0B6V39psr-do^nxR1w$WT+wmNMw zsph;jY%`6Eu~6~PASG$seNWZ5M19?o)tpd7-jy2P*dkfWuuYL3W!}PPtgsFU3*G!KIP* zi9Jm+Nh0zJt#nY5Cj21+4iEh(Q5>cTzppVP6Ae`PQ{+Fs!h|v}iF}uwx?P(uSMnV8 zY^SOyCgLO<{gOc|^_l$8s64`$lnTA&yUh9&3a!j$vG(Po5NuLn3#EZbS5_2W`m@`r z+5H%aAI(6BWpncrl?S`X_w-f%<@C*s^Khb69jp`<+@J76n-rIKZ7NQwgkq#_}SXCKk58O3?aNvuJZ?1XV8Td(lm>n5D1xTbBEsOv7@h%<>L7b!b+ z$9utdcZYY+?~hMzPEU`%dUkuoFUTDneEY}u|Kh*B`IG|C7D3s>$?W`2v-=!AsTB zq|wl0jxgXxH(Od&u2=S3Q#801vD)Ka8YF3Il7L)wxUTUFE2p<7kB)9W zx%~RemroC#8vI=X$sq8GBW3NpR-({< zZMV%1aJ-Kqr9xK{Xt8u%9ZG?VTF0^GIb$>~0y@P3-gw8>lJZC>aeCrDcW zJSNEM3qM;?|AK1u%3`?-y#<1h1jU17;xcWNH{AMdwfiwpAAu1>Vs$lbu7%x%DOA0} zt*M2Dv@@B7AkDil+6PHW#*Zwz%(}iidUT9TN_3}tHjn9Wc8&sXeJM{ro$$KEC50!E zLSLrj+)6CwgpT1E8Z|{nx?&67!D%XAm_iQ z;L-{AvH%q=?plKG>ni_2&&4aG*wcbnPckbxp^*Ef(9t&(A^0GERAxv8Pg7IFyXSuS zGiU~Oe8S9?7o9o+Qn}>gSh5)TF>U>t7alg(SB&%JGEJn%O022GCP|-K5V64#lMk$9RMU>{}O|}LrHx5Vjg@% z$MI9oxKG)!kW`NT-x~iC0+oCcFJr8MvgXUn*`W-HBtlx~a*}i#^I<91Y!g66X8L#J zTWrSDIEB^j?It8_)f{{4P0dcQU)s^x!`G-xD3!k=?dnw7p1y8Z)pDvm);wJ?P|CLs zs~2v!yrCM0-tYS4Wy3Ro-zf;1LL=+U^7ZrE=P&NiaZ=}75$;}p@x`rh+TG{;zKS{(pLK!FNde z`CSRT|E=?RBZjFp{6gDCx7A-mrG#qQCUgvO6g5fJLbp`48;7>{uQHpKk;z+7QBT{$ zoo=J{Q2b`CDo#JNWLTI{UwH})LXw?Au7vzF@bS^fql?pz&tLt!+ox(VJ`WFm{1HoU zt~Go}SQoO3F*^owbwU}PNxta$bhkR<}@%irir9mb7a!^0++(#UIel|R} z9yQh(J8${106GB^z3h8KE3axCSAL^%z-QmfYdqE|dp5-UG>STS3=Vq`F;9H_LWeJg z5-$=7Lk0)D6U`!wiNnz?BlY2;re!v#XMIs(fhxWw^}?D~*}?(8Lh!OnGk@?9E9Wp* zFf=iAv2#|$gvUNkCO@X7Oazfn-y*??vRj#SA78rbX{<}Ui;pSZ*^o$2Unojm{e%!b z^%ZFm{bFwTX;ibgwl4khul|F582okhLoIxA+31+*UjA_pe@cl$J`f@>WNdHim-*;v z_e=6`@LKgIHV9y3pPX7F|6!mUeLakR#=-KbWy&^ALHJd*yHXwDrfzHjrnTzTq+Ch% z(-y0tw#g&hb`>XvF{(at0NIzFPUEgZrP-)X(=<(&9`6?MF6Sb>4_NBYVp~(uNNhg%&JB} zfVnhh##Pa_?0Q0sg&cCOP(TB&jSo#0b|Pg%oA+&4*0AL~a|+{v?prI%fY)8D7ZEV` z%`}WY?-W1HFYQL{^6AO>g*WK_6)b`X0)%~ z$+k^~lN8jt@S1%Sm|<5U^s=;Kj(T#C#f8F$3-6LGBfo}Ax(cyY(?AfUio z>_7VG%D061WfZTD1g-v@5~U>LUfb%;46Q4RC9un9momKJwB~6`Z>Jtsa!WJ*IEssx z{-aDd&hNA-0t!mw+hZ(a#^4wY?}e!57E^7LmT}}MrOK-to-+_EyXb$zt{#CbYPGN$ zC;QUqw8>=TZ-|CJwn>s0+EroS0g@QVDy_w-O3mAZJnczO(lU}Q;WP(BeF~{kXjReL z{3#3v2X!;$xny6n)kiEb6C!e#O{}84`_7OXcoUzF;xNh-TtA6J0c;E%qom(1Vx+c< z6neufUftEbw@om}OF)L#7HPhakI^Pf{)b@rGYreanvBt4*~H$rv;!M%<*X;8a5dJ} zSjQA&>?BVJx}k28gfiXkGU8nncFyzp#l(xIL8BcIt?&65obhTdn9bTz0!s%W8+{)n za;nf%c4*&Y*JM|O6oA^+3guDwMeJHdQRB9Oa z6pn#V-^8c-P&O}(Z1E=*1xwZf@)rNUB0k2&hp2wOfls3|m_7YnK4VDZ=Coj=pJ8C? zia%*E8T=<3{g65l8KwVGG%Z^pCx=y9_+OG0s&1wnniONcGk%GXCnx=4|7ba`1JnSs4aor$}kDvt0ZU&WtzOX-YevEB=eK)pf*QoVGv0NdahmO&CAn~Hl|{}Ch%DLxNjlALAH<k~dW{OOYy zfBNhxDgEfl-Fs)($0wJrrCk(|z98CLSmEPAOd+x|ZfJRH29-LLsy0Ixti@c8gb~^f zh2b3Xs8>R3uBWrNaa|qopc-a+9ev#!qzOu|jkg@2(aSXYt6LKiHwCY5E+6sfBUwDy zFnmimn9GqLcDLBX&Sp3=FNrCI9BY!D`k=Bz669ygc z;sT%!iuUxz#L?1aWv{#$A}%+!Pds#`T2|)7G448y4|CZ2c&B2Y@F!Gni7V2NOn3(Y zOX>@_VG1d z`ZA0Igl66q9vcASS5p0s2pdD49Yyq&M8CF)1?vcfd7y7=n)dk=s{H@v`obI2UzDFl ztRDOcGJRn=5{Hc&f{dR@kmVVZTmB=le|ytdw|1&{DYG|SP1%xgbW<<8jOW!jLaIrX zF!@hnmPriN`-W}s(^}6IH~jWTb=ry}w$WTed}olh(HVm@w!Fo=AQUgPf{w3dd7+^* znsv<}qYxcbsQeP~)`4b0NOiI&Xik^C)-4tb596JaAw4o2&{^E17#A%BvLRaJSHAAK z-xZxUv7cdNMphr>C_=IXc8X1z7HNNovKTYa78~){)P87>u*L%vn+|8`I9O45h_6jh zY^Bh$_?Vy!)FLKA-vBgoOM63h84@rd@?YDk>+IOCsIlG|J7`m`A^rzJV>L%#XR0gSxd_0ja#SgXQ%)8A$O=%@ zg|h&Qq4~H?VIfES&Yf&wXs@Lm1ZP)g8+m%+BQZ@2sc4DJJ6|82oba)mqbE-uf9u)R z&GpmM(}TbF$*sR2f}OvW?DgIb!9~K?M<+Yu>A5R3Di{$8e|XC^dBT*04Mx_*fHY+r zk=Ujp!sH|<>2Iyna|seH^r~7LH1(MZOl^v07LgSf*p~WJzpgSQYvYg3-Cb4{hkuE|N)c!BMWWapW@b=-?(_vx1lQl}Fw}y@iRNBO{@XG}*8rzjzG5jJo5&bZI1 z1deQI6V7-smycUbiBPnpCE~J+FY5Af8|GRK^#v3C3fWgbhE@0_^yB_b{q)N^gM;5W zl{qJ2m>(0BbQOWx2$@=JHPU8&}W~$p-|%l7u(n{kzgnm%qW^{+VvvDDr>=}QHNoj(PWb1b+Sc^o1sT7`vz_Mxh z(kUf5Dz36!b=jCa#A0OI{4PI{?!u<}4vU)Nfn?}S{f)omjB`5*8A^KfzV}_Wpy5+m9~qKEFNw@rPHB&QJZUF!Qy{P)#1ZbyMOVbb&nAP!*~} zM`M-#Eq*Sfi(c+WOoY)X&#KEj-K&Cd`RgvxsXzhkDp;klGGg=0w2lZn` zb#H?POA^+Ce804)sC~m$yLggd3+N7B#`y>nOHw}6YLJ9&1~b5DQnQxqH{4AU2kw?v z%O=CUSqWj)laF0BuvS;0@KK-Le!M3;*I5NxO(di1?Rc?VA?1#J7BPn`-FUkbF0`am zDSNf!`-a)@F{hBbgQ|*#p^F8c9X{m^YC0sZ0OQYr{MrW>>{Px%lpuN%(L=IDJr`SU`iqmqi5ONzq> zZXo$Dmi)Rl1KuU0Fk*@92gmsF8ncn-Eu=v<1e2yQ;wfiJ7?uw-vU)-Ai)@l^Dx3P5BM|q~({>-_K{u24eDNf=J&aI%K9@{6>Vn#f(uJEyI9% zNLpC>DGcX?Hs!xL|MK}e#P1Eij<=Mv>$fl#HZG}At zD!9dm>Mew}?pmn4jbd5awXQ(K-{Or{6sHuhCEYt>B2>1PH%a9-23dT{VW@ij##Y&C zeNZS{wX<#2fOsVXk0-RwkFQ_)N_TU;b6LZlHcItJlr8MoOb9`=ZR-0++H~8N)jsg* zY1>m${DiU7uio0HQHVH-Ap^b$aajVJd0~Se4zXm10uS^3;-!laVh@}%*~>2t6{Uzke_Y(X-Y&c8^B6BeSw93J*Hq!O3>I!c zOHp=+*$b^!svNSldhq({hVRgJAy|brc3-1SvMfijRXwi;%559|o7?(IwM--!VNw_m z0~a}h4QdIL;j1laT@fo%kTe7LFW*ZhEyRE3iVfTkNxDc z_blM}QL;2;^)^?&NsVajpk;`J7lN(>dB50272iQ)0S7&K^%&}?v8m}77DCb!i#Juw zwWrylt(IF{O@Twy2_Ps=8KWO4#VqEq0pH}x1Y8Fpnry_uYe4^@UaQWSSBTC+u9||Sk9iHZ{nko>O^@BSLaKX^Z_u}SMG;M>Z1KJLN+A0 z-0(MI5if4ltfM+u`KML{91ou;2U-I?Qb~ci;`IFZ=8F4*xj=UChli891<{+8P>w|0 z1`yxTM>B0U=%C(XzhI=mM&oSa1RwXfcHx2~{?tqBfLk5)fsZ5YEwHcCIA4l^t;9i} z6C3z=IC%ezW{lURLQd`cD5~V7;t|En(iBnR1HtSyEr3=|99F|$_oyB_+p|HBj|o4z z%*`GQD=aiMOwh^nZezkSe{NyoO^`&F*X?4K%-mMc1wPbC353aTSB=8R!MzLaN&Yuc{6Dp<-eWaz`2xo#;&xK&Vl<`L&^Rm9cHo!To;?cza|U!XRM)z$p#WIRkDSkrMe!s z9O8EIiNYd9)24>k>J*2vt;tH@LzvQ1+c}En<}?mQP4!J5`pL<*Z>s?>HEqMch5h~E zPoL#<;)-tHyP662T;R(!OB_klj3gWGd7IUT?hLeDl7=QT_w0HOgXd@d+4H7s@Mq}| zA=az{c@YAV0mOq$D9vrN2salEHFy5dXTwXU4ZD2N3zca_-bG0U=a`Mo$HQVM{%Z?koHGA*hOwFPb9YvT8V z|Nrrq%3P|KLt!eWZLFQCzme+484IAw&4TUejH6G1C7fv<(rpcV?E%&+k3Rd|DhvLK zu6HRW_Rl5zVPZ@Yl}Mz?tPDJf{p1_fo)(K~G;V+JSry{b?|dgV+clFXe`R;cx1CkK z>){~HCEr$+w~0TYOhAq~%3Au+=yzj(`K0d=%e=H1B>;p&)QDEi!uvGf8{37Y7OMiY zHNiJciYxx%TM-18h)SPQESkjDjHyG}>1mv~?Db#6VMe6=dC98EX;Ta^wr34>&AkXM z(;{w;!;Jo^&G7!G*YAILNEpz$5t3UZz4UPq#o>x=8yq>3<#J_N*pXx~{n(ZDe!xCU zUz}gKP@Y3y<>Dqmk==at;!s1~Q9gb8sE=j*^|$}{^NTace%7A% zX=K-H=!m^6b=QEp4t^9j|Ap4G9SavVj)^6PhO?Nw@DOgb6hu8ph^?yyFn1)1KR5cQ z)JvWnhi`1hR1}i6Yu6We^zhpki0|IKe#Q6xo^BJ)s7I2)^a2nLl$C_W7L}x>_h~TI z$4$a)^Qf3nPG&TZYlvg$XNv1A1w|a;6quMEuML59%*?DB12(FUnQRc@TTOKm=JbIkFW zghis;tz*NA)2g+=tBJ0TW!{?pkQk>Wh$0hSPHChjnHV(YDC|!n$P}d9fu+|M(2R8k zH6IdvDH#_{m|P93*NGPLzWp?uIdVw|0BU-T)Am>rR|2FO8{YU5+CXDJ5aJzx7$uQK z_zAO~X&tihGL6F!hCg_zA~d~iJGN2%AI7Vm$u8+!A-GNXoF=u@GF>6r;(D*P2#n*rb zBrAK@wX}}5V)L$RVpC)y9@1a}Q^o`SOujZ(NaC+pI;328TqjyvJ=cv%@RhIm?+on& zd1qbWOX4pe!#FMnpN(rI3!!;8?S)I6eg`#F& z2OL@pr|aheTN0{}8QUEc&K??%lRJ*hk2}R+D}A6~1!?T9iz+ci70Q9lR0Be2j~O!? zMB67kUMPhe!D2k;0|wX&fm#9<$?L4D$)6kCU|w)VQy! zxkQRYC&|3H;UlK04g?%h;UIo$m}Y-^)DcdOtwO3k{D!p<7z$ru*+gSWp_M}$0#cTw z>3TYNjOENGD!86YHN{Ysuf8CZ+F;Ey2qEfXF8)wb@N4_M_zviQDSlQV1yl{XlBp{7 z(!TP_P<;JYtth*e$xvthzVgCorZaFX?-%pMY-h*3TgR_?+@bjN;^WW1ef+@huz5B$_P|95%zZ7Yo&+?7B=9Lt zPXWW-v7~m03c>XR5%d`IBp}fg$5cGIdOc<50TYB~jqPE?VOZV!Ntbxk4oH*i5X81{ z2f$Fm&;v3has>(`GE8K0ff>!}ouBjixO!m>#S4f&-5;VB%)yJ(=q`p24V2 zAQhV+YNo&B9*GnQyru>Z>kKS@w)5?Pz{^+OS>U#W#&=#+VFRYD^rR#{m6T%A`&Vta zY0J#LZa2I`KFElau-jZNSt=p4KC@fl39zsO3q^|a7sl;CROw{)>feZ^HpES4u zw}^3reYXW980H=*32&7UTj;lNq?IlA%QxS|56{4zlxESEqP2tE@{D~DOfgwcgt&CCZIpM^ zcz-SjAQva$5!hERzVWYzq!2y;RUs-4efuMksX+W{un$-`;DjY_u=--rES22D!`+kf z(J3u>L*ch+t*(ToVjsJ-5g-)OFJ6)Y)`G;9Tp9G|f{qJ_2%XTuUB^ z%0*^w<&mF6(4J#WkwppL}oi7cPl! zdkH)KWC7ck^8NVXw_kqNHm!12iJ@vPuH;t_#w`vCH`SVjX`b3;rH2mV-Wv_w^WtA6 zihCO-iBOwXgz!&<9Y%6({<`LZ0k&A_fz!#~aH=5t zZI6~I_ANLmRCs6%90+KqW4R_~P;Y9|L9~bn)yh;wQR!)zx0W0$37AASJ|KSg_D%iD zhzx&UOLF##LFd!k$s{DKbLp5$w-ZhNuckwmlB`hVzBTmyB`nqRj`Bv+$IW9PBhG?*|T9n z=pP3ZIK<*{6g-8c!be3|d}}*#=802UQudpFdX=I$B%v3yj*Ol=ijV`4(q~6TZUu7u zc@+oB$N+M78CW#Vnm463RugG=eZr7l^7U%!Xg-6VbvfwA{2kdjBetac`fW2JBiK$& zg^E0qgl<5|g;$H*gA3lubf1e~iyfZl@e|ja5hJc@TQQH4^&^ft8Q5X{WhPd{^7?Czu^^g1e>Z1j;-$o?%(dRr6YzJw(!lfAVh!QF-OZW&uCotR9`LWAW z!OR7GEKH1{7G{(uIxp$I#X!co>fJ#yb9HJ9g|XMjPHBUZCGS&3)9FkbG5gx9=`RTo3rWZT0g)u2q=I9 z^9YB|OPDTXbKVUsuLwQf0FBk6^#Ix#SpFF}wyULVOK^rS|NXyMEV0+pr^t%F4lxAL z%Tc+>v9!PXmw9#8$#0E7*=Ixo_32wzoL;|z6$W9YjO~5H%eUDXA(jW!^jsoUvtxOHTN$nOK>YK$h0U-6b2V6P)@p#}N zWfJ8gp~k9*DyD5oVFlHf@i~4;4$?axjF}_J*q&n2&&VVC?BKa$&~rxrAiNTE1x^@` zCD!G5ry@}Og}F;yF{I%Th|0=8P^9$&*FnPre;LJc0!<@Wvl6b`ih84Y2IlZilu(kr(q0Kk*xS^3}BS zDyJ*os!JrrTlV4qhvw@zccvLn4QJIZ@`|?>DwjdZcCT;cE0arsm|pUgm6uZQ3x4>E z&Vm;-_f0+7sJ{j*r>9(wDjiQg#>)p!jBX_<#C9(cM9qI(n+IKmQ%u@Ryb?CEpXmAt zvt1b)XL^-#M{BfoE4U-H2AY()Np2F(C-Lio*=_1^m~Mb(dgf}1+*>t-CHGD_;`z{-F^<>X zREk4D-H20HW(laik>azIv{A4M8td1$bwg8lhKf+uteZdcE>TqG`D#M1}h z8k`EG6jaR~N}F*Rkdap<@miWP5A_t(3qVOWpe@2Py)cCezblWUYb)<9)cJ&l)C2X{ zIAS)deQy$J^_4g9BG+$?XhkFun2(a-jU1hNSPujIn!u+Yz3`B&KC=&!M49cRDEuaw zyj6TYIXSY5Au7&OywhTHg(<&;NWclk;hEoYg7<^Kc{nvcrN*5e0GP$r(PEyGNG=;5 zA#!Mc>NItN7^OI&SF{qj=_e!gP4GlRLG*e^SRIk&OAVO+LxF(!$)Xs{V@2r;57g~E zR9q{|3SWru_T-O+r)XZU(<#psqEpG#G8Y+WjPi(KJ*W6s1LeP05U90?HKh6;S}U0a z;PWNC1~BMS7>1D;!*sqBe`y`n0KnTSOd7I%WNOap0|-~-V`k%KsC=0cF3eSd06J$3&J46>Kjqs9f{Z^9?2NMU_9NJn>6VJVr3Km&(rGCDhl``Nm59XY!5jD+ad7*Ip#iFOIx< z_f6s{fA-1~1pDZ;3TBBibidDk-LqJvC{oIQQuFG27xS}~cv7q;V9Ukzj zac-!1;lB}BfYLw7kh(c?nMGhP#sQ19!E|zEmt5=>POG`>000O7NklSZ@J&GRP0JmwQ&h-YkO%JX|H^6O58NC1vzs;52)Gm-4egKy9P~Z5JPln!~ zRIUMCx59^}h4^I5%5teG0a%JW(LC;BHuBqaI9Fw#A7(&J0J+B!n3}i?Db`qd^Jb})3*w;@S9fnTz~uJ z)6f5{zep@?)7cjACc(!M#8xKUNP+rRsp~;yI28TpFv;jVpi?+vE3|1nvj(>vJflt) z@uevNc%tuHfk+i?vW0W1+5Y^D3+oUAcZTBuhK^jHKKA23ztQJ1IxZ{RRV6gG?M#=$ z3pkSeFyAcO)~|z&VCnA zV9CO)H7hEmq>(HI^!?g*d3KIv{T)^IK&3AQ7BcYDEZYnxyvcUzi8Db0^vc^Hq%o{L z4ex{nZOsZQA~#1PU069wRO@XcIt7*=A_`0ZLZk6^rY71?GUVn+qI2;{c41E9k z^{a3EN-TCKK)a3@tS5W_LQ z3KJM!jLCq>n$`;hF^EM7!0K&-AHUbdl#1K2?HPF**QzrgB}1+Kuy=^5yWT>>5FG2$ zuSi@3?;-*91Pc33Okp!l+bkaBQ(rnHjbABv15qUYLhXQsQG|h^PpA$r87WDy(3xBN z+*-^flq$J54-$!#jD9cJE&%062+bdlO2>~54!)ua;PKU>3)I{F256 z6u0mxb^D1C^{3H0KG)wvN0H^IfC>km)?xOwq)*qM=g?^kJ;kjz00BsnUB$jFYOm9hYK=aqH01=LAs~& zdIhN|E;?WR`r6y~`e0u}9S_`Hd<&lF+Lf6p<`I-{Nw%yfmZ{U%#O?sE40{ICrb_5b zatU3$ipBv&o@d2WU^Y$&14uMVvYxk-fcXVTt)>L8-hBP1fBE*|)j9=U*GtF~&zPm8 zb`PNuJBCPPSs^96Mn+m02Qxl0onm_`rM`p@YGErNsiM6Bo(q2E!H^XEllM93aSL?< z*$8OkTK6-Lav_zWmmYiT5q15t>3ZEyywf5p*JEwzigMaP71&d#l0~G1v)W7?4?2G(D)Fa*8l*+!E18+Gur~0F(_^<(GiC5^ z|4D#SlSX<@`i%9Jx4vWxsec5JLk~V#4qq8-$pwDE&RfUd3FV`bEyvVBC0tEuUMg9s z;m8mB$wvd;P;~9$g+Af=;3z<*sR(0HC@T0)W2-w(iO3=^bvz*=g=Z|=-uVjfH9s0l zYWm9}se@peN~q=!IJAw%iN_Qe`lF%e1Eu4xoci}pgvrY<*=wBmsb`ZHuQSbfU>f+G zjn%YhXR5(S#_*4V@A_ZjvGBz2MGU|Ta?*Z3}rLx~Zo_xpv%#Tf-ti5rhZM(@6V zc>g0G6O(p|?D?MVv6R<3T+Bx$e}qXgZWS|rtysdA9l4d)49ZR#$??({U(0kmkv!7? z9{0oVx^jMFiF}?bXQaS~i22GI+iPElLF3%-n`21X6>L9Oz%WN3+yn_52T+}#l8;qP zvedcv5|ZP>K9QJds^*|15|BG_r_HecJF1>ot_j2(Ui}VJu;f@VSI+jLvw@oN6-g2z z-fk~nK794n_uszh`Q>W=7l|e$y$M#}qlzDai8rw|ERhu8=D^b-iQ}5yRJKRvl_DMk j)E}W`#89glzDxf+8VtrZV~j1#ywf@FIqzTZ^T$2+x%YGL^SSrjbDneWySX^<^Gfpq0Kk9N(e?rW zaKPDm2@fY*vPw#I*@g|b^B3*d*W>@s;ai@Oc(%!Qsze-WT{>hdN+Exx@~vIAGzwrI zYg`v1kwK1oGIR0YBsK>cyDp22n*R{c5shy`p+ zdU&(s(zcB%_c_~_fNT3Y9xS#O7@lL>*?g?MSbDCkQ+0c)(<=buJ3#metp8whGjU-l zp&9Hz-lkQpfsLbndnae9YSH^@cmJpmDFAK>_(cFd%>#4OI#~yQQ}vLJya~ zfM)ooA@F_Q@dek58cdP8Gb^Q+1V*Z%qvNW!; zbg-LTeJi|eYbw|Gl;U@VYG`VaEN;xIzQ-YO?LeTOs(Nkj$iRwz3d^{VdAj6KtdOn} z#!^h$Ioh+T-M^vrk!JjaCG&tGo=-phkfrB)a1yqo-AflP-_Z9wRJgOv-$+#-U(@qG z)O)+F+r^N6#5i6_lYF`{vwnR!cjx|#?zN`bwQ?hrrKqJeXAD4lJX(sWdzYE;k1n@-FsTE+D z1Zc82to8xFZQ$|&fFl7hbReDvTw(yI6`+73>V7B`u&0vK_Ah(r;rhEe&`fv;g-}t3N=pzVK>W$(6lIR?%OyqvagYJ_TaMzm5!D>CqXc`G!!$;pkTBHPf>T$D||RK zH+9vSe?On6H{B;-LxOkjHt{6ZZ>@6bVof-QJ`|LKWmfl2XcbZ3&>u2d5QxRa8P9)$ zEuX7RQf#^cCh?;(lnqpAAu*#gNK-6PBy}$iYZ~1)LO!L1y8(T~D6&ULajo?QG`@)M z)>&cP#m2VKFBG1aEarO*Ih^R}GQc;;Q2t4h5!udvS@1M2666rzkDW<2#7-rR;+K`wP?{XcABAX{t-@8T?$* zeoC#FAtXAPrEes8P<_X(0Q0`%NH5X^mS8tJN0~BhQhwF^lD`h5GB5FA9q9@Crs<5L zHZ|dS@e}cpPj?y`TD0-MAcmU+1pwI=azAfq=leo*2E~Dh2~fk&KiSwKr~w~P*}^*L zk)7|`(HUl{JGP89{^O|@#%L!nB(hfQqqA+&M?4BRPk4uoph%I;z)kuNPPWzV{feOH z^or}F6LU!`OK(5Cvi&Xf$i8U%J`fkvXP=%ogujXK>te~TuV1#c;{iJMniQ)S58j@% z+_FRs%?)2J01iT_mjAxU`T#sm$vLn3@#3?_?)B-F`j{c&Ad-tv&ut;TT9k8?OYi}5 zIJB1&@R^XZV{k*i9HKOwO=!i=|8KLN>i`rz9+ZbJ-ppo)q@oKXmg=}yme zz|Z~Xe?l&pKeDX_c3fYnCs|L?N_$Lt@Q;f$|B0%^F-E61WT)wC`L}Z{W&L084d#$E zzuF($1$x0QpsQaV-9SXOoobX0kf9A-8GP|Jc4$kH4S4fjuTJxzZz`?W#0Sm>2>*0q zGzK*J>vj zlQwU!tBcl+fqqEiH0jz*^pSzd+oA5~L-v}M<1dTA;3 z729$acR+G_l^5?YKg6e7$9R3KySb-+C2VObccyK{z*(@#>mJpeSf;< zM;E^d@wnYAmPCm16VFV{eJ0ra_C(&!9XE`1o<<+hp~k%70l7Pi_q(~w8{9cUiSPei>e zvkNmb)i?6)#lBjQJK&ennLlf<57w?3wZuuj$~i%>{meB>D~0@oTL=%Rc;Bjsf(?3d!1;5GFUWQ|f%D?TY#q{}C=TXhsJ%Bv0n`iRFkqYQ(s#cl zMo%{Ld0bxjCnM8tR%(y-I!j<=sSbIo2nO>}UY?<4+3JEWGHo>=Z~c6^Dxc*L3h#)H zA|Bk!4CiNq5uCYW13|&gn&20usQy-lMc+gNW_g^BNG}&yvvf1U%x3V}MZ96Ze=bK* zFs4cw>t^#%RYXpFc-IOni7Cs^L?iIljtF|OiTv|KiL9_fTiA15c{y?JXnTx;V-Bxi z%v?83{Iv0c8(huQ8!}EOKDQJ_2Xuwi)^1NUjAmv=D~#MRsx<1N>Hi8Q=@hjUKhI-g zF&Egg_KaIGXQn5T6liwmMSkSV+TEIon*RO^3L3he5CK>Fkzmr()m6qS-4PK*d{E$k z-MhYI>VAD`I3qK9f)wgLWl=goH^Q~ljYQoRm3tzBn!4ai96!XswLFQ%bD09;49$h6 z0GQ9f6Mn%_UbV@iL_}feCqd%{zUQwjX=veCNA~Hhoe-KY{J#srMC^t^x$0}i*p+Y@ znD@X@Ja6=FgWZ9=M54_icGf+OmYdhn7*??~N?)KVlXbWv`jRimLED~5 zNVX3-A~5jccwU@8TyZd1XBHaGt9uvLlWProFp|AYLOSn+!r#aG$8@#87vLBtrXzV~8+eC^OetSroE zLs&!bvwv9W8JI9xp56kgGHV^tj$@p)w@Wc{!mu^v;GnFl=H)(+OAF5rLqH+q*d~ z<-na)!P?4hast)eZk9zCVLo3|$j)}8z9quv&xF|6zVw9J<`%{nn>i0I240BFFw6?K zJ(flv%a)WFaqy5S6?m@&wG+nUu+Ge9`3toigXHNL@1(1-|@asun^IY!cgpL%x zKnz&ukHDjdf?8AXOrD8shJ$kjWrO`&_BOQ_yOxGgNbq7W?^3VVm&qgjJ@x_R-~*p! zmC>A@x#-{Bbn~aQh)P<>!{nv=!CR`O%H)m3SWb0y!I}BW8)TB;RR5L4&UfeGbW%7! zyG3sbt1+6r-)F9E*LT!Uhr^OwTNtLB?Orx;Q;ev(rfaJek9cHxsG5J!t%^*E#g%+$@rM1xyiWoL_Ne5*KOXOlS)CA(@hcC*=FF$lM{P?W^sS4M4A zn4jBIF_|=#d;I<9I5*n0a;S89c-z<`7o3xqbovL0rtA0iaPX($RYBocWbGm zi!6sZ+vr(f=EO+Br#ta+v}#pu;XHSfuMY1*piVY-!Tv>~^}B20;p(3?!(#jDV1=vi zR9s5`Vca@RZWD%gmHSPhHk0;GixN@xb(ox-gY#qB1S=yWTXM;`$9io3JoypGMQKs_lIH?@qhu1w~v1 z^S4aB?6JWUl=X;DRSrQiuRG7^B}S78=uae4#SuLOFZD3_(HZo(m5Bp6u(QLr?n%Kl zr!;Wwxa*EB{7P5S)C%8w462rXwEYYz&PNxm$`Xj`^7m1oOG2)(YpVtyb;W?WC0E5q zJbJRuBS6~gWSww{`|2dJw>8+chFdgYmjjQ-KP;Ul-oc4#p!!7gaLY%k#C+W4g5i2i zQWv}Zec!gq@@Aamg=d(ZGWOJSu>WYD%rEO&tts;$KQdxrQ3Wmx*}@(Iv*g0qCme8b zMfuuC^sn>dBfl2M^Dqs+riiMnYsGz4bkS8zcu7@N)m@@bN($@iSKRRMa2}Z~WsjO6 z;QhCFZ92g*7S_D;zSg$w-0G-c|GJu*N%FU@Air^-;i57OH0&^4NzK# z!|!1-B;_LLMxu_0h)hF6%*qP=3~GFC+sj3d`|j{1sKEV#$b=u(0pf-u9$&?Cc8W); zXwNaGm|8m=_*`OkYpY1E9E4$txWC;lV05!k56_u1SV%K)RV^4i8g|p~#6pY$>M-zB zwb6d|b4-&?;{5Q({8yt#^Re$5EhG8MJ-dFz9}zZ4c1IMj zi@w^cpKq~4^bJC1wra>GYTto&IceDvG1EjZ;2s6t;4n3qWKo0dc$6AiP)Qn#0PEbgd z*wF9WM&1po#PS>c9t-1GOIYbn=tV8csv0MGdVg@z0?7xNf3*F${vF@xiN;TYB=hSr zgJ{29Y%(Q=0c@iortKhrg9C{Ar-m!OEXr18)hg#l+WPu#(?h?-cZs%8GtmES(*LW` ZzJd&z8jUPp7n%RHoV9bYZT>d|`9B|rz&`*0 literal 9979 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�vxtYi4R-FE$#>_c(i9yo9;&w3PE3qADYen@#603~j`&7YB!zgtx?V<0Pz zQ5`5AKfeB&L%1J&lZ+l1eTyzi)Suc5-) zNh^O{-GNx-{XVF8uG{@?l~m4Fhp1)~3sFf!j=BOoD#9~wO%F0`9o_b`>T$lt=G#o9 z@bEnTgNu9aSPRXkY*enT01i6krE4gPNn*Cn7x@(P`t<(SJW~Bv$j>$`2m9a7@FUw# z7d8p?yPTiqkH&EPbZJp5LKhS5m>QM8J;kQGZiy|6XoUa5<+D+HccT!@<3o>n8km)!`X3*N7+LUGzvFfLkg^J zsPzoasw9M+nv?|{?=y7ElZx&=w>W(tXZxNi(s#or#vG*JnX`lZq6k~l0e=l>L-HRl zGqfEoX+r7a!Dn>{m3JV~QUg&8c|7*7l5WkQ=bmix%gtxv#!~T01O88O$En#yX|@c1 zx#f0QQmHZ)KY!nwT-$G=qt!GYos6*{kAg!Q_E*|xbrvHZOEIUjlFx2 zKS0tLbW#M0rBY2zUqq#36Mhei<~$*xCET3vheSjjTQ$|Z8frk%ibl<`O_3&32+djI zL;o9TiF^`=WBsY<-^X~_H_tBQ00c2qRod)kwwG7Fx|VI*zP?&k5byX4{r}bR)93J-;y#(~ W9x<9G6Z>~1$TWc3DwRs_g8vVZC8f*& diff --git a/pilot/server/static/LOGO_SMALL.png b/pilot/server/static/LOGO_SMALL.png index 32f72bd2f6bf1173f5a3ea1e42f8bbf35d27216f..40eeb962a1e829a9259f6ec80f570adf1e2b7ccc 100644 GIT binary patch literal 13894 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 P25?_nU#ncxD(wFNkRT+@ literal 28272 zcmZU*2{@GN8$VuYu~cRlSt2vWHr7K_k}$^1AjxD2;T%zxO2!tlR8x&*(It4@Ivq6h z&-(LR)39~x&PrL~%pJ~We6JOGEbkmW)Vt%uKeE_UmnoDtTKd!0QO{03z3IJl>*dR| zL+qP7=`Pz0Ze5JaJh{#7wy?4p_O=T)?tww$MtW&4Po{jM`oD2!PPfav@rv+kE&KT{ zrP#XToxjy^RAFS*yI#lMitJd&y1Lz?{Rq7fXa!8pR4GLu!Ny2CnC&s zVVw2@v0828o5-E5!I?K!A0DpxLcM5kxb6$_6=Nb>6GeexDbqaXT?Ge!N?r2@|EX(r z5G6T^r6nh&B{s59;T{@hj3*7ghTyxFkZnO;DAkUGtKEdH-s|&6`O(lPDGMEbvT$TD zUfMiP=hC{`=_5NwkuA-dcp<$pLY#cVN5ga#LSe)&Vzpi5d$^M|O6Zf!|lCpx5%W%Rd3eo$_ zw(Lve2Jd3x$H>vQhV7%g&BD6 zr9yyb^n*vg9Jg%a;gXXYQEF=2B`g`r&i*mv%uQE&C^g&f(x~{#n0nD` zNN%;)wY#Eh@-8*^M6xn?py69k;Jzc~axjh#=W4_%vXGqITnr~Ha2@?U$enF^#E#PU zH)Dh7p*v9&=F0Try}Q)Wp~CiC?8ET6O$0ixnU!m;U58$IN=BH`GtB7UL*PRBBOZN_ zX^^|-?+O{_Zo-fbfBs8Ofvj9jy442fKd8Zn;Nbs_tXx8xVWT%0l`&OG?W^-~z$_UvA1dYZ%&D$axgpzH z3LE;Ne18|3P~Om_Fmr#c)g9WKtPrXIt$;I%*Th#3s&7f@$zV(oSYV|wrOowfR?t~n z3 zNsnAKeQ_xF?((E0FiZw1;v+vDjSIXYyp4THKE9xHWq?TL4xyoAGBvUe?D9ntgv<-Z z`OB6dZqyEJ#!_y;(1Qa-CvK_|Bs2{fQ*CdBV~-e>z2zd|SmB?8dYdUt9|Ezo&J&wS z2q$_-v;B4r@T+lF4#umqHQR#8&$tAFw%#3b2Ru3g7rw3hS;mZUVOh{fewyMfxUO2Q#8Q z1uxBcip-}?)YXAAmDq^&M(*I;rLlC3*vG+##qPo{oN9)1T!jNWR4L2@Gs}~oD&s;F zP-Hcm-=Ch1Ub!@I!HKk75WkFo`pQcmR8M5hqyg0tiE`V^HJ@*>5Z`|5!cA@B>U zVF{6oN8eeVH@gMH=FW`N^*Q6yA){v2o^N6Cpp(*vc60X>B{p5YTaN|4Y#w~sfjF2p z__7W0tg}WE(3gStq6Ubi9srumS3cMLa)iBwD}{$N{a!-}T4TpQls-FpM&ys?HMe&m zv5LS4j|-vnVPf`SBo;b8MUJrG1N~n67Cgq(h{VjettMa@6e=rHdzquu@E zJ@Wl+lfre`@-D*SrzEk&9V?%soVF6En?;oH9lsqg#)O=F&HBu7#>wmL$TJhW;E>fP zqMQntob4PukC^tK6=JrbS7OM#UNlzND!p&@nv{@N?)R0?NWVXyF4(?mFs09i5m`fs zt%rUXzloA}DFimCOpzbtfTJ@dEL=CPH`T$5dU>M^d;2sgFt$z1yrQ!l)i9aE^isw{ zU?$%$jRJmJK_M*E4m2H3ssY$10c$!U>xXV>HlnG;879m(is$W})6o=@O0y1?Dvtkzlxqm(YfWT|q>$?}7DNKpaX zH7kOklUZy5PG4cPvtLmfZG7Mc@CTt?b9S0OJe-5K9$SfU35uIwisu{Qx-|Jvmm)ZJ zXjjt_sZx22oFrP0tXv9t=2pnJ1_LOu#~I%{Lt}N}Sn7^lb5Bz?bFPw-FaG{)T^zK> zgAhQ8nbuFH>?kzEHhr2hp6qkuXU-QrjCqmDG5`9E$8Q@0Emd@ zLKgM8&MJYHYaCFQPU(64e-TW+-_C|{9;J-ReQb8MfI3KQ*V5}yA+UdceQXSVA!33G zBb|=9S5?W#yMypS5hC&gULM1k+5$%pe_~Bc>gj#&K4R(r{ClX6kA;xl0TRJK3q|o3 zqvVYe+mU*I90&D#)3F_7?;R6IeoZ%ulEz=0D+@Rwsh4@|aB@=biSF`ercv%LA}Kmv zzjiY<+-{#w*?mx2bJ8e=M8}fUl?{3OH#<3>4&T{ik*t8$g>(Kg*YhqA%^sF$Z5*1rg z(S&*P3lkq79&x2CXr1*(o%A#2omy5MyvZ&7eolp|euc%oU1R;zC;wf^xJGrX0)_gm z()4j9Eo2KR7o=>+4~HR-P3kd}YqB>f*L@VVH;pCNVU|vf4}m)_aW&`9$i3od#&8UD zY>XwCDw^wEXgbykxy?%nu&IxVmk`muC7bj}hrc#~oG9=f5d75|6|<`ECq5sy9HZLz zY+f(;-)Pk-t@*EuGK51i zr-k%p#=2~K_$`Do$yXk;^jGf4a}&K5*FUkU1le8@!d(%?{`u6LkB=Ofk)yw~Z9(Xa zGJbxlPB(TRRYlr-B&9+IFB1>Hb>JFK^aXk?!Y)|d(&`U<3ZSnM9%Dof857&S`u$?& z$MCdAW*0VBozbeS`Ko43^2sL-r#SgEfB9gF*~sMV;AEU{VvYO{dcm`BGU7xR(PY$U ze)7VwcCC9$@Lx239x<&X0xccSh@@Cd&i!VH!0E)d80?>u`n4GD~_ZAMGY3Iz{GA7vr8 zflvL%8#5BYeJCDom&9G!HL)jTEu6vpcWbUMQyEIt;7bAOUWZT@Te3$oS#AtVH6$e0qu4}i?_w49#{&1^Tw5MU!Z%FVcR>U#5n`AO%F;HmR- z`I2rodNyPmxxASUMtRF6F67zJLjLbLIzT(@CWlB4j7V1&se({TT%=p=e_(gZ}4ZP64HlFX*{}*`y z$9qhgNy(9S@Rua#Ms)eA6ZV=hV#1dFKXC@MZ4`17WQf~t)`^Ksb{{9GZo=Gp-W%Gh znEld-$=T1TrvkcaR9{l_+xVAH_GvQdaAK{$t98^UbrSs#7w#*`Lp%RCAlm{F_#OY_#m3cqNsa z^z#+;>RT^Sb#p&W3;|%;A2({TfQ&0hMXB;W4+1*vZ06_B7I#MmXwKcLarVj2S^ma0 z62dxIY7yuc28bch&t?DQCt)Z*%{^ZxfBlP@lN&hkE0s%|NVFNE^sRLDrob`QkzG_k zWHc+35~gg5|L{sRkUc8SlO4KNO)>%|$U5AYUx&_GYgs80?PW)i{y4fm8{PgtQUZvO z(tx_TUfJ`m-kgrwic7~zvy4Q-JeoUK?VIKQVsgyAAbMFL0_|jv4wQX7Zas&BIM}$p zFVWJ7_DrEtF1}7=SjC2t+Z-6<6)t9fRxe$^&;KB@WwSj)vtoOF^F#GdrCj+j+s8FZ ztt88Ng36{%Snqu#0~-D)!~h)-1Lb=E77LF z7;<>Dy5;^qN$o#NIT>|42;k}Q^F9PVUo^QLMc7c*DVb9ZJ<=F>fgCOc2#kh^k%aqi z7W`it1L2(EaJ|0B&HuGUwcBw3UH0C7vrpJ}mQS!Z{M?z{<9<~pH1;{j@OPmM5Bxz; z8UkKB!}^b{v{@ONfAAVeA(jn9cr?FRg_A_?R%%fu zi~YvPR<}*!e!SNLUWH~~n%bHDxtAh?QFDQ4&3{-`|9WS0kD-2OZ0s;Cp%SBZ>$r%9 zjoXH1!804yVG7VKRuca&m67tLc!qF?GznMoI@7D`UIahiOnrmg`QodZjd?i05a1JV ztJjNj?(sM8}e4aDKl_TF_Se8ukJ*BQv&z_8Fv9nce$^IOi1NST`Iw!d_0#M?{Px_uE9y{n z^#1{V0=b*;3e`_i^T>rVhJPEo?4u!;GH+*%d7?^mx~1 zuaNkw|Kk<97XNXcSc#Pd#(s|V-YW9Uu}jpB5Ep;wv`(4PdmbTdX{@dPb9+#G0v_(j zn0Cy+SzWhQ5&TWT9cQ%o^VkYVfW;jJT0bw@O2`xK73>d}F(JhL6Tnw8_X4`mke0Jp z)Oq%C@cN60gyHRj7@NJ8Y?b%E%KPfV@*OY2TrBixn!kx1C`AS3IaI0~f)or;NTsAJ zcJ=uw`QO-i{HG*$s;skPRnLk6LWOF5hz{|jn17%oD>(D)7uG+nh3f#tC=vQ`URlVD zLIxiFEDmM}2)r~J16dt}puh!}Zbdip;O0L5j0>Arg11?U8A-w3aXtu00E3|X5;g+A@lMmvoz z1Mn=~X@hX7j=`pCQTEc4y3MFNPGjVh3k9cG+^IUC{?Yo?C7GMVomlVL^0-bUE=(!5 z%ADFle6`&>k0C>p)I;GEdLf6INddcs%I>v+s*kkQH{a*0wQ&)uE-v~Zu?}pZmbH^9 zC<}K_sCqDhDuisRybCp6hN$4>@OCx4ely9z+@HE$&tFNEu&~L|e`asJ=O>I|xtoQ< zXw3;=W52S29V&q?U(dpCZsX;}t5?dXXcMaPIvWRx=O9P{i^3#9*)B%3oL>?bCU z7NBi;2sd!Hbs!6A_l}zeJ&ks*n$4`Krph&@=9*t>>6jO4CfUrtP%&DEbqED~>Mtmp zgUTxp9wVvm4U+G;i8hj8D9pNeLqP0W$PRC7KT8gN3^#-uvL@*bcBz*pH0HeXIUr5S zAK|a)>@JhB5|j-W5~sphsubU|B_FTJXd`W@_GuvUUhf=yN(vbD=!^fU7_N;hnALWE zqTFng`iX-$l)AN7F>PQS~Xdb(oza{ z1rBOj0GLI$(JSsev&RaVf5ABVBtkU@N+#D+(Y@n)^t;X$p<0@|8rcuE=6KXKD!Tk4 z;wD4JFE!^l6zO~6F{R!c2l6)S`3FO?$9i_1=yGAWGpumdu_?j0tC~&GDx$ITm(fY` zQ&X*B??8?Ghp8!AGF*We9hvEj#7pHiz+;{bC(KUDy$dOMd*s641bH;Q#u%t^g%cZ- zxg}dtRhIt_x14{WYP8O))6zlxH*A|~8~K~lHLANXqw6u3kP3T{7O9URGyw9P=avU0 zPiwBIt9b?urk5@>cU0W*0hyL%wLK2@P5~ndG(3T%CZIl}&j{e4S zI}$@Hw>Zj{?Hwoo4vBOB0R{ffB+3J=lD$D2g zqRitEvQ$xJynMgzv~a9szX@)WKw={-3_AK_7*oz6CB~jl9~K?2_Hx@||C}zyP6Ll} z9qqlY;7{)Uq+Qkkgd>nOhXN>dmpemBEZI6Rj;I%z603t>0FnJFt#uLu$)$@OkKS#B zbN?zc&>$|Rcc7Pm_2$B_e*$W|paP#~qb=s;l)E=zT+f9iZUlJ)2rL&Uo)bw(PYNO$ zjvaVCSp3)$Q=ny=laKh-IC(^5YDfj zFdS-@p72Z2xxBJfUxzr_#EyP^i?EUSS4OXr8|?y*C=maqjp_qOJfd)$Ur)5#ya-GD z1W9E-jEsQpGN``jj*d{8T8wf9D8I>BM}W&-1zPV6V##djU13)OD%CBFS}eIvpWu9* zdUqxL4c>W|Zb(2!s-{HH?hWw26kAhyC6BdL8N<+WKX?>Elgt5OD(hk%T#u&lJMks9 z+V3POPkOR&TbW9i(JNPE`b$PUY|zI=F-!6|UuKXwP08k2Sjr*jS?V?S(&Kn7H@fO? z-p{9!d45|Zgo*ZNjuip5_H#r|w^wIp?N$7OR_;hSY?pBwLxrXlje4LJ3g=reH*O($ zBU_Hra|P;REP7=}{TQ9X@hl1zAX~O7VTTf7v(BQAm_65KLgCdZcPqQpg<3-W&j*@m zH9!(L1|3?1LjNR^{8ZU$B2K>IVG{^~SI!J?2YZUe!zFVmp9n%ci~u@c{$l>46*$l(&*dbETAQ$ z>|Yb*B(Qv=W>L=aT+cxhGupTN^Za`XIKS$Q*fAU}R5EVxy7H8Sl!bzvPw zlZww5*T&{KAY3^h5fwvw9L};9nIN=u_e9mN@B~t>Bcj zpTqe(l)lNoBJ5}--ka6E?l0rU{AA^ts;UC8@dVNcqi%94~k< z3kh*V$vt2hGXCe8^pE2p0|^x`#CJT_ir)7KM36N+zRhASx@x-~NnC;2E)au*D1C6W zi)S)rVVzz9_Nvy86jzWDjF}wTL|?z~4@8xP;rM>}SIlUix(~{kx-6M_0Rg3f#Ub?9g*R>RdfZ{= zU%hsEW*s06>S}V(VWsB4V_b%}3X2F2>iaH&)W3F6 zbzxayGY3Dd7 zvp~094*X~wo@x_YnR6xYpT<85)Y5}Lbgd{URmu47 zL|f`9q-Bu^BVQMP|?NXbrY**blL$j<<;QeO(!y)3`f z_!`uTf#E*KnPo{Ttv4x}5{a}u>52xS;Q7P@1L>I+7ZIS*4&wDE;6lCQSD9MypgQ}= z8oUB-DE50_^(T$mZP?w^{+5rDOi&WP0+K6hF_>mSBk?Rgz%R-evPQg=1&aJAeaa1% zLz@V-Aig)FzTCi=+6#|(*WIU;hO$)UsD9l6kZzXo1`3EIrCZ4jO`WTY(||r3>j2Rk ze6i{&N?mc(D;VeUrGzOr>XVxI)1S+ZTY}~_vZ&F9T@RFQcdorl8IstLthAHH(n8`K z3AD{t_KJuY8=!bBhby%-%rH)e_BX@hBVph^YE|p~gU6Q70xd(xE zIWSOYoB-DYg9$+7q8S6=(62ir(#&+wsQ8Xw@Y(g?QN*|6lcTmZo&KqWq*|@e48O;m znLKaZF!{tg%QGoD2T7J&c{ot~*lh7bZv&B-D5f_?kwAmaOBK|y9tcYqh`A%dMy*=g z4xR>)h+!`(F4lc^)T#Z)d5itw&-+r<%VzhM`s53lrzge=V?BB>G<)}tTWS`Fy#&h1 zh7kUw|CeW76IvGZWXVj3-GDf%%Ri9-Q<7?8qKZi~Y3QoU<|TcO76PIA}M*aP8Ep{#i?LGJGuhYRIMv%s;Kl4Q-hE1 zbO>)7^29Je`*B&E-d}i8oj_ZWa7g`}90v-Byo8sDi0%U#i{Txc{e1ZU=rq=C_$t7Y?@H5(_)5Ti{SKYl9i)NRnwlSgk(7oPaWI#Ec*GhgL3AkgSHf<3 z7E^@Rk-ZNmp|_=^UulwmUKvs0Xt^Iiy&-^ll17;U*+a0V0`-uZxn9e}5&tDpa=g6B zLV$6h5T*kIA&CeyTk`W?L)6hYnRo0DhSo$z5A{=Q)0370H0WA9=}{}Oa!FNf(|i}Y z=8I$g&3)f8D}GkYW{G4#^p_Il*I4(=OAhBE>FF1Mwv-e`_9rf2vfK}?U9ye2=u3SW4qKJLFM4} zef6Gp-@@&P?dKZjb>$^ zY=>aNxME(VTdoaFqR;S>j3F$A0!>HIz_826A*42#oVwnabS!k?cFCkKkO+04gI$ydUp7~x>YcUE z??Hfp1w&~|FZVIz3o8tOzE&Da6}xNGk^Np zSv`N1xgaDy^`6Wq8xqB28B^g&OD2-~iON+0ooQ$>R;^7)f0lj+-eHtm{NyyykVjK~ zdXG}-j@zf)D-?Q!n0sDsdBv;_q2hGUWMrqY1`O?^<_HPuQ2(9yb^cJ(6LQCuYlY@v z2^(5i@eU!eck`ck2TF~m>U=76DnDhA?mc=(dZKR&re~6^WL&0_wDI4Vx**#QwiB1NdxxouXmufIJzv0$UYv^_Yj4}P!;yA=T@7p` z+ANIuA>4nZCHDJ~M>300zp%&*y>ig2)AsKx64(oIAk#CVf96b>wjRo=Dxp7w4-UBe zF1y^Baay)UC9}7OC!JAkl0Vmlp;$rdY9xlyX0(Fc4S+4}$1fy!@4%pVVnq9cVX9eA z>#l+(edJY5Au9=_jd<*9RGrPv9NwE%v|3QR+r67XYapv^BGAj&pz2J&59eF2G*}5Y zYY$KAqHS?Tq=A%EhgjTGpf9ldwPsPo#6e&d{6V{cwA2YjllbeOukQ)~OTd&)sN;hm zYLN;wDvo3b_?TKu)X{_~i`JYKO zQK{a#4eX7zTYQSPa+~dk=Swatn?Fi%^;+wP8bug^++>7a>CKI)1Vd(1vEnjRa@m&_ zPr7A}R#C+Jn7JA|)9U1lh#>uR-tglH%by ziTuf9oTiS5qu!${=gLCrcW*Cvk)gOyTdpjzEGMTFKReJ=+~#k^x3^pP#c=h84B(1h zneIEKMBxp$ZQlcA!r?9NfHsD(OwCHauVu0_dM!!5L0ryazT}#+?c_^)_KB5~n4xG( z4>P(P&|ht!URrnJ)bO{nQdpt^fBu=MS1KQ&WYCnI0GOG!vZhTyR+yQ|*A=wiq0CM3 z`O96nj;~+Qc+BTJ-_Nq&b?<|rh3w-6MUI}4ghPJNp=_qojM|o+OeHbM8aBV-bFBji%b|wbO$IGo6gWGa@m)+D=6#H*h|d=PG)6Wu-@Bv>H&}= zh{*I0ORq;+_Q&ojK&o=&G1E3j{tHayQOXsI+OhAWJw8pD=@Xu)n-+%`UKb!#pecZg z6@dCj)pFHW+W!%<=dK0$8mzrdxm`BPj&F`NJq|IbX2mKcT+OEZiImU|fTe+Lz zs`#rDo@zIDBk>hxUOYJeKA2CsBa4c-8}>ncwGO5j-na=v)mm-a=wxMTXezk~vhU&~N=ITsJXiCM?pd z_{mdewSUzXS2Q%`&;R(Rw`JfW`k?UPX7X&_OrnknzuVd*<~SV;VwT9LMv(ybBA53L`F4;AII`m%_=c$Zs z3R<=XFHb}P(bK;OYPW&&^f9Op^!M0KVIo&d=hIkwI2kL_&iwIX7koy~-7TBl85_il zTnR>E+eU3zHjKND{t^Sk`I1{NWnbK~xr@g8K_#~>5IychnZU3or?L|};bQg{decB% zS~Umd-`8{VKi9@%93$SBX4*Zzt!w#qfauG;yX<^;Xsa8Yp$N$tK+H^?gv3)|mY@Bf z&>+ekMlr=J!=*sM%_~EI7MEvg%v@XI_t=$9{@L1=44K7d){1pP+GqB6VKhVo$lM)) zl)AgnM;zEUOa=ZdH+0-NOWzXe%76y;?ctQAvWJ^VvjA%z%~FOz1c@LaRV;l%#cYWB zt*$2bv|fiQR8W=egp^Qm3QYQxVv$m2M-pn^<&51bR;{EjGuDM=vtQOi>$FYZOJ;3> zM`qd3KamlYq*f1xe|6f1n`qEx5sWVx$@F*C?hr=lyguNc{Ca=ERilqmmFgmFE+H#C z#P7#UO4)8i&hV9wh7zv%??QC9=o7X!G&w^Jng+T4$uSQx==HnKDETX&N>K505smcl zJCqtTn8?U`;c+|l{rf1A0gA9#(z)Q_di-_N)dHj#wcT!~-tyY`m$myR*VgVWw-wy# z_EHw~UPTh8ZdG?}K=B%63EOZ+veLP^KBJ#T%4P#%!)E{Okv5}@6>lAA3g~LGV|Y9J zU!53a+8~V_bHOy4lu|E$trqZ5rs0d&!2JDSNJ((weW03yjD7sT=&>9Jz#W3GLXq$t zQ-%-_RL0tK^q5}T!ABt+ph|*qs#DxO<4@Y}TWc@FV=U&$O;W3wio0{SE;jIE@7-PA z?X!uOcQtPx)K}G36m&7ngoA>XO652i2b!hUm(5O@9;{YWdN|3G))?g3FrH{sFozRV zLCa$}VQX(IN_sY&%9c>lH3z+Yx?k|h{4&I>!TD}ToZ4C4B?R{Frz7ynOjedw(PA5+ zbJAqyLr1*srLDDjx|XYlJ{r>8^G9QS-@mDq=Lz}wUZpnV8Ei#J zsMvy~UO$@X2nmX|FneqB)Lp+!855VcD(w5&5RH*b%kdJJ5GmJWtto^d-{UUtzIO$U z@0+}C-va?al3~4PSM4rgz??QblO1qyzC&A#;DKJ8c8Q2o_sLBvMM$|acI|`Zynz~&t&_sBpq+)J(1XfIXrO5sc#Du`nQLK( zG8ZJEs5jqC9;gTyNJW=eYXeo~zV)llS_F>$HG)%>k^|Hafq&@X7Xly~dDD}S7HSF2 z_B{~w{?~=@F3@!DLx-d;W#cw|9lVQ^|B_<5VW{q=Am6;Um5$EUa-xJA9em91Hh1gE zKM~k?Y|BsCfn11q16bTOz2!w`k2EHr*9Le!3P0lldirUX)L)OgcjmcKKVe>O%MgE3 ztOi6;s4*3RUIES4i!lAGZuBRBK!V{Zkk$5myRr16?ugB}$7WQdiyaNmQ!kMB0ZN)W z;qC+%d37don5MN}e}J(%j2Y*5E3fDIuD8E90Od?3oSzOMi|mP1nOAIXT#dE(qAvKN zH1&Yq)@9Ow1lrSx=92$PzCR6`Hb}c9v(eG_n_kG;Y4$pj_r@LQUP!;t{`{Y%;g)o4 zQ-{!D=do};Ry%Vx%{tTDrXBfqK>aM_Byj3&nbRT(I3 z)1UtLJ!p*HbklSGksroCxh>?}ylfFYwnP4CwC{W9jF9Im^Zu&Azn0CpDANEn^<5AC z@0bvjk@fd9=57qL=N_!rEhp^; zj`CyRHh!ma?7UoW6;~89hHQc7C~EmAL0limmt7&c+ptYCBE-oW9hrj zrIYHS4pK%OnYW$ixW4J~?m#S<25}Ij`3U;3D_+U#!UOZoX#3Hmkl|dJls&z7c1=D1 z0YV{!>qLk1Qzv{Zgo8>CzY|LM($)DiNr&`4zr<;*^P2HKd}JNe-zr@^H}<+?-C}Dic=3qZ=;O7D?Z=MYP9|le^kRz zLHrf|ekTBDb4^5!%%|u8Nv~Xa4EZ{%>nzI#+y#M%0~oN#k6IMi$<`FJ^vcw6%i)NM zo=HFfb&N!h=f7g3o%|8#TkLYMn5~_ny92!I#`D4M_Iprv9=h2Niny#NcfyD&8gT zJLC}3xp|CZXp(^r{$P#eH!qM`{~J7BY;7MYW=(K$kjX+nRdi399M#VJwO_a$DWoTg zCRA%yJXB2IW}km08AQb3?aY~hx}-fs!bkDZ&u*;pa*+v$#8tx2RXcSU0&7h;{4567gG9gZ^b9+?A~DhYy$*=r{;`0|VA9&RGq zF&{o$iJJg(k0JjVvF*a!kIkmh# z0{El4H2^24)7jSA59Aw)IyW3NxCLg&VhynSor|f8SWogswS-ry|9dCE zjds;*Hs{A%Xu$uJ3IRU^E&XiL^EQ9)M&G{Cz!5Oqf{*>7i;vIVOIv(%{}&j^yLK|P zWDDGEp9ZvK%T4~@6CXc;>5)5#h*7WOg_< z#~(~r65qJzxTLuD3@3y*`(sQD3ZqP@{Rb99T{X)U8>4Tv5>KgHN_q_hk3`}VoO&+Q zL{81kpAF^_sgOpZ4+cYayB(##Jdya#9HnM^FnZmCUJ-Hh_xs;UCziWIvaa6>_#Li@ ze7sw)_9YpY#M;QNwrgI=sSun{KpVpt$?i^R7arG4%41zO^TuPHTs`bzkxkT+_+7mj^2r-kyqq*iO?BI$*g zdeZ*T+O|iy?$NcA&mH~mPRt=iqnz<^8zZ>vu`QlG4gy3%gjM=3^;+)8&C^>@tQcDQ zQSrBz@*${8&`h7|BDuR!m>{@YsF59JboTwulk};8lFp8&QpT>__Z_vWy!9e}qA*lA z-NAIK7n8FcC`IKQCyCd=Ya;Ewjhp|;rx&;X_U7Hlar3d2a@Ai z6V^q4i@!ST;QyAeu&p-$tIT9E)}gHHux>pM4y06CREzX z;npuxIg)q8f9=1Sb$d{97iDfX9ifLf_}@E}-#IjOr#pSZ5S0q@djhyVw$~8TQ;n=<1n+U=p8+ds?sO|UNbN(Xd){tzL z?{tS~f??$JCWY1B9H)A$ckUw_@A4<5hRI60dbF^S9q9(R{;`YeT{)tM!-yrIzN$GFOZO5%YIkdO<*nzq(oo za>6(VW_DJCxccOC1M}`Rt@=Oi~m|( zdi8C~bm3;^m|Kb-3UB4)?`LW-ULJrr#`x;wza9XwOa8mi5;6AXn!P%7BFi~p&zZ`m z8vM9Y{6Q}<)Y#p!03Zc`Kd|D*h@jqHlmP<-2uDy$81{?5YAo*Ti1vMSH_Dxv+g)3_ z9^ChAZ1C+l+df-!y@$!+X_^YNWY0r09WIXkqubWOuvei#B!5*Q?ANGxNLUDU_J6i3 zeK4ozidS3X4jwUqX3w+eDh!wAhD~_CN?2`v_yGcj);=It7xnE$d8dqhbcj~R2P#PA z_>q;%NH$Rv(>vDM|5}t^*mV1^@4ZKKesuqhrFR~obKd(F)>!V~ske`vmZ#b)Seelc z1mqydXj&Q_qX%QJKlQ}60!2vjO1@`pyHxa{AM%81q}79Pi%p|+qWuTCGvvx9iVXK@ zrZA?!7E<*90)uG<({TeVX<(~G3JO2A6^v54;uZcxFB1>-C(#p|&{+o<+nJ27N~9Man$%|{?1{BSGH z=AQSlDt769@P*j!;YM5X8mM$L7@y!|AzYZ8m*Jv}nxH5(wm{?t;_v)^k&K^V zjzM5_^R~dxM2kDiB7L3adyw`n-EZWrS!ps?OhbAvA^djQQDkIaY=f>Kf>ADz8du%X z9>0i0Q8W5hZxWr8wYLLIty=CLP&Z9+b%qu=*8PT@>kCHb6sq5UzPD@s+Ydtkf6yqT zE4cWkS>3e-Whq4J4CVQzLdiAP)IhU@^v!g0a6`*g{f?|;PSdqwZ6J@I=msM>)N~DK zMpbk_Gy|qcLB#J~b9x6eMB&-MjTF;U-123?f+E%cuPp>9aIIJ^;2{`K=PaM70zUh; z8zK)c-E)d3D$I$jI79`Wmq!%r`K~7r6H3G-HtJ$%;Um?X^d!Q2jd*z`!I0a63t~WF zF(<Hv08^CzCk7<2hN9{qd0Mt@yY*23pE^kpD1m=Pi(~HJE z(7eQyZ5203h$r}QGaC8rO)UN8>>$wtnpfe|CJeDekBf*<0*^=nbP$Mf*4iH|%Bwz@ z-7wu;>0)OyRde07+Vt=-MvY%-w`5M7U|jWYXl^(FT=*rw@5^6ud4$;Z6-B55&D~x7 zZN;Q-l0+pD70ca|I$*{*L*0zN0~^l*gZA$ET(H^p+QY)lJ7GCGoCAaE7X=*P7vKQS z{!c#G%bVw_FZ5c1+c;_(upE7kV7Ak?2^uilk5abFn42${0A%=RSc0f$esisq+jrit z3la{rlYQ>q<}`923rpW04=FO*Aje4cj#HRV*6EEYC3z|5lQf%tNAW2q|EjgXQ$fO- zmi%kQMIB^5x2e(Sl=pR3A{2K+=O}gDs7x4p%j?Lr0%MXvlYtSqZw$y{mac?_3?@Bh zq*_R?<<&s9Rz@)XsGzG2VoRZ4mqL|ftHN@M@5x-rhZ0(9id>s?JhBV{Mx3{JImlqj zWV3d+I4}kr!Cf@vd!QmLk-{nm|Efv8m{7!er`#c*GK%EFZNB&jgC|i13PxQYG+`Td+Hrb&n zqP-~wa(H-HLUnbTC`#fY!Vo^_jl@q%fEN4eoBJ=ViwdKPUhV~8;XnsxZ9Vqs$uR{u zDD)wD2F!Dfc<4}wU%$`iX>b4uo)E6VM+h=DC`gO)qiSF3+H(Q_2n)PF&R4$~G{Z?L zfD8#ubp~C?W;!A*figNNE0wbkg7qZ+o6`@hZD+rYHTb;0{NP!@LvY)NjoGXF2qq=C zvU^3YKf5-7m%knRZ_=8%;Z@QAxcXiQCG`JNW*%T1X^YAtn6Y?!Fznx)aZ6hI62zjR zXxLld78}8;8fsq41Gg{4>~{|~ouZgJLB72<4u*X{S!*v|JGm%c{W4zDvd|067ui2N zH{;d4Bj-Lev8H-~(pTIm8XCG0^-r8k#Tkqo?N0LDsleXo!P zz&oRncuB~{;DVv1p?>&*#o7Y;F$=w=7eJSe06Z21(_L`e#$)e{1&QXV>8aw`Q?dRy=K$ru399E8ftSJyLN3Yx;8Yj$+L z45cjgdQt72StmsXaJt-HTG8m8ZrVh}Zbfj7`=3>>=YJY2zpo7_(WhoSy>s7W%p7#Q zf^c~xlR5Kwl#Hk#iCxePgKJjIo^3dpkSY?Sb1oNQdur87B^jFVZ%%OyL$5gYwq9cz z#352x47BBC91F@{XB&o0dq}5zo?|zVc%GdG?{(An|1o)8>kK}ZYDNP?zF*lnJOT1& zPFfdnqE->NlqWRGH23Le&RqxNF3`Mgg%<-TxM|`jEAqs$<7&qIJn%n=^K>Ytzl!BH z%4s`BO8UB6+i$+_sRd>VK*tKYF;F>}$Bhz!vo{X!ag+j=>gi43O1tffML8Kt1%?i% zo%Y<&ggKAhzjSK%fsk)b<|f+pCp) zcv~}) zJIeP_ew4OUQp&a;H^BKFlDO~rJs0|mE+9;*;Zeyr-Zx_VwMdeIBLmbcV2jc2EyD@* zrUq{9wOO=l(d*G_Z@m9Dg@4@vF4$dX<^UW?Mk}S>yKu}=0Ru!ke7Q!&U+5Lf3%*X_ z+@a{t)NpB)!;{DDKRtiHGHoY1pNZc9O?4k-5KGU2tI;jk-AL&HjpY!* zY_X#jkUsb8HRJ($f!IEeI?b3Gj-;&J@$B(2nNnCT)~x;d*C5q*7_)Zav?Fb^tR(Qv zOJ^Ih-1C3F3H{2eD`^5Z0Y#e^pa-w#cY>{XRy1H-{0>cVO)9*y zCf@1w6$I-2QGU0IWlRkacc#gjd)j`f(rVvI+R+v)vsJ%cd%$%DQ*6*UdqDGqoXG;X z4kFZ79vD07)x^xazP+k}n8KevXER@>G}BzAco7jja06Urw+oUmV+`FUC535*QLdc? zjLIp9YMS0=BmcHBTJjML0=iMT{@A9$R+|@l=XDh4dxQ!)<2J53deU@uC2_K3@;h2F z1Z6iQ&X7PmNIqnAQ-uJm>q1T@ad#{@eOGew|2&)k3Yx-WyplI^)u#2wzdRMW1qQS= zDz;RnrP(cX_1Xk{uJ%mv2z`*&_$*6i@y8C(Bh#qeN}erSju@imzOGs$--rHcgSiH9 zwO3EW&`wmb7w~8gvF;`BG@r8q*FIhf63e8#6%DdMFuazA4IureGjkCk3;g+a~ zxf_Ut$sGyreN6z2!^yGtW=Sn@tHfZ_o-~d*UB; zMlULMmtXjF3uRGa`sTVD?FkPmgfvy5sd(=f8npv4{1caz>x~qRT@TKmAh-cN4wPe# z{^j@uLudbdQ-i`fQaNm5kJ_c^WBaoZKa~gypuYlGt5*$Pe5qx6`sZ5p$NdvOmK{d7 zEk`W|q#+jLS)K_)HEx~KIbzEZR;IcKNnN#_#HU8X-w3U+ob8;~6_VBr37P)H{lWOpvZWAdf+r;#^ zd4>|Qe65S`KJ$q-|QO~tk zTaF5xX9~=_UqVau+As#L1@q^8d*K}OgP@U}{$Irih|m8i>)XSjUc0b&M@d4-`K%Kf zQfQ09Of#lwQznNHc9IyO97beFDdQN`5K%ERWgMoQGvn}Xk)b4-$RIl*XKjfPzV(~- z`+e_qeb?pB@jE^1S?gZ+y4QNLa`~Q3DIo}d^Dz$db4@3J!84QThaY)1-{vunF5w6U)42EG-;h9}AKo*iDmS?Z|}Qm#pN6%oGEl^S-OH2$*HvRUX# zw`*7iUeuZGhWOD~$nQUdc&5p?D3oCjs@bfBoEW#a?%}w__)=r!rO>eqi3$51XR)-8 z<^FbYKkL1m5{E*D!#a8q)L4xyJwpwbH}jKTHTm%JYDn#~vZWK_Q@}~9TUKo|X&|7M zF(uG~!$0{K;%NZ?I6}$A`%!W^H#q!QV}u282Y0JsoQt{9DUNqgJ=BEwEe0y>kQ;(EJC70%T6a&Lo%N#cK-}<6sog-Q| zm7Z*@3YUJBoPEoA@z~V0O-mDmxV&T_5~pY0`E@ zPE%uZ0}qdEq1z640lX~rZ?G;$`tTwfvJbecTE+=DW~=4TF1a7DLCWLn~KWsrTG+SLCL)t~JXTi|y3ZKV&xH+rS}*rMv?_iqY)4tuiNxwEiA1;4iV$Kx`G{C8tF68W!6Dz6ymna;nPb9nG`L~|zt zFaCL#<@TL9IiaV?QO2}L^?~U1by0oV7x+A{_W%cx8BVyPhK$f&e z%h?6#9lE{weB{vb#`du3^J-|616b56g4HOd`>Uj9u z3~9~UUJaKRc1h&kj#Q1UXxq-}1pGqg_sSQ8C1xV(9BFir){)`%8fo#t;fTb5yYGZf zw@tfDx1P$y#-^N3#0hWmipsP~iYTS5WcZ_e4^2)hFCKf?!y?S4XGczcd7&a)mE%C* zHnQ3tPsof^azO`9GLO>+w0!ho$@0Vrd1yV8fiX!2>bOew-?KMv;v{RG%BNe- ztaagD9gyYB39}sMJ@!UHTefO0N*-tu8Iw)4)rPTW9KS_MqYJk*sOO6sTGiQ}c}rvE zTDV6SRHqT2DE<9y8JimqTy(h_7KN9}FE;*E(5jk;255h9tZ%c9bDR>=ZH{bAQ*-9d z3(;;@gn;&`opSG3`KcL|1S>+^6O2!Z-MwqY2!F!3`3!UD(#PGl2>y)( zE8)g?LSf&(2tP!$3<1!yMbzT$KTD6eIJ48I4^9f0i-fd^6V}+-rW(nv`R6eR=2^#T z%TeKU1c$VZ1Cx!nSwpN3Tpd`Ko~E3KhDmid0RJRX+p@Fe*0K3L0Rs-K!5RDU)20TC z<$nnGY-59F(>HAO*Hv9rQbFM`v&-+)>BDb&YRZBJZ);Oz_RV+?oYd7?h!)D}zmH@jPBUd~-tssHH4@w?aF5g3)Q{BjNs9be`+H_BtmNclb(jTsT;G&WwZQ3zlGuJbL88pbaz`) zxR=ohrsuG0cf)qpVm$8b@banc+apAZe5Dpv9U1oNPCMpc9<5sza&zI*F`yXXmJNr3 zl=E@#7XB=_QL2W!VR|5FbS}gpd1o{aIKmzJ>W7qTU)UPCX{!CprF_(3fxj=mHqQYi2UXh}gN5Z*~3T({2~sC{m4+9nPG^TmjRUtGPR=!I?tkuHL|kZhuMV1b&!1^%@Eg&_x1CFVq&M?zUSEsD7e3DF z_g-4PE{v78!HVv-F>>3AaR&!Q?6-Mm1!SGGh~w`C$BMG74nHsVt<-~{HyrNR9I5z_h7!T&KA2tQAyyWx4)PntOBjr^N1p$Q`%qD>9D+n44ZJ^w)eJ`$Uf zl{$F~fBJN=8yFi!97Z;dqT{3)xoLW{fnE3hb+XBrPR^um^Uz-(fKg47K6x|3iJeG+ZG+=)r+F2i6U!%&kDbhxGIn-1?DtsX@H# z%JQpyL>}sjhIxVNfV@akViJlH5ivgY}!^^NQs2%(IUG16k%viZ6k(7IaJ2gYiW$f_aJ`%gD z(|nVOorzmlC+_v=d-81lndM%Z-dw=TG#7Vi^P~W07Dd~fnR*p$O$}a1408+yyr%XTj}9u5?Zf65NNU*pN^&w~Be68Y z$9|2LQ_K6s$8k2nyKx{TcK{qPy&dtHgY(&4&uLD@5-l($Mm6p@83CbL?GF^_kw1Icct$l1?5!d)>v znFG^Wp*%Ib{QgNp(}Bsn%~_`=o0V3d+sp#5)&1g4_rpMn>#N;dUBZ+p`FPQ! zCgc(KW9&)b2Hp@_FiD_cbwgmv_&745#4ac@=C!Pj;z9WiFS>hai5|`*nQ0}{uI<}* z+H!hDm8I%iNQ-zLyh@*7_CcWS5>g=w?I++W2DwyGQ3d=jAMRpuwqkdz0&27uJFS{f zriMe|ZPfiAkptVqcyHlvVNe&gf;_(ML=w5>E*)&8bBIoi57HsSOhtQZARa2*7snO; z7h^cnH0{08&)#}>-jQxK34sZ3K@D>}0tyMN6VuJl?=EON>^WcTjf;Z)UmEFQz$imUZ)kmh9K5j}D3~ofZ*Yh%iIaegqXn$zgj@oB#l%22;8j^gDWAt9U`pW4XqA|^;P@D_1lm5s4>0&>11XR(9qJtp&_$;DZQ(2FwM z72+3b^nEtogk&9&^mF`;(@3g`BGqO=tG%-1#y#f4pqBOpKZtIbJ<&gZuwDJezl512 zKT-{)rZ_{A$$N_XCO~Zr80H*02OXNf_Cu7Myd=HuIGVjU@}`-y*&}z2{OGuCa!$l) z_qzqvwCo#SkhQ=bs$zjVDA zJi&|1i*EO#n1L=RIY-eHDS!@Nfy}$V!|NR+0~{{CF?;O4y9PVwmS5@^BIYst#6%IY z8cEGvyTtb;)4wkx^$#(M4p~pV0TdEHwacCYcQll$SxZ1Ysc`?&pWRh4|KNc3&&?GV z#zR`#r8QSDoy%OTpFXG2GC`QtentdJLaGPJsUTs1eG3qjE%wa$u4kgm_sJX(8G(bl z+jG6hg=!;4G>~;u8;dBXC-6Iai|OJpFfw8^E)BY*Z9cfr6(LSln)yp-6S)V?nf3$D zMe}bj2xv|)%uM_!$6738_@Gx}hpgtUUJX#dO~~{fJXbL+3-3MtV?t)>GI$M%C*v~f zjDrr9;I<+*Cvw&VzlLc0BkuK3tXa&aC8d2cfxNe^fD3%b%%o9#!$NqT^bUI`C@i0ODwxhKzx;rGqRir7r}Aek^2N1CY5=bfAG7YMst)TPVh+XLPvsVO{br~J!qHj^7PEiVb5Jq*73 zubdF_(Izf8ca1tpLyUQAD$_)&*zroE`!;ViWqgW)ry5RuVD~@YaA!giJ4AB%U_)p8 z8j_$87~^>-7qmBhXAtE>M$TrJV^u;YlWyqLAHxRDW|exLdY~5CDEZMkM5Ax`dg83; z9?N6Xt%^(=)*vovADhpH8VFR8e=!Ap*&JR^#4VZYKxUqN@;*qI-`Nx)feq`+5H4E8 z!Kj(LF#jD_ASJKRN|mcbn70;`WdzNMjr(!dmgLDJ6na&-AE&0o09JfeLlm2RTX5s+ zvtae%Lq;Z{t;lZKqMGm?gl1nMairQn{IP^AJi`yCUF@v^gM*;Ix#bh4Bucw1G~8=; zf1651)_nr1Csb3VTvw_3Qp76CGF1I1umM5?a0XG z^;6rb97vrd#QWg29)Szh{0X1&@B=h66~+oh6AH5z7n2x>`ojJ9YxN>$ufv7m$-q=y zHrOcY6VfcM)jZ3}BCF#6VAksJlXjp%$%*cXQ#Mbik$ps5d;?n{4HhL13V%R-U_kMc z@D-}dQz?5sh*=2WZ;i!9u+#oucFJlirtB?`FIC5_XXLKe%2}KE>B_}}i5s5sO$Vv8 zj0z>dvvtjF@&{q)Z(0gggGU(Zrv%tK3x?YrSD(8bv0NuoTm{Xpg z7B^OKVw#JtysarN(XwDis#N`S3xt+#LT`QD)L_hkwe53u*X9B0%84wWg2ZjeN9S7& zPHHF%nWUhW>Ya>SyM<;walDNPAtmeQH=kybUBHx_UDqH#XJtb1RW3a`ZDYdZS9aG8)zA7NZA_~`9)Se_$R}{YQ`ow)7WTYD=uE16$fd>Asq9Rxl z9`?v4s*O0YzILzFscsVk<#AVat@JO1!egSW2Wzr%-D|UlcRk$qw6dAM*|dB1wT*kHu%}pqVnC z?Jv~2&~;9+TAtR*%EaHCXMM+2f!S9$IE&3|EhhX(uYS~uDFeO0xv;8$vm79P zCyXQlbEXndW#4d3!a(vQI$7ym-?rvP<7`F)4`pegZ8#Ee_a&wT_T?VqW^X3h4!-^I zfV+Hlnw`amHhi?E@|cquDqUWy*;qN!>e7pOCPPcF2%t;&{kMp$zICpP84 zf=_Iq0-~Aa!#kp-*EXkAITv9LA(rJ0DzHE%*%vM!1B~WJLlTmc?X8e&B<@zzd1p|*T#Il6Q|ZpRDIn!_TX-yDVMa%PA7id^~=Pzx*MF={ON5+ znxacfp^2U~gS)@b1WJbu6myA-q)XamCFn_o8xR-H3z5hUbr0*|S2mX>^_mlvyuqtM z7ty!uE+8VTEq}ZK6l;2efcmi^64KV~>K<=Sb#o`e4kHXN;;KYKy^Qces8LLe57QyT zk2K+W>2Aii9ay2wQaXnI#tku%dXp_UmM@0uXZ3E zSf9%eFsoDj2EQN_@`P9Jc=|7CIE4XaK0IU5!;R^Z^oA}7*LJYCo)KX~0e4g#;|ZyQ z)!dw#dh{Q^g?f3Xr6mmh|9fWQ{wi46FNvVL&=o(yI+{ZN6Ig?<6e~3Kw3>v~#Pn^J zQi~(g{)2PT|Kg1;1$<<#kfeqx597kE@_6neJ&HUeD%f}nm^wUyg?5<+52Vn7T%|6e zZO4*}*U(G>-`qyMb zb;f1$?Fs_y&S2x)Av)w-#EcA474AM@1MqzYK^FXhi!1z%<`fVB01cA95GgdCQ~-sQ z3$+B_$4c9T3m^*HVHZsRGJ59?67ZmLtpaGtb;>eeHq5 z58}OjAR@o5QaUO$>3iSC%qD`S&cM^7inyes6#k#))+%2D(@n2&>_&0Y{D zrqOn!s)tlbbWg#AosaK?`yDufARh@8Rdyszp&VDo^87GV*Feez75B6w`Fu}a3UEMg zmzLnf0e8pl{Elg}G9!PQAkmeJ!zv;XVh?iiz&OUre7-GY;$KR%u)p1=hr*s^5l~Mdoa>ae#uV`D z9v*ua0Zd@|;=`IDI9d$Vj5X6E^++ z!Q87f!FTw)Jv&$W5KFln$+p}-S@5v#ho@^w*NY@a@G)yhwn`58o;RF0yA5;(~a8F(6If-8_ zbNOtUldRwr&SdQqIEQ4PXW`v70thKc$Onf5fhh&h{WOA85Q@wl&Om`fYL4vJSbNk7 zpu%lh#ZV_JHQd$Fkv+T8% z0el51pT7@!!+yE;^(?;qU~asD8dms|zZ~<=#-TpPcy@+1rMNM7PFEqm?Yb?g0hUZA z2cFpho;kqUEjh!dgd^e&nuvcb@=f7~oeb((`!4SdY zU1^Atfy1BX;4l!L(r;0Y`0q+Y#Fiij6yjs6*}@Ml_!KxHX+;@MrrH<7a4Ly~auXo6 z3ZK#kLR-88s(L(V`1(ZPh3d22O5Shn#lnO>P$jxCQx%N~1&DL8;=y7rAcqQtUz*Tp zFpIxS2Cje}%Ho6n0co)hChqb**nIfq;fL6`1Je)F2!&f85xI__X#HCF!9peDdp^JB zAmr9+;&`bk6%DYg$kTStrHwufyp%@-)ZCXu&q;;g6wmLY6exhENy6DHiTK-hZJFg- zzy_4Yc)~Xe!2RIjw|=^J2+jtY*Sx#^DA?*B3H?oNnRcK9M)Kkf=fHPuxb*qpodL?l zD<8GX6stj~s$bW4Q%D6HLa>P*SWP_<>^t??cRyTw2c#t&B~bun@0`GfcGh|CgYU3i zbb))+3U6a+`>%mG7j4bsb6}<;l0tNDhL1@E0_U8^DsOhRFW2!NVdC*`w2arzMO-{E z0aW;n2=c+_%o9kGIqTbToEiuf`TULF-xh=lD&~M*T^Ai92Hr-!JxY$Ie#EfeTp&sJ z%luzE0p)U}PWcU>NY}75GnJ4NzT(!xkXhqAOu{B=N^B5F(fq{pA#3Ns@FgI+`{2|R zNwfjdx(tKf3nhQ7|@qM;;pXdU7RjaM%4!efJjlN zOm~21+7SExrnLML^aYkhTwV_!lebc9vv=cqmERO`8~<}N<@(M|4=wAye9Z1IIT1dT qbzNrP;U$%umYs76*WhPzzlAV-AM^R)LvU)`Z%47#N7(2;ul*mokO$lV diff --git a/pilot/server/static/WHITE_LOGO.png b/pilot/server/static/WHITE_LOGO.png index af69fed775fc4d8e17a4af0d43ba450c662de0e6..914aa930e52367e4e593703af9797c7ed335d97f 100644 GIT binary patch literal 21248 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 e=M()(l);D.ZP[e?"success":"error"](e?"Copy success":"Copy failed")}}),(0,a.jsx)(z.Z,{language:t,style:O.Z,children:l})]})}let F=["custom-view","chart-view","references"],H={code(e){var l;let{inline:t,node:s,className:n,children:r,style:o,...i}=e,{context:c,matchValues:d}=function(e){let l=F.reduce((l,t)=>{let a=RegExp("<".concat(t,"[^>]*/?>"),"gi");return e=e.replace(a,e=>(l.push(e),"")),l},[]);return{context:e,matchValues:l}}(Array.isArray(r)?r.join("\n"):r),u=/language-(\w+)/.exec(n||"");return(0,a.jsxs)(a.Fragment,{children:[!t&&u?(0,a.jsx)(A,{code:c,language:null!==(l=null==u?void 0:u[1])&&void 0!==l?l:"javascript"}):(0,a.jsx)("code",{...i,style:o,className:"px-[6px] py-[2px] rounded bg-gray-700 text-gray-100 dark:bg-gray-100 dark:text-gray-800 text-sm",children:r}),(0,a.jsx)(v.D,{components:H,rehypePlugins:[g.Z],children:d.join("\n")})]})},ul(e){let{children:l}=e;return(0,a.jsx)("ul",{className:"py-1",children:l})},ol(e){let{children:l}=e;return(0,a.jsx)("ol",{className:"py-1",children:l})},li(e){let{children:l,ordered:t}=e;return(0,a.jsx)("li",{className:"text-sm leading-7 ml-5 pl-2 text-gray-600 dark:text-gray-300 ".concat(t?"list-decimal":"list-disc"),children:l})},table(e){let{children:l}=e;return(0,a.jsx)("table",{className:"my-2 rounded-tl-md rounded-tr-md max-w-full bg-white dark:bg-gray-900 text-sm rounded-lg overflow-hidden",children:l})},thead(e){let{children:l}=e;return(0,a.jsx)("thead",{className:"bg-[#fafafa] dark:bg-black font-semibold",children:l})},th(e){let{children:l}=e;return(0,a.jsx)("th",{className:"!text-left p-4",children:l})},td(e){let{children:l}=e;return(0,a.jsx)("td",{className:"p-4 border-t border-[#f0f0f0] dark:border-gray-700",children:l})},h1(e){let{children:l}=e;return(0,a.jsx)("h3",{className:"text-2xl font-bold my-4 border-b border-slate-300 pb-4",children:l})},h2(e){let{children:l}=e;return(0,a.jsx)("h3",{className:"text-xl font-bold my-3",children:l})},h3(e){let{children:l}=e;return(0,a.jsx)("h3",{className:"text-lg font-semibold my-2",children:l})},h4(e){let{children:l}=e;return(0,a.jsx)("h3",{className:"text-base font-semibold my-1",children:l})},a(e){let{children:l,href:t}=e;return(0,a.jsxs)("div",{className:"inline-block text-blue-600 dark:text-blue-400",children:[(0,a.jsx)(_.Z,{className:"mr-1"}),(0,a.jsx)("a",{href:t,target:"_blank",children:l})]})},img(e){let{src:l,alt:t}=e;return(0,a.jsx)("div",{children:(0,a.jsx)(k.Z,{className:"min-h-[1rem] max-w-full max-h-full border rounded",src:l,alt:t,placeholder:(0,a.jsx)(b.Z,{icon:(0,a.jsx)(N.Z,{spin:!0}),color:"processing",children:"Image Loading..."}),fallback:"/images/fallback.png"})})},blockquote(e){let{children:l}=e;return(0,a.jsx)("blockquote",{className:"py-4 px-6 border-l-4 border-blue-600 rounded bg-white my-2 text-gray-500 dark:bg-slate-800 dark:text-gray-200 dark:border-white shadow-sm",children:l})},references(e){let l,{children:t}=e;try{l=JSON.parse(t)}catch(e){return console.log(e),(0,a.jsx)("p",{className:"text-sm",children:"Render Reference Error!"})}let s=null==l?void 0:l.references;return!s||(null==s?void 0:s.length)<1?null:(0,a.jsxs)("div",{className:"border-t-[1px] border-gray-300 mt-3 py-2",children:[(0,a.jsxs)("p",{className:"text-sm text-gray-500 dark:text-gray-400 mb-2",children:[(0,a.jsx)(_.Z,{className:"mr-2"}),(0,a.jsx)("span",{className:"font-semibold",children:l.title})]}),s.map((e,l)=>{var t;return(0,a.jsxs)("p",{className:"text-sm font-normal block ml-2 h-6 leading-6 overflow-hidden",children:[(0,a.jsxs)("span",{className:"inline-block w-6",children:["[",l+1,"]"]}),(0,a.jsx)("span",{className:"mr-4 text-blue-400",children:e.name}),null==e?void 0:null===(t=e.pages)||void 0===t?void 0:t.map((l,t)=>(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{children:l},"file_page_".concat(t)),t<(null==e?void 0:e.pages.length)-1&&(0,a.jsx)("span",{children:","},"file_page__".concat(t))]}))]},"file_".concat(l))})]})},summary(e){let{children:l}=e;return(0,a.jsxs)("div",{children:[(0,a.jsxs)("p",{className:"mb-2",children:[(0,a.jsx)(Z.Z,{className:"mr-2"}),(0,a.jsx)("span",{className:"font-semibold",children:"Document Summary"})]}),(0,a.jsx)("div",{children:l})]})},"chart-view":function(e){var l,t,s;let n,{content:r,children:o}=e;try{n=JSON.parse(r)}catch(e){console.log(e,r),n={type:"response_table",sql:"",data:[]}}let i=(null==n?void 0:null===(l=n.data)||void 0===l?void 0:l[0])?null===(t=Object.keys(null==n?void 0:null===(s=n.data)||void 0===s?void 0:s[0]))||void 0===t?void 0:t.map(e=>({title:e,dataIndex:e,key:e})):[],c={key:"chart",label:"Chart",children:(0,a.jsx)(R._z,{data:null==n?void 0:n.data,chartType:(0,R.aG)(null==n?void 0:n.type)})},d={key:"sql",label:"SQL",children:(0,a.jsx)(A,{code:(0,P.WU)(null==n?void 0:n.sql,{language:"mysql"}),language:"sql"})},u={key:"data",label:"Data",children:(0,a.jsx)(C.Z,{dataSource:null==n?void 0:n.data,columns:i})},m=(null==n?void 0:n.type)==="response_table"?[u,d]:[c,d,u];return(0,a.jsxs)("div",{children:[(0,a.jsx)(S.Z,{defaultActiveKey:(null==n?void 0:n.type)==="response_table"?"data":"chart",items:m,size:"small"}),o]})},references(e){let l,{children:t}=e;try{l=JSON.parse(t)}catch(e){return console.log(e),(0,a.jsx)("p",{className:"text-sm",children:"Render Reference Error!"})}let s=null==l?void 0:l.references;return!s||(null==s?void 0:s.length)<1?null:(0,a.jsxs)("div",{className:"border-t-[1px] border-gray-300 mt-3 py-2",children:[(0,a.jsxs)("p",{className:"text-sm text-gray-500 dark:text-gray-400 mb-2",children:[(0,a.jsx)(_.Z,{className:"mr-2"}),(0,a.jsx)("span",{className:"font-semibold",children:l.title})]}),s.map((e,l)=>{var t;return(0,a.jsxs)("p",{className:"text-sm font-normal block ml-2 h-6 leading-6 overflow-hidden",children:[(0,a.jsxs)("span",{className:"inline-block w-6",children:["[",l+1,"]"]}),(0,a.jsx)("span",{className:"mr-4 text-blue-400",children:e.name}),null==e?void 0:null===(t=e.pages)||void 0===t?void 0:t.map((l,t)=>(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{children:l},"file_page_".concat(t)),t<(null==e?void 0:e.pages.length)-1&&(0,a.jsx)("span",{children:","},"file_page__".concat(t))]}))]},"file_".concat(l))})]})}},q={todo:{bgClass:"bg-gray-500",icon:(0,a.jsx)(c.Z,{className:"ml-2"})},runing:{bgClass:"bg-blue-500",icon:(0,a.jsx)(d.Z,{className:"ml-2"})},failed:{bgClass:"bg-red-500",icon:(0,a.jsx)(u.Z,{className:"ml-2"})},completed:{bgClass:"bg-green-500",icon:(0,a.jsx)(m.Z,{className:"ml-2"})}};function V(e){return e.replaceAll("\\n","\n").replace(/]+)>/gi,"").replace(/]+)>/gi,"")}var T=(0,s.memo)(function(e){let{children:l,content:t,isChartChat:n,onLinkClick:r}=e,{scene:o}=(0,s.useContext)(w.p),{context:i,model_name:c,role:d}=t,u="view"===d,{relations:m,value:f,cachePlguinContext:_}=(0,s.useMemo)(()=>{if("string"!=typeof i)return{relations:[],value:"",cachePlguinContext:[]};let[e,l]=i.split(" relations:"),t=l?l.split(","):[],a=[],s=0,n=e.replace(/]*>[^<]*<\/dbgpt-view>/gi,e=>{try{var l;let t=e.replaceAll("\n","\\n").replace(/<[^>]*>|<\/[^>]*>/gm,""),n=JSON.parse(t),r="".concat(s,"");return a.push({...n,result:V(null!==(l=n.result)&&void 0!==l?l:"")}),s++,r}catch(l){return console.log(l.message,l),e}});return{relations:t,cachePlguinContext:a,value:n}},[i]),N=(0,s.useMemo)(()=>({"custom-view"(e){var l;let{children:t}=e,s=+t.toString();if(!_[s])return t;let{name:n,status:r,err_msg:o,result:i}=_[s],{bgClass:c,icon:d}=null!==(l=q[r])&&void 0!==l?l:{};return(0,a.jsxs)("div",{className:"bg-white dark:bg-[#212121] rounded-lg overflow-hidden my-2 flex flex-col lg:max-w-[80%]",children:[(0,a.jsxs)("div",{className:j()("flex px-4 md:px-6 py-2 items-center text-white text-sm",c),children:[n,d]}),i?(0,a.jsx)("div",{className:"px-4 md:px-6 py-4 text-sm",children:(0,a.jsx)(v.D,{components:H,rehypePlugins:[g.Z],children:null!=i?i:""})}):(0,a.jsx)("div",{className:"px-4 md:px-6 py-4 text-sm",children:o})]})}}),[i,_]);return u||i?(0,a.jsxs)("div",{className:j()("relative flex flex-wrap w-full px-2 sm:px-4 py-2 sm:py-4 rounded-xl break-words",{"bg-slate-100 dark:bg-[#353539]":u,"lg:w-full xl:w-full pl-0":["chat_with_db_execute","chat_dashboard"].includes(o)}),children:[(0,a.jsx)("div",{className:"mr-2 flex flex-shrink-0 items-center justify-center h-7 w-7 rounded-full text-lg sm:mr-4",children:u?(0,y.A)(c)||(0,a.jsx)(x.Z,{}):(0,a.jsx)(h.Z,{})}),(0,a.jsxs)("div",{className:"flex-1 overflow-hidden items-center text-md leading-8",children:[!u&&"string"==typeof i&&i,u&&n&&"object"==typeof i&&(0,a.jsxs)("div",{children:["[".concat(i.template_name,"]: "),(0,a.jsxs)("span",{className:"text-[#1677ff] cursor-pointer",onClick:r,children:[(0,a.jsx)(p.Z,{className:"mr-1"}),i.template_introduce||"More Details"]})]}),u&&"string"==typeof i&&(0,a.jsx)(v.D,{components:{...H,...N},rehypePlugins:[g.Z],children:V(f)}),!!(null==m?void 0:m.length)&&(0,a.jsx)("div",{className:"flex flex-wrap mt-2",children:null==m?void 0:m.map((e,l)=>(0,a.jsx)(b.Z,{color:"#108ee9",children:e},e+l))})]}),l]}):(0,a.jsx)("div",{className:"h-12"})}),G=t(59301),J=t(41132),U=t(74312),W=t(3414),$=t(72868),B=t(59562),Q=t(14553),K=t(25359),X=t(7203),Y=t(48665),ee=t(26047),el=t(99056),et=t(57814),ea=t(63955),es=t(33028),en=t(40911),er=t(66478),eo=t(83062),ei=t(50489),ec=t(67421),ed=e=>{var l;let{conv_index:t,question:n,knowledge_space:r,select_param:o}=e,{t:i}=(0,ec.$G)(),{chatId:c}=(0,s.useContext)(w.p),[d,u]=(0,s.useState)(""),[m,x]=(0,s.useState)(4),[h,p]=(0,s.useState)(""),v=(0,s.useRef)(null),[g,f]=D.ZP.useMessage(),j=(0,s.useCallback)((e,l)=>{l?(0,ei.Vx)((0,ei.Eb)(c,t)).then(e=>{var l,t,a,s;let n=null!==(l=e[1])&&void 0!==l?l:{};u(null!==(t=n.ques_type)&&void 0!==t?t:""),x(parseInt(null!==(a=n.score)&&void 0!==a?a:"4")),p(null!==(s=n.messages)&&void 0!==s?s:"")}).catch(e=>{console.log(e)}):(u(""),x(4),p(""))},[c,t]),b=(0,U.Z)(W.Z)(e=>{let{theme:l}=e;return{backgroundColor:"dark"===l.palette.mode?"#FBFCFD":"#0E0E10",...l.typography["body-sm"],padding:l.spacing(1),display:"flex",alignItems:"center",justifyContent:"center",borderRadius:4,width:"100%",height:"100%"}});return(0,a.jsxs)($.L,{onOpenChange:j,children:[f,(0,a.jsx)(eo.Z,{title:i("Rating"),children:(0,a.jsx)(B.Z,{slots:{root:Q.ZP},slotProps:{root:{variant:"plain",color:"primary"}},sx:{borderRadius:40},children:(0,a.jsx)(G.Z,{})})}),(0,a.jsxs)(K.Z,{children:[(0,a.jsx)(X.Z,{disabled:!0,sx:{minHeight:0}}),(0,a.jsx)(Y.Z,{sx:{width:"100%",maxWidth:350,display:"grid",gap:3,padding:1},children:(0,a.jsx)("form",{onSubmit:e=>{e.preventDefault();let l={conv_uid:c,conv_index:t,question:n,knowledge_space:r,score:m,ques_type:d,messages:h};console.log(l),(0,ei.Vx)((0,ei.VC)({data:l})).then(e=>{g.open({type:"success",content:"save success"})}).catch(e=>{g.open({type:"error",content:"save error"})})},children:(0,a.jsxs)(ee.Z,{container:!0,spacing:.5,columns:13,sx:{flexGrow:1},children:[(0,a.jsx)(ee.Z,{xs:3,children:(0,a.jsx)(b,{children:i("Q_A_Category")})}),(0,a.jsx)(ee.Z,{xs:10,children:(0,a.jsx)(el.Z,{action:v,value:d,placeholder:"Choose one…",onChange:(e,l)=>u(null!=l?l:""),...d&&{endDecorator:(0,a.jsx)(Q.ZP,{size:"sm",variant:"plain",color:"neutral",onMouseDown:e=>{e.stopPropagation()},onClick:()=>{var e;u(""),null===(e=v.current)||void 0===e||e.focusVisible()},children:(0,a.jsx)(J.Z,{})}),indicator:null},sx:{width:"100%"},children:o&&(null===(l=Object.keys(o))||void 0===l?void 0:l.map(e=>(0,a.jsx)(et.Z,{value:e,children:o[e]},e)))})}),(0,a.jsx)(ee.Z,{xs:3,children:(0,a.jsx)(b,{children:(0,a.jsx)(eo.Z,{title:(0,a.jsx)(Y.Z,{children:(0,a.jsx)("div",{children:i("feed_back_desc")})}),variant:"solid",placement:"left",children:i("Q_A_Rating")})})}),(0,a.jsx)(ee.Z,{xs:10,sx:{pl:0,ml:0},children:(0,a.jsx)(ea.Z,{"aria-label":"Custom",step:1,min:0,max:5,valueLabelFormat:function(e){return({0:i("Lowest"),1:i("Missed"),2:i("Lost"),3:i("Incorrect"),4:i("Verbose"),5:i("Best")})[e]},valueLabelDisplay:"on",marks:[{value:0,label:"0"},{value:1,label:"1"},{value:2,label:"2"},{value:3,label:"3"},{value:4,label:"4"},{value:5,label:"5"}],sx:{width:"90%",pt:3,m:2,ml:1},onChange:e=>{var l;return x(null===(l=e.target)||void 0===l?void 0:l.value)},value:m})}),(0,a.jsx)(ee.Z,{xs:13,children:(0,a.jsx)(es.Z,{placeholder:i("Please_input_the_text"),value:h,onChange:e=>p(e.target.value),minRows:2,maxRows:4,endDecorator:(0,a.jsx)(en.ZP,{level:"body-xs",sx:{ml:"auto"},children:i("input_count")+h.length+i("input_unit")}),sx:{width:"100%",fontSize:14}})}),(0,a.jsx)(ee.Z,{xs:13,children:(0,a.jsx)(er.Z,{type:"submit",variant:"outlined",sx:{width:"100%",height:"100%"},children:i("submit")})})]})})})]})]})},eu=t(32983),em=t(12069),ex=t(96486),eh=t(20766),ep=t(98399),ev=t(87740),eg=t(80573),ef=e=>{var l;let{messages:t,onSubmit:r}=e,{dbParam:c,currentDialogue:d,scene:u,model:m,refreshDialogList:x,chatId:h,agentList:p,docId:v}=(0,s.useContext)(w.p),{t:g}=(0,ec.$G)(),f=(0,o.useSearchParams)(),b=null!==(l=f&&f.get("spaceNameOriginal"))&&void 0!==l?l:"",[_,N]=(0,s.useState)(!1),[Z,k]=(0,s.useState)(!1),[C,S]=(0,s.useState)(t),[P,R]=(0,s.useState)(""),[E,O]=(0,s.useState)(),z=(0,s.useRef)(null),L=(0,s.useMemo)(()=>"chat_dashboard"===u,[u]),A=(0,eg.Z)(),F=(0,s.useMemo)(()=>{switch(u){case"chat_agent":return p.join(",");case"chat_excel":return null==d?void 0:d.select_param;default:return b||c}},[u,p,d,c,b]),H=async e=>{if(!_&&e.trim())try{N(!0),await r(e,{select_param:null!=F?F:""})}finally{N(!1)}},q=e=>{try{return JSON.parse(e)}catch(l){return e}},[V,G]=D.ZP.useMessage(),J=async e=>{let l=null==e?void 0:e.replace(/\trelations:.*/g,""),t=M()(l);t?l?V.open({type:"success",content:g("Copy_success")}):V.open({type:"warning",content:g("Copy_nothing")}):V.open({type:"error",content:g("Copry_error")})},U=async()=>{!_&&v&&(N(!0),await A(v),N(!1))};return(0,n.Z)(async()=>{let e=(0,ep.a_)();e&&e.id===h&&(await H(e.message),x(),localStorage.removeItem(ep.rU))},[h]),(0,s.useEffect)(()=>{let e=t;L&&(e=(0,ex.cloneDeep)(t).map(e=>((null==e?void 0:e.role)==="view"&&"string"==typeof(null==e?void 0:e.context)&&(e.context=q(null==e?void 0:e.context)),e))),S(e.filter(e=>["view","human"].includes(e.role)))},[L,t]),(0,s.useEffect)(()=>{(0,ei.Vx)((0,ei.Lu)()).then(e=>{var l;O(null!==(l=e[1])&&void 0!==l?l:{})}).catch(e=>{console.log(e)})},[]),(0,s.useEffect)(()=>{setTimeout(()=>{var e;null===(e=z.current)||void 0===e||e.scrollTo(0,z.current.scrollHeight)},50)},[t]),(0,a.jsxs)(a.Fragment,{children:[G,(0,a.jsx)("div",{ref:z,className:"flex flex-1 overflow-y-auto pb-8 w-full flex-col",children:(0,a.jsx)("div",{className:"flex items-center flex-1 flex-col text-sm leading-6 text-slate-900 dark:text-slate-300 sm:text-base sm:leading-7",children:C.length?C.map((e,l)=>{var t;return(0,a.jsx)(T,{content:e,isChartChat:L,onLinkClick:()=>{k(!0),R(JSON.stringify(null==e?void 0:e.context,null,2))},children:"view"===e.role&&(0,a.jsxs)("div",{className:"flex w-full pt-2 md:pt-4 border-t border-gray-200 mt-2 md:mt-4 pl-2",children:["chat_knowledge"===u&&e.retry?(0,a.jsxs)(er.Z,{onClick:U,slots:{root:Q.ZP},slotProps:{root:{variant:"plain",color:"primary"}},children:[(0,a.jsx)(ev.Z,{}),"\xa0",(0,a.jsx)("span",{className:"text-sm",children:g("Retry")})]}):null,(0,a.jsxs)("div",{className:"flex w-full flex-row-reverse",children:[(0,a.jsx)(ed,{select_param:E,conv_index:Math.ceil((l+1)/2),question:null===(t=null==C?void 0:C.filter(l=>(null==l?void 0:l.role)==="human"&&(null==l?void 0:l.order)===e.order)[0])||void 0===t?void 0:t.context,knowledge_space:b||c||""}),(0,a.jsx)(eo.Z,{title:g("Copy"),children:(0,a.jsx)(er.Z,{onClick:()=>J(null==e?void 0:e.context),slots:{root:Q.ZP},slotProps:{root:{variant:"plain",color:"primary"}},sx:{borderRadius:40},children:(0,a.jsx)(I.Z,{})})})]})]})},l)}):(0,a.jsx)(eu.Z,{image:"/empty.png",imageStyle:{width:320,height:320,margin:"0 auto",maxWidth:"100%",maxHeight:"100%"},className:"flex items-center justify-center flex-col h-full w-full",description:"Start a conversation"})})}),(0,a.jsx)("div",{className:j()("relative after:absolute after:-top-8 after:h-8 after:w-full after:bg-gradient-to-t after:from-white after:to-transparent dark:after:from-[#212121]",{"cursor-not-allowed":"chat_excel"===u&&!(null==d?void 0:d.select_param)}),children:(0,a.jsxs)("div",{className:"flex flex-wrap w-full py-2 sm:pt-6 sm:pb-10 items-center",children:[m&&(0,a.jsx)("div",{className:"mr-2 flex",children:(0,y.A)(m)}),(0,a.jsx)(eh.Z,{loading:_,onSubmit:H,handleFinish:N})]})}),(0,a.jsx)(em.default,{title:"JSON Editor",open:Z,width:"60%",cancelButtonProps:{hidden:!0},onOk:()=>{k(!1)},onCancel:()=>{k(!1)},children:(0,a.jsx)(i.Z,{className:"w-full h-[500px]",language:"json",value:P})})]})},ej=t(34625),eb=t(45247),ey=()=>{var e;let l=(0,o.useSearchParams)(),{scene:t,chatId:i,model:c,setModel:d,history:u,setHistory:m}=(0,s.useContext)(w.p),x=(0,r.Z)({}),h=null!==(e=l&&l.get("initMessage"))&&void 0!==e?e:"",[p,v]=(0,s.useState)(!1),[g,f]=(0,s.useState)(),b=async()=>{v(!0);let[,e]=await (0,ei.Vx)((0,ei.$i)(i));m(null!=e?e:[]),v(!1)},y=e=>{var l;let t=null===(l=e[e.length-1])||void 0===l?void 0:l.context;if(t)try{let e=JSON.parse(t);f((null==e?void 0:e.template_name)==="report"?null==e?void 0:e.charts:void 0)}catch(e){f(void 0)}};(0,n.Z)(async()=>{let e=(0,ep.a_)();e&&e.id===i||await b()},[h,i]),(0,s.useEffect)(()=>{var e,l;if(!u.length)return;let t=null===(e=null===(l=u.filter(e=>"view"===e.role))||void 0===l?void 0:l.slice(-1))||void 0===e?void 0:e[0];(null==t?void 0:t.model_name)&&d(t.model_name),y(u)},[u.length]);let _=(0,s.useCallback)((e,l)=>new Promise(a=>{let s=[...u,{role:"human",context:e,model_name:c,order:0,time_stamp:0},{role:"view",context:"",model_name:c,order:0,time_stamp:0}],n=s.length-1;m([...s]),x({data:{...l,chat_mode:t||"chat_normal",model_name:c,user_input:e},chatId:i,onMessage:e=>{s[n].context=e,m([...s])},onDone:()=>{y(s),a()},onClose:()=>{y(s),a()},onError:e=>{s[n].context=e,m([...s]),a()}})}),[u,x,c]);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(eb.Z,{visible:p}),(0,a.jsx)(ej.Z,{refreshHistory:b,modelChange:e=>{d(e)}}),(0,a.jsxs)("div",{className:"px-4 flex flex-1 flex-wrap overflow-hidden relative",children:[!!(null==g?void 0:g.length)&&(0,a.jsx)("div",{className:"w-full xl:w-3/4 h-3/5 xl:pr-4 xl:h-full overflow-y-auto",children:(0,a.jsx)(R.ZP,{chartsData:g})}),!(null==g?void 0:g.length)&&"chat_dashboard"===t&&(0,a.jsx)(eu.Z,{image:"/empty.png",imageStyle:{width:320,height:320,margin:"0 auto",maxWidth:"100%",maxHeight:"100%"},className:"w-full xl:w-3/4 h-3/5 xl:h-full pt-0 md:pt-10"}),(0,a.jsx)("div",{className:j()("flex flex-1 flex-col overflow-hidden",{"px-0 xl:pl-4 h-2/5 xl:h-full border-t xl:border-t-0 xl:border-l":"chat_dashboard"===t,"h-full lg:px-8":"chat_dashboard"!==t}),children:(0,a.jsx)(ef,{messages:u,onSubmit:_})})]})]})}},20766:function(e,l,t){t.d(l,{Z:function(){return D}});var a=t(85893),s=t(27496),n=t(59566),r=t(71577),o=t(67294),i=t(2487),c=t(83062),d=t(2453),u=t(46735),m=t(74627),x=t(39479),h=t(51009),p=t(58299),v=t(577),g=t(30119),f=t(67421);let j=e=>{let{data:l,loading:t,submit:s,close:n}=e,{t:r}=(0,f.$G)(),o=e=>()=>{s(e),n()};return(0,a.jsx)("div",{style:{maxHeight:400,overflow:"auto"},children:(0,a.jsx)(i.Z,{dataSource:null==l?void 0:l.data,loading:t,rowKey:e=>e.prompt_name,renderItem:e=>(0,a.jsx)(i.Z.Item,{onClick:o(e.content),children:(0,a.jsx)(c.Z,{title:e.content,children:(0,a.jsx)(i.Z.Item.Meta,{style:{cursor:"copy"},title:e.prompt_name,description:r("Prompt_Info_Scene")+":".concat(e.chat_scene,",")+r("Prompt_Info_Sub_Scene")+":".concat(e.sub_chat_scene)})})},e.prompt_name)})})};var b=e=>{let{submit:l}=e,{t}=(0,f.$G)(),[s,n]=(0,o.useState)(!1),[r,i]=(0,o.useState)("common"),{data:b,loading:y}=(0,v.Z)(()=>(0,g.PR)("/prompt/list",{prompt_type:r}),{refreshDeps:[r],onError:e=>{d.ZP.error(null==e?void 0:e.message)}});return(0,a.jsx)(u.ZP,{theme:{components:{Popover:{minWidth:250}}},children:(0,a.jsx)(m.Z,{title:(0,a.jsx)(x.Z.Item,{label:"Prompt "+t("Type"),children:(0,a.jsx)(h.default,{style:{width:150},value:r,onChange:e=>{i(e)},options:[{label:t("Public")+" Prompts",value:"common"},{label:t("Private")+" Prompts",value:"private"}]})}),content:(0,a.jsx)(j,{data:b,loading:y,submit:l,close:()=>{n(!1)}}),placement:"topRight",trigger:"click",open:s,onOpenChange:e=>{n(e)},children:(0,a.jsx)(c.Z,{title:t("Click_Select")+" Prompt",children:(0,a.jsx)(p.Z,{className:"bottom-[30%]"})})})})},y=t(41468),w=t(50489),_=t(80573),N=t(5392),Z=t(84553);function k(e){let{dbParam:l,setDocId:t}=(0,o.useContext)(y.p),{onUploadFinish:s,handleFinish:n}=e,i=(0,_.Z)(),[c,d]=(0,o.useState)(!1),u=async(e,l)=>{await (0,w.Vx)((0,w.Hx)(e,{doc_ids:[l]}))},m=async e=>{d(!0);let a=new FormData;a.append("doc_name",e.file.name),a.append("doc_file",e.file),a.append("doc_type","DOCUMENT");let r=await (0,w.Vx)((0,w.iG)(l||"default",a));if(!r[1]){d(!1);return}t(r[1]),s(),await u(l||"default",null==r?void 0:r[1]),d(!1),null==n||n(!0),await i(r[1]),null==n||n(!1)};return(0,a.jsx)(Z.default,{customRequest:m,showUploadList:!1,maxCount:1,multiple:!1,className:"absolute z-10 top-2 left-2",accept:".pdf,.ppt,.pptx,.xls,.xlsx,.doc,.docx,.txt,.md",children:(0,a.jsx)(r.ZP,{loading:c,size:"small",shape:"circle",icon:(0,a.jsx)(N.Z,{})})})}var C=t(11163),S=t(82579);function P(){return(0,a.jsx)("svg",{className:"mr-1",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"6058",width:"1.5em",height:"1.5em",children:(0,a.jsx)("path",{d:"M688 312c0 4.4-3.6 8-8 8H296c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h384c4.4 0 8 3.6 8 8v48z m-392 88h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H296c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8z m376 116c119.3 0 216 96.7 216 216s-96.7 216-216 216-216-96.7-216-216 96.7-216 216-216z m107.5 323.5C808.2 810.8 824 772.6 824 732s-15.8-78.8-44.5-107.5S712.6 580 672 580s-78.8 15.8-107.5 44.5S520 691.4 520 732s15.8 78.8 44.5 107.5S631.4 884 672 884s78.8-15.8 107.5-44.5zM440 852c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H168c-17.7 0-32-14.3-32-32V108c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32v384c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8V148H208v704h232z m232-76.06l-20.56 28.43c-1.5 2.1-3.9 3.3-6.5 3.3h-44.3c-6.5 0-10.3-7.4-6.4-12.7l45.75-63.3-45.75-63.3c-3.9-5.3-0.1-12.7 6.4-12.7h44.3c2.6 0 5 1.2 6.5 3.3L672 687.4l20.56-28.43c1.5-2.1 3.9-3.3 6.5-3.3h44.3c6.5 0 10.3 7.4 6.4 12.7l-45.75 63.3 45.75 63.3c3.9 5.3 0.1 12.7-6.4 12.7h-44.3c-2.6 0-5-1.2-6.5-3.3L672 775.94z",fill:"#d81e06","p-id":"6059"})})}function R(e){let{document:l}=e;switch(l.status){case"RUNNING":return(0,a.jsx)(S.Rp,{});case"FINISHED":default:return(0,a.jsx)(S.s2,{});case"FAILED":return(0,a.jsx)(P,{})}}function E(e){let{documents:l,dbParam:t}=e,s=(0,C.useRouter)(),n=e=>{s.push("/knowledge/chunk/?spaceName=".concat(t,"&id=").concat(e))};return(null==l?void 0:l.length)?(0,a.jsx)("div",{className:"absolute flex overflow-scroll h-12 top-[-35px] w-full z-10",children:l.map(e=>{let l;switch(e.status){case"RUNNING":l="#2db7f5";break;case"FINISHED":default:l="#87d068";break;case"FAILED":l="#f50"}return(0,a.jsx)(c.Z,{title:e.result,children:(0,a.jsxs)(r.ZP,{style:{color:l},onClick:()=>{n(e.id)},className:"shrink flex items-center mr-3",children:[(0,a.jsx)(R,{document:e}),e.doc_name]})},e.id)})}):null}var D=function(e){let{children:l,loading:t,onSubmit:i,handleFinish:c,...d}=e,{dbParam:u,scene:m}=(0,o.useContext)(y.p),[x,h]=(0,o.useState)(""),p=(0,o.useMemo)(()=>"chat_knowledge"===m,[m]),[v,g]=(0,o.useState)([]),f=(0,o.useRef)(0);async function j(){if(!u)return null;let[e,l]=await (0,w.Vx)((0,w._Q)(u,{page:1,page_size:f.current}));g(null==l?void 0:l.data)}return(0,o.useEffect)(()=>{p&&j()},[u]),(0,a.jsxs)("div",{className:"flex-1 relative",children:[(0,a.jsx)(E,{documents:v,dbParam:u}),p&&(0,a.jsx)(k,{handleFinish:c,onUploadFinish:()=>{f.current+=1,j()},className:"absolute z-10 top-2 left-2"}),(0,a.jsx)(n.default.TextArea,{className:"flex-1 ".concat(p?"pl-10":""," pr-10"),size:"large",value:x,autoSize:{minRows:1,maxRows:4},...d,onPressEnter:e=>{if(x.trim()&&13===e.keyCode){if(e.shiftKey){h(e=>e+"\n");return}i(x),setTimeout(()=>{h("")},0)}},onChange:e=>{if("number"==typeof d.maxLength){h(e.target.value.substring(0,d.maxLength));return}h(e.target.value)}}),(0,a.jsx)(r.ZP,{className:"ml-2 flex items-center justify-center absolute right-2 bottom-0",size:"large",type:"text",loading:t,icon:(0,a.jsx)(s.Z,{}),onClick:()=>{i(x)}}),(0,a.jsx)(b,{submit:e=>{h(x+e)}}),l]})}},45247:function(e,l,t){var a=t(85893),s=t(50888);l.Z=function(e){let{visible:l}=e;return l?(0,a.jsx)("div",{className:"absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-white dark:bg-black bg-opacity-50 dark:bg-opacity-50 backdrop-blur-sm text-3xl animate-fade animate-duration-200",children:(0,a.jsx)(s.Z,{})}):null}},43446:function(e,l,t){var a=t(1375),s=t(2453),n=t(67294),r=t(58989),o=t(83454);l.Z=e=>{let{queryAgentURL:l="/api/v1/chat/completions"}=e,t=(0,n.useMemo)(()=>new AbortController,[]),i=(0,n.useCallback)(async e=>{let{data:n,chatId:i,onMessage:c,onClose:d,onDone:u,onError:m}=e;if(!(null==n?void 0:n.user_input)&&!(null==n?void 0:n.doc_id)){s.ZP.warning(r.Z.t("NoContextTip"));return}let x={...n,conv_uid:i};if(!x.conv_uid){s.ZP.error("conv_uid 不存在,请刷新后重试");return}try{var h;await (0,a.L)("".concat(null!==(h=o.env.API_BASE_URL)&&void 0!==h?h:"").concat(l),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(x),signal:t.signal,openWhenHidden:!0,async onopen(e){if(e.ok&&e.headers.get("content-type")===a.a)return},onclose(){t.abort(),null==d||d()},onerror(e){throw Error(e)},onmessage:e=>{var l;let t=null===(l=e.data)||void 0===l?void 0:l.replaceAll("\\n","\n");"[DONE]"===t?null==u||u():(null==t?void 0:t.startsWith("[ERROR]"))?null==m||m(null==t?void 0:t.replace("[ERROR]","")):null==c||c(t)}})}catch(e){t.abort(),null==m||m("Sorry, We meet some error, please try agin later.",e)}},[l]);return(0,n.useEffect)(()=>()=>{t.abort()},[]),i}},80573:function(e,l,t){var a=t(41468),s=t(67294),n=t(43446),r=t(50489);l.Z=()=>{let{history:e,setHistory:l,chatId:t,model:o,docId:i}=(0,s.useContext)(a.p),c=(0,n.Z)({queryAgentURL:"/knowledge/document/summary"}),d=(0,s.useCallback)(async e=>{let[,a]=await (0,r.Vx)((0,r.$i)(t)),s=[...a,{role:"human",context:"",model_name:o,order:0,time_stamp:0},{role:"view",context:"",model_name:o,order:0,time_stamp:0,retry:!0}],n=s.length-1;l([...s]),await c({data:{doc_id:e||i,model_name:o},chatId:t,onMessage:e=>{s[n].context=e,l([...s])}})},[e,o,i,t]);return d}}}]); \ No newline at end of file diff --git a/pilot/server/static/_next/static/chunks/104-953a3907bb8d7bfd.js b/pilot/server/static/_next/static/chunks/104-953a3907bb8d7bfd.js deleted file mode 100644 index 6ca0f2040..000000000 --- a/pilot/server/static/_next/static/chunks/104-953a3907bb8d7bfd.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[104],{6321:function(t,i,e){e.d(i,{Z:function(){return c}});var n=e(87462),o=e(67294),r={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 244c176.18 0 319 142.82 319 319v233a32 32 0 01-32 32H225a32 32 0 01-32-32V563c0-176.18 142.82-319 319-319zM484 68h56a8 8 0 018 8v96a8 8 0 01-8 8h-56a8 8 0 01-8-8V76a8 8 0 018-8zM177.25 191.66a8 8 0 0111.32 0l67.88 67.88a8 8 0 010 11.31l-39.6 39.6a8 8 0 01-11.31 0l-67.88-67.88a8 8 0 010-11.31l39.6-39.6zm669.6 0l39.6 39.6a8 8 0 010 11.3l-67.88 67.9a8 8 0 01-11.32 0l-39.6-39.6a8 8 0 010-11.32l67.89-67.88a8 8 0 0111.31 0zM192 892h640a32 32 0 0132 32v24a8 8 0 01-8 8H168a8 8 0 01-8-8v-24a32 32 0 0132-32zm148-317v253h64V575h-64z"}}]},name:"alert",theme:"filled"},a=e(84089),c=o.forwardRef(function(t,i){return o.createElement(a.Z,(0,n.Z)({},t,{ref:i,icon:r}))})},27704:function(t,i,e){e.d(i,{Z:function(){return c}});var n=e(87462),o=e(67294),r={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M864 256H736v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zm-200 0H360v-72h304v72z"}}]},name:"delete",theme:"filled"},a=e(84089),c=o.forwardRef(function(t,i){return o.createElement(a.Z,(0,n.Z)({},t,{ref:i,icon:r}))})},31326:function(t,i,e){e.d(i,{Z:function(){return c}});var n=e(87462),o=e(67294),r={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M396 512a112 112 0 10224 0 112 112 0 10-224 0zm546.2-25.8C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM508 688c-97.2 0-176-78.8-176-176s78.8-176 176-176 176 78.8 176 176-78.8 176-176 176z"}}]},name:"eye",theme:"filled"},a=e(84089),c=o.forwardRef(function(t,i){return o.createElement(a.Z,(0,n.Z)({},t,{ref:i,icon:r}))})},31545:function(t,i,e){e.d(i,{Z:function(){return c}});var n=e(87462),o=e(67294),r={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M688 312v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8zm-392 88c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm144 452H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h272c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm445.7 51.5l-93.3-93.3C814.7 780.7 828 743.9 828 704c0-97.2-78.8-176-176-176s-176 78.8-176 176 78.8 176 176 176c35.8 0 69-10.7 96.8-29l94.7 94.7c1.6 1.6 3.6 2.3 5.6 2.3s4.1-.8 5.6-2.3l31-31a7.9 7.9 0 000-11.2zM652 816c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z"}}]},name:"file-search",theme:"outlined"},a=e(84089),c=o.forwardRef(function(t,i){return o.createElement(a.Z,(0,n.Z)({},t,{ref:i,icon:r}))})},27595:function(t,i,e){e.d(i,{Z:function(){return c}});var n=e(87462),o=e(67294),r={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM320 482a8 8 0 00-8 8v48a8 8 0 008 8h384a8 8 0 008-8v-48a8 8 0 00-8-8H320zm0 136a8 8 0 00-8 8v48a8 8 0 008 8h184a8 8 0 008-8v-48a8 8 0 00-8-8H320z"}}]},name:"file-text",theme:"filled"},a=e(84089),c=o.forwardRef(function(t,i){return o.createElement(a.Z,(0,n.Z)({},t,{ref:i,icon:r}))})},27329:function(t,i,e){e.d(i,{Z:function(){return c}});var n=e(87462),o=e(67294),r={icon:function(t,i){return{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M534 352V136H232v752h560V394H576a42 42 0 01-42-42zm101.3 129.3c1.3-5.4 6.1-9.3 11.7-9.3h35.6a12.04 12.04 0 0111.6 15.1l-74.4 276c-1.4 5.3-6.2 8.9-11.6 8.9h-31.8c-5.4 0-10.2-3.7-11.6-8.9l-52.8-197-52.8 197c-1.4 5.3-6.2 8.9-11.6 8.9h-32c-5.4 0-10.2-3.7-11.6-8.9l-74.2-276a12.02 12.02 0 0111.6-15.1h35.4c5.6 0 10.4 3.9 11.7 9.3L434.6 680l49.7-198.9c1.3-5.4 6.1-9.1 11.6-9.1h32.2c5.5 0 10.3 3.7 11.6 9.1l49.8 199.3 45.8-199.1z",fill:i}},{tag:"path",attrs:{d:"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0042 42h216v494z",fill:t}},{tag:"path",attrs:{d:"M528.1 472h-32.2c-5.5 0-10.3 3.7-11.6 9.1L434.6 680l-46.1-198.7c-1.3-5.4-6.1-9.3-11.7-9.3h-35.4a12.02 12.02 0 00-11.6 15.1l74.2 276c1.4 5.2 6.2 8.9 11.6 8.9h32c5.4 0 10.2-3.6 11.6-8.9l52.8-197 52.8 197c1.4 5.2 6.2 8.9 11.6 8.9h31.8c5.4 0 10.2-3.6 11.6-8.9l74.4-276a12.04 12.04 0 00-11.6-15.1H647c-5.6 0-10.4 3.9-11.7 9.3l-45.8 199.1-49.8-199.3c-1.3-5.4-6.1-9.1-11.6-9.1z",fill:t}}]}},name:"file-word",theme:"twotone"},a=e(84089),c=o.forwardRef(function(t,i){return o.createElement(a.Z,(0,n.Z)({},t,{ref:i,icon:r}))})},68346:function(t,i,e){e.d(i,{Z:function(){return c}});var n=e(87462),o=e(67294),r={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M693.6 284.4c-24 0-51.1 11.7-72.6 22 46.3 18 86 57.3 112.3 99.6 7.1-18.9 14.6-47.9 14.6-67.9 0-32-22.8-53.7-54.3-53.7zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm253.9 492.9H437.1c0 100.4 144.3 136 196.8 47.4h120.8c-32.6 91.7-119.7 146-216.8 146-35.1 0-70.3-.1-101.7-15.6-87.4 44.5-180.3 56.6-180.3-42 0-45.8 23.2-107.1 44-145C335 484 381.3 422.8 435.6 374.5c-43.7 18.9-91.1 66.3-122 101.2 25.9-112.8 129.5-193.6 237.1-186.5 130-59.8 209.7-34.1 209.7 38.6 0 27.4-10.6 63.3-21.4 87.9 25.2 45.5 33.3 97.6 26.9 141.2zM540.5 399.1c-53.7 0-102 39.7-104 94.9h208c-2-55.1-50.6-94.9-104-94.9zM320.6 602.9c-73 152.4 11.5 172.2 100.3 123.3-46.6-27.5-82.6-72.2-100.3-123.3z"}}]},name:"ie-circle",theme:"filled"},a=e(84089),c=o.forwardRef(function(t,i){return o.createElement(a.Z,(0,n.Z)({},t,{ref:i,icon:r}))})},64082:function(t,i,e){e.d(i,{Z:function(){return c}});var n=e(87462),o=e(67294),r={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M885.2 446.3l-.2-.8-112.2-285.1c-5-16.1-19.9-27.2-36.8-27.2H281.2c-17 0-32.1 11.3-36.9 27.6L139.4 443l-.3.7-.2.8c-1.3 4.9-1.7 9.9-1 14.8-.1 1.6-.2 3.2-.2 4.8V830a60.9 60.9 0 0060.8 60.8h627.2c33.5 0 60.8-27.3 60.9-60.8V464.1c0-1.3 0-2.6-.1-3.7.4-4.9 0-9.6-1.3-14.1zm-295.8-43l-.3 15.7c-.8 44.9-31.8 75.1-77.1 75.1-22.1 0-41.1-7.1-54.8-20.6S436 441.2 435.6 419l-.3-15.7H229.5L309 210h399.2l81.7 193.3H589.4zm-375 76.8h157.3c24.3 57.1 76 90.8 140.4 90.8 33.7 0 65-9.4 90.3-27.2 22.2-15.6 39.5-37.4 50.7-63.6h156.5V814H214.4V480.1z"}}]},name:"inbox",theme:"outlined"},a=e(84089),c=o.forwardRef(function(t,i){return o.createElement(a.Z,(0,n.Z)({},t,{ref:i,icon:r}))})},88008:function(t,i,e){e.d(i,{Z:function(){return c}});var n=e(87462),o=e(67294),r={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM726 585.7c0 55.3-44.7 100.1-99.7 100.1H420.6v53.4c0 5.7-6.5 8.8-10.9 5.3l-109.1-85.7c-3.5-2.7-3.5-8 0-10.7l109.1-85.7c4.4-3.5 10.9-.3 10.9 5.3v53.4h205.7c19.6 0 35.5-16 35.5-35.6v-78.9c0-3.7 3-6.8 6.8-6.8h50.7c3.7 0 6.8 3 6.8 6.8v79.1zm-2.6-209.9l-109.1 85.7c-4.4 3.5-10.9.3-10.9-5.3v-53.4H397.7c-19.6 0-35.5 16-35.5 35.6v78.9c0 3.7-3 6.8-6.8 6.8h-50.7c-3.7 0-6.8-3-6.8-6.8v-78.9c0-55.3 44.7-100.1 99.7-100.1h205.7v-53.4c0-5.7 6.5-8.8 10.9-5.3l109.1 85.7c3.6 2.5 3.6 7.8.1 10.5z"}}]},name:"interaction",theme:"filled"},a=e(84089),c=o.forwardRef(function(t,i){return o.createElement(a.Z,(0,n.Z)({},t,{ref:i,icon:r}))})},18754:function(t,i,e){e.d(i,{Z:function(){return c}});var n=e(87462),o=e(67294),r={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M865.3 244.7c-.3-.3-61.1 59.8-182.1 180.6l-84.9-84.9 180.9-180.9c-95.2-57.3-217.5-42.6-296.8 36.7A244.42 244.42 0 00419 432l1.8 6.7-283.5 283.4c-6.2 6.2-6.2 16.4 0 22.6l141.4 141.4c6.2 6.2 16.4 6.2 22.6 0l283.3-283.3 6.7 1.8c83.7 22.3 173.6-.9 236-63.3 79.4-79.3 94.1-201.6 38-296.6z"}}]},name:"tool",theme:"filled"},a=e(84089),c=o.forwardRef(function(t,i){return o.createElement(a.Z,(0,n.Z)({},t,{ref:i,icon:r}))})},15746:function(t,i,e){var n=e(21584);i.Z=n.Z},96074:function(t,i,e){e.d(i,{Z:function(){return m}});var n=e(94184),o=e.n(n),r=e(67294),a=e(53124),c=e(14747),l=e(67968),s=e(45503);let d=t=>{let{componentCls:i,sizePaddingEdgeHorizontal:e,colorSplit:n,lineWidth:o}=t;return{[i]:Object.assign(Object.assign({},(0,c.Wf)(t)),{borderBlockStart:`${o}px solid ${n}`,"&-vertical":{position:"relative",top:"-0.06em",display:"inline-block",height:"0.9em",margin:`0 ${t.dividerVerticalGutterMargin}px`,verticalAlign:"middle",borderTop:0,borderInlineStart:`${o}px solid ${n}`},"&-horizontal":{display:"flex",clear:"both",width:"100%",minWidth:"100%",margin:`${t.dividerHorizontalGutterMargin}px 0`},[`&-horizontal${i}-with-text`]:{display:"flex",alignItems:"center",margin:`${t.dividerHorizontalWithTextGutterMargin}px 0`,color:t.colorTextHeading,fontWeight:500,fontSize:t.fontSizeLG,whiteSpace:"nowrap",textAlign:"center",borderBlockStart:`0 ${n}`,"&::before, &::after":{position:"relative",width:"50%",borderBlockStart:`${o}px solid transparent`,borderBlockStartColor:"inherit",borderBlockEnd:0,transform:"translateY(50%)",content:"''"}},[`&-horizontal${i}-with-text-left`]:{"&::before":{width:"5%"},"&::after":{width:"95%"}},[`&-horizontal${i}-with-text-right`]:{"&::before":{width:"95%"},"&::after":{width:"5%"}},[`${i}-inner-text`]:{display:"inline-block",padding:"0 1em"},"&-dashed":{background:"none",borderColor:n,borderStyle:"dashed",borderWidth:`${o}px 0 0`},[`&-horizontal${i}-with-text${i}-dashed`]:{"&::before, &::after":{borderStyle:"dashed none none"}},[`&-vertical${i}-dashed`]:{borderInlineStartWidth:o,borderInlineEnd:0,borderBlockStart:0,borderBlockEnd:0},[`&-plain${i}-with-text`]:{color:t.colorText,fontWeight:"normal",fontSize:t.fontSize},[`&-horizontal${i}-with-text-left${i}-no-default-orientation-margin-left`]:{"&::before":{width:0},"&::after":{width:"100%"},[`${i}-inner-text`]:{paddingInlineStart:e}},[`&-horizontal${i}-with-text-right${i}-no-default-orientation-margin-right`]:{"&::before":{width:"100%"},"&::after":{width:0},[`${i}-inner-text`]:{paddingInlineEnd:e}}})}};var h=(0,l.Z)("Divider",t=>{let i=(0,s.TS)(t,{dividerVerticalGutterMargin:t.marginXS,dividerHorizontalWithTextGutterMargin:t.margin,dividerHorizontalGutterMargin:t.marginLG});return[d(i)]},{sizePaddingEdgeHorizontal:0}),g=function(t,i){var e={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&0>i.indexOf(n)&&(e[n]=t[n]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,n=Object.getOwnPropertySymbols(t);oi.indexOf(n[o])&&Object.prototype.propertyIsEnumerable.call(t,n[o])&&(e[n[o]]=t[n[o]]);return e},m=t=>{let{getPrefixCls:i,direction:e,divider:n}=r.useContext(a.E_),{prefixCls:c,type:l="horizontal",orientation:s="center",orientationMargin:d,className:m,rootClassName:p,children:$,dashed:u,plain:f,style:b}=t,S=g(t,["prefixCls","type","orientation","orientationMargin","className","rootClassName","children","dashed","plain","style"]),v=i("divider",c),[w,x]=h(v),I=s.length>0?`-${s}`:s,z=!!$,M="left"===s&&null!=d,y="right"===s&&null!=d,C=o()(v,null==n?void 0:n.className,x,`${v}-${l}`,{[`${v}-with-text`]:z,[`${v}-with-text${I}`]:z,[`${v}-dashed`]:!!u,[`${v}-plain`]:!!f,[`${v}-rtl`]:"rtl"===e,[`${v}-no-default-orientation-margin-left`]:M,[`${v}-no-default-orientation-margin-right`]:y},m,p),k=r.useMemo(()=>"number"==typeof d?d:/^\d+$/.test(d)?Number(d):d,[d]),E=Object.assign(Object.assign({},M&&{marginLeft:k}),y&&{marginRight:k});return w(r.createElement("div",Object.assign({className:C,style:Object.assign(Object.assign({},null==n?void 0:n.style),b)},S,{role:"separator"}),$&&"vertical"!==l&&r.createElement("span",{className:`${v}-inner-text`,style:E},$)))}},25378:function(t,i,e){var n=e(67294),o=e(8410),r=e(57838),a=e(74443);i.Z=function(){let t=!(arguments.length>0)||void 0===arguments[0]||arguments[0],i=(0,n.useRef)({}),e=(0,r.Z)(),c=(0,a.Z)();return(0,o.Z)(()=>{let n=c.subscribe(n=>{i.current=n,t&&e()});return()=>c.unsubscribe(n)},[]),i.current}},71230:function(t,i,e){var n=e(92820);i.Z=n.Z},3363:function(t,i,e){e.d(i,{Z:function(){return G}});var n,o,r=e(63606),a=e(97937),c=e(94184),l=e.n(c),s=e(87462),d=e(1413),h=e(4942),g=e(45987),m=e(67294),p=e(15105),$=["className","prefixCls","style","active","status","iconPrefix","icon","wrapperStyle","stepNumber","disabled","description","title","subTitle","progressDot","stepIcon","tailContent","icons","stepIndex","onStepClick","onClick","render"];function u(t){return"string"==typeof t}var f=function(t){var i,e,n,o,r,a=t.className,c=t.prefixCls,f=t.style,b=t.active,S=t.status,v=t.iconPrefix,w=t.icon,x=(t.wrapperStyle,t.stepNumber),I=t.disabled,z=t.description,M=t.title,y=t.subTitle,C=t.progressDot,k=t.stepIcon,E=t.tailContent,H=t.icons,Z=t.stepIndex,O=t.onStepClick,P=t.onClick,T=t.render,N=(0,g.Z)(t,$),W={};O&&!I&&(W.role="button",W.tabIndex=0,W.onClick=function(t){null==P||P(t),O(Z)},W.onKeyDown=function(t){var i=t.which;(i===p.Z.ENTER||i===p.Z.SPACE)&&O(Z)});var j=S||"wait",X=l()("".concat(c,"-item"),"".concat(c,"-item-").concat(j),a,(r={},(0,h.Z)(r,"".concat(c,"-item-custom"),w),(0,h.Z)(r,"".concat(c,"-item-active"),b),(0,h.Z)(r,"".concat(c,"-item-disabled"),!0===I),r)),B=(0,d.Z)({},f),D=m.createElement("div",(0,s.Z)({},N,{className:X,style:B}),m.createElement("div",(0,s.Z)({onClick:P},W,{className:"".concat(c,"-item-container")}),m.createElement("div",{className:"".concat(c,"-item-tail")},E),m.createElement("div",{className:"".concat(c,"-item-icon")},(n=l()("".concat(c,"-icon"),"".concat(v,"icon"),(i={},(0,h.Z)(i,"".concat(v,"icon-").concat(w),w&&u(w)),(0,h.Z)(i,"".concat(v,"icon-check"),!w&&"finish"===S&&(H&&!H.finish||!H)),(0,h.Z)(i,"".concat(v,"icon-cross"),!w&&"error"===S&&(H&&!H.error||!H)),i)),o=m.createElement("span",{className:"".concat(c,"-icon-dot")}),e=C?"function"==typeof C?m.createElement("span",{className:"".concat(c,"-icon")},C(o,{index:x-1,status:S,title:M,description:z})):m.createElement("span",{className:"".concat(c,"-icon")},o):w&&!u(w)?m.createElement("span",{className:"".concat(c,"-icon")},w):H&&H.finish&&"finish"===S?m.createElement("span",{className:"".concat(c,"-icon")},H.finish):H&&H.error&&"error"===S?m.createElement("span",{className:"".concat(c,"-icon")},H.error):w||"finish"===S||"error"===S?m.createElement("span",{className:n}):m.createElement("span",{className:"".concat(c,"-icon")},x),k&&(e=k({index:x-1,status:S,title:M,description:z,node:e})),e)),m.createElement("div",{className:"".concat(c,"-item-content")},m.createElement("div",{className:"".concat(c,"-item-title")},M,y&&m.createElement("div",{title:"string"==typeof y?y:void 0,className:"".concat(c,"-item-subtitle")},y)),z&&m.createElement("div",{className:"".concat(c,"-item-description")},z))));return T&&(D=T(D)||null),D},b=["prefixCls","style","className","children","direction","type","labelPlacement","iconPrefix","status","size","current","progressDot","stepIcon","initial","icons","onChange","itemRender","items"];function S(t){var i,e=t.prefixCls,n=void 0===e?"rc-steps":e,o=t.style,r=void 0===o?{}:o,a=t.className,c=(t.children,t.direction),p=t.type,$=void 0===p?"default":p,u=t.labelPlacement,S=t.iconPrefix,v=void 0===S?"rc":S,w=t.status,x=void 0===w?"process":w,I=t.size,z=t.current,M=void 0===z?0:z,y=t.progressDot,C=t.stepIcon,k=t.initial,E=void 0===k?0:k,H=t.icons,Z=t.onChange,O=t.itemRender,P=t.items,T=(0,g.Z)(t,b),N="inline"===$,W=N||void 0!==y&&y,j=N?"horizontal":void 0===c?"horizontal":c,X=N?void 0:I,B=W?"vertical":void 0===u?"horizontal":u,D=l()(n,"".concat(n,"-").concat(j),a,(i={},(0,h.Z)(i,"".concat(n,"-").concat(X),X),(0,h.Z)(i,"".concat(n,"-label-").concat(B),"horizontal"===j),(0,h.Z)(i,"".concat(n,"-dot"),!!W),(0,h.Z)(i,"".concat(n,"-navigation"),"navigation"===$),(0,h.Z)(i,"".concat(n,"-inline"),N),i)),R=function(t){Z&&M!==t&&Z(t)};return m.createElement("div",(0,s.Z)({className:D,style:r},T),(void 0===P?[]:P).filter(function(t){return t}).map(function(t,i){var e=(0,d.Z)({},t),o=E+i;return"error"===x&&i===M-1&&(e.className="".concat(n,"-next-error")),e.status||(o===M?e.status=x:o{let{componentCls:i,customIconTop:e,customIconSize:n,customIconFontSize:o}=t;return{[`${i}-item-custom`]:{[`> ${i}-item-container > ${i}-item-icon`]:{height:"auto",background:"none",border:0,[`> ${i}-icon`]:{top:e,width:n,height:n,fontSize:o,lineHeight:`${o}px`}}},[`&:not(${i}-vertical)`]:{[`${i}-item-custom`]:{[`${i}-item-icon`]:{width:"auto",background:"none"}}}}},E=t=>{let{componentCls:i,inlineDotSize:e,inlineTitleColor:n,inlineTailColor:o}=t,r=t.paddingXS+t.lineWidth,a={[`${i}-item-container ${i}-item-content ${i}-item-title`]:{color:n}};return{[`&${i}-inline`]:{width:"auto",display:"inline-flex",[`${i}-item`]:{flex:"none","&-container":{padding:`${r}px ${t.paddingXXS}px 0`,margin:`0 ${t.marginXXS/2}px`,borderRadius:t.borderRadiusSM,cursor:"pointer",transition:`background-color ${t.motionDurationMid}`,"&:hover":{background:t.controlItemBgHover},"&[role='button']:hover":{opacity:1}},"&-icon":{width:e,height:e,marginInlineStart:`calc(50% - ${e/2}px)`,[`> ${i}-icon`]:{top:0},[`${i}-icon-dot`]:{borderRadius:t.fontSizeSM/4}},"&-content":{width:"auto",marginTop:t.marginXS-t.lineWidth},"&-title":{color:n,fontSize:t.fontSizeSM,lineHeight:t.lineHeightSM,fontWeight:"normal",marginBottom:t.marginXXS/2},"&-description":{display:"none"},"&-tail":{marginInlineStart:0,top:r+e/2,transform:"translateY(-50%)","&:after":{width:"100%",height:t.lineWidth,borderRadius:0,marginInlineStart:0,background:o}},[`&:first-child ${i}-item-tail`]:{width:"50%",marginInlineStart:"50%"},[`&:last-child ${i}-item-tail`]:{display:"block",width:"50%"},"&-wait":Object.assign({[`${i}-item-icon ${i}-icon ${i}-icon-dot`]:{backgroundColor:t.colorBorderBg,border:`${t.lineWidth}px ${t.lineType} ${o}`}},a),"&-finish":Object.assign({[`${i}-item-tail::after`]:{backgroundColor:o},[`${i}-item-icon ${i}-icon ${i}-icon-dot`]:{backgroundColor:o,border:`${t.lineWidth}px ${t.lineType} ${o}`}},a),"&-error":a,"&-active, &-process":Object.assign({[`${i}-item-icon`]:{width:e,height:e,marginInlineStart:`calc(50% - ${e/2}px)`,top:0}},a),[`&:not(${i}-item-active) > ${i}-item-container[role='button']:hover`]:{[`${i}-item-title`]:{color:n}}}}}},H=t=>{let{componentCls:i,iconSize:e,lineHeight:n,iconSizeSM:o}=t;return{[`&${i}-label-vertical`]:{[`${i}-item`]:{overflow:"visible","&-tail":{marginInlineStart:e/2+t.controlHeightLG,padding:`${t.paddingXXS}px ${t.paddingLG}px`},"&-content":{display:"block",width:(e/2+t.controlHeightLG)*2,marginTop:t.marginSM,textAlign:"center"},"&-icon":{display:"inline-block",marginInlineStart:t.controlHeightLG},"&-title":{paddingInlineEnd:0,paddingInlineStart:0,"&::after":{display:"none"}},"&-subtitle":{display:"block",marginBottom:t.marginXXS,marginInlineStart:0,lineHeight:n}},[`&${i}-small:not(${i}-dot)`]:{[`${i}-item`]:{"&-icon":{marginInlineStart:t.controlHeightLG+(e-o)/2}}}}}},Z=t=>{let{componentCls:i,navContentMaxWidth:e,navArrowColor:n,stepsNavActiveColor:o,motionDurationSlow:r}=t;return{[`&${i}-navigation`]:{paddingTop:t.paddingSM,[`&${i}-small`]:{[`${i}-item`]:{"&-container":{marginInlineStart:-t.marginSM}}},[`${i}-item`]:{overflow:"visible",textAlign:"center","&-container":{display:"inline-block",height:"100%",marginInlineStart:-t.margin,paddingBottom:t.paddingSM,textAlign:"start",transition:`opacity ${r}`,[`${i}-item-content`]:{maxWidth:e},[`${i}-item-title`]:Object.assign(Object.assign({maxWidth:"100%",paddingInlineEnd:0},M.vS),{"&::after":{display:"none"}})},[`&:not(${i}-item-active)`]:{[`${i}-item-container[role='button']`]:{cursor:"pointer","&:hover":{opacity:.85}}},"&:last-child":{flex:1,"&::after":{display:"none"}},"&::after":{position:"absolute",top:`calc(50% - ${t.paddingSM/2}px)`,insetInlineStart:"100%",display:"inline-block",width:t.fontSizeIcon,height:t.fontSizeIcon,borderTop:`${t.lineWidth}px ${t.lineType} ${n}`,borderBottom:"none",borderInlineStart:"none",borderInlineEnd:`${t.lineWidth}px ${t.lineType} ${n}`,transform:"translateY(-50%) translateX(-50%) rotate(45deg)",content:'""'},"&::before":{position:"absolute",bottom:0,insetInlineStart:"50%",display:"inline-block",width:0,height:t.lineWidthBold,backgroundColor:o,transition:`width ${r}, inset-inline-start ${r}`,transitionTimingFunction:"ease-out",content:'""'}},[`${i}-item${i}-item-active::before`]:{insetInlineStart:0,width:"100%"}},[`&${i}-navigation${i}-vertical`]:{[`> ${i}-item`]:{marginInlineEnd:0,"&::before":{display:"none"},[`&${i}-item-active::before`]:{top:0,insetInlineEnd:0,insetInlineStart:"unset",display:"block",width:3*t.lineWidth,height:`calc(100% - ${t.marginLG}px)`},"&::after":{position:"relative",insetInlineStart:"50%",display:"block",width:.25*t.controlHeight,height:.25*t.controlHeight,marginBottom:t.marginXS,textAlign:"center",transform:"translateY(-50%) translateX(-50%) rotate(135deg)"},"&:last-child":{"&::after":{display:"none"}},[`> ${i}-item-container > ${i}-item-tail`]:{visibility:"hidden"}}},[`&${i}-navigation${i}-horizontal`]:{[`> ${i}-item > ${i}-item-container > ${i}-item-tail`]:{visibility:"hidden"}}}},O=t=>{let{antCls:i,componentCls:e}=t;return{[`&${e}-with-progress`]:{[`${e}-item`]:{paddingTop:t.paddingXXS,[`&-process ${e}-item-container ${e}-item-icon ${e}-icon`]:{color:t.processIconColor}},[`&${e}-vertical > ${e}-item `]:{paddingInlineStart:t.paddingXXS,[`> ${e}-item-container > ${e}-item-tail`]:{top:t.marginXXS,insetInlineStart:t.iconSize/2-t.lineWidth+t.paddingXXS}},[`&, &${e}-small`]:{[`&${e}-horizontal ${e}-item:first-child`]:{paddingBottom:t.paddingXXS,paddingInlineStart:t.paddingXXS}},[`&${e}-small${e}-vertical > ${e}-item > ${e}-item-container > ${e}-item-tail`]:{insetInlineStart:t.iconSizeSM/2-t.lineWidth+t.paddingXXS},[`&${e}-label-vertical`]:{[`${e}-item ${e}-item-tail`]:{top:t.margin-2*t.lineWidth}},[`${e}-item-icon`]:{position:"relative",[`${i}-progress`]:{position:"absolute",insetBlockStart:(t.iconSize-t.stepsProgressSize-2*t.lineWidth)/2,insetInlineStart:(t.iconSize-t.stepsProgressSize-2*t.lineWidth)/2}}}}},P=t=>{let{componentCls:i,descriptionMaxWidth:e,lineHeight:n,dotCurrentSize:o,dotSize:r,motionDurationSlow:a}=t;return{[`&${i}-dot, &${i}-dot${i}-small`]:{[`${i}-item`]:{"&-title":{lineHeight:n},"&-tail":{top:Math.floor((t.dotSize-3*t.lineWidth)/2),width:"100%",marginTop:0,marginBottom:0,marginInline:`${e/2}px 0`,padding:0,"&::after":{width:`calc(100% - ${2*t.marginSM}px)`,height:3*t.lineWidth,marginInlineStart:t.marginSM}},"&-icon":{width:r,height:r,marginInlineStart:(t.descriptionMaxWidth-r)/2,paddingInlineEnd:0,lineHeight:`${r}px`,background:"transparent",border:0,[`${i}-icon-dot`]:{position:"relative",float:"left",width:"100%",height:"100%",borderRadius:100,transition:`all ${a}`,"&::after":{position:"absolute",top:-t.marginSM,insetInlineStart:(r-1.5*t.controlHeightLG)/2,width:1.5*t.controlHeightLG,height:t.controlHeight,background:"transparent",content:'""'}}},"&-content":{width:e},[`&-process ${i}-item-icon`]:{position:"relative",top:(r-o)/2,width:o,height:o,lineHeight:`${o}px`,background:"none",marginInlineStart:(t.descriptionMaxWidth-o)/2},[`&-process ${i}-icon`]:{[`&:first-child ${i}-icon-dot`]:{insetInlineStart:0}}}},[`&${i}-vertical${i}-dot`]:{[`${i}-item-icon`]:{marginTop:(t.controlHeight-r)/2,marginInlineStart:0,background:"none"},[`${i}-item-process ${i}-item-icon`]:{marginTop:(t.controlHeight-o)/2,top:0,insetInlineStart:(r-o)/2,marginInlineStart:0},[`${i}-item > ${i}-item-container > ${i}-item-tail`]:{top:(t.controlHeight-r)/2,insetInlineStart:0,margin:0,padding:`${r+t.paddingXS}px 0 ${t.paddingXS}px`,"&::after":{marginInlineStart:(r-t.lineWidth)/2}},[`&${i}-small`]:{[`${i}-item-icon`]:{marginTop:(t.controlHeightSM-r)/2},[`${i}-item-process ${i}-item-icon`]:{marginTop:(t.controlHeightSM-o)/2},[`${i}-item > ${i}-item-container > ${i}-item-tail`]:{top:(t.controlHeightSM-r)/2}},[`${i}-item:first-child ${i}-icon-dot`]:{insetInlineStart:0},[`${i}-item-content`]:{width:"inherit"}}}},T=t=>{let{componentCls:i}=t;return{[`&${i}-rtl`]:{direction:"rtl",[`${i}-item`]:{"&-subtitle":{float:"left"}},[`&${i}-navigation`]:{[`${i}-item::after`]:{transform:"rotate(-45deg)"}},[`&${i}-vertical`]:{[`> ${i}-item`]:{"&::after":{transform:"rotate(225deg)"},[`${i}-item-icon`]:{float:"right"}}},[`&${i}-dot`]:{[`${i}-item-icon ${i}-icon-dot, &${i}-small ${i}-item-icon ${i}-icon-dot`]:{float:"right"}}}}},N=t=>{let{componentCls:i,iconSizeSM:e,fontSizeSM:n,fontSize:o,colorTextDescription:r}=t;return{[`&${i}-small`]:{[`&${i}-horizontal:not(${i}-label-vertical) ${i}-item`]:{paddingInlineStart:t.paddingSM,"&:first-child":{paddingInlineStart:0}},[`${i}-item-icon`]:{width:e,height:e,marginTop:0,marginBottom:0,marginInline:`0 ${t.marginXS}px`,fontSize:n,lineHeight:`${e}px`,textAlign:"center",borderRadius:e},[`${i}-item-title`]:{paddingInlineEnd:t.paddingSM,fontSize:o,lineHeight:`${e}px`,"&::after":{top:e/2}},[`${i}-item-description`]:{color:r,fontSize:o},[`${i}-item-tail`]:{top:e/2-t.paddingXXS},[`${i}-item-custom ${i}-item-icon`]:{width:"inherit",height:"inherit",lineHeight:"inherit",background:"none",border:0,borderRadius:0,[`> ${i}-icon`]:{fontSize:e,lineHeight:`${e}px`,transform:"none"}}}}},W=t=>{let{componentCls:i,iconSizeSM:e,iconSize:n}=t;return{[`&${i}-vertical`]:{display:"flex",flexDirection:"column",[`> ${i}-item`]:{display:"block",flex:"1 0 auto",paddingInlineStart:0,overflow:"visible",[`${i}-item-icon`]:{float:"left",marginInlineEnd:t.margin},[`${i}-item-content`]:{display:"block",minHeight:1.5*t.controlHeight,overflow:"hidden"},[`${i}-item-title`]:{lineHeight:`${n}px`},[`${i}-item-description`]:{paddingBottom:t.paddingSM}},[`> ${i}-item > ${i}-item-container > ${i}-item-tail`]:{position:"absolute",top:0,insetInlineStart:n/2-t.lineWidth,width:t.lineWidth,height:"100%",padding:`${n+1.5*t.marginXXS}px 0 ${1.5*t.marginXXS}px`,"&::after":{width:t.lineWidth,height:"100%"}},[`> ${i}-item:not(:last-child) > ${i}-item-container > ${i}-item-tail`]:{display:"block"},[` > ${i}-item > ${i}-item-container > ${i}-item-content > ${i}-item-title`]:{"&::after":{display:"none"}},[`&${i}-small ${i}-item-container`]:{[`${i}-item-tail`]:{position:"absolute",top:0,insetInlineStart:e/2-t.lineWidth,padding:`${e+1.5*t.marginXXS}px 0 ${1.5*t.marginXXS}px`},[`${i}-item-title`]:{lineHeight:`${e}px`}}}}};(n=o||(o={})).wait="wait",n.process="process",n.finish="finish",n.error="error";let j=(t,i)=>{let e=`${i.componentCls}-item`,n=`${t}IconColor`,o=`${t}TitleColor`,r=`${t}DescriptionColor`,a=`${t}TailColor`,c=`${t}IconBgColor`,l=`${t}IconBorderColor`,s=`${t}DotColor`;return{[`${e}-${t} ${e}-icon`]:{backgroundColor:i[c],borderColor:i[l],[`> ${i.componentCls}-icon`]:{color:i[n],[`${i.componentCls}-icon-dot`]:{background:i[s]}}},[`${e}-${t}${e}-custom ${e}-icon`]:{[`> ${i.componentCls}-icon`]:{color:i[s]}},[`${e}-${t} > ${e}-container > ${e}-content > ${e}-title`]:{color:i[o],"&::after":{backgroundColor:i[a]}},[`${e}-${t} > ${e}-container > ${e}-content > ${e}-description`]:{color:i[r]},[`${e}-${t} > ${e}-container > ${e}-tail::after`]:{backgroundColor:i[a]}}},X=t=>{let{componentCls:i,motionDurationSlow:e}=t,n=`${i}-item`,r=`${n}-icon`;return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({[n]:{position:"relative",display:"inline-block",flex:1,overflow:"hidden",verticalAlign:"top","&:last-child":{flex:"none",[`> ${n}-container > ${n}-tail, > ${n}-container > ${n}-content > ${n}-title::after`]:{display:"none"}}},[`${n}-container`]:{outline:"none","&:focus-visible":{[r]:Object.assign({},(0,M.oN)(t))}},[`${r}, ${n}-content`]:{display:"inline-block",verticalAlign:"top"},[r]:{width:t.iconSize,height:t.iconSize,marginTop:0,marginBottom:0,marginInlineStart:0,marginInlineEnd:t.marginXS,fontSize:t.iconFontSize,fontFamily:t.fontFamily,lineHeight:`${t.iconSize}px`,textAlign:"center",borderRadius:t.iconSize,border:`${t.lineWidth}px ${t.lineType} transparent`,transition:`background-color ${e}, border-color ${e}`,[`${i}-icon`]:{position:"relative",top:t.iconTop,color:t.colorPrimary,lineHeight:1}},[`${n}-tail`]:{position:"absolute",top:t.iconSize/2-t.paddingXXS,insetInlineStart:0,width:"100%","&::after":{display:"inline-block",width:"100%",height:t.lineWidth,background:t.colorSplit,borderRadius:t.lineWidth,transition:`background ${e}`,content:'""'}},[`${n}-title`]:{position:"relative",display:"inline-block",paddingInlineEnd:t.padding,color:t.colorText,fontSize:t.fontSizeLG,lineHeight:`${t.titleLineHeight}px`,"&::after":{position:"absolute",top:t.titleLineHeight/2,insetInlineStart:"100%",display:"block",width:9999,height:t.lineWidth,background:t.processTailColor,content:'""'}},[`${n}-subtitle`]:{display:"inline",marginInlineStart:t.marginXS,color:t.colorTextDescription,fontWeight:"normal",fontSize:t.fontSize},[`${n}-description`]:{color:t.colorTextDescription,fontSize:t.fontSize}},j(o.wait,t)),j(o.process,t)),{[`${n}-process > ${n}-container > ${n}-title`]:{fontWeight:t.fontWeightStrong}}),j(o.finish,t)),j(o.error,t)),{[`${n}${i}-next-error > ${i}-item-title::after`]:{background:t.colorError},[`${n}-disabled`]:{cursor:"not-allowed"}})},B=t=>{let{componentCls:i,motionDurationSlow:e}=t;return{[`& ${i}-item`]:{[`&:not(${i}-item-active)`]:{[`& > ${i}-item-container[role='button']`]:{cursor:"pointer",[`${i}-item`]:{[`&-title, &-subtitle, &-description, &-icon ${i}-icon`]:{transition:`color ${e}`}},"&:hover":{[`${i}-item`]:{"&-title, &-subtitle, &-description":{color:t.colorPrimary}}}},[`&:not(${i}-item-process)`]:{[`& > ${i}-item-container[role='button']:hover`]:{[`${i}-item`]:{"&-icon":{borderColor:t.colorPrimary,[`${i}-icon`]:{color:t.colorPrimary}}}}}}},[`&${i}-horizontal:not(${i}-label-vertical)`]:{[`${i}-item`]:{paddingInlineStart:t.padding,whiteSpace:"nowrap","&:first-child":{paddingInlineStart:0},[`&:last-child ${i}-item-title`]:{paddingInlineEnd:0},"&-tail":{display:"none"},"&-description":{maxWidth:t.descriptionMaxWidth,whiteSpace:"normal"}}}}},D=t=>{let{componentCls:i}=t;return{[i]:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},(0,M.Wf)(t)),{display:"flex",width:"100%",fontSize:0,textAlign:"initial"}),X(t)),B(t)),k(t)),N(t)),W(t)),H(t)),P(t)),Z(t)),T(t)),O(t)),E(t))}};var R=(0,y.Z)("Steps",t=>{let{wireframe:i,colorTextDisabled:e,controlHeightLG:n,colorTextLightSolid:o,colorText:r,colorPrimary:a,colorTextLabel:c,colorTextDescription:l,colorTextQuaternary:s,colorFillContent:d,controlItemBgActive:h,colorError:g,colorBgContainer:m,colorBorderSecondary:p,colorSplit:$}=t,u=(0,C.TS)(t,{processIconColor:o,processTitleColor:r,processDescriptionColor:r,processIconBgColor:a,processIconBorderColor:a,processDotColor:a,processTailColor:$,waitIconColor:i?e:c,waitTitleColor:l,waitDescriptionColor:l,waitTailColor:$,waitIconBgColor:i?m:d,waitIconBorderColor:i?e:"transparent",waitDotColor:e,finishIconColor:a,finishTitleColor:r,finishDescriptionColor:l,finishTailColor:a,finishIconBgColor:i?m:h,finishIconBorderColor:i?a:h,finishDotColor:a,errorIconColor:o,errorTitleColor:g,errorDescriptionColor:g,errorTailColor:$,errorIconBgColor:g,errorIconBorderColor:g,errorDotColor:g,stepsNavActiveColor:a,stepsProgressSize:n,inlineDotSize:6,inlineTitleColor:s,inlineTailColor:p});return[D(u)]},t=>{let{colorTextDisabled:i,fontSize:e,controlHeightSM:n,controlHeight:o,controlHeightLG:r,fontSizeHeading3:a}=t;return{titleLineHeight:o,customIconSize:o,customIconTop:0,customIconFontSize:n,iconSize:o,iconTop:-.5,iconFontSize:e,iconSizeSM:a,dotSize:o/4,dotCurrentSize:r/4,navArrowColor:i,navContentMaxWidth:"auto",descriptionMaxWidth:140}}),L=e(50344),A=function(t,i){var e={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&0>i.indexOf(n)&&(e[n]=t[n]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,n=Object.getOwnPropertySymbols(t);oi.indexOf(n[o])&&Object.prototype.propertyIsEnumerable.call(t,n[o])&&(e[n[o]]=t[n[o]]);return e};let V=t=>{let{percent:i,size:e,className:n,rootClassName:o,direction:c,items:s,responsive:d=!0,current:h=0,children:g,style:p}=t,$=A(t,["percent","size","className","rootClassName","direction","items","responsive","current","children","style"]),{xs:u}=(0,x.Z)(d),{getPrefixCls:f,direction:b,steps:M}=m.useContext(v.E_),y=m.useMemo(()=>d&&u?"vertical":c,[u,c]),C=(0,w.Z)(e),k=f("steps",t.prefixCls),[E,H]=R(k),Z="inline"===t.type,O=f("",t.iconPrefix),P=function(t,i){if(t)return t;let e=(0,L.Z)(i).map(t=>{if(m.isValidElement(t)){let{props:i}=t,e=Object.assign({},i);return e}return null});return e.filter(t=>t)}(s,g),T=Z?void 0:i,N=Object.assign(Object.assign({},null==M?void 0:M.style),p),W=l()(null==M?void 0:M.className,{[`${k}-rtl`]:"rtl"===b,[`${k}-with-progress`]:void 0!==T},n,o,H),j={finish:m.createElement(r.Z,{className:`${k}-finish-icon`}),error:m.createElement(a.Z,{className:`${k}-error-icon`})};return E(m.createElement(S,Object.assign({icons:j},$,{style:N,current:h,size:C,items:P,itemRender:Z?(t,i)=>t.description?m.createElement(z.Z,{title:t.description},i):i:void 0,stepIcon:t=>{let{node:i,status:e}=t;return"process"===e&&void 0!==T?m.createElement("div",{className:`${k}-progress-icon`},m.createElement(I.Z,{type:"circle",percent:T,size:"small"===C?32:40,strokeWidth:4,format:()=>null}),i):i},direction:y,prefixCls:k,iconPrefix:O,className:W})))};V.Step=S.Step;var G=V},72269:function(t,i,e){e.d(i,{Z:function(){return Z}});var n=e(50888),o=e(94184),r=e.n(o),a=e(87462),c=e(4942),l=e(97685),s=e(45987),d=e(67294),h=e(21770),g=e(15105),m=["prefixCls","className","checked","defaultChecked","disabled","loadingIcon","checkedChildren","unCheckedChildren","onClick","onChange","onKeyDown"],p=d.forwardRef(function(t,i){var e,n=t.prefixCls,o=void 0===n?"rc-switch":n,p=t.className,$=t.checked,u=t.defaultChecked,f=t.disabled,b=t.loadingIcon,S=t.checkedChildren,v=t.unCheckedChildren,w=t.onClick,x=t.onChange,I=t.onKeyDown,z=(0,s.Z)(t,m),M=(0,h.Z)(!1,{value:$,defaultValue:u}),y=(0,l.Z)(M,2),C=y[0],k=y[1];function E(t,i){var e=C;return f||(k(e=t),null==x||x(e,i)),e}var H=r()(o,p,(e={},(0,c.Z)(e,"".concat(o,"-checked"),C),(0,c.Z)(e,"".concat(o,"-disabled"),f),e));return d.createElement("button",(0,a.Z)({},z,{type:"button",role:"switch","aria-checked":C,disabled:f,className:H,ref:i,onKeyDown:function(t){t.which===g.Z.LEFT?E(!1,t):t.which===g.Z.RIGHT&&E(!0,t),null==I||I(t)},onClick:function(t){var i=E(!C,t);null==w||w(i,t)}}),b,d.createElement("span",{className:"".concat(o,"-inner")},d.createElement("span",{className:"".concat(o,"-inner-checked")},S),d.createElement("span",{className:"".concat(o,"-inner-unchecked")},v)))});p.displayName="Switch";var $=e(45353),u=e(53124),f=e(98866),b=e(98675),S=e(10274),v=e(14747),w=e(67968),x=e(45503);let I=t=>{let{componentCls:i}=t,e=`${i}-inner`;return{[i]:{[`&${i}-small`]:{minWidth:t.switchMinWidthSM,height:t.switchHeightSM,lineHeight:`${t.switchHeightSM}px`,[`${i}-inner`]:{paddingInlineStart:t.switchInnerMarginMaxSM,paddingInlineEnd:t.switchInnerMarginMinSM,[`${e}-checked`]:{marginInlineStart:`calc(-100% + ${t.switchPinSizeSM+2*t.switchPadding}px - ${2*t.switchInnerMarginMaxSM}px)`,marginInlineEnd:`calc(100% - ${t.switchPinSizeSM+2*t.switchPadding}px + ${2*t.switchInnerMarginMaxSM}px)`},[`${e}-unchecked`]:{marginTop:-t.switchHeightSM,marginInlineStart:0,marginInlineEnd:0}},[`${i}-handle`]:{width:t.switchPinSizeSM,height:t.switchPinSizeSM},[`${i}-loading-icon`]:{top:(t.switchPinSizeSM-t.switchLoadingIconSize)/2,fontSize:t.switchLoadingIconSize},[`&${i}-checked`]:{[`${i}-inner`]:{paddingInlineStart:t.switchInnerMarginMinSM,paddingInlineEnd:t.switchInnerMarginMaxSM,[`${e}-checked`]:{marginInlineStart:0,marginInlineEnd:0},[`${e}-unchecked`]:{marginInlineStart:`calc(100% - ${t.switchPinSizeSM+2*t.switchPadding}px + ${2*t.switchInnerMarginMaxSM}px)`,marginInlineEnd:`calc(-100% + ${t.switchPinSizeSM+2*t.switchPadding}px - ${2*t.switchInnerMarginMaxSM}px)`}},[`${i}-handle`]:{insetInlineStart:`calc(100% - ${t.switchPinSizeSM+t.switchPadding}px)`}},[`&:not(${i}-disabled):active`]:{[`&:not(${i}-checked) ${e}`]:{[`${e}-unchecked`]:{marginInlineStart:t.marginXXS/2,marginInlineEnd:-t.marginXXS/2}},[`&${i}-checked ${e}`]:{[`${e}-checked`]:{marginInlineStart:-t.marginXXS/2,marginInlineEnd:t.marginXXS/2}}}}}}},z=t=>{let{componentCls:i}=t;return{[i]:{[`${i}-loading-icon${t.iconCls}`]:{position:"relative",top:(t.switchPinSize-t.fontSize)/2,color:t.switchLoadingIconColor,verticalAlign:"top"},[`&${i}-checked ${i}-loading-icon`]:{color:t.switchColor}}}},M=t=>{let{componentCls:i,motion:e}=t,n=`${i}-handle`;return{[i]:{[n]:{position:"absolute",top:t.switchPadding,insetInlineStart:t.switchPadding,width:t.switchPinSize,height:t.switchPinSize,transition:`all ${t.switchDuration} ease-in-out`,"&::before":{position:"absolute",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,backgroundColor:t.colorWhite,borderRadius:t.switchPinSize/2,boxShadow:t.switchHandleShadow,transition:`all ${t.switchDuration} ease-in-out`,content:'""'}},[`&${i}-checked ${n}`]:{insetInlineStart:`calc(100% - ${t.switchPinSize+t.switchPadding}px)`},[`&:not(${i}-disabled):active`]:e?{[`${n}::before`]:{insetInlineEnd:t.switchHandleActiveInset,insetInlineStart:0},[`&${i}-checked ${n}::before`]:{insetInlineEnd:0,insetInlineStart:t.switchHandleActiveInset}}:{}}}},y=t=>{let{componentCls:i}=t,e=`${i}-inner`;return{[i]:{[e]:{display:"block",overflow:"hidden",borderRadius:100,height:"100%",paddingInlineStart:t.switchInnerMarginMax,paddingInlineEnd:t.switchInnerMarginMin,transition:`padding-inline-start ${t.switchDuration} ease-in-out, padding-inline-end ${t.switchDuration} ease-in-out`,[`${e}-checked, ${e}-unchecked`]:{display:"block",color:t.colorTextLightSolid,fontSize:t.fontSizeSM,transition:`margin-inline-start ${t.switchDuration} ease-in-out, margin-inline-end ${t.switchDuration} ease-in-out`,pointerEvents:"none"},[`${e}-checked`]:{marginInlineStart:`calc(-100% + ${t.switchPinSize+2*t.switchPadding}px - ${2*t.switchInnerMarginMax}px)`,marginInlineEnd:`calc(100% - ${t.switchPinSize+2*t.switchPadding}px + ${2*t.switchInnerMarginMax}px)`},[`${e}-unchecked`]:{marginTop:-t.switchHeight,marginInlineStart:0,marginInlineEnd:0}},[`&${i}-checked ${e}`]:{paddingInlineStart:t.switchInnerMarginMin,paddingInlineEnd:t.switchInnerMarginMax,[`${e}-checked`]:{marginInlineStart:0,marginInlineEnd:0},[`${e}-unchecked`]:{marginInlineStart:`calc(100% - ${t.switchPinSize+2*t.switchPadding}px + ${2*t.switchInnerMarginMax}px)`,marginInlineEnd:`calc(-100% + ${t.switchPinSize+2*t.switchPadding}px - ${2*t.switchInnerMarginMax}px)`}},[`&:not(${i}-disabled):active`]:{[`&:not(${i}-checked) ${e}`]:{[`${e}-unchecked`]:{marginInlineStart:2*t.switchPadding,marginInlineEnd:-(2*t.switchPadding)}},[`&${i}-checked ${e}`]:{[`${e}-checked`]:{marginInlineStart:-(2*t.switchPadding),marginInlineEnd:2*t.switchPadding}}}}}},C=t=>{let{componentCls:i}=t;return{[i]:Object.assign(Object.assign(Object.assign(Object.assign({},(0,v.Wf)(t)),{position:"relative",display:"inline-block",boxSizing:"border-box",minWidth:t.switchMinWidth,height:t.switchHeight,lineHeight:`${t.switchHeight}px`,verticalAlign:"middle",background:t.colorTextQuaternary,border:"0",borderRadius:100,cursor:"pointer",transition:`all ${t.motionDurationMid}`,userSelect:"none",[`&:hover:not(${i}-disabled)`]:{background:t.colorTextTertiary}}),(0,v.Qy)(t)),{[`&${i}-checked`]:{background:t.switchColor,[`&:hover:not(${i}-disabled)`]:{background:t.colorPrimaryHover}},[`&${i}-loading, &${i}-disabled`]:{cursor:"not-allowed",opacity:t.switchDisabledOpacity,"*":{boxShadow:"none",cursor:"not-allowed"}},[`&${i}-rtl`]:{direction:"rtl"}})}};var k=(0,w.Z)("Switch",t=>{let i=t.fontSize*t.lineHeight,e=t.controlHeight/2,n=i-4,o=e-4,r=(0,x.TS)(t,{switchMinWidth:2*n+8,switchHeight:i,switchDuration:t.motionDurationMid,switchColor:t.colorPrimary,switchDisabledOpacity:t.opacityLoading,switchInnerMarginMin:n/2,switchInnerMarginMax:n+2+4,switchPadding:2,switchPinSize:n,switchBg:t.colorBgContainer,switchMinWidthSM:2*o+4,switchHeightSM:e,switchInnerMarginMinSM:o/2,switchInnerMarginMaxSM:o+2+4,switchPinSizeSM:o,switchHandleShadow:`0 2px 4px 0 ${new S.C("#00230b").setAlpha(.2).toRgbString()}`,switchLoadingIconSize:.75*t.fontSizeIcon,switchLoadingIconColor:`rgba(0, 0, 0, ${t.opacityLoading})`,switchHandleActiveInset:"-30%"});return[C(r),y(r),M(r),z(r),I(r)]}),E=function(t,i){var e={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&0>i.indexOf(n)&&(e[n]=t[n]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,n=Object.getOwnPropertySymbols(t);oi.indexOf(n[o])&&Object.prototype.propertyIsEnumerable.call(t,n[o])&&(e[n[o]]=t[n[o]]);return e};let H=d.forwardRef((t,i)=>{let{prefixCls:e,size:o,disabled:a,loading:c,className:l,rootClassName:s,style:h}=t,g=E(t,["prefixCls","size","disabled","loading","className","rootClassName","style"]),{getPrefixCls:m,direction:S,switch:v}=d.useContext(u.E_),w=d.useContext(f.Z),x=(null!=a?a:w)||c,I=m("switch",e),z=d.createElement("div",{className:`${I}-handle`},c&&d.createElement(n.Z,{className:`${I}-loading-icon`})),[M,y]=k(I),C=(0,b.Z)(o),H=r()(null==v?void 0:v.className,{[`${I}-small`]:"small"===C,[`${I}-loading`]:c,[`${I}-rtl`]:"rtl"===S},l,s,y),Z=Object.assign(Object.assign({},null==v?void 0:v.style),h);return M(d.createElement($.Z,{component:"Switch"},d.createElement(p,Object.assign({},g,{prefixCls:I,className:H,style:Z,disabled:x,ref:i,loadingIcon:z}))))});H.__ANT_SWITCH=!0;var Z=H}}]); \ No newline at end of file diff --git a/pilot/server/static/_next/static/chunks/304.b9722ef34a01988f.js b/pilot/server/static/_next/static/chunks/304.b9722ef34a01988f.js deleted file mode 100644 index 5d857c2f2..000000000 --- a/pilot/server/static/_next/static/chunks/304.b9722ef34a01988f.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[304],{39156:function(e,t,l){"use strict";l.d(t,{Z:function(){return m}});var a=l(85893),n=l(41118),r=l(30208),s=l(40911),c=l(75227),i=l(67294);function o(e){let{chart:t}=e,l=(0,i.useRef)(null),o=(0,i.useRef)({chart:null});return(0,i.useEffect)(()=>{l.current&&(o.current.chart&&o.current.chart.destroy(),o.current.chart=new c.sg(l.current,{data:t.values,xField:"name",yField:"value",seriesField:"type",legend:{position:"bottom"},animation:{appear:{animation:"wave-in",duration:3e3}}}),o.current.chart.render())},[t.values]),(0,a.jsx)("div",{className:"flex-1 min-w-0",children:(0,a.jsx)(n.Z,{className:"h-full",sx:{background:"transparent"},children:(0,a.jsxs)(r.Z,{className:"h-full",children:[(0,a.jsx)(s.ZP,{gutterBottom:!0,component:"div",children:t.chart_name}),(0,a.jsx)(s.ZP,{gutterBottom:!0,level:"body3",children:t.chart_desc}),(0,a.jsx)("div",{className:"h-[300px]",ref:l})]})})})}function u(e){let{chart:t}=e,l=(0,i.useRef)(null),o=(0,i.useRef)({chart:null});return(0,i.useEffect)(()=>{l.current&&(o.current.chart&&o.current.chart.destroy(),o.current.chart=new c.x1(l.current,{data:t.values,xField:"name",yField:"value",seriesField:"type",smooth:!0,area:{style:{fillOpacity:.15}},legend:{position:"bottom"},animation:{appear:{animation:"wave-in",duration:3e3}}}),o.current.chart.render())},[t.values]),(0,a.jsx)("div",{className:"flex-1 min-w-0",children:(0,a.jsx)(n.Z,{className:"h-full",sx:{background:"transparent"},children:(0,a.jsxs)(r.Z,{className:"h-full",children:[(0,a.jsx)(s.ZP,{gutterBottom:!0,component:"div",children:t.chart_name}),(0,a.jsx)(s.ZP,{gutterBottom:!0,level:"body3",children:t.chart_desc}),(0,a.jsx)("div",{className:"h-[300px]",ref:l})]})})})}var d=l(61685),h=l(96486);function x(e){var t,l;let{chart:c}=e,i=(0,h.groupBy)(c.values,"type");return(0,a.jsx)("div",{className:"flex-1 min-w-0",children:(0,a.jsx)(n.Z,{className:"h-full overflow-auto",sx:{background:"transparent"},children:(0,a.jsxs)(r.Z,{className:"h-full",children:[(0,a.jsx)(s.ZP,{gutterBottom:!0,component:"div",children:c.chart_name}),(0,a.jsx)(s.ZP,{gutterBottom:!0,level:"body3",children:c.chart_desc}),(0,a.jsx)("div",{className:"flex-1",children:(0,a.jsxs)(d.Z,{"aria-label":"basic table",stripe:"odd",hoverRow:!0,borderAxis:"bothBetween",children:[(0,a.jsx)("thead",{children:(0,a.jsx)("tr",{children:Object.keys(i).map(e=>(0,a.jsx)("th",{children:e},e))})}),(0,a.jsx)("tbody",{children:null===(t=Object.values(i))||void 0===t?void 0:null===(l=t[0])||void 0===l?void 0:l.map((e,t)=>{var l;return(0,a.jsx)("tr",{children:null===(l=Object.keys(i))||void 0===l?void 0:l.map(e=>{var l;return(0,a.jsx)("td",{children:(null==i?void 0:null===(l=i[e])||void 0===l?void 0:l[t].value)||""},e)})},t)})})]})})]})})})}var m=function(e){let{chartsData:t}=e,l=(0,i.useMemo)(()=>{if(t){let e=[],l=null==t?void 0:t.filter(e=>"IndicatorValue"===e.chart_type);l.length>0&&e.push({charts:l,type:"IndicatorValue"});let a=null==t?void 0:t.filter(e=>"IndicatorValue"!==e.chart_type),n=a.length,r=0;return[[0],[1],[2],[1,2],[1,3],[2,1,2],[2,1,3],[3,1,3],[3,2,3]][n].forEach(t=>{if(t>0){let l=a.slice(r,r+t);r+=t,e.push({charts:l})}}),e}},[t]);return(0,a.jsx)("div",{className:"flex flex-col gap-3",children:null==l?void 0:l.map((e,t)=>(0,a.jsx)("div",{className:"".concat((null==e?void 0:e.type)!=="IndicatorValue"?"flex gap-3":""),children:e.charts.map(e=>"IndicatorValue"===e.chart_type?(0,a.jsx)("div",{className:"flex flex-row gap-3",children:e.values.map(e=>(0,a.jsx)("div",{className:"flex-1",children:(0,a.jsx)(n.Z,{sx:{background:"transparent"},children:(0,a.jsxs)(r.Z,{className:"justify-around",children:[(0,a.jsx)(s.ZP,{gutterBottom:!0,component:"div",children:e.name}),(0,a.jsx)(s.ZP,{children:e.value})]})})},e.name))},e.chart_uid):"LineChart"===e.chart_type?(0,a.jsx)(u,{chart:e},e.chart_uid):"BarChart"===e.chart_type?(0,a.jsx)(o,{chart:e},e.chart_uid):"Table"===e.chart_type?(0,a.jsx)(x,{chart:e},e.chart_uid):void 0)},"chart_row_".concat(t)))})}},70803:function(e,t,l){"use strict";l.d(t,{Z:function(){return B}});var a=l(85893),n=l(67294),r=l(2453),s=l(83062),c=l(31365),i=l(71577),o=l(49591),u=l(88484),d=l(29158),h=l(50489),x=l(41468),m=function(e){var t;let{convUid:l,chatMode:m,onComplete:p,...f}=e,[v,j]=(0,n.useState)(!1),[g,y]=r.ZP.useMessage(),[b,w]=(0,n.useState)([]),[Z,N]=(0,n.useState)(),{model:_}=(0,n.useContext)(x.p),P=async e=>{var t;if(!e){r.ZP.error("Please select the *.(csv|xlsx|xls) file");return}if(!/\.(csv|xlsx|xls)$/.test(null!==(t=e.file.name)&&void 0!==t?t:"")){r.ZP.error("File type must be csv, xlsx or xls");return}w([e.file])},C=async()=>{j(!0);try{let e=new FormData;e.append("doc_file",b[0]),g.open({content:"Uploading ".concat(b[0].name),type:"loading",duration:0});let[t]=await (0,h.Vx)((0,h.qn)({convUid:l,chatMode:m,data:e,model:_,config:{timeout:36e5,onUploadProgress:e=>{let t=Math.ceil(e.loaded/(e.total||0)*100);N(t)}}}));if(t)return;r.ZP.success("success"),null==p||p()}catch(e){r.ZP.error((null==e?void 0:e.message)||"Upload Error")}finally{j(!1),g.destroy()}};return(0,a.jsx)(a.Fragment,{children:(0,a.jsxs)("div",{className:"flex items-start gap-2",children:[y,(0,a.jsx)(s.Z,{placement:"bottom",title:"File cannot be changed after upload",children:(0,a.jsx)(c.default,{disabled:v,className:"mr-1",beforeUpload:()=>!1,fileList:b,name:"file",accept:".csv,.xlsx,.xls",multiple:!1,onChange:P,showUploadList:{showDownloadIcon:!1,showPreviewIcon:!1,showRemoveIcon:!1},itemRender:()=>(0,a.jsx)(a.Fragment,{}),...f,children:(0,a.jsx)(i.ZP,{className:"flex justify-center items-center",type:"primary",disabled:v,icon:(0,a.jsx)(o.Z,{}),children:"Select File"})})}),(0,a.jsx)(i.ZP,{type:"primary",loading:v,className:"flex justify-center items-center",disabled:!b.length,icon:(0,a.jsx)(u.Z,{}),onClick:C,children:v?100===Z?"Analysis":"Uploading":"Upload"}),!!b.length&&(0,a.jsxs)("div",{className:"mt-2 text-gray-500 text-sm flex items-center",children:[(0,a.jsx)(d.Z,{className:"mr-2"}),(0,a.jsx)("span",{children:null===(t=b[0])||void 0===t?void 0:t.name})]})]})})},p=function(e){let{onComplete:t}=e,{currentDialogue:l,scene:r,chatId:s}=(0,n.useContext)(x.p);return"chat_excel"!==r?null:(0,a.jsx)("div",{className:"max-w-md h-full relative",children:l?(0,a.jsxs)("div",{className:"flex h-8 overflow-hidden rounded",children:[(0,a.jsx)("div",{className:"flex items-center justify-center px-2 bg-gray-600 text-lg",children:(0,a.jsx)(d.Z,{className:"text-white"})}),(0,a.jsx)("div",{className:"flex items-center justify-center px-3 bg-gray-100 text-xs rounded-tr rounded-br dark:text-gray-800 truncate",children:l.select_param})]}):(0,a.jsx)(m,{convUid:s,chatMode:r,onComplete:t})})};l(23293);var f=l(78045),v=l(16165),j=l(96991),g=function(){return(0,a.jsx)("svg",{width:"1em",height:"1em",fill:"currentColor",viewBox:"0 0 1024 1024",version:"1.1",children:(0,a.jsx)("path",{d:"M602.24 246.72a17.28 17.28 0 0 0-11.84-16.32l-42.88-14.4A90.56 90.56 0 0 1 490.24 160l-14.4-42.88a17.28 17.28 0 0 0-32 0L428.8 160a90.56 90.56 0 0 1-57.28 57.28l-42.88 14.4a17.28 17.28 0 0 0 0 32l42.88 14.4a90.56 90.56 0 0 1 57.28 57.28l14.4 42.88a17.28 17.28 0 0 0 32 0l14.4-42.88a90.56 90.56 0 0 1 57.28-57.28l42.88-14.4a17.28 17.28 0 0 0 12.48-16.96z m301.12 221.76l-48.32-16a101.44 101.44 0 0 1-64-64l-16-48.32a19.2 19.2 0 0 0-36.8 0l-16 48.32a101.44 101.44 0 0 1-64 64l-48.32 16a19.2 19.2 0 0 0 0 36.8l48.32 16a101.44 101.44 0 0 1 64 64l16 48.32a19.2 19.2 0 0 0 36.8 0l16-48.32a101.44 101.44 0 0 1 64-64l48.32-16a19.2 19.2 0 0 0 0-36.8z m-376.64 195.52l-64-20.8a131.84 131.84 0 0 1-83.52-83.52l-20.8-64a25.28 25.28 0 0 0-47.68 0l-20.8 64a131.84 131.84 0 0 1-82.24 83.52l-64 20.8a25.28 25.28 0 0 0 0 47.68l64 20.8a131.84 131.84 0 0 1 83.52 83.84l20.8 64a25.28 25.28 0 0 0 47.68 0l20.8-64a131.84 131.84 0 0 1 83.52-83.52l64-20.8a25.28 25.28 0 0 0 0-47.68z","p-id":"3992"})})};function y(){let{isContract:e,setIsContract:t,scene:l}=(0,n.useContext)(x.p),r=l&&["chat_with_db_execute","chat_dashboard"].includes(l);return r?(0,a.jsxs)(f.ZP.Group,{value:e,defaultValue:!0,buttonStyle:"solid",onChange:()=>{t(!e)},children:[(0,a.jsxs)(f.ZP.Button,{value:!1,children:[(0,a.jsx)(v.Z,{component:g,className:"mr-1"}),"Preview"]}),(0,a.jsxs)(f.ZP.Button,{value:!0,children:[(0,a.jsx)(j.Z,{className:"mr-1"}),"Editor"]})]}):null}var b=l(81799),w=function(){return(0,a.jsx)("svg",{width:"1em",height:"1em",fill:"currentColor",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"4870",children:(0,a.jsx)("path",{d:"M511.875 128.125c-211.875 0-383.75 76.25-383.75 170.625 0 94.375 171.875 170.625 383.75 170.625 211.875 0 383.75-76.25 383.75-170.625C896.25 204.375 724.375 128.125 511.875 128.125M128.125 383.75l0 128.125c0 94.375 171.875 170.625 383.75 170.625 211.875 0 383.75-76.25 383.75-170.625l0-128.125c0 94.375-171.875 170.625-383.75 170.625C300 555 128.125 478.125 128.125 383.75M128.125 597.5l0 128.125c0 94.375 171.875 170.625 383.75 170.625 211.875 0 383.75-76.25 383.75-170.625l0-128.125c0 94.375-171.875 170.625-383.75 170.625C300 768.125 128.125 691.875 128.125 597.5z","p-id":"4871"})})},Z=l(2093),N=l(51009),_=function(){let{scene:e,dbParam:t,setDbParam:l}=(0,n.useContext)(x.p),[r,s]=(0,n.useState)({});(0,Z.Z)(async()=>{let[,t]=await (0,h.Vx)((0,h.vD)(e));s(null!=t?t:{})},[e]);let c=(0,n.useMemo)(()=>Object.entries(r).map(e=>{let[t,l]=e;return{label:t,value:l}}),[r]);return((0,n.useEffect)(()=>{c.length&&!t&&l(c[0].value)},[c,l,t]),c.length)?(0,a.jsx)(N.default,{value:t,className:"w-36",onChange:e=>{l(e)},children:c.map(e=>(0,a.jsxs)(N.default.Option,{children:[(0,a.jsx)(v.Z,{component:w,className:"mr-1"}),e.label]},e.value))}):null},P=l(577),C=l(67421),k=function(){let{t:e}=(0,C.$G)(),{agentList:t,setAgentList:l}=(0,n.useContext)(x.p),{data:r=[]}=(0,P.Z)(async()=>{let[,e]=await (0,h.Vx)((0,h.N6)());return e&&e.length&&(null==l||l([e[0].name])),null!=e?e:[]});return r.length?(0,a.jsx)(N.default,{className:"w-60",value:t,mode:"multiple",maxTagCount:1,maxTagTextLength:12,placeholder:e("Select_Plugins"),options:r.map(e=>({label:e.name,value:e.name})),allowClear:!0,onChange:e=>{null==l||l(e)}}):null},B=function(e){let{refreshHistory:t,modelChange:l}=e,{scene:r,refreshDialogList:s}=(0,n.useContext)(x.p);return(0,a.jsxs)("div",{className:"w-full py-2 px-4 md:px-4 flex flex-wrap items-center justify-center border-b border-gray-100 gap-1 md:gap-4",children:[(0,a.jsx)(b.Z,{onChange:l}),(0,a.jsx)(_,{}),"chat_excel"===r&&(0,a.jsx)(p,{onComplete:()=>{null==s||s(),null==t||t()}}),"chat_agent"===r&&(0,a.jsx)(k,{}),(0,a.jsx)(y,{})]})}},81799:function(e,t,l){"use strict";l.d(t,{A:function(){return d}});var a=l(85893),n=l(41468),r=l(51009),s=l(19284),c=l(25675),i=l.n(c),o=l(67294),u=l(67421);function d(e,t){var l;let{width:n,height:r}=t||{};return e?(0,a.jsx)(i(),{className:"rounded-full border border-gray-200 object-contain bg-white inline-block",width:n||24,height:r||24,src:(null===(l=s.F[e])||void 0===l?void 0:l.icon)||"/models/huggingface.svg",alt:"llm"}):null}t.Z=function(e){let{onChange:t}=e,{t:l}=(0,u.$G)(),{modelList:c,model:i}=(0,o.useContext)(n.p);return!c||c.length<=0?null:(0,a.jsx)(r.default,{value:i,placeholder:l("choose_model"),className:"w-52",onChange:e=>{null==t||t(e)},children:c.map(e=>{var t;return(0,a.jsx)(r.default.Option,{children:(0,a.jsxs)("div",{className:"flex items-center",children:[d(e),(0,a.jsx)("span",{className:"ml-2",children:(null===(t=s.F[e])||void 0===t?void 0:t.label)||e})]})},e)})})}},99513:function(e,t,l){"use strict";l.d(t,{Z:function(){return u}});var a=l(85893),n=l(77119),r=l(63764),s=l(94184),c=l.n(s),i=l(67294),o=l(36782);function u(e){let{className:t,value:l,language:n="mysql",onChange:s,thoughts:u}=e,d=(0,i.useMemo)(()=>"mysql"!==n?l:u&&u.length>0?(0,o.WU)("-- ".concat(u," \n").concat(l)):(0,o.WU)(l),[l,u]);return(0,a.jsx)(r.ZP,{className:c()(t),value:d,language:n,onChange:s,theme:"vs-dark",options:{minimap:{enabled:!1},wordWrap:"on"}})}r._m.config({monaco:n})},30119:function(e,t,l){"use strict";l.d(t,{Tk:function(){return i},PR:function(){return o}});var a=l(2453),n=l(6154),r=l(83454);let s=n.Z.create({baseURL:r.env.API_BASE_URL});s.defaults.timeout=1e4,s.interceptors.response.use(e=>e.data,e=>Promise.reject(e)),l(96486);let c={"content-type":"application/json"},i=(e,t)=>{if(t){let l=Object.keys(t).filter(e=>void 0!==t[e]&&""!==t[e]).map(e=>"".concat(e,"=").concat(t[e])).join("&");l&&(e+="?".concat(l))}return s.get("/api"+e,{headers:c}).then(e=>e).catch(e=>{a.ZP.error(e),Promise.reject(e)})},o=(e,t)=>s.post(e,t,{headers:c}).then(e=>e).catch(e=>{a.ZP.error(e),Promise.reject(e)})},23293:function(){}}]); \ No newline at end of file diff --git a/pilot/server/static/_next/static/chunks/355a6ca7.e6035af22360251e.js b/pilot/server/static/_next/static/chunks/355a6ca7.e6035af22360251e.js new file mode 100644 index 000000000..49316754a --- /dev/null +++ b/pilot/server/static/_next/static/chunks/355a6ca7.e6035af22360251e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[34],{4559:function(t,e,n){n.d(e,{$6:function(){return j},$p:function(){return nq},Aw:function(){return rx},Cd:function(){return r0},Cm:function(){return I},Dk:function(){return H},E9:function(){return tz},Ee:function(){return r4},F6:function(){return tw},G$:function(){return ns},G0:function(){return nI},GL:function(){return U},GZ:function(){return r_},I8:function(){return tM},L1:function(){return n0},N1:function(){return nb},NB:function(){return rT},O4:function(){return tI},Oi:function(){return nK},Pj:function(){return r2},R:function(){return eA},RV:function(){return rH},Rr:function(){return X},Rx:function(){return eb},UL:function(){return it},V1:function(){return tQ},Vl:function(){return tD},Xz:function(){return iy},YR:function(){return e8},ZA:function(){return r3},_O:function(){return tL},aH:function(){return r7},b_:function(){return r1},bn:function(){return M},gz:function(){return eq},h0:function(){return Y},iM:function(){return A},jU:function(){return nW},jd:function(){return rM},jf:function(){return tq},k9:function(){return r5},lu:function(){return eL},mN:function(){return tH},mg:function(){return r6},o6:function(){return eT},qA:function(){return eO},s$:function(){return r$},ux:function(){return rQ},x1:function(){return r9},xA:function(){return ry},xv:function(){return ie},y$:function(){return r8}});var r,i,o,a,s,l,c,u,h,p,f,d,v,y,g,m,E,x,b,T,P,S,N,C,w,M,k,R,A,O,L,I,D,G,_,F,B,U,Z,V,Y,X,H,j,W=n(97582),z=n(54146),K=n(77160),q=n(85975),J=n(35600),$=n(98333),Q=n(32945),tt=n(31437),te=n(68797),tn=n(6393),tr=n(37377),ti=n(4663),to=n(53984),ta=n(72888),ts=n(58133),tl=n(26380),tc=n(76703),tu=n(25995),th=n(28024),tp=n(75066),tf=n(10353),td=n(49958),tv=n(49908),ty=n(8699),tg=n(88154),tm=n(47427),tE=n(63725),tx=n(72614),tb=n(36522),tT=n(80431),tP=n(33439),tS=n(73743),tN=("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:"undefined"!=typeof self&&self,{exports:{}});tN.exports=function(){function t(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function e(t,e){return te?1:0}var n=function(t){void 0===t&&(t=9),this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function r(t,e){i(t,0,t.children.length,e,t)}function i(t,e,n,r,i){i||(i=p(null)),i.minX=1/0,i.minY=1/0,i.maxX=-1/0,i.maxY=-1/0;for(var a=e;a=t.minX&&e.maxY>=t.minY}function p(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function f(n,r,i,o,a){for(var s=[r,i];s.length;)if(i=s.pop(),r=s.pop(),!(i-r<=o)){var l=r+Math.ceil((i-r)/o/2)*o;(function e(n,r,i,o,a){for(;o>i;){if(o-i>600){var s=o-i+1,l=r-i+1,c=Math.log(s),u=.5*Math.exp(2*c/3),h=.5*Math.sqrt(c*u*(s-u)/s)*(l-s/2<0?-1:1),p=Math.max(i,Math.floor(r-l*u/s+h)),f=Math.min(o,Math.floor(r+(s-l)*u/s+h));e(n,r,p,f,a)}var d=n[r],v=i,y=o;for(t(n,i,r),a(n[o],d)>0&&t(n,i,o);va(n[v],d);)v++;for(;a(n[y],d)>0;)y--}0===a(n[i],d)?t(n,i,y):t(n,++y,o),y<=r&&(i=y+1),r<=y&&(o=y-1)}})(n,l,r||0,i||n.length-1,a||e),s.push(r,l,l,i)}}return n.prototype.all=function(){return this._all(this.data,[])},n.prototype.search=function(t){var e=this.data,n=[];if(!h(t,e))return n;for(var r=this.toBBox,i=[];e;){for(var o=0;o=0;)if(i[e].children.length>this._maxEntries)this._split(i,e),e--;else break;this._adjustParentBBoxes(r,i,e)},n.prototype._split=function(t,e){var n=t[e],i=n.children.length,o=this._minEntries;this._chooseSplitAxis(n,o,i);var a=this._chooseSplitIndex(n,o,i),s=p(n.children.splice(a,n.children.length-a));s.height=n.height,s.leaf=n.leaf,r(n,this.toBBox),r(s,this.toBBox),e?t[e-1].children.push(s):this._splitRoot(n,s)},n.prototype._splitRoot=function(t,e){this.data=p([t,e]),this.data.height=t.height+1,this.data.leaf=!1,r(this.data,this.toBBox)},n.prototype._chooseSplitIndex=function(t,e,n){for(var r,o=1/0,a=1/0,s=e;s<=n-e;s++){var c=i(t,0,s,this.toBBox),u=i(t,s,n,this.toBBox),h=function(t,e){var n=Math.max(t.minX,e.minX),r=Math.max(t.minY,e.minY);return Math.max(0,Math.min(t.maxX,e.maxX)-n)*Math.max(0,Math.min(t.maxY,e.maxY)-r)}(c,u),p=l(c)+l(u);h=e;f--){var d=t.children[f];o(l,t.leaf?a(d):d),u+=c(l)}return u},n.prototype._adjustParentBBoxes=function(t,e,n){for(var r=n;r>=0;r--)o(e[r],t)},n.prototype._condense=function(t){for(var e=t.length-1,n=void 0;e>=0;e--)0===t[e].children.length?e>0?(n=t[e-1].children).splice(n.indexOf(t[e]),1):this.clear():r(t[e],this.toBBox)},n}();var tC=tN.exports;(r=M||(M={})).GROUP="g",r.CIRCLE="circle",r.ELLIPSE="ellipse",r.IMAGE="image",r.RECT="rect",r.LINE="line",r.POLYLINE="polyline",r.POLYGON="polygon",r.TEXT="text",r.PATH="path",r.HTML="html",r.MESH="mesh",(i=k||(k={}))[i.ZERO=0]="ZERO",i[i.NEGATIVE_ONE=1]="NEGATIVE_ONE";var tw=function(){function t(){this.plugins=[]}return t.prototype.addRenderingPlugin=function(t){this.plugins.push(t),this.context.renderingPlugins.push(t)},t.prototype.removeAllRenderingPlugins=function(){var t=this;this.plugins.forEach(function(e){var n=t.context.renderingPlugins.indexOf(e);n>=0&&t.context.renderingPlugins.splice(n,1)})},t}(),tM=function(){function t(t){this.clipSpaceNearZ=k.NEGATIVE_ONE,this.plugins=[],this.config=(0,W.pi)({enableDirtyCheck:!0,enableCulling:!1,enableAutoRendering:!0,enableDirtyRectangleRendering:!0,enableDirtyRectangleRenderingDebug:!1},t)}return t.prototype.registerPlugin=function(t){-1===this.plugins.findIndex(function(e){return e===t})&&this.plugins.push(t)},t.prototype.unregisterPlugin=function(t){var e=this.plugins.findIndex(function(e){return e===t});e>-1&&this.plugins.splice(e,1)},t.prototype.getPlugins=function(){return this.plugins},t.prototype.getPlugin=function(t){return this.plugins.find(function(e){return e.name===t})},t.prototype.getConfig=function(){return this.config},t.prototype.setConfig=function(t){Object.assign(this.config,t)},t}();function tk(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function tR(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t}function tA(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t}function tO(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t}function tL(t){return void 0===t?0:t>360||t<-360?t%360:t}function tI(t,e,n){return(void 0===e&&(e=0),void 0===n&&(n=0),Array.isArray(t)&&3===t.length)?K.d9(t):(0,te.Z)(t)?K.al(t,e,n):K.al(t[0],t[1]||e,t[2]||n)}function tD(t){return t*(Math.PI/180)}function tG(t){return t*(180/Math.PI)}function t_(t,e){var n,r,i,o,a,s,l,c,u,h,p,f,d,v,y,g,m;return 16===e.length?(i=.5*Math.PI,a=(o=(0,W.CR)(q.getScaling(K.Ue(),e),3))[0],s=o[1],l=o[2],(c=Math.asin(-e[2]/a))-i?(n=Math.atan2(e[6]/s,e[10]/l),r=Math.atan2(e[1]/a,e[0]/a)):(r=0,n=-Math.atan2(e[4]/s,e[5]/s)):(r=0,n=Math.atan2(e[4]/s,e[5]/s)),t[0]=n,t[1]=c,t[2]=r,t):(u=e[0],h=e[1],p=e[2],f=e[3],g=u*u+(d=h*h)+(v=p*p)+(y=f*f),(m=u*f-h*p)>.499995*g?(t[0]=Math.PI/2,t[1]=2*Math.atan2(h,u),t[2]=0):m<-.499995*g?(t[0]=-Math.PI/2,t[1]=2*Math.atan2(h,u),t[2]=0):(t[0]=Math.asin(2*(u*p-f*h)),t[1]=Math.atan2(2*(u*f+h*p),1-2*(v+y)),t[2]=Math.atan2(2*(u*h+p*f),1-2*(d+v))),t)}function tF(t){var e=t[0],n=t[1],r=t[3],i=t[4],o=Math.sqrt(e*e+n*n),a=Math.sqrt(r*r+i*i);e*i-n*r<0&&(eh&&(h=N),Cf&&(f=w),Mv&&(v=k),n[0]=(u+h)*.5,n[1]=(p+f)*.5,n[2]=(d+v)*.5,a[0]=(h-u)*.5,a[1]=(f-p)*.5,a[2]=(v-d)*.5,this.min[0]=u,this.min[1]=p,this.min[2]=d,this.max[0]=h,this.max[1]=f,this.max[2]=v}},t.prototype.setFromTransformedAABB=function(t,e){var n=this.center,r=this.halfExtents,i=t.center,o=t.halfExtents,a=e[0],s=e[4],l=e[8],c=e[1],u=e[5],h=e[9],p=e[2],f=e[6],d=e[10],v=Math.abs(a),y=Math.abs(s),g=Math.abs(l),m=Math.abs(c),E=Math.abs(u),x=Math.abs(h),b=Math.abs(p),T=Math.abs(f),P=Math.abs(d);n[0]=e[12]+a*i[0]+s*i[1]+l*i[2],n[1]=e[13]+c*i[0]+u*i[1]+h*i[2],n[2]=e[14]+p*i[0]+f*i[1]+d*i[2],r[0]=v*o[0]+y*o[1]+g*o[2],r[1]=m*o[0]+E*o[1]+x*o[2],r[2]=b*o[0]+T*o[1]+P*o[2],tR(this.min,n,r),tA(this.max,n,r)},t.prototype.intersects=function(t){var e=this.getMax(),n=this.getMin(),r=t.getMax(),i=t.getMin();return n[0]<=r[0]&&e[0]>=i[0]&&n[1]<=r[1]&&e[1]>=i[1]&&n[2]<=r[2]&&e[2]>=i[2]},t.prototype.intersection=function(e){if(!this.intersects(e))return null;var n,r,i,o,a,s,l=new t,c=(n=[0,0,0],r=this.getMin(),i=e.getMin(),n[0]=Math.max(r[0],i[0]),n[1]=Math.max(r[1],i[1]),n[2]=Math.max(r[2],i[2]),n),u=(o=[0,0,0],a=this.getMax(),s=e.getMax(),o[0]=Math.min(a[0],s[0]),o[1]=Math.min(a[1],s[1]),o[2]=Math.min(a[2],s[2]),o);return l.setMinMax(c,u),l},t.prototype.getNegativeFarPoint=function(t){if(273===t.pnVertexFlag)return tk([0,0,0],this.min);if(272===t.pnVertexFlag)return[this.min[0],this.min[1],this.max[2]];if(257===t.pnVertexFlag)return[this.min[0],this.max[1],this.min[2]];if(256===t.pnVertexFlag)return[this.min[0],this.max[1],this.max[2]];if(17===t.pnVertexFlag)return[this.max[0],this.min[1],this.min[2]];if(16===t.pnVertexFlag)return[this.max[0],this.min[1],this.max[2]];if(1===t.pnVertexFlag)return[this.max[0],this.max[1],this.min[2]];else return[this.max[0],this.max[1],this.max[2]]},t.prototype.getPositiveFarPoint=function(t){if(273===t.pnVertexFlag)return tk([0,0,0],this.max);if(272===t.pnVertexFlag)return[this.max[0],this.max[1],this.min[2]];if(257===t.pnVertexFlag)return[this.max[0],this.min[1],this.max[2]];if(256===t.pnVertexFlag)return[this.max[0],this.min[1],this.min[2]];if(17===t.pnVertexFlag)return[this.min[0],this.max[1],this.max[2]];if(16===t.pnVertexFlag)return[this.min[0],this.max[1],this.min[2]];if(1===t.pnVertexFlag)return[this.min[0],this.min[1],this.max[2]];else return[this.min[0],this.min[1],this.min[2]]},t}(),tj=function(){function t(t,e){this.distance=t||0,this.normal=e||K.al(0,1,0),this.updatePNVertexFlag()}return t.prototype.updatePNVertexFlag=function(){this.pnVertexFlag=(Number(this.normal[0]>=0)<<8)+(Number(this.normal[1]>=0)<<4)+Number(this.normal[2]>=0)},t.prototype.distanceToPoint=function(t){return K.AK(t,this.normal)-this.distance},t.prototype.normalize=function(){var t=1/K.Zh(this.normal);K.bA(this.normal,this.normal,t),this.distance*=t},t.prototype.intersectsLine=function(t,e,n){var r=this.distanceToPoint(t),i=r/(r-this.distanceToPoint(e)),o=i>=0&&i<=1;return o&&n&&K.t7(n,t,e,i),o},t}();(o=R||(R={}))[o.OUTSIDE=4294967295]="OUTSIDE",o[o.INSIDE=0]="INSIDE",o[o.INDETERMINATE=2147483647]="INDETERMINATE";var tW=function(){function t(t){if(this.planes=[],t)this.planes=t;else for(var e=0;e<6;e++)this.planes.push(new tj)}return t.prototype.extractFromVPMatrix=function(t){var e=(0,W.CR)(t,16),n=e[0],r=e[1],i=e[2],o=e[3],a=e[4],s=e[5],l=e[6],c=e[7],u=e[8],h=e[9],p=e[10],f=e[11],d=e[12],v=e[13],y=e[14],g=e[15];K.t8(this.planes[0].normal,o-n,c-a,f-u),this.planes[0].distance=g-d,K.t8(this.planes[1].normal,o+n,c+a,f+u),this.planes[1].distance=g+d,K.t8(this.planes[2].normal,o+r,c+s,f+h),this.planes[2].distance=g+v,K.t8(this.planes[3].normal,o-r,c-s,f-h),this.planes[3].distance=g-v,K.t8(this.planes[4].normal,o-i,c-l,f-p),this.planes[4].distance=g-y,K.t8(this.planes[5].normal,o+i,c+l,f+p),this.planes[5].distance=g+y,this.planes.forEach(function(t){t.normalize(),t.updatePNVertexFlag()})},t}(),tz=function(){function t(t,e){void 0===t&&(t=0),void 0===e&&(e=0),this.x=0,this.y=0,this.x=t,this.y=e}return t.prototype.clone=function(){return new t(this.x,this.y)},t.prototype.copyFrom=function(t){this.x=t.x,this.y=t.y},t}(),tK=function(){function t(t,e,n,r){this.x=t,this.y=e,this.width=n,this.height=r,this.left=t,this.right=t+n,this.top=e,this.bottom=e+r}return t.prototype.toJSON=function(){},t}(),tq="Method not implemented.",tJ="Use document.documentElement instead.";(a=A||(A={}))[a.ORBITING=0]="ORBITING",a[a.EXPLORING=1]="EXPLORING",a[a.TRACKING=2]="TRACKING",(s=O||(O={}))[s.DEFAULT=0]="DEFAULT",s[s.ROTATIONAL=1]="ROTATIONAL",s[s.TRANSLATIONAL=2]="TRANSLATIONAL",s[s.CINEMATIC=3]="CINEMATIC",(l=L||(L={}))[l.ORTHOGRAPHIC=0]="ORTHOGRAPHIC",l[l.PERSPECTIVE=1]="PERSPECTIVE";var t$={UPDATED:"updated"},tQ=function(){function t(){this.clipSpaceNearZ=k.NEGATIVE_ONE,this.eventEmitter=new z.Z,this.matrix=q.create(),this.right=K.al(1,0,0),this.up=K.al(0,1,0),this.forward=K.al(0,0,1),this.position=K.al(0,0,1),this.focalPoint=K.al(0,0,0),this.distanceVector=K.al(0,0,-1),this.distance=1,this.azimuth=0,this.elevation=0,this.roll=0,this.relAzimuth=0,this.relElevation=0,this.relRoll=0,this.dollyingStep=0,this.maxDistance=1/0,this.minDistance=-1/0,this.zoom=1,this.rotateWorld=!1,this.fov=30,this.near=.1,this.far=1e3,this.aspect=1,this.projectionMatrix=q.create(),this.projectionMatrixInverse=q.create(),this.jitteredProjectionMatrix=void 0,this.enableUpdate=!0,this.type=A.EXPLORING,this.trackingMode=O.DEFAULT,this.projectionMode=L.PERSPECTIVE,this.frustum=new tW,this.orthoMatrix=q.create()}return t.prototype.isOrtho=function(){return this.projectionMode===L.ORTHOGRAPHIC},t.prototype.getProjectionMode=function(){return this.projectionMode},t.prototype.getPerspective=function(){return this.jitteredProjectionMatrix||this.projectionMatrix},t.prototype.getPerspectiveInverse=function(){return this.projectionMatrixInverse},t.prototype.getFrustum=function(){return this.frustum},t.prototype.getPosition=function(){return this.position},t.prototype.getFocalPoint=function(){return this.focalPoint},t.prototype.getDollyingStep=function(){return this.dollyingStep},t.prototype.getNear=function(){return this.near},t.prototype.getFar=function(){return this.far},t.prototype.getZoom=function(){return this.zoom},t.prototype.getOrthoMatrix=function(){return this.orthoMatrix},t.prototype.getView=function(){return this.view},t.prototype.setEnableUpdate=function(t){this.enableUpdate=t},t.prototype.setType=function(t,e){return this.type=t,this.type===A.EXPLORING?this.setWorldRotation(!0):this.setWorldRotation(!1),this._getAngles(),this.type===A.TRACKING&&void 0!==e&&this.setTrackingMode(e),this},t.prototype.setProjectionMode=function(t){return this.projectionMode=t,this},t.prototype.setTrackingMode=function(t){if(this.type!==A.TRACKING)throw Error("Impossible to set a tracking mode if the camera is not of tracking type");return this.trackingMode=t,this},t.prototype.setWorldRotation=function(t){return this.rotateWorld=t,this._getAngles(),this},t.prototype.getViewTransform=function(){return q.invert(q.create(),this.matrix)},t.prototype.getWorldTransform=function(){return this.matrix},t.prototype.jitterProjectionMatrix=function(t,e){var n=q.fromTranslation(q.create(),[t,e,0]);this.jitteredProjectionMatrix=q.multiply(q.create(),n,this.projectionMatrix)},t.prototype.clearJitterProjectionMatrix=function(){this.jitteredProjectionMatrix=void 0},t.prototype.setMatrix=function(t){return this.matrix=t,this._update(),this},t.prototype.setFov=function(t){return this.setPerspective(this.near,this.far,t,this.aspect),this},t.prototype.setAspect=function(t){return this.setPerspective(this.near,this.far,this.fov,t),this},t.prototype.setNear=function(t){return this.projectionMode===L.PERSPECTIVE?this.setPerspective(t,this.far,this.fov,this.aspect):this.setOrthographic(this.left,this.rright,this.top,this.bottom,t,this.far),this},t.prototype.setFar=function(t){return this.projectionMode===L.PERSPECTIVE?this.setPerspective(this.near,t,this.fov,this.aspect):this.setOrthographic(this.left,this.rright,this.top,this.bottom,this.near,t),this},t.prototype.setViewOffset=function(t,e,n,r,i,o){return this.aspect=t/e,void 0===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=r,this.view.width=i,this.view.height=o,this.projectionMode===L.PERSPECTIVE?this.setPerspective(this.near,this.far,this.fov,this.aspect):this.setOrthographic(this.left,this.rright,this.top,this.bottom,this.near,this.far),this},t.prototype.clearViewOffset=function(){return void 0!==this.view&&(this.view.enabled=!1),this.projectionMode===L.PERSPECTIVE?this.setPerspective(this.near,this.far,this.fov,this.aspect):this.setOrthographic(this.left,this.rright,this.top,this.bottom,this.near,this.far),this},t.prototype.setZoom=function(t){return this.zoom=t,this.projectionMode===L.ORTHOGRAPHIC?this.setOrthographic(this.left,this.rright,this.top,this.bottom,this.near,this.far):this.projectionMode===L.PERSPECTIVE&&this.setPerspective(this.near,this.far,this.fov,this.aspect),this},t.prototype.setZoomByViewportPoint=function(t,e){var n=this.canvas.viewport2Canvas({x:e[0],y:e[1]}),r=n.x,i=n.y,o=this.roll;this.rotate(0,0,-o),this.setPosition(r,i),this.setFocalPoint(r,i),this.setZoom(t),this.rotate(0,0,o);var a=this.canvas.viewport2Canvas({x:e[0],y:e[1]}),s=a.x,l=a.y,c=K.al(s-r,l-i,0),u=K.AK(c,this.right)/K.kE(this.right),h=K.AK(c,this.up)/K.kE(this.up);return this.pan(-u,-h),this},t.prototype.setPerspective=function(t,e,n,r){this.projectionMode=L.PERSPECTIVE,this.fov=n,this.near=t,this.far=e,this.aspect=r;var i,o,a,s,l,c,u,h,p,f=this.near*Math.tan(tD(.5*this.fov))/this.zoom,d=2*f,v=this.aspect*d,y=-.5*v;if(null===(p=this.view)||void 0===p?void 0:p.enabled){var g=this.view.fullWidth,m=this.view.fullHeight;y+=this.view.offsetX*v/g,f-=this.view.offsetY*d/m,v*=this.view.width/g,d*=this.view.height/m}return i=this.projectionMatrix,o=y,a=y+v,s=f,l=f-d,c=this.far,this.clipSpaceNearZ===k.ZERO?(u=-c/(c-t),h=-c*t/(c-t)):(u=-(c+t)/(c-t),h=-2*c*t/(c-t)),i[0]=2*t/(a-o),i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=2*t/(s-l),i[6]=0,i[7]=0,i[8]=(a+o)/(a-o),i[9]=(s+l)/(s-l),i[10]=u,i[11]=-1,i[12]=0,i[13]=0,i[14]=h,i[15]=0,q.scale(this.projectionMatrix,this.projectionMatrix,K.al(1,-1,1)),q.invert(this.projectionMatrixInverse,this.projectionMatrix),this.triggerUpdate(),this},t.prototype.setOrthographic=function(t,e,n,r,i,o){this.projectionMode=L.ORTHOGRAPHIC,this.rright=e,this.left=t,this.top=n,this.bottom=r,this.near=i,this.far=o;var a,s=(this.rright-this.left)/(2*this.zoom),l=(this.top-this.bottom)/(2*this.zoom),c=(this.rright+this.left)/2,u=(this.top+this.bottom)/2,h=c-s,p=c+s,f=u+l,d=u-l;if(null===(a=this.view)||void 0===a?void 0:a.enabled){var v=(this.rright-this.left)/this.view.fullWidth/this.zoom,y=(this.top-this.bottom)/this.view.fullHeight/this.zoom;h+=v*this.view.offsetX,p=h+v*this.view.width,f-=y*this.view.offsetY,d=f-y*this.view.height}return this.clipSpaceNearZ===k.NEGATIVE_ONE?q.ortho(this.projectionMatrix,h,p,d,f,i,o):q.orthoZO(this.projectionMatrix,h,p,d,f,i,o),q.scale(this.projectionMatrix,this.projectionMatrix,K.al(1,-1,1)),q.invert(this.projectionMatrixInverse,this.projectionMatrix),this._getOrthoMatrix(),this.triggerUpdate(),this},t.prototype.setPosition=function(t,e,n){void 0===e&&(e=this.position[1]),void 0===n&&(n=this.position[2]);var r=tI(t,e,n);return this._setPosition(r),this.setFocalPoint(this.focalPoint),this.triggerUpdate(),this},t.prototype.setFocalPoint=function(t,e,n){void 0===e&&(e=this.focalPoint[1]),void 0===n&&(n=this.focalPoint[2]);var r=K.al(0,1,0);if(this.focalPoint=tI(t,e,n),this.trackingMode===O.CINEMATIC){var i=K.$X(K.Ue(),this.focalPoint,this.position);t=i[0],e=i[1],n=i[2];var o=tG(Math.asin(e/K.kE(i))),a=90+tG(Math.atan2(n,t)),s=q.create();q.rotateY(s,s,tD(a)),q.rotateX(s,s,tD(o)),r=K.fF(K.Ue(),[0,1,0],s)}return q.invert(this.matrix,q.lookAt(q.create(),this.position,this.focalPoint,r)),this._getAxes(),this._getDistance(),this._getAngles(),this.triggerUpdate(),this},t.prototype.getDistance=function(){return this.distance},t.prototype.getDistanceVector=function(){return this.distanceVector},t.prototype.setDistance=function(t){if(this.distance===t||t<0)return this;this.distance=t,this.distance<2e-4&&(this.distance=2e-4),this.dollyingStep=this.distance/100;var e=K.Ue();t=this.distance;var n=this.forward,r=this.focalPoint;return e[0]=t*n[0]+r[0],e[1]=t*n[1]+r[1],e[2]=t*n[2]+r[2],this._setPosition(e),this.triggerUpdate(),this},t.prototype.setMaxDistance=function(t){return this.maxDistance=t,this},t.prototype.setMinDistance=function(t){return this.minDistance=t,this},t.prototype.setAzimuth=function(t){return this.azimuth=tL(t),this.computeMatrix(),this._getAxes(),this.type===A.ORBITING||this.type===A.EXPLORING?this._getPosition():this.type===A.TRACKING&&this._getFocalPoint(),this.triggerUpdate(),this},t.prototype.getAzimuth=function(){return this.azimuth},t.prototype.setElevation=function(t){return this.elevation=tL(t),this.computeMatrix(),this._getAxes(),this.type===A.ORBITING||this.type===A.EXPLORING?this._getPosition():this.type===A.TRACKING&&this._getFocalPoint(),this.triggerUpdate(),this},t.prototype.getElevation=function(){return this.elevation},t.prototype.setRoll=function(t){return this.roll=tL(t),this.computeMatrix(),this._getAxes(),this.type===A.ORBITING||this.type===A.EXPLORING?this._getPosition():this.type===A.TRACKING&&this._getFocalPoint(),this.triggerUpdate(),this},t.prototype.getRoll=function(){return this.roll},t.prototype._update=function(){this._getAxes(),this._getPosition(),this._getDistance(),this._getAngles(),this._getOrthoMatrix(),this.triggerUpdate()},t.prototype.computeMatrix=function(){var t=Q.yY(Q.Ue(),[0,0,1],tD(this.roll));q.identity(this.matrix);var e=Q.yY(Q.Ue(),[1,0,0],tD((this.rotateWorld&&this.type!==A.TRACKING||this.type===A.TRACKING?1:-1)*this.elevation)),n=Q.yY(Q.Ue(),[0,1,0],tD((this.rotateWorld&&this.type!==A.TRACKING||this.type===A.TRACKING?1:-1)*this.azimuth)),r=Q.Jp(Q.Ue(),n,e);r=Q.Jp(Q.Ue(),r,t);var i=q.fromQuat(q.create(),r);this.type===A.ORBITING||this.type===A.EXPLORING?(q.translate(this.matrix,this.matrix,this.focalPoint),q.multiply(this.matrix,this.matrix,i),q.translate(this.matrix,this.matrix,[0,0,this.distance])):this.type===A.TRACKING&&(q.translate(this.matrix,this.matrix,this.position),q.multiply(this.matrix,this.matrix,i))},t.prototype._setPosition=function(t,e,n){this.position=tI(t,e,n);var r=this.matrix;r[12]=this.position[0],r[13]=this.position[1],r[14]=this.position[2],r[15]=1,this._getOrthoMatrix()},t.prototype._getAxes=function(){K.JG(this.right,tI($.fF($.Ue(),[1,0,0,0],this.matrix))),K.JG(this.up,tI($.fF($.Ue(),[0,1,0,0],this.matrix))),K.JG(this.forward,tI($.fF($.Ue(),[0,0,1,0],this.matrix))),K.Fv(this.right,this.right),K.Fv(this.up,this.up),K.Fv(this.forward,this.forward)},t.prototype._getAngles=function(){var t=this.distanceVector[0],e=this.distanceVector[1],n=this.distanceVector[2],r=K.kE(this.distanceVector);if(0===r){this.elevation=0,this.azimuth=0;return}this.type===A.TRACKING?(this.elevation=tG(Math.asin(e/r)),this.azimuth=tG(Math.atan2(-t,-n))):this.rotateWorld?(this.elevation=tG(Math.asin(e/r)),this.azimuth=tG(Math.atan2(-t,-n))):(this.elevation=-tG(Math.asin(e/r)),this.azimuth=-tG(Math.atan2(-t,-n)))},t.prototype._getPosition=function(){K.JG(this.position,tI($.fF($.Ue(),[0,0,0,1],this.matrix))),this._getDistance()},t.prototype._getFocalPoint=function(){K.kK(this.distanceVector,[0,0,-this.distance],J.xO(J.Ue(),this.matrix)),K.IH(this.focalPoint,this.position,this.distanceVector),this._getDistance()},t.prototype._getDistance=function(){this.distanceVector=K.$X(K.Ue(),this.focalPoint,this.position),this.distance=K.kE(this.distanceVector),this.dollyingStep=this.distance/100},t.prototype._getOrthoMatrix=function(){if(this.projectionMode===L.ORTHOGRAPHIC){var t=this.position,e=Q.yY(Q.Ue(),[0,0,1],-this.roll*Math.PI/180);q.fromRotationTranslationScaleOrigin(this.orthoMatrix,e,K.al((this.rright-this.left)/2-t[0],(this.top-this.bottom)/2-t[1],0),K.al(this.zoom,this.zoom,1),t)}},t.prototype.triggerUpdate=function(){if(this.enableUpdate){var t=this.getViewTransform(),e=q.multiply(q.create(),this.getPerspective(),t);this.getFrustum().extractFromVPMatrix(e),this.eventEmitter.emit(t$.UPDATED)}},t.prototype.rotate=function(t,e,n){throw Error(tq)},t.prototype.pan=function(t,e){throw Error(tq)},t.prototype.dolly=function(t){throw Error(tq)},t.prototype.createLandmark=function(t,e){throw Error(tq)},t.prototype.gotoLandmark=function(t,e){throw Error(tq)},t.prototype.cancelLandmarkAnimation=function(){throw Error(tq)},t}();function t0(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw TypeError("Expected a function");var n=function(){for(var r=[],i=0;i=I.kEms&&t=B.kUnitType&&this.getType()<=B.kClampType},t}(),t8=function(t){function e(e){var n=t.call(this)||this;return n.colorSpace=e,n}return(0,W.ZT)(e,t),e.prototype.getType=function(){return B.kColorType},e.prototype.to=function(t){return this},e}(t9);(v=U||(U={}))[v.Constant=0]="Constant",v[v.LinearGradient=1]="LinearGradient",v[v.RadialGradient=2]="RadialGradient";var t6=function(t){function e(e,n){var r=t.call(this)||this;return r.type=e,r.value=n,r}return(0,W.ZT)(e,t),e.prototype.clone=function(){return new e(this.type,this.value)},e.prototype.buildCSSText=function(t,e,n){return n},e.prototype.getType=function(){return B.kColorType},e}(t9),t7=function(t){function e(e){var n=t.call(this)||this;return n.value=e,n}return(0,W.ZT)(e,t),e.prototype.clone=function(){return new e(this.value)},e.prototype.getType=function(){return B.kKeywordType},e.prototype.buildCSSText=function(t,e,n){return n+this.value},e}(t9),et=t0(function(t){return void 0===t&&(t=""),t.replace(/-([a-z])/g,function(t){return t[1].toUpperCase()})}),ee=function(t){return t.split("").map(function(t,e){return t.toUpperCase()===t?"".concat(0!==e?"-":"").concat(t.toLowerCase()):t}).join("")};function en(t){return"function"==typeof t}var er={d:{alias:"path"},strokeDasharray:{alias:"lineDash"},strokeWidth:{alias:"lineWidth"},textAnchor:{alias:"textAlign"},src:{alias:"img"}},ei=t0(function(t){var e=et(t),n=er[e];return(null==n?void 0:n.alias)||e}),eo=function(t,e){void 0===e&&(e="");var n="";return Number.isFinite(t)?(function(t){if(!t)throw Error()}(Number.isNaN(t)),n="NaN"):n=t>0?"infinity":"-infinity",n+e},ea=function(t){return t3(t2(t))},es=function(t){function e(e,n){void 0===n&&(n=I.kNumber);var r,i,o=t.call(this)||this;return i="string"==typeof n?(r=n)?"number"===r?I.kNumber:"percent"===r||"%"===r?I.kPercentage:t1.find(function(t){return t.name===r}).unit_type:I.kUnknown:n,o.unit=i,o.value=e,o}return(0,W.ZT)(e,t),e.prototype.clone=function(){return new e(this.value,this.unit)},e.prototype.equals=function(t){return this.value===t.value&&this.unit===t.unit},e.prototype.getType=function(){return B.kUnitType},e.prototype.convertTo=function(t){if(this.unit===t)return new e(this.value,this.unit);var n=ea(this.unit);if(n!==ea(t)||n===I.kUnknown)return null;var r=t5(this.unit)/t5(t);return new e(this.value*r,t)},e.prototype.buildCSSText=function(t,e,n){var r;switch(this.unit){case I.kUnknown:break;case I.kInteger:r=Number(this.value).toFixed(0);break;case I.kNumber:case I.kPercentage:case I.kEms:case I.kRems:case I.kPixels:case I.kDegrees:case I.kRadians:case I.kGradians:case I.kMilliseconds:case I.kSeconds:case I.kTurns:var i=this.value,o=t4(this.unit);if(i<-999999||i>999999){var a=t4(this.unit);r=!Number.isFinite(i)||Number.isNaN(i)?eo(i,a):i+(a||"")}else r="".concat(i).concat(o)}return n+r},e}(t9),el=new es(0,"px");new es(1,"px");var ec=new es(0,"deg"),eu=function(t){function e(e,n,r,i,o){void 0===i&&(i=1),void 0===o&&(o=!1);var a=t.call(this,"rgb")||this;return a.r=e,a.g=n,a.b=r,a.alpha=i,a.isNone=o,a}return(0,W.ZT)(e,t),e.prototype.clone=function(){return new e(this.r,this.g,this.b,this.alpha)},e.prototype.buildCSSText=function(t,e,n){return n+"rgba(".concat(this.r,",").concat(this.g,",").concat(this.b,",").concat(this.alpha,")")},e}(t8),eh=new t7("unset"),ep={"":eh,unset:eh,initial:new t7("initial"),inherit:new t7("inherit")},ef=function(t){return ep[t]||(ep[t]=new t7(t)),ep[t]},ed=new eu(0,0,0,0,!0),ev=new eu(0,0,0,0),ey=t0(function(t,e,n,r){return new eu(t,e,n,r)},function(t,e,n,r){return"rgba(".concat(t,",").concat(e,",").concat(n,",").concat(r,")")}),eg=function(t,e){return void 0===e&&(e=I.kNumber),new es(t,e)},em=new es(50,"%");(y=Z||(Z={}))[y.Standard=0]="Standard",(g=V||(V={}))[g.ADDED=0]="ADDED",g[g.REMOVED=1]="REMOVED",g[g.Z_INDEX_CHANGED=2]="Z_INDEX_CHANGED";var eE={absolutePath:[],hasArc:!1,segments:[],polygons:[],polylines:[],curve:null,totalLength:0,rect:new tK(0,0,0,0)};(m=Y||(Y={})).COORDINATE="",m.COLOR="",m.PAINT="",m.NUMBER="",m.ANGLE="",m.OPACITY_VALUE="",m.SHADOW_BLUR="",m.LENGTH="",m.PERCENTAGE="",m.LENGTH_PERCENTAGE=" | ",m.LENGTH_PERCENTAGE_12="[ | ]{1,2}",m.LENGTH_PERCENTAGE_14="[ | ]{1,4}",m.LIST_OF_POINTS="",m.PATH="",m.FILTER="",m.Z_INDEX="",m.OFFSET_DISTANCE="",m.DEFINED_PATH="",m.MARKER="",m.TRANSFORM="",m.TRANSFORM_ORIGIN="",m.TEXT="",m.TEXT_TRANSFORM="";var ex=function(){var t={linearGradient:/^(linear\-gradient)/i,repeatingLinearGradient:/^(repeating\-linear\-gradient)/i,radialGradient:/^(radial\-gradient)/i,repeatingRadialGradient:/^(repeating\-radial\-gradient)/i,conicGradient:/^(conic\-gradient)/i,sideOrCorner:/^to (left (top|bottom)|right (top|bottom)|top (left|right)|bottom (left|right)|left|right|top|bottom)/i,extentKeywords:/^(closest\-side|closest\-corner|farthest\-side|farthest\-corner|contain|cover)/,positionKeywords:/^(left|center|right|top|bottom)/i,pixelValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))px/,percentageValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))\%/,emValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))em/,angleValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))deg/,startCall:/^\(/,endCall:/^\)/,comma:/^,/,hexColor:/^\#([0-9a-fA-F]+)/,literalColor:/^([a-zA-Z]+)/,rgbColor:/^rgb/i,rgbaColor:/^rgba/i,number:/^(([0-9]*\.[0-9]+)|([0-9]+\.?))/},e="";function n(t){throw Error(e+": "+t)}function r(){return i("linear-gradient",t.linearGradient,a)||i("repeating-linear-gradient",t.repeatingLinearGradient,a)||i("radial-gradient",t.radialGradient,s)||i("repeating-radial-gradient",t.repeatingRadialGradient,s)||i("conic-gradient",t.conicGradient,s)}function i(e,r,i){return o(r,function(r){var o=i();return o&&!m(t.comma)&&n("Missing comma before color stops"),{type:e,orientation:o,colorStops:p(f)}})}function o(e,r){var i=m(e);if(i){m(t.startCall)||n("Missing (");var o=r(i);return m(t.endCall)||n("Missing )"),o}}function a(){return g("directional",t.sideOrCorner,1)||g("angular",t.angleValue,1)}function s(){var n,r,i=l();return i&&((n=[]).push(i),r=e,m(t.comma)&&((i=l())?n.push(i):e=r)),n}function l(){var t,e,n=((t=g("shape",/^(circle)/i,0))&&(t.style=y()||c()),t||((e=g("shape",/^(ellipse)/i,0))&&(e.style=v()||c()),e));if(n)n.at=u();else{var r=c();if(r){n=r;var i=u();i&&(n.at=i)}else{var o=h();o&&(n={type:"default-radial",at:o})}}return n}function c(){return g("extent-keyword",t.extentKeywords,1)}function u(){if(g("position",/^at/,0)){var t=h();return t||n("Missing positioning value"),t}}function h(){var t={x:v(),y:v()};if(t.x||t.y)return{type:"position",value:t}}function p(e){var r=e(),i=[];if(r)for(i.push(r);m(t.comma);)(r=e())?i.push(r):n("One extra comma");return i}function f(){var e=g("hex",t.hexColor,1)||o(t.rgbaColor,function(){return{type:"rgba",value:p(d)}})||o(t.rgbColor,function(){return{type:"rgb",value:p(d)}})||g("literal",t.literalColor,0);return e||n("Expected color definition"),e.length=v(),e}function d(){return m(t.number)[1]}function v(){return g("%",t.percentageValue,1)||g("position-keyword",t.positionKeywords,1)||y()}function y(){return g("px",t.pixelValue,1)||g("em",t.emValue,1)}function g(t,e,n){var r=m(e);if(r)return{type:t,value:r[n]}}function m(t){var n=/^[\n\r\t\s]+/.exec(e);n&&E(n[0].length);var r=t.exec(e);return r&&E(r[0].length),r}function E(t){e=e.substring(t)}return function(t){var i;return e=t,i=p(r),e.length>0&&n("Invalid input not EOF"),i}}();function eb(t,e,n){var r=tD(n.value),i=0+t/2,o=0+e/2,a=Math.abs(t*Math.cos(r))+Math.abs(e*Math.sin(r));return{x1:i-Math.cos(r)*a/2,y1:o-Math.sin(r)*a/2,x2:i+Math.cos(r)*a/2,y2:o+Math.sin(r)*a/2}}function eT(t,e,n,r,i){var o=n.value,a=r.value;n.unit===I.kPercentage&&(o=n.value/100*t),r.unit===I.kPercentage&&(a=r.value/100*e);var s=Math.max((0,tn.y)([0,0],[o,a]),(0,tn.y)([0,e],[o,a]),(0,tn.y)([t,e],[o,a]),(0,tn.y)([t,0],[o,a]));return i&&(i instanceof es?s=i.value:i instanceof t7&&("closest-side"===i.value?s=Math.min(o,t-o,a,e-a):"farthest-side"===i.value?s=Math.max(o,t-o,a,e-a):"closest-corner"===i.value&&(s=Math.min((0,tn.y)([0,0],[o,a]),(0,tn.y)([0,e],[o,a]),(0,tn.y)([t,e],[o,a]),(0,tn.y)([t,0],[o,a]))))),{x:o,y:a,r:s}}var eP=/^l\s*\(\s*([\d.]+)\s*\)\s*(.*)/i,eS=/^r\s*\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*\)\s*(.*)/i,eN=/^p\s*\(\s*([axyn])\s*\)\s*(.*)/i,eC=/[\d.]+:(#[^\s]+|[^\)]+\))/gi,ew={left:180,top:-90,bottom:90,right:0,"left top":225,"top left":225,"left bottom":135,"bottom left":135,"right top":-45,"top right":-45,"right bottom":45,"bottom right":45},eM=t0(function(t){return eg("angular"===t.type?Number(t.value):ew[t.value]||0,"deg")}),ek=t0(function(t){var e=50,n=50,r="%",i="%";if((null==t?void 0:t.type)==="position"){var o=t.value,a=o.x,s=o.y;(null==a?void 0:a.type)==="position-keyword"&&("left"===a.value?e=0:"center"===a.value?e=50:"right"===a.value?e=100:"top"===a.value?n=0:"bottom"===a.value&&(n=100)),(null==s?void 0:s.type)==="position-keyword"&&("left"===s.value?e=0:"center"===s.value?n=50:"right"===s.value?e=100:"top"===s.value?n=0:"bottom"===s.value&&(n=100)),((null==a?void 0:a.type)==="px"||(null==a?void 0:a.type)==="%"||(null==a?void 0:a.type)==="em")&&(r=null==a?void 0:a.type,e=Number(a.value)),((null==s?void 0:s.type)==="px"||(null==s?void 0:s.type)==="%"||(null==s?void 0:s.type)==="em")&&(i=null==s?void 0:s.type,n=Number(s.value))}return{cx:eg(e,r),cy:eg(n,i)}}),eR=t0(function(t){if(t.indexOf("linear")>-1||t.indexOf("radial")>-1){var e;return ex(t).map(function(t){var e=t.type,n=t.orientation,r=t.colorStops;!function(t){var e,n,r,i=t.length;t[i-1].length=null!==(e=t[i-1].length)&&void 0!==e?e:{type:"%",value:"100"},i>1&&(t[0].length=null!==(n=t[0].length)&&void 0!==n?n:{type:"%",value:"0"});for(var o=0,a=Number(t[0].length.value),s=1;s=0)return eg(Number(e),"px");if("deg".search(t)>=0)return eg(Number(e),"deg")}var n=[];e=e.replace(t,function(t){return n.push(t),"U"+t});var r="U("+t.source+")";return n.map(function(t){return eg(Number(e.replace(RegExp("U"+t,"g"),"").replace(RegExp(r,"g"),"*0")),t)})[0]}var eG=t0(function(t){return eD(/px/g,t)});t0(function(t){return eD(RegExp("%","g"),t)});var e_=function(t){return(0,te.Z)(t)||isFinite(Number(t))?eg(Number(t)||0,"px"):eD(RegExp("px|%|em|rem","g"),t)},eF=t0(function(t){return eD(RegExp("deg|rad|grad|turn","g"),t)});function eB(t){var e=0;return t.unit===I.kDegrees?e=t.value:t.unit===I.kRadians?e=tG(Number(t.value)):t.unit===I.kTurns&&(e=360*Number(t.value)),e}function eU(t,e){var n;return(Array.isArray(t)?n=t.map(function(t){return Number(t)}):(0,ti.Z)(t)?n=t.split(" ").map(function(t){return Number(t)}):(0,te.Z)(t)&&(n=[t]),2===e)?1===n.length?[n[0],n[0]]:[n[0],n[1]]:1===n.length?[n[0],n[0],n[0],n[0]]:2===n.length?[n[0],n[1],n[0],n[1]]:3===n.length?[n[0],n[1],n[2],n[1]]:[n[0],n[1],n[2],n[3]]}function eZ(t){return(0,ti.Z)(t)?t.split(" ").map(function(t){return e_(t)}):t.map(function(t){return e_(t.toString())})}function eV(t,e,n){if(0===t.value)return 0;if(t.unit===I.kPixels)return Number(t.value);if(t.unit===I.kPercentage&&n){var r=n.nodeName===M.GROUP?n.getLocalBounds():n.geometry.contentBounds;return t.value/100*r.halfExtents[e]*2}return 0}var eY=["blur","brightness","drop-shadow","contrast","grayscale","sepia","saturate","hue-rotate","invert"];function eX(t){if(void 0===t&&(t=""),"none"===(t=t.toLowerCase().trim()))return[];for(var e,n=/\s*([\w-]+)\(([^)]*)\)/g,r=[],i=0;(e=n.exec(t))&&e.index===i;)if(i=e.index+e[0].length,eY.indexOf(e[1])>-1&&r.push({name:e[1],params:e[2].split(" ").map(function(t){return eD(/deg|rad|grad|turn|px|%/g,t)||eL(t)})}),n.lastIndex===t.length)return r;return[]}function eH(t){return t.toString()}var ej=t0(function(t){return"number"==typeof t?eg(t):/^\s*[-+]?(\d*\.)?\d+\s*$/.test(t)?eg(Number(t)):eg(0)});function eW(t,e){return[t,e,eH]}function ez(t,e){return function(n,r){return[n,r,function(n){return eH((0,to.Z)(n,t,e))}]}}function eK(t,e){if(t.length===e.length)return[t,e,function(t){return t}]}function eq(t){return 0===t.parsedStyle.path.totalLength&&(t.parsedStyle.path.totalLength=(0,ta.D)(t.parsedStyle.path.absolutePath)),t.parsedStyle.path.totalLength}function eJ(t,e){return t[0]===e[0]&&t[1]===e[1]}function e$(t,e){var n=t.prePoint,r=t.currentPoint,i=t.nextPoint,o=Math.pow(r[0]-n[0],2)+Math.pow(r[1]-n[1],2),a=Math.pow(r[0]-i[0],2)+Math.pow(r[1]-i[1],2),s=Math.acos((o+a-(Math.pow(n[0]-i[0],2)+Math.pow(n[1]-i[1],2)))/(2*Math.sqrt(o)*Math.sqrt(a)));if(!s||0===Math.sin(s)||(0,tc.Z)(s,0))return{xExtra:0,yExtra:0};var l=Math.abs(Math.atan2(i[1]-r[1],i[0]-r[0])),c=Math.abs(Math.atan2(i[0]-r[0],i[1]-r[1]));return{xExtra:Math.cos(s/2-(l=l>Math.PI/2?Math.PI-l:l))*(e/2*(1/Math.sin(s/2)))-e/2||0,yExtra:Math.cos((c=c>Math.PI/2?Math.PI-c:c)-s/2)*(e/2*(1/Math.sin(s/2)))-e/2||0}}function eQ(t,e){return[e[0]+(e[0]-t[0]),e[1]+(e[1]-t[1])]}t0(function(t){return(0,ti.Z)(t)?t.split(" ").map(ej):t.map(ej)});var e0=function(t,e){var n=t.x*e.x+t.y*e.y,r=Math.sqrt((Math.pow(t.x,2)+Math.pow(t.y,2))*(Math.pow(e.x,2)+Math.pow(e.y,2)));return(t.x*e.y-t.y*e.x<0?-1:1)*Math.acos(n/r)},e1=function(t,e,n,r,i,o,a,s){e=Math.abs(e),n=Math.abs(n);var l=tD(r=(0,tu.Z)(r,360));if(t.x===a.x&&t.y===a.y)return{x:t.x,y:t.y,ellipticalArcAngle:0};if(0===e||0===n)return{x:0,y:0,ellipticalArcAngle:0};var c=(t.x-a.x)/2,u=(t.y-a.y)/2,h={x:Math.cos(l)*c+Math.sin(l)*u,y:-Math.sin(l)*c+Math.cos(l)*u},p=Math.pow(h.x,2)/Math.pow(e,2)+Math.pow(h.y,2)/Math.pow(n,2);p>1&&(e=Math.sqrt(p)*e,n=Math.sqrt(p)*n);var f=(Math.pow(e,2)*Math.pow(n,2)-Math.pow(e,2)*Math.pow(h.y,2)-Math.pow(n,2)*Math.pow(h.x,2))/(Math.pow(e,2)*Math.pow(h.y,2)+Math.pow(n,2)*Math.pow(h.x,2)),d=(i!==o?1:-1)*Math.sqrt(f=f<0?0:f),v={x:d*(e*h.y/n),y:d*(-(n*h.x)/e)},y={x:Math.cos(l)*v.x-Math.sin(l)*v.y+(t.x+a.x)/2,y:Math.sin(l)*v.x+Math.cos(l)*v.y+(t.y+a.y)/2},g={x:(h.x-v.x)/e,y:(h.y-v.y)/n},m=e0({x:1,y:0},g),E=e0(g,{x:(-h.x-v.x)/e,y:(-h.y-v.y)/n});!o&&E>0?E-=2*Math.PI:o&&E<0&&(E+=2*Math.PI);var x=m+(E%=2*Math.PI)*s,b=e*Math.cos(x),T=n*Math.sin(x);return{x:Math.cos(l)*b-Math.sin(l)*T+y.x,y:Math.sin(l)*b+Math.cos(l)*T+y.y,ellipticalArcStartAngle:m,ellipticalArcEndAngle:m+E,ellipticalArcAngle:x,ellipticalArcCenter:y,resultantRx:e,resultantRy:n}};function e2(t,e,n){void 0===n&&(n=!0);var r=t.arcParams,i=r.rx,o=void 0===i?0:i,a=r.ry,s=void 0===a?0:a,l=r.xRotation,c=r.arcFlag,u=r.sweepFlag,h=e1({x:t.prePoint[0],y:t.prePoint[1]},o,s,l,!!c,!!u,{x:t.currentPoint[0],y:t.currentPoint[1]},e),p=e1({x:t.prePoint[0],y:t.prePoint[1]},o,s,l,!!c,!!u,{x:t.currentPoint[0],y:t.currentPoint[1]},n?e+.005:e-.005),f=p.x-h.x,d=p.y-h.y,v=Math.sqrt(f*f+d*d);return{x:-f/v,y:-d/v}}function e3(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function e5(t,e){return e3(t)*e3(e)?(t[0]*e[0]+t[1]*e[1])/(e3(t)*e3(e)):1}function e4(t,e){return(t[0]*e[1]0?1:-1,h=e>0?1:-1,p=u+h!==0?1:0;return[["M",u*a+n,r],["L",t-u*s+n,r],s?["A",s,s,0,0,p,t+n,h*s+r]:null,["L",t+n,e-h*l+r],l?["A",l,l,0,0,p,t+n-u*l,e+r]:null,["L",n+u*c,e+r],c?["A",c,c,0,0,p,n,e+r-h*c]:null,["L",n,h*a+r],a?["A",a,a,0,0,p,u*a+n,r]:null,["Z"]].filter(function(t){return t})}return[["M",n,r],["L",n+t,r],["L",n+t,r+e],["L",n,r+e],["Z"]]}(D,_,B,Z,V&&V.some(function(t){return 0!==t})&&V.map(function(t){return(0,to.Z)(t,0,Math.min(Math.abs(D)/2,Math.abs(_)/2))}));break;case M.PATH:var Y=t.parsedStyle.path.absolutePath;p=(0,W.ev)([],(0,W.CR)(Y),!1)}if(p.length)return o=p,a=e,c=void 0===(l=(s=t.parsedStyle).defX)?0:l,h=void 0===(u=s.defY)?0:u,o.reduce(function(t,e){var n="";if("M"===e[0]||"L"===e[0]){var r=K.al(e[1]-c,e[2]-h,0);a&&K.fF(r,r,a),n="".concat(e[0]).concat(r[0],",").concat(r[1])}else if("Z"===e[0])n=e[0];else if("C"===e[0]){var i=K.al(e[1]-c,e[2]-h,0),o=K.al(e[3]-c,e[4]-h,0),s=K.al(e[5]-c,e[6]-h,0);a&&(K.fF(i,i,a),K.fF(o,o,a),K.fF(s,s,a)),n="".concat(e[0]).concat(i[0],",").concat(i[1],",").concat(o[0],",").concat(o[1],",").concat(s[0],",").concat(s[1])}else if("A"===e[0]){var l=K.al(e[6]-c,e[7]-h,0);a&&K.fF(l,l,a),n="".concat(e[0]).concat(e[1],",").concat(e[2],",").concat(e[3],",").concat(e[4],",").concat(e[5],",").concat(l[0],",").concat(l[1])}else if("Q"===e[0]){var i=K.al(e[1]-c,e[2]-h,0),o=K.al(e[3]-c,e[4]-h,0);a&&(K.fF(i,i,a),K.fF(o,o,a)),n="".concat(e[0]).concat(e[1],",").concat(e[2],",").concat(e[3],",").concat(e[4],"}")}return t+n},"")}var e6=function(t){if(""===t||Array.isArray(t)&&0===t.length)return{absolutePath:[],hasArc:!1,segments:[],polygons:[],polylines:[],curve:null,totalLength:0,rect:{x:0,y:0,width:0,height:0}};try{e=(0,th.A)(t)}catch(n){e=(0,th.A)(""),console.error("[g]: Invalid SVG Path definition: ".concat(t))}!function(t){for(var e=0;e0&&n.push(r),{polygons:e,polylines:n}}(e),i=r.polygons,o=r.polylines,a=function(t){for(var e=[],n=null,r=null,i=null,o=0,a=t.length,s=0;s1&&(n*=Math.sqrt(f),r*=Math.sqrt(f));var d=n*n*(p*p)+r*r*(h*h),v=d?Math.sqrt((n*n*(r*r)-d)/d):1;o===a&&(v*=-1),isNaN(v)&&(v=0);var y=r?v*n*p/r:0,g=n?-(v*r)*h/n:0,m=(s+c)/2+Math.cos(i)*y-Math.sin(i)*g,E=(l+u)/2+Math.sin(i)*y+Math.cos(i)*g,x=[(h-y)/n,(p-g)/r],b=[(-1*h-y)/n,(-1*p-g)/r],T=e4([1,0],x),P=e4(x,b);return -1>=e5(x,b)&&(P=Math.PI),e5(x,b)>=1&&(P=0),0===a&&P>0&&(P-=2*Math.PI),1===a&&P<0&&(P+=2*Math.PI),{cx:m,cy:E,rx:eJ(t,[c,u])?0:n,ry:eJ(t,[c,u])?0:r,startAngle:T,endAngle:T+P,xRotation:i,arcFlag:o,sweepFlag:a}}(n,l);u.arcParams=h}if("Z"===c)n=i,r=t[o+1];else{var p=l.length;n=[l[p-2],l[p-1]]}r&&"Z"===r[0]&&(r=t[o],e[o]&&(e[o].prePoint=n)),u.currentPoint=n,e[o]&&eJ(n,e[o].currentPoint)&&(e[o].prePoint=u.prePoint);var f=r?[r[r.length-2],r[r.length-1]]:null;u.nextPoint=f;var d=u.prePoint;if(["L","H","V"].includes(c))u.startTangent=[d[0]-n[0],d[1]-n[1]],u.endTangent=[n[0]-d[0],n[1]-d[1]];else if("Q"===c){var v=[l[1],l[2]];u.startTangent=[d[0]-v[0],d[1]-v[1]],u.endTangent=[n[0]-v[0],n[1]-v[1]]}else if("T"===c){var y=e[s-1],v=eQ(y.currentPoint,d);"Q"===y.command?(u.command="Q",u.startTangent=[d[0]-v[0],d[1]-v[1]],u.endTangent=[n[0]-v[0],n[1]-v[1]]):(u.command="TL",u.startTangent=[d[0]-n[0],d[1]-n[1]],u.endTangent=[n[0]-d[0],n[1]-d[1]])}else if("C"===c){var g=[l[1],l[2]],m=[l[3],l[4]];u.startTangent=[d[0]-g[0],d[1]-g[1]],u.endTangent=[n[0]-m[0],n[1]-m[1]],0===u.startTangent[0]&&0===u.startTangent[1]&&(u.startTangent=[g[0]-m[0],g[1]-m[1]]),0===u.endTangent[0]&&0===u.endTangent[1]&&(u.endTangent=[m[0]-g[0],m[1]-g[1]])}else if("S"===c){var y=e[s-1],g=eQ(y.currentPoint,d),m=[l[1],l[2]];"C"===y.command?(u.command="C",u.startTangent=[d[0]-g[0],d[1]-g[1]],u.endTangent=[n[0]-m[0],n[1]-m[1]]):(u.command="SQ",u.startTangent=[d[0]-m[0],d[1]-m[1]],u.endTangent=[n[0]-m[0],n[1]-m[1]])}else if("A"===c){var E=e2(u,0),x=E.x,b=E.y,T=e2(u,1,!1),P=T.x,S=T.y;u.startTangent=[x,b],u.endTangent=[P,S]}e.push(u)}return e}(e),s=function(t,e){for(var n=[],r=[],i=[],o=0;oMath.abs(q.determinant(tU))))){var a=tB[3],s=tB[7],l=tB[11],c=tB[12],u=tB[13],h=tB[14],p=tB[15];if(0!==a||0!==s||0!==l){if(tZ[0]=a,tZ[1]=s,tZ[2]=l,tZ[3]=p,!q.invert(tU,tU))return;q.transpose(tU,tU),$.fF(i,tZ,tU)}else i[0]=i[1]=i[2]=0,i[3]=1;if(e[0]=c,e[1]=u,e[2]=h,tV[0][0]=tB[0],tV[0][1]=tB[1],tV[0][2]=tB[2],tV[1][0]=tB[4],tV[1][1]=tB[5],tV[1][2]=tB[6],tV[2][0]=tB[8],tV[2][1]=tB[9],tV[2][2]=tB[10],n[0]=K.kE(tV[0]),K.Fv(tV[0],tV[0]),r[0]=K.AK(tV[0],tV[1]),tX(tV[1],tV[1],tV[0],1,-r[0]),n[1]=K.kE(tV[1]),K.Fv(tV[1],tV[1]),r[0]/=n[1],r[1]=K.AK(tV[0],tV[2]),tX(tV[2],tV[2],tV[0],1,-r[1]),r[2]=K.AK(tV[1],tV[2]),tX(tV[2],tV[2],tV[1],1,-r[2]),n[2]=K.kE(tV[2]),K.Fv(tV[2],tV[2]),r[1]/=n[2],r[2]/=n[2],K.kC(tY,tV[1],tV[2]),0>K.AK(tV[0],tY))for(var f=0;f<3;f++)n[f]*=-1,tV[f][0]*=-1,tV[f][1]*=-1,tV[f][2]*=-1;o[0]=.5*Math.sqrt(Math.max(1+tV[0][0]-tV[1][1]-tV[2][2],0)),o[1]=.5*Math.sqrt(Math.max(1-tV[0][0]+tV[1][1]-tV[2][2],0)),o[2]=.5*Math.sqrt(Math.max(1-tV[0][0]-tV[1][1]+tV[2][2],0)),o[3]=.5*Math.sqrt(Math.max(1+tV[0][0]+tV[1][1]+tV[2][2],0)),tV[2][1]>tV[1][2]&&(o[0]=-o[0]),tV[0][2]>tV[2][0]&&(o[1]=-o[1]),tV[1][0]>tV[0][1]&&(o[2]=-o[2])}}(0===t.length?[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]:t.map(nl).reduce(nc),e,n,r,i,o),[[e,n,r,o,i]]}var nh=function(){function t(t,e){for(var n=[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],r=0;r<4;r++)for(var i=0;i<4;i++)for(var o=0;o<4;o++)n[r][i]+=e[r][o]*t[o][i];return n}return function(e,n,r,i,o){for(var a,s=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]],l=0;l<4;l++)s[l][3]=o[l];for(var l=0;l<3;l++)for(var c=0;c<3;c++)s[3][l]+=e[c]*s[c][l];var u=i[0],h=i[1],p=i[2],f=i[3],d=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]];d[0][0]=1-2*(h*h+p*p),d[0][1]=2*(u*h-p*f),d[0][2]=2*(u*p+h*f),d[1][0]=2*(u*h+p*f),d[1][1]=1-2*(u*u+p*p),d[1][2]=2*(h*p-u*f),d[2][0]=2*(u*p-h*f),d[2][1]=2*(h*p+u*f),d[2][2]=1-2*(u*u+h*h),s=t(s,d);var v=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]];r[2]&&(v[2][1]=r[2],s=t(s,v)),r[1]&&(v[2][1]=0,v[2][0]=r[0],s=t(s,v)),r[0]&&(v[2][0]=0,v[1][0]=r[0],s=t(s,v));for(var l=0;l<3;l++)for(var c=0;c<3;c++)s[l][c]*=n[l];return 0==(a=s)[0][2]&&0==a[0][3]&&0==a[1][2]&&0==a[1][3]&&0==a[2][0]&&0==a[2][1]&&1==a[2][2]&&0==a[2][3]&&0==a[3][2]&&1==a[3][3]?[s[0][0],s[0][1],s[1][0],s[1][1],s[3][0],s[3][1]]:s[0].concat(s[1],s[2],s[3])}}();function np(t){return t.toFixed(6).replace(".000000","")}function nf(t,e){var n,r;return(t.decompositionPair!==e&&(t.decompositionPair=e,n=nu(t)),e.decompositionPair!==t&&(e.decompositionPair=t,r=nu(e)),null===n[0]||null===r[0])?[[!1],[!0],function(n){return n?e[0].d:t[0].d}]:(n[0].push(0),r[0].push(1),[n,r,function(t){var e=function(t,e,n){var r=function(t,e){for(var n=0,r=0;r"].calculator(null,null,{value:e.textTransform},t,null),e.clipPath&&this.runtime.CSSPropertySyntaxFactory[""].calculator("clipPath",o,e.clipPath,t,this.runtime),e.offsetPath&&this.runtime.CSSPropertySyntaxFactory[""].calculator("offsetPath",a,e.offsetPath,t,this.runtime),e.anchor&&(t.parsedStyle.anchor=eU(e.anchor,2)),e.transform&&(t.parsedStyle.transform=ns(e.transform)),e.transformOrigin&&(t.parsedStyle.transformOrigin=ng(e.transformOrigin)),e.markerStart&&(t.parsedStyle.markerStart=this.runtime.CSSPropertySyntaxFactory[""].calculator(null,e.markerStart,e.markerStart,null,null)),e.markerEnd&&(t.parsedStyle.markerEnd=this.runtime.CSSPropertySyntaxFactory[""].calculator(null,e.markerEnd,e.markerEnd,null,null)),e.markerMid&&(t.parsedStyle.markerMid=this.runtime.CSSPropertySyntaxFactory[""].calculator("",e.markerMid,e.markerMid,null,null)),(t.nodeName!==M.CIRCLE&&t.nodeName!==M.ELLIPSE||(0,tr.Z)(e.cx)&&(0,tr.Z)(e.cy))&&(t.nodeName!==M.RECT&&t.nodeName!==M.IMAGE&&t.nodeName!==M.GROUP&&t.nodeName!==M.HTML&&t.nodeName!==M.TEXT&&t.nodeName!==M.MESH||(0,tr.Z)(e.x)&&(0,tr.Z)(e.y)&&(0,tr.Z)(e.z))&&(t.nodeName!==M.LINE||(0,tr.Z)(e.x1)&&(0,tr.Z)(e.y1)&&(0,tr.Z)(e.z1)&&(0,tr.Z)(e.x2)&&(0,tr.Z)(e.y2)&&(0,tr.Z)(e.z2))||this.runtime.CSSPropertySyntaxFactory[""].postProcessor(t,i),(0,tr.Z)(e.zIndex)||this.runtime.CSSPropertySyntaxFactory[""].postProcessor(t,i),e.path&&this.runtime.CSSPropertySyntaxFactory[""].postProcessor(t,i),e.points&&this.runtime.CSSPropertySyntaxFactory[""].postProcessor(t,i),(0,tr.Z)(e.offsetDistance)||this.runtime.CSSPropertySyntaxFactory[""].postProcessor(t,i),e.transform&&this.runtime.CSSPropertySyntaxFactory[""].postProcessor(t,i),s&&this.updateGeometry(t);return}var c=n.skipUpdateAttribute,u=n.skipParse,h=n.forceUpdateGeometry,p=n.usedAttributes,f=h,d=Object.keys(e);d.forEach(function(n){var r;c||(t.attributes[n]=e[n]),!f&&(null===(r=nb[n])||void 0===r?void 0:r.l)&&(f=!0)}),u||d.forEach(function(e){t.computedStyle[e]=r.parseProperty(e,t.attributes[e],t)}),(null==p?void 0:p.length)&&(d=Array.from(new Set(d.concat(p)))),d.forEach(function(e){e in t.computedStyle&&(t.parsedStyle[e]=r.computeProperty(e,t.computedStyle[e],t))}),f&&this.updateGeometry(t),d.forEach(function(e){e in t.parsedStyle&&r.postProcessProperty(e,t,d)}),this.runtime.enableCSSParsing&&t.children.length&&d.forEach(function(e){e in t.parsedStyle&&r.isPropertyInheritable(e)&&t.children.forEach(function(t){t.internalSetAttribute(e,null,{skipUpdateAttribute:!0,skipParse:!0})})})},t.prototype.parseProperty=function(t,e,n){var r=nb[t],i=e;if((""===e||(0,tr.Z)(e))&&(e="unset"),"unset"===e||"initial"===e||"inherit"===e)i=ef(e);else if(r){var o=r.k,a=r.syntax,s=a&&this.getPropertySyntax(a);o&&o.indexOf(e)>-1?i=ef(e):s&&s.parser&&(i=s.parser(e,n))}return i},t.prototype.computeProperty=function(t,e,n){var r=nb[t],i="g-root"===n.id,o=e;if(r){var a=r.syntax,s=r.inh,l=r.d;if(e instanceof t7){var c=e.value;if("unset"===c&&(c=s&&!i?"inherit":"initial"),"initial"===c)(0,tr.Z)(l)||(e=this.parseProperty(t,en(l)?l(n.nodeName):l,n));else if("inherit"===c){var u=this.tryToResolveProperty(n,t,{inherited:!0});return(0,tr.Z)(u)?void this.addUnresolveProperty(n,t):u}}var h=a&&this.getPropertySyntax(a);if(h&&h.calculator){var p=n.parsedStyle[t];o=h.calculator(t,p,e,n,this.runtime)}else o=e instanceof t7?e.value:e}return o},t.prototype.postProcessProperty=function(t,e,n){var r=nb[t];if(r&&r.syntax){var i=r.syntax&&this.getPropertySyntax(r.syntax);i&&i.postProcessor&&i.postProcessor(e,n)}},t.prototype.addUnresolveProperty=function(t,e){var n=nT.get(t);n||(nT.set(t,[]),n=nT.get(t)),-1===n.indexOf(e)&&n.push(e)},t.prototype.tryToResolveProperty=function(t,e,n){if(void 0===n&&(n={}),n.inherited&&t.parentElement&&nP(t.parentElement,e)){var r=t.parentElement.parsedStyle[e];if("unset"!==r&&"initial"!==r&&"inherit"!==r)return r}},t.prototype.recalc=function(t){var e=nT.get(t);if(e&&e.length){var n={};e.forEach(function(e){n[e]=t.attributes[e]}),this.processProperties(t,n),nT.delete(t)}},t.prototype.updateGeometry=function(t){var e=t.nodeName,n=this.runtime.geometryUpdaterFactory[e];if(n){var r=t.geometry;r.contentBounds||(r.contentBounds=new tH),r.renderBounds||(r.renderBounds=new tH);var i=t.parsedStyle,o=n.update(i,t),a=o.width,s=o.height,l=o.depth,c=o.offsetX,u=o.offsetY,h=o.offsetZ,p=[Math.abs(a)/2,Math.abs(s)/2,(void 0===l?0:l)/2],f=i.stroke,d=i.lineWidth,v=i.increasedLineWidthForHitTesting,y=i.shadowType,g=i.shadowColor,m=i.filter,E=i.transformOrigin,x=i.anchor;e===M.TEXT?delete i.anchor:e===M.MESH&&(i.anchor[2]=.5);var b=[(1-2*(x&&x[0]||0))*a/2+(void 0===c?0:c),(1-2*(x&&x[1]||0))*s/2+(void 0===u?0:u),(1-2*(x&&x[2]||0))*p[2]+(void 0===h?0:h)];r.contentBounds.update(b,p);var T=e===M.POLYLINE||e===M.POLYGON||e===M.PATH?Math.SQRT2:.5;if(f&&!f.isNone){var P=((d||0)+(v||0))*T;p[0]+=P,p[1]+=P}if(r.renderBounds.update(b,p),g&&y&&"inner"!==y){var S=r.renderBounds,N=S.min,C=S.max,w=i.shadowBlur,k=i.shadowOffsetX,R=i.shadowOffsetY,A=w||0,O=k||0,L=R||0,I=N[0]-A+O,D=C[0]+A+O,G=N[1]-A+L,_=C[1]+A+L;N[0]=Math.min(N[0],I),C[0]=Math.max(C[0],D),N[1]=Math.min(N[1],G),C[1]=Math.max(C[1],_),r.renderBounds.setMinMax(N,C)}(void 0===m?[]:m).forEach(function(t){var e=t.name,n=t.params;if("blur"===e){var i=n[0].value;r.renderBounds.update(r.renderBounds.center,tA(r.renderBounds.halfExtents,r.renderBounds.halfExtents,[i,i,0]))}else if("drop-shadow"===e){var o=n[0].value,a=n[1].value,s=n[2].value,l=r.renderBounds,c=l.min,u=l.max,h=c[0]-s+o,p=u[0]+s+o,f=c[1]-s+a,d=u[1]+s+a;c[0]=Math.min(c[0],h),u[0]=Math.max(u[0],p),c[1]=Math.min(c[1],f),u[1]=Math.max(u[1],d),r.renderBounds.setMinMax(c,u)}}),x=i.anchor;var F=a<0,B=s<0,U=(F?-1:1)*(E?eV(E[0],0,t):0),Z=(B?-1:1)*(E?eV(E[1],1,t):0);U-=(F?-1:1)*(x&&x[0]||0)*r.contentBounds.halfExtents[0]*2,Z-=(B?-1:1)*(x&&x[1]||0)*r.contentBounds.halfExtents[1]*2,t.setOrigin(U,Z),this.runtime.sceneGraphService.dirtifyToRoot(t)}},t.prototype.isPropertyInheritable=function(t){var e=nb[t];return!!e&&e.inh},t}(),nN=function(){function t(){this.parser=eF,this.parserWithCSSDisabled=null,this.mixer=eW}return t.prototype.calculator=function(t,e,n,r){return eB(n)},t}(),nC=function(){function t(){}return t.prototype.calculator=function(t,e,n,r,i){return n instanceof t7&&(n=null),i.sceneGraphService.updateDisplayObjectDependency(t,e,n,r),"clipPath"===t&&r.forEach(function(t){0===t.childNodes.length&&i.sceneGraphService.dirtifyToRoot(t)}),n},t}(),nw=function(){function t(){this.parser=eL,this.parserWithCSSDisabled=eL,this.mixer=eI}return t.prototype.calculator=function(t,e,n,r){return n instanceof t7?"none"===n.value?ed:ev:n},t}(),nM=function(){function t(){this.parser=eX}return t.prototype.calculator=function(t,e,n){return n instanceof t7?[]:n},t}();function nk(t){var e=t.parsedStyle.fontSize;return(0,tr.Z)(e)?null:e}var nR=function(){function t(){this.parser=e_,this.parserWithCSSDisabled=null,this.mixer=eW}return t.prototype.calculator=function(t,e,n,r,i){if((0,te.Z)(n))return n;if(!es.isRelativeUnit(n.unit))return n.value;var o,a=i.styleValueRegistry;if(n.unit===I.kPercentage)return 0;if(n.unit===I.kEms){if(r.parentNode){var s=nk(r.parentNode);if(s)return s*n.value;a.addUnresolveProperty(r,t)}else a.addUnresolveProperty(r,t);return 0}if(n.unit===I.kRems){if(null===(o=null==r?void 0:r.ownerDocument)||void 0===o?void 0:o.documentElement){var s=nk(r.ownerDocument.documentElement);if(s)return s*n.value;a.addUnresolveProperty(r,t)}else a.addUnresolveProperty(r,t);return 0}},t}(),nA=function(){function t(){this.mixer=eK}return t.prototype.parser=function(t){var e=eZ((0,te.Z)(t)?[t]:t);return 1===e.length?[e[0],e[0]]:[e[0],e[1]]},t.prototype.calculator=function(t,e,n){return n.map(function(t){return t.value})},t}(),nO=function(){function t(){this.mixer=eK}return t.prototype.parser=function(t){var e=eZ((0,te.Z)(t)?[t]:t);return 1===e.length?[e[0],e[0],e[0],e[0]]:2===e.length?[e[0],e[1],e[0],e[1]]:3===e.length?[e[0],e[1],e[2],e[1]]:[e[0],e[1],e[2],e[3]]},t.prototype.calculator=function(t,e,n){return n.map(function(t){return t.value})},t}(),nL=q.create();function nI(t,e){var n=e.parsedStyle.defX||0,r=e.parsedStyle.defY||0;return e.resetLocalTransform(),e.setLocalPosition(n,r),t.forEach(function(t){var i=t.t,o=t.d;if("scale"===i){var a=(null==o?void 0:o.map(function(t){return t.value}))||[1,1];e.scaleLocal(a[0],a[1],1)}else if("scalex"===i){var a=(null==o?void 0:o.map(function(t){return t.value}))||[1];e.scaleLocal(a[0],1,1)}else if("scaley"===i){var a=(null==o?void 0:o.map(function(t){return t.value}))||[1];e.scaleLocal(1,a[0],1)}else if("scalez"===i){var a=(null==o?void 0:o.map(function(t){return t.value}))||[1];e.scaleLocal(1,1,a[0])}else if("scale3d"===i){var a=(null==o?void 0:o.map(function(t){return t.value}))||[1,1,1];e.scaleLocal(a[0],a[1],a[2])}else if("translate"===i){var s=o||[el,el];e.translateLocal(s[0].value,s[1].value,0)}else if("translatex"===i){var s=o||[el];e.translateLocal(s[0].value,0,0)}else if("translatey"===i){var s=o||[el];e.translateLocal(0,s[0].value,0)}else if("translatez"===i){var s=o||[el];e.translateLocal(0,0,s[0].value)}else if("translate3d"===i){var s=o||[el,el,el];e.translateLocal(s[0].value,s[1].value,s[2].value)}else if("rotate"===i){var l=o||[ec];e.rotateLocal(0,0,eB(l[0]))}else if("rotatex"===i){var l=o||[ec];e.rotateLocal(eB(l[0]),0,0)}else if("rotatey"===i){var l=o||[ec];e.rotateLocal(0,eB(l[0]),0)}else if("rotatez"===i){var l=o||[ec];e.rotateLocal(0,0,eB(l[0]))}else if("rotate3d"===i);else if("skew"===i){var c=(null==o?void 0:o.map(function(t){return t.value}))||[0,0];e.setLocalSkew(tD(c[0]),tD(c[1]))}else if("skewx"===i){var c=(null==o?void 0:o.map(function(t){return t.value}))||[0];e.setLocalSkew(tD(c[0]),e.getLocalSkew()[1])}else if("skewy"===i){var c=(null==o?void 0:o.map(function(t){return t.value}))||[0];e.setLocalSkew(e.getLocalSkew()[0],tD(c[0]))}else if("matrix"===i){var u=(0,W.CR)(o.map(function(t){return t.value}),6),h=u[0],p=u[1],f=u[2],d=u[3],v=u[4],y=u[5];e.setLocalTransform(q.set(nL,h,p,0,0,f,d,0,0,0,0,1,0,v+n,y+r,0,1))}else"matrix3d"===i&&(q.set.apply(q,(0,W.ev)([nL],(0,W.CR)(o.map(function(t){return t.value})),!1)),nL[12]+=n,nL[13]+=r,e.setLocalTransform(nL))}),e.getLocalTransform()}var nD=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,W.ZT)(e,t),e.prototype.postProcessor=function(t,e){switch(t.nodeName){case M.CIRCLE:case M.ELLIPSE:var n,r,i,o=t.parsedStyle,a=o.cx,s=o.cy,l=o.cz;(0,tr.Z)(a)||(n=a),(0,tr.Z)(s)||(r=s),(0,tr.Z)(l)||(i=l);break;case M.LINE:var c=t.parsedStyle,u=c.x1,h=c.x2,p=Math.min(c.y1,c.y2);n=Math.min(u,h),r=p,i=0;break;case M.RECT:case M.IMAGE:case M.GROUP:case M.HTML:case M.TEXT:case M.MESH:(0,tr.Z)(t.parsedStyle.x)||(n=t.parsedStyle.x),(0,tr.Z)(t.parsedStyle.y)||(r=t.parsedStyle.y),(0,tr.Z)(t.parsedStyle.z)||(i=t.parsedStyle.z)}if(t.nodeName!==M.PATH&&t.nodeName!==M.POLYLINE&&t.nodeName!==M.POLYGON&&(t.parsedStyle.defX=n||0,t.parsedStyle.defY=r||0),(!(0,tr.Z)(n)||!(0,tr.Z)(r)||!(0,tr.Z)(i))&&-1===e.indexOf("transform")){var f=t.parsedStyle.transform;if(f&&f.length)nI(f,t);else{var d=(0,W.CR)(t.getLocalPosition(),3),v=d[0],y=d[1],g=d[2];t.setLocalPosition((0,tr.Z)(n)?v:n,(0,tr.Z)(r)?y:r,(0,tr.Z)(i)?g:i)}}},e}(nR),nG=function(){function t(){}return t.prototype.calculator=function(t,e,n,r){n instanceof t7&&(n=null);var i=null==n?void 0:n.cloneNode(!0);return i&&(i.style.isMarker=!0),i},t}(),n_=function(){function t(){this.mixer=eW,this.parser=ej,this.parserWithCSSDisabled=null}return t.prototype.calculator=function(t,e,n){return n.value},t}(),nF=function(){function t(){this.parser=ej,this.parserWithCSSDisabled=null,this.mixer=ez(0,1)}return t.prototype.calculator=function(t,e,n){return n.value},t.prototype.postProcessor=function(t){var e=t.parsedStyle,n=e.offsetPath,r=e.offsetDistance;if(n){var i=n.nodeName;if(i===M.LINE||i===M.PATH||i===M.POLYLINE){var o=n.getPoint(r);o&&(t.parsedStyle.defX=o.x,t.parsedStyle.defY=o.y,t.setLocalPosition(o.x,o.y))}}},t}(),nB=function(){function t(){this.parser=ej,this.parserWithCSSDisabled=null,this.mixer=ez(0,1)}return t.prototype.calculator=function(t,e,n){return n.value},t}(),nU=function(){function t(){this.parser=nt,this.parserWithCSSDisabled=nt,this.mixer=ne}return t.prototype.calculator=function(t,e,n){return n instanceof t7&&"unset"===n.value?{absolutePath:[],hasArc:!1,segments:[],polygons:[],polylines:[],curve:null,totalLength:0,rect:new tK(0,0,0,0)}:n},t.prototype.postProcessor=function(t,e){if(t.parsedStyle.defX=t.parsedStyle.path.rect.x,t.parsedStyle.defY=t.parsedStyle.path.rect.y,t.nodeName===M.PATH&&-1===e.indexOf("transform")){var n=t.parsedStyle,r=n.defX,i=void 0===r?0:r,o=n.defY,a=void 0===o?0:o;t.setLocalPosition(i,a)}},t}(),nZ=function(){function t(){this.parser=nn,this.mixer=nr}return t.prototype.postProcessor=function(t,e){if((t.nodeName===M.POLYGON||t.nodeName===M.POLYLINE)&&-1===e.indexOf("transform")){var n=t.parsedStyle,r=n.defX,i=n.defY;t.setLocalPosition(r,i)}},t}(),nV=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.mixer=ez(0,1/0),e}return(0,W.ZT)(e,t),e}(nR),nY=function(){function t(){}return t.prototype.calculator=function(t,e,n,r){return n instanceof t7?"unset"===n.value?"":n.value:"".concat(n)},t.prototype.postProcessor=function(t){t.nodeValue="".concat(t.parsedStyle.text)||""},t}(),nX=function(){function t(){}return t.prototype.calculator=function(t,e,n,r){var i=r.getAttribute("text");if(i){var o=i;"capitalize"===n.value?o=i.charAt(0).toUpperCase()+i.slice(1):"lowercase"===n.value?o=i.toLowerCase():"uppercase"===n.value&&(o=i.toUpperCase()),r.parsedStyle.text=o}return n.value},t}(),nH={},nj=0,nW="undefined"!=typeof window&&void 0!==window.document;function nz(t,e){var n=Number(t.parsedStyle.zIndex),r=Number(e.parsedStyle.zIndex);if(n===r){var i=t.parentNode;if(i){var o=i.childNodes||[];return o.indexOf(t)-o.indexOf(e)}}return n-r}function nK(t){var e,n=t;do{if(null===(e=n.parsedStyle)||void 0===e?void 0:e.clipPath)return n;n=n.parentElement}while(null!==n);return null}function nq(t,e,n){nW&&t.style&&(t.style.width=e+"px",t.style.height=n+"px")}function nJ(t,e){if(nW)return document.defaultView.getComputedStyle(t,null).getPropertyValue(e)}var n$={touchstart:"pointerdown",touchend:"pointerup",touchendoutside:"pointerupoutside",touchmove:"pointermove",touchcancel:"pointercancel"},nQ="object"==typeof performance&&performance.now?performance:Date;function n0(t,e,n){var r=!1,i=!1,o=!!e&&!e.isNone,a=!!n&&!n.isNone;return"visiblepainted"===t||"painted"===t||"auto"===t?(r=o,i=a):"visiblefill"===t||"fill"===t?r=!0:"visiblestroke"===t||"stroke"===t?i=!0:("visible"===t||"all"===t)&&(r=!0,i=!0),[r,i]}var n1=1,n2="object"==typeof self&&self.self==self?self:"object"==typeof n.g&&n.g.global==n.g?n.g:{},n3=Date.now(),n5={},n4=Date.now(),n9=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function");var e=Date.now(),n=e-n4,r=n1++;return n5[r]=t,Object.keys(n5).length>1||setTimeout(function(){n4=e;var t=n5;n5={},Object.keys(t).forEach(function(e){return t[e](n2.performance&&"function"==typeof n2.performance.now?n2.performance.now():Date.now()-n3)})},n>16?0:16-n),r},n8=function(t){return"string"!=typeof t?n9:""===t?n2.requestAnimationFrame:n2[t+"RequestAnimationFrame"]},n6=function(t,e){for(var n=0;void 0!==t[n];){if(e(t[n]))return t[n];n+=1}}(["","webkit","moz","ms","o"],function(t){return!!n8(t)}),n7=n8(n6),rt="string"!=typeof n6?function(t){delete n5[t]}:""===n6?n2.cancelAnimationFrame:n2[n6+"CancelAnimationFrame"]||n2[n6+"CancelRequestAnimationFrame"];n2.requestAnimationFrame=n7,n2.cancelAnimationFrame=rt;var re=function(){function t(){this.callbacks=[]}return t.prototype.getCallbacksNum=function(){return this.callbacks.length},t.prototype.tapPromise=function(t,e){this.callbacks.push(e)},t.prototype.promise=function(){for(var t=[],e=0;e-1){var l=(0,W.CR)(t.split(":"),2),c=l[0];t=l[1],s=c,a=!0}if(t=r?"".concat(t,"capture"):t,e=en(e)?e:e.handleEvent,a){var u=e;e=function(){for(var t,e=[],n=0;n0},e.prototype.isDefaultNamespace=function(t){throw Error(tq)},e.prototype.lookupNamespaceURI=function(t){throw Error(tq)},e.prototype.lookupPrefix=function(t){throw Error(tq)},e.prototype.normalize=function(){throw Error(tq)},e.prototype.isEqualNode=function(t){return this===t},e.prototype.isSameNode=function(t){return this.isEqualNode(t)},Object.defineProperty(e.prototype,"parent",{get:function(){return this.parentNode},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"parentElement",{get:function(){return null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"nextSibling",{get:function(){return null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"previousSibling",{get:function(){return null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"firstChild",{get:function(){return this.childNodes.length>0?this.childNodes[0]:null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"lastChild",{get:function(){return this.childNodes.length>0?this.childNodes[this.childNodes.length-1]:null},enumerable:!1,configurable:!0}),e.prototype.compareDocumentPosition=function(t){if(t===this)return 0;for(var n,r=t,i=this,o=[r],a=[i];null!==(n=r.parentNode)&&void 0!==n?n:i.parentNode;)r=r.parentNode?(o.push(r.parentNode),r.parentNode):r,i=i.parentNode?(a.push(i.parentNode),i.parentNode):i;if(r!==i)return e.DOCUMENT_POSITION_DISCONNECTED|e.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC|e.DOCUMENT_POSITION_PRECEDING;var s=o.length>a.length?o:a,l=s===o?a:o;if(s[s.length-l.length]===l[0])return s===o?e.DOCUMENT_POSITION_CONTAINED_BY|e.DOCUMENT_POSITION_FOLLOWING:e.DOCUMENT_POSITION_CONTAINS|e.DOCUMENT_POSITION_PRECEDING;for(var c=s.length-l.length,u=l.length-1;u>=0;u--){var h=l[u],p=s[c+u];if(p!==h){var f=h.parentNode.childNodes;if(f.indexOf(h)0&&e;)e=e.parentNode,t--;return e},e.prototype.forEach=function(t,e){void 0===e&&(e=!1),t(this)||(e?this.childNodes.slice():this.childNodes).forEach(function(e){e.forEach(t)})},e.DOCUMENT_POSITION_DISCONNECTED=1,e.DOCUMENT_POSITION_PRECEDING=2,e.DOCUMENT_POSITION_FOLLOWING=4,e.DOCUMENT_POSITION_CONTAINS=8,e.DOCUMENT_POSITION_CONTAINED_BY=16,e.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC=32,e}(rb),rP=function(){function t(t,e){var n=this;this.globalRuntime=t,this.context=e,this.emitter=new z.Z,this.cursor="default",this.mappingTable={},this.mappingState={trackingData:{}},this.eventPool=new Map,this.tmpMatrix=q.create(),this.tmpVec3=K.Ue(),this.onPointerDown=function(t){var e=n.createPointerEvent(t);if(n.dispatchEvent(e,"pointerdown"),"touch"===e.pointerType)n.dispatchEvent(e,"touchstart");else if("mouse"===e.pointerType||"pen"===e.pointerType){var r=2===e.button;n.dispatchEvent(e,r?"rightdown":"mousedown")}n.trackingData(t.pointerId).pressTargetsByButton[t.button]=e.composedPath(),n.freeEvent(e)},this.onPointerUp=function(t){var e,r=nQ.now(),i=n.createPointerEvent(t,void 0,void 0,n.context.config.alwaysTriggerPointerEventOnCanvas?n.rootTarget:void 0);if(n.dispatchEvent(i,"pointerup"),"touch"===i.pointerType)n.dispatchEvent(i,"touchend");else if("mouse"===i.pointerType||"pen"===i.pointerType){var o=2===i.button;n.dispatchEvent(i,o?"rightup":"mouseup")}var a=n.trackingData(t.pointerId),s=n.findMountedTarget(a.pressTargetsByButton[t.button]),l=s;if(s&&!i.composedPath().includes(s)){for(var c=s;c&&!i.composedPath().includes(c);){if(i.currentTarget=c,n.notifyTarget(i,"pointerupoutside"),"touch"===i.pointerType)n.notifyTarget(i,"touchendoutside");else if("mouse"===i.pointerType||"pen"===i.pointerType){var o=2===i.button;n.notifyTarget(i,o?"rightupoutside":"mouseupoutside")}rT.isNode(c)&&(c=c.parentNode)}delete a.pressTargetsByButton[t.button],l=c}if(l){var u=n.clonePointerEvent(i,"click");u.target=l,u.path=[],a.clicksByButton[t.button]||(a.clicksByButton[t.button]={clickCount:0,target:u.target,timeStamp:r});var h=a.clicksByButton[t.button];h.target===u.target&&r-h.timeStamp<200?++h.clickCount:h.clickCount=1,h.target=u.target,h.timeStamp=r,u.detail=h.clickCount,(null===(e=i.detail)||void 0===e?void 0:e.preventClick)||(n.context.config.useNativeClickEvent||"mouse"!==u.pointerType&&"touch"!==u.pointerType||n.dispatchEvent(u,"click"),n.dispatchEvent(u,"pointertap")),n.freeEvent(u)}n.freeEvent(i)},this.onPointerMove=function(t){var e=n.createPointerEvent(t,void 0,void 0,n.context.config.alwaysTriggerPointerEventOnCanvas?n.rootTarget:void 0),r="mouse"===e.pointerType||"pen"===e.pointerType,i=n.trackingData(t.pointerId),o=n.findMountedTarget(i.overTargets);if(i.overTargets&&o!==e.target){var a="mousemove"===t.type?"mouseout":"pointerout",s=n.createPointerEvent(t,a,o||void 0);if(n.dispatchEvent(s,"pointerout"),r&&n.dispatchEvent(s,"mouseout"),!e.composedPath().includes(o)){var l=n.createPointerEvent(t,"pointerleave",o||void 0);for(l.eventPhase=l.AT_TARGET;l.target&&!e.composedPath().includes(l.target);)l.currentTarget=l.target,n.notifyTarget(l),r&&n.notifyTarget(l,"mouseleave"),rT.isNode(l.target)&&(l.target=l.target.parentNode);n.freeEvent(l)}n.freeEvent(s)}if(o!==e.target){var c="mousemove"===t.type?"mouseover":"pointerover",u=n.clonePointerEvent(e,c);n.dispatchEvent(u,"pointerover"),r&&n.dispatchEvent(u,"mouseover");for(var h=o&&rT.isNode(o)&&o.parentNode;h&&h!==(rT.isNode(n.rootTarget)&&n.rootTarget.parentNode)&&h!==e.target;)h=h.parentNode;if(!h||h===(rT.isNode(n.rootTarget)&&n.rootTarget.parentNode)){var p=n.clonePointerEvent(e,"pointerenter");for(p.eventPhase=p.AT_TARGET;p.target&&p.target!==o&&p.target!==(rT.isNode(n.rootTarget)&&n.rootTarget.parentNode);)p.currentTarget=p.target,n.notifyTarget(p),r&&n.notifyTarget(p,"mouseenter"),rT.isNode(p.target)&&(p.target=p.target.parentNode);n.freeEvent(p)}n.freeEvent(u)}n.dispatchEvent(e,"pointermove"),"touch"===e.pointerType&&n.dispatchEvent(e,"touchmove"),r&&(n.dispatchEvent(e,"mousemove"),n.cursor=n.getCursor(e.target)),i.overTargets=e.composedPath(),n.freeEvent(e)},this.onPointerOut=function(t){var e=n.trackingData(t.pointerId);if(e.overTargets){var r="mouse"===t.pointerType||"pen"===t.pointerType,i=n.findMountedTarget(e.overTargets),o=n.createPointerEvent(t,"pointerout",i||void 0);n.dispatchEvent(o),r&&n.dispatchEvent(o,"mouseout");var a=n.createPointerEvent(t,"pointerleave",i||void 0);for(a.eventPhase=a.AT_TARGET;a.target&&a.target!==(rT.isNode(n.rootTarget)&&n.rootTarget.parentNode);)a.currentTarget=a.target,n.notifyTarget(a),r&&n.notifyTarget(a,"mouseleave"),rT.isNode(a.target)&&(a.target=a.target.parentNode);e.overTargets=null,n.freeEvent(o),n.freeEvent(a)}n.cursor=null},this.onPointerOver=function(t){var e=n.trackingData(t.pointerId),r=n.createPointerEvent(t),i="mouse"===r.pointerType||"pen"===r.pointerType;n.dispatchEvent(r,"pointerover"),i&&n.dispatchEvent(r,"mouseover"),"mouse"===r.pointerType&&(n.cursor=n.getCursor(r.target));var o=n.clonePointerEvent(r,"pointerenter");for(o.eventPhase=o.AT_TARGET;o.target&&o.target!==(rT.isNode(n.rootTarget)&&n.rootTarget.parentNode);)o.currentTarget=o.target,n.notifyTarget(o),i&&n.notifyTarget(o,"mouseenter"),rT.isNode(o.target)&&(o.target=o.target.parentNode);e.overTargets=r.composedPath(),n.freeEvent(r),n.freeEvent(o)},this.onPointerUpOutside=function(t){var e=n.trackingData(t.pointerId),r=n.findMountedTarget(e.pressTargetsByButton[t.button]),i=n.createPointerEvent(t);if(r){for(var o=r;o;)i.currentTarget=o,n.notifyTarget(i,"pointerupoutside"),"touch"===i.pointerType||("mouse"===i.pointerType||"pen"===i.pointerType)&&n.notifyTarget(i,2===i.button?"rightupoutside":"mouseupoutside"),rT.isNode(o)&&(o=o.parentNode);delete e.pressTargetsByButton[t.button]}n.freeEvent(i)},this.onWheel=function(t){var e=n.createWheelEvent(t);n.dispatchEvent(e),n.freeEvent(e)},this.onClick=function(t){if(n.context.config.useNativeClickEvent){var e=n.createPointerEvent(t);n.dispatchEvent(e),n.freeEvent(e)}},this.onPointerCancel=function(t){var e=n.createPointerEvent(t,void 0,void 0,n.context.config.alwaysTriggerPointerEventOnCanvas?n.rootTarget:void 0);n.dispatchEvent(e),n.freeEvent(e)}}return t.prototype.init=function(){this.rootTarget=this.context.renderingContext.root.parentNode,this.addEventMapping("pointerdown",this.onPointerDown),this.addEventMapping("pointerup",this.onPointerUp),this.addEventMapping("pointermove",this.onPointerMove),this.addEventMapping("pointerout",this.onPointerOut),this.addEventMapping("pointerleave",this.onPointerOut),this.addEventMapping("pointercancel",this.onPointerCancel),this.addEventMapping("pointerover",this.onPointerOver),this.addEventMapping("pointerupoutside",this.onPointerUpOutside),this.addEventMapping("wheel",this.onWheel),this.addEventMapping("click",this.onClick)},t.prototype.destroy=function(){this.emitter.removeAllListeners(),this.mappingTable={},this.mappingState={},this.eventPool.clear()},t.prototype.client2Viewport=function(t){var e=this.context.contextService.getBoundingClientRect();return new tz(t.x-((null==e?void 0:e.left)||0),t.y-((null==e?void 0:e.top)||0))},t.prototype.viewport2Client=function(t){var e=this.context.contextService.getBoundingClientRect();return new tz(t.x+((null==e?void 0:e.left)||0),t.y+((null==e?void 0:e.top)||0))},t.prototype.viewport2Canvas=function(t){var e=t.x,n=t.y,r=this.rootTarget.defaultView.getCamera(),i=this.context.config,o=i.width,a=i.height,s=r.getPerspectiveInverse(),l=r.getWorldTransform(),c=q.multiply(this.tmpMatrix,l,s),u=K.t8(this.tmpVec3,e/o*2-1,(1-n/a)*2-1,0);return K.fF(u,u,c),new tz(u[0],u[1])},t.prototype.canvas2Viewport=function(t){var e=this.rootTarget.defaultView.getCamera(),n=e.getPerspective(),r=e.getViewTransform(),i=q.multiply(this.tmpMatrix,n,r),o=K.t8(this.tmpVec3,t.x,t.y,0);K.fF(this.tmpVec3,this.tmpVec3,i);var a=this.context.config,s=a.width,l=a.height;return new tz((o[0]+1)/2*s,(1-(o[1]+1)/2)*l)},t.prototype.setPickHandler=function(t){this.pickHandler=t},t.prototype.addEventMapping=function(t,e){this.mappingTable[t]||(this.mappingTable[t]=[]),this.mappingTable[t].push({fn:e,priority:0}),this.mappingTable[t].sort(function(t,e){return t.priority-e.priority})},t.prototype.mapEvent=function(t){if(this.rootTarget){var e=this.mappingTable[t.type];if(e)for(var n=0,r=e.length;n=1;r--)if(t.currentTarget=n[r],this.notifyTarget(t,e),t.propagationStopped||t.propagationImmediatelyStopped)return;if(t.eventPhase=t.AT_TARGET,t.currentTarget=t.target,this.notifyTarget(t,e),!t.propagationStopped&&!t.propagationImmediatelyStopped){var i=n.indexOf(t.currentTarget);t.eventPhase=t.BUBBLING_PHASE;for(var r=i+1;ri||n>o?null:!a&&this.pickHandler(t)||this.rootTarget||null},t.prototype.isNativeEventFromCanvas=function(t){var e,n=this.context.contextService.getDomElement(),r=null===(e=t.nativeEvent)||void 0===e?void 0:e.target;if(r){if(r===n)return!0;if(n&&n.contains)return n.contains(r)}return!!t.nativeEvent.composedPath&&t.nativeEvent.composedPath().indexOf(n)>-1},t.prototype.getExistedHTML=function(t){var e,n;if(t.nativeEvent.composedPath)try{for(var r=(0,W.XA)(t.nativeEvent.composedPath()),i=r.next();!i.done;i=r.next()){var o=i.value,a=this.globalRuntime.nativeHTMLMap.get(o);if(a)return a}}catch(t){e={error:t}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(e)throw e.error}}return null},t.prototype.pickTarget=function(t){return this.hitTest({clientX:t.clientX,clientY:t.clientY,viewportX:t.viewportX,viewportY:t.viewportY,x:t.canvasX,y:t.canvasY})},t.prototype.createPointerEvent=function(t,e,n,r){var i=this.allocateEvent(rm);this.copyPointerData(t,i),this.copyMouseData(t,i),this.copyData(t,i),i.nativeEvent=t.nativeEvent,i.originalEvent=t;var o=this.getExistedHTML(i);return i.target=null!=n?n:o||this.isNativeEventFromCanvas(i)&&this.pickTarget(i)||r,"string"==typeof e&&(i.type=e),i},t.prototype.createWheelEvent=function(t){var e=this.allocateEvent(rE);this.copyWheelData(t,e),this.copyMouseData(t,e),this.copyData(t,e),e.nativeEvent=t.nativeEvent,e.originalEvent=t;var n=this.getExistedHTML(e);return e.target=n||this.isNativeEventFromCanvas(e)&&this.pickTarget(e),e},t.prototype.trackingData=function(t){return this.mappingState.trackingData[t]||(this.mappingState.trackingData[t]={pressTargetsByButton:{},clicksByButton:{},overTarget:null}),this.mappingState.trackingData[t]},t.prototype.cloneWheelEvent=function(t){var e=this.allocateEvent(rE);return e.nativeEvent=t.nativeEvent,e.originalEvent=t.originalEvent,this.copyWheelData(t,e),this.copyMouseData(t,e),this.copyData(t,e),e.target=t.target,e.path=t.composedPath().slice(),e.type=t.type,e},t.prototype.clonePointerEvent=function(t,e){var n=this.allocateEvent(rm);return n.nativeEvent=t.nativeEvent,n.originalEvent=t.originalEvent,this.copyPointerData(t,n),this.copyMouseData(t,n),this.copyData(t,n),n.target=t.target,n.path=t.composedPath().slice(),n.type=null!=e?e:n.type,n},t.prototype.copyPointerData=function(t,e){e.pointerId=t.pointerId,e.width=t.width,e.height=t.height,e.isPrimary=t.isPrimary,e.pointerType=t.pointerType,e.pressure=t.pressure,e.tangentialPressure=t.tangentialPressure,e.tiltX=t.tiltX,e.tiltY=t.tiltY,e.twist=t.twist},t.prototype.copyMouseData=function(t,e){e.altKey=t.altKey,e.button=t.button,e.buttons=t.buttons,e.ctrlKey=t.ctrlKey,e.metaKey=t.metaKey,e.shiftKey=t.shiftKey,e.client.copyFrom(t.client),e.movement.copyFrom(t.movement),e.canvas.copyFrom(t.canvas),e.screen.copyFrom(t.screen),e.global.copyFrom(t.global),e.offset.copyFrom(t.offset)},t.prototype.copyWheelData=function(t,e){e.deltaMode=t.deltaMode,e.deltaX=t.deltaX,e.deltaY=t.deltaY,e.deltaZ=t.deltaZ},t.prototype.copyData=function(t,e){e.isTrusted=t.isTrusted,e.timeStamp=nQ.now(),e.type=t.type,e.detail=t.detail,e.view=t.view,e.page.copyFrom(t.page),e.viewport.copyFrom(t.viewport)},t.prototype.allocateEvent=function(t){this.eventPool.has(t)||this.eventPool.set(t,[]);var e=this.eventPool.get(t).pop()||new t(this);return e.eventPhase=e.NONE,e.currentTarget=null,e.path=[],e.target=null,e},t.prototype.freeEvent=function(t){if(t.manager!==this)throw Error("It is illegal to free an event not managed by this EventBoundary!");var e=t.constructor;this.eventPool.has(e)||this.eventPool.set(e,[]),this.eventPool.get(e).push(t)},t.prototype.notifyTarget=function(t,e){e=null!=e?e:t.type;var n=t.eventPhase===t.CAPTURING_PHASE||t.eventPhase===t.AT_TARGET?"".concat(e,"capture"):e;this.notifyListeners(t,n),t.eventPhase===t.AT_TARGET&&this.notifyListeners(t,e)},t.prototype.notifyListeners=function(t,e){var n=t.currentTarget.emitter,r=n._events[e];if(r){if("fn"in r)r.once&&n.removeListener(e,r.fn,void 0,!0),r.fn.call(t.currentTarget||r.context,t);else for(var i=0;i=0;n--){var r=t[n];if(r===this.rootTarget||rT.isNode(r)&&r.parentNode===e)e=t[n];else break}return e},t.prototype.getCursor=function(t){for(var e=t;e;){var n=!!e.getAttribute&&e.getAttribute("cursor");if(n)return n;e=rT.isNode(e)&&e.parentNode}},t}(),rS=function(){function t(){}return t.prototype.getOrCreateCanvas=function(t,e){if(this.canvas)return this.canvas;if(t||r_.offscreenCanvas)this.canvas=t||r_.offscreenCanvas,this.context=this.canvas.getContext("2d",e);else try{this.canvas=new window.OffscreenCanvas(0,0),this.context=this.canvas.getContext("2d",e),this.context&&this.context.measureText||(this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"))}catch(t){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d",e)}return this.canvas.width=10,this.canvas.height=10,this.canvas},t.prototype.getOrCreateContext=function(t,e){return this.context||this.getOrCreateCanvas(t,e),this.context},t}();(E=X||(X={}))[E.CAMERA_CHANGED=0]="CAMERA_CHANGED",E[E.DISPLAY_OBJECT_CHANGED=1]="DISPLAY_OBJECT_CHANGED",E[E.NONE=2]="NONE";var rN=function(){function t(t,e){this.globalRuntime=t,this.context=e,this.inited=!1,this.stats={total:0,rendered:0},this.zIndexCounter=0,this.hooks={init:new rr,initAsync:new re,dirtycheck:new ri,cull:new ri,beginFrame:new rr,beforeRender:new rr,render:new rr,afterRender:new rr,endFrame:new rr,destroy:new rr,pick:new rn,pickSync:new ri,pointerDown:new rr,pointerUp:new rr,pointerMove:new rr,pointerOut:new rr,pointerOver:new rr,pointerWheel:new rr,pointerCancel:new rr,click:new rr}}return t.prototype.init=function(t){var e=this,n=(0,W.pi)((0,W.pi)({},this.globalRuntime),this.context);this.context.renderingPlugins.forEach(function(t){t.apply(n,e.globalRuntime)}),this.hooks.init.call(),0===this.hooks.initAsync.getCallbacksNum()?(this.inited=!0,t()):this.hooks.initAsync.promise().then(function(){e.inited=!0,t()})},t.prototype.getStats=function(){return this.stats},t.prototype.disableDirtyRectangleRendering=function(){return!this.context.config.renderer.getConfig().enableDirtyRectangleRendering||this.context.renderingContext.renderReasons.has(X.CAMERA_CHANGED)},t.prototype.render=function(t,e){var n=this;this.stats.total=0,this.stats.rendered=0,this.zIndexCounter=0;var r=this.context.renderingContext;if(this.globalRuntime.sceneGraphService.syncHierarchy(r.root),this.globalRuntime.sceneGraphService.triggerPendingEvents(),r.renderReasons.size&&this.inited){r.dirtyRectangleRenderingDisabled=this.disableDirtyRectangleRendering();var i=1===r.renderReasons.size&&r.renderReasons.has(X.CAMERA_CHANGED),o=!t.disableRenderHooks||!(t.disableRenderHooks&&i);o&&this.renderDisplayObject(r.root,t,r),this.hooks.beginFrame.call(),o&&r.renderListCurrentFrame.forEach(function(t){n.hooks.beforeRender.call(t),n.hooks.render.call(t),n.hooks.afterRender.call(t)}),this.hooks.endFrame.call(),r.renderListCurrentFrame=[],r.renderReasons.clear(),e()}},t.prototype.renderDisplayObject=function(t,e,n){var r=this,i=e.renderer.getConfig(),o=i.enableDirtyCheck,a=i.enableCulling;this.globalRuntime.enableCSSParsing&&this.globalRuntime.styleValueRegistry.recalc(t);var s=t.renderable,l=o?s.dirty||n.dirtyRectangleRenderingDisabled?t:null:t;if(l){var c=a?this.hooks.cull.call(l,this.context.camera):l;c&&(this.stats.rendered++,n.renderListCurrentFrame.push(c))}t.renderable.dirty=!1,t.sortable.renderOrder=this.zIndexCounter++,this.stats.total++;var u=t.sortable;u.dirty&&(this.sort(t,u),u.dirty=!1,u.dirtyChildren=[],u.dirtyReason=void 0),(u.sorted||t.childNodes).forEach(function(t){r.renderDisplayObject(t,e,n)})},t.prototype.sort=function(t,e){e.sorted&&e.dirtyReason!==V.Z_INDEX_CHANGED?e.dirtyChildren.forEach(function(n){if(-1===t.childNodes.indexOf(n)){var r=e.sorted.indexOf(n);r>=0&&e.sorted.splice(r,1)}else if(0===e.sorted.length)e.sorted.push(n);else{var i=function(t,e){for(var n=0,r=t.length;n>>1;0>nz(t[i],e)?n=i+1:r=i}return n}(e.sorted,n);e.sorted.splice(i,0,n)}}):e.sorted=t.childNodes.slice().sort(nz)},t.prototype.destroy=function(){this.inited=!1,this.hooks.destroy.call(),this.globalRuntime.sceneGraphService.clearPendingEvents()},t.prototype.dirtify=function(){this.context.renderingContext.renderReasons.add(X.DISPLAY_OBJECT_CHANGED)},t}(),rC=/\[\s*(.*)=(.*)\s*\]/,rw=function(){function t(){}return t.prototype.selectOne=function(t,e){var n=this;if(t.startsWith("."))return e.find(function(e){return((null==e?void 0:e.classList)||[]).indexOf(n.getIdOrClassname(t))>-1});if(t.startsWith("#"))return e.find(function(e){return e.id===n.getIdOrClassname(t)});if(!t.startsWith("["))return e.find(function(n){return e!==n&&n.nodeName===t});var r=this.getAttribute(t),i=r.name,o=r.value;return i?e.find(function(t){return e!==t&&("name"===i?t.name===o:n.attributeToString(t,i)===o)}):null},t.prototype.selectAll=function(t,e){var n=this;if(t.startsWith("."))return e.findAll(function(r){return e!==r&&((null==r?void 0:r.classList)||[]).indexOf(n.getIdOrClassname(t))>-1});if(t.startsWith("#"))return e.findAll(function(r){return e!==r&&r.id===n.getIdOrClassname(t)});if(!t.startsWith("["))return e.findAll(function(n){return e!==n&&n.nodeName===t});var r=this.getAttribute(t),i=r.name,o=r.value;return i?e.findAll(function(t){return e!==t&&("name"===i?t.name===o:n.attributeToString(t,i)===o)}):[]},t.prototype.is=function(t,e){if(t.startsWith("."))return e.className===this.getIdOrClassname(t);if(t.startsWith("#"))return e.id===this.getIdOrClassname(t);if(!t.startsWith("["))return e.nodeName===t;var n=this.getAttribute(t),r=n.name,i=n.value;return"name"===r?e.name===i:this.attributeToString(e,r)===i},t.prototype.getIdOrClassname=function(t){return t.substring(1)},t.prototype.getAttribute=function(t){var e=t.match(rC),n="",r="";return e&&e.length>2&&(n=e[1].replace(/"/g,""),r=e[2].replace(/"/g,"")),{name:n,value:r}},t.prototype.attributeToString=function(t,e){if(!t.getAttribute)return"";var n=t.getAttribute(e);return(0,tr.Z)(n)?"":n.toString?n.toString():""},t}(),rM=function(t){function e(e,n,r,i,o,a,s,l){var c=t.call(this,null)||this;return c.relatedNode=n,c.prevValue=r,c.newValue=i,c.attrName=o,c.attrChange=a,c.prevParsedValue=s,c.newParsedValue=l,c.type=e,c}return(0,W.ZT)(e,t),e.ADDITION=2,e.MODIFICATION=1,e.REMOVAL=3,e}(ry);function rk(t){var e=t.renderable;e&&(e.renderBoundsDirty=!0,e.boundsDirty=!0)}(x=H||(H={})).REPARENT="reparent",x.DESTROY="destroy",x.ATTR_MODIFIED="DOMAttrModified",x.INSERTED="DOMNodeInserted",x.REMOVED="removed",x.MOUNTED="DOMNodeInsertedIntoDocument",x.UNMOUNTED="DOMNodeRemovedFromDocument",x.BOUNDS_CHANGED="bounds-changed",x.CULLED="culled";var rR=new rM(H.REPARENT,null,"","","",0,"",""),rA=function(){function t(t){var e,n,r,i,o,a,s,l,c,u,h,p,f=this;this.runtime=t,this.pendingEvents=[],this.boundsChangedEvent=new rx(H.BOUNDS_CHANGED),this.rotate=(e=Q.Ue(),function(t,n,r,i){void 0===r&&(r=0),void 0===i&&(i=0),"number"==typeof n&&(n=K.al(n,r,i));var o=t.transformable;if(null!==t.parentNode&&t.parentNode.transformable){var a=Q.Ue();Q.Su(a,n[0],n[1],n[2]);var s=f.getRotation(t),l=f.getRotation(t.parentNode);Q.JG(e,l),Q.U_(e,e),Q.Jp(a,e,a),Q.Jp(o.localRotation,a,s),Q.Fv(o.localRotation,o.localRotation),f.dirtifyLocal(t,o)}else f.rotateLocal(t,n)}),this.rotateLocal=(n=Q.Ue(),function(t,e,r,i){void 0===r&&(r=0),void 0===i&&(i=0),"number"==typeof e&&(e=K.al(e,r,i));var o=t.transformable;Q.Su(n,e[0],e[1],e[2]),Q.dC(o.localRotation,o.localRotation,n),f.dirtifyLocal(t,o)}),this.setEulerAngles=(r=Q.Ue(),function(t,e,n,i){void 0===n&&(n=0),void 0===i&&(i=0),"number"==typeof e&&(e=K.al(e,n,i));var o=t.transformable;if(null!==t.parentNode&&t.parentNode.transformable){Q.Su(o.localRotation,e[0],e[1],e[2]);var a=f.getRotation(t.parentNode);Q.JG(r,Q.U_(Q.Ue(),a)),Q.dC(o.localRotation,o.localRotation,r),f.dirtifyLocal(t,o)}else f.setLocalEulerAngles(t,e)}),this.translateLocal=function(t,e,n,r){void 0===n&&(n=0),void 0===r&&(r=0),"number"==typeof e&&(e=K.al(e,n,r));var i=t.transformable;K.fS(e,K.Ue())||(K.VC(e,e,i.localRotation),K.IH(i.localPosition,i.localPosition,e),f.dirtifyLocal(t,i))},this.setPosition=(i=q.create(),o=K.Ue(),function(t,e){var n=t.transformable;if(o[0]=e[0],o[1]=e[1],o[2]=e[2]||0,!K.fS(f.getPosition(t),o)){if(K.JG(n.position,o),null!==t.parentNode&&t.parentNode.transformable){var r=t.parentNode.transformable;q.copy(i,r.worldTransform),q.invert(i,i),K.fF(n.localPosition,o,i)}else K.JG(n.localPosition,o);f.dirtifyLocal(t,n)}}),this.setLocalPosition=(a=K.Ue(),function(t,e){var n=t.transformable;a[0]=e[0],a[1]=e[1],a[2]=e[2]||0,K.fS(n.localPosition,a)||(K.JG(n.localPosition,a),f.dirtifyLocal(t,n))}),this.translate=(s=K.Ue(),l=K.Ue(),c=K.Ue(),function(t,e,n,r){void 0===n&&(n=0),void 0===r&&(r=0),"number"==typeof e&&(e=K.t8(l,e,n,r)),K.fS(e,s)||(K.IH(c,f.getPosition(t),e),f.setPosition(t,c))}),this.setRotation=function(){var t=Q.Ue();return function(e,n,r,i,o){var a=e.transformable;if("number"==typeof n&&(n=Q.al(n,r,i,o)),null!==e.parentNode&&e.parentNode.transformable){var s=f.getRotation(e.parentNode);Q.JG(t,s),Q.U_(t,t),Q.Jp(a.localRotation,t,n),Q.Fv(a.localRotation,a.localRotation),f.dirtifyLocal(e,a)}else f.setLocalRotation(e,n)}},this.displayObjectDependencyMap=new WeakMap,this.calcLocalTransform=(u=q.create(),h=K.Ue(),p=Q.al(0,0,0,1),function(t){if(0!==t.localSkew[0]||0!==t.localSkew[1]){if(q.fromRotationTranslationScaleOrigin(t.localTransform,t.localRotation,t.localPosition,K.al(1,1,1),t.origin),0!==t.localSkew[0]||0!==t.localSkew[1]){var e=q.identity(u);e[4]=Math.tan(t.localSkew[0]),e[1]=Math.tan(t.localSkew[1]),q.multiply(t.localTransform,t.localTransform,e)}var n=q.fromRotationTranslationScaleOrigin(u,p,h,t.localScale,t.origin);q.multiply(t.localTransform,t.localTransform,n)}else q.fromRotationTranslationScaleOrigin(t.localTransform,t.localRotation,t.localPosition,t.localScale,t.origin)})}return t.prototype.matches=function(t,e){return this.runtime.sceneGraphSelector.is(t,e)},t.prototype.querySelector=function(t,e){return this.runtime.sceneGraphSelector.selectOne(t,e)},t.prototype.querySelectorAll=function(t,e){return this.runtime.sceneGraphSelector.selectAll(t,e)},t.prototype.attach=function(t,e,n){var r,i,o=!1;t.parentNode&&(o=t.parentNode!==e,this.detach(t)),t.parentNode=e,(0,tr.Z)(n)?t.parentNode.childNodes.push(t):t.parentNode.childNodes.splice(n,0,t);var a=e.sortable;((null===(r=null==a?void 0:a.sorted)||void 0===r?void 0:r.length)||(null===(i=t.style)||void 0===i?void 0:i.zIndex))&&(-1===a.dirtyChildren.indexOf(t)&&a.dirtyChildren.push(t),a.dirty=!0,a.dirtyReason=V.ADDED);var s=t.transformable;s&&this.dirtifyWorld(t,s),s.frozen&&this.unfreezeParentToRoot(t),o&&t.dispatchEvent(rR)},t.prototype.detach=function(t){var e,n;if(t.parentNode){var r=t.transformable,i=t.parentNode.sortable;((null===(e=null==i?void 0:i.sorted)||void 0===e?void 0:e.length)||(null===(n=t.style)||void 0===n?void 0:n.zIndex))&&(-1===i.dirtyChildren.indexOf(t)&&i.dirtyChildren.push(t),i.dirty=!0,i.dirtyReason=V.REMOVED);var o=t.parentNode.childNodes.indexOf(t);o>-1&&t.parentNode.childNodes.splice(o,1),r&&this.dirtifyWorld(t,r),t.parentNode=null}},t.prototype.getOrigin=function(t){return t.transformable.origin},t.prototype.setOrigin=function(t,e,n,r){void 0===n&&(n=0),void 0===r&&(r=0),"number"==typeof e&&(e=[e,n,r]);var i=t.transformable;if(e[0]!==i.origin[0]||e[1]!==i.origin[1]||e[2]!==i.origin[2]){var o=i.origin;o[0]=e[0],o[1]=e[1],o[2]=e[2]||0,this.dirtifyLocal(t,i)}},t.prototype.setLocalEulerAngles=function(t,e,n,r){void 0===n&&(n=0),void 0===r&&(r=0),"number"==typeof e&&(e=K.al(e,n,r));var i=t.transformable;Q.Su(i.localRotation,e[0],e[1],e[2]),this.dirtifyLocal(t,i)},t.prototype.scaleLocal=function(t,e){var n=t.transformable;K.Jp(n.localScale,n.localScale,K.al(e[0],e[1],e[2]||1)),this.dirtifyLocal(t,n)},t.prototype.setLocalScale=function(t,e){var n=t.transformable,r=K.al(e[0],e[1],e[2]||n.localScale[2]);K.fS(r,n.localScale)||(K.JG(n.localScale,r),this.dirtifyLocal(t,n))},t.prototype.setLocalRotation=function(t,e,n,r,i){"number"==typeof e&&(e=Q.al(e,n,r,i));var o=t.transformable;Q.JG(o.localRotation,e),this.dirtifyLocal(t,o)},t.prototype.setLocalSkew=function(t,e,n){"number"==typeof e&&(e=tt.al(e,n));var r=t.transformable;tt.JG(r.localSkew,e),this.dirtifyLocal(t,r)},t.prototype.dirtifyLocal=function(t,e){e.localDirtyFlag||(e.localDirtyFlag=!0,e.dirtyFlag||this.dirtifyWorld(t,e))},t.prototype.dirtifyWorld=function(t,e){e.dirtyFlag||this.unfreezeParentToRoot(t),this.dirtifyWorldInternal(t,e),this.dirtifyToRoot(t,!0)},t.prototype.triggerPendingEvents=function(){var t=this,e=new Set,n=function(n,r){n.isConnected&&!e.has(n.entity)&&(t.boundsChangedEvent.detail=r,t.boundsChangedEvent.target=n,n.isMutationObserved?n.dispatchEvent(t.boundsChangedEvent):n.ownerDocument.defaultView.dispatchEvent(t.boundsChangedEvent,!0),e.add(n.entity))};this.pendingEvents.forEach(function(t){var e=(0,W.CR)(t,2),r=e[0],i=e[1];i.affectChildren?r.forEach(function(t){n(t,i)}):n(r,i)}),this.clearPendingEvents(),e.clear()},t.prototype.clearPendingEvents=function(){this.pendingEvents=[]},t.prototype.dirtifyToRoot=function(t,e){void 0===e&&(e=!1);var n=t;for(n.renderable&&(n.renderable.dirty=!0);n;)rk(n),n=n.parentNode;e&&t.forEach(function(t){rk(t)}),this.informDependentDisplayObjects(t),this.pendingEvents.push([t,{affectChildren:e}])},t.prototype.updateDisplayObjectDependency=function(t,e,n,r){if(e&&e!==n){var i=this.displayObjectDependencyMap.get(e);if(i&&i[t]){var o=i[t].indexOf(r);i[t].splice(o,1)}}if(n){var a=this.displayObjectDependencyMap.get(n);a||(this.displayObjectDependencyMap.set(n,{}),a=this.displayObjectDependencyMap.get(n)),a[t]||(a[t]=[]),a[t].push(r)}},t.prototype.informDependentDisplayObjects=function(t){var e=this,n=this.displayObjectDependencyMap.get(t);n&&Object.keys(n).forEach(function(t){n[t].forEach(function(n){e.dirtifyToRoot(n,!0),n.dispatchEvent(new rM(H.ATTR_MODIFIED,n,e,e,t,rM.MODIFICATION,e,e)),n.isCustomElement&&n.isConnected&&n.attributeChangedCallback&&n.attributeChangedCallback(t,e,e)})})},t.prototype.getPosition=function(t){var e=t.transformable;return q.getTranslation(e.position,this.getWorldTransform(t,e))},t.prototype.getRotation=function(t){var e=t.transformable;return q.getRotation(e.rotation,this.getWorldTransform(t,e))},t.prototype.getScale=function(t){var e=t.transformable;return q.getScaling(e.scaling,this.getWorldTransform(t,e))},t.prototype.getWorldTransform=function(t,e){return void 0===e&&(e=t.transformable),(e.localDirtyFlag||e.dirtyFlag)&&(t.parentNode&&t.parentNode.transformable&&this.getWorldTransform(t.parentNode),this.sync(t,e)),e.worldTransform},t.prototype.getLocalPosition=function(t){return t.transformable.localPosition},t.prototype.getLocalRotation=function(t){return t.transformable.localRotation},t.prototype.getLocalScale=function(t){return t.transformable.localScale},t.prototype.getLocalSkew=function(t){return t.transformable.localSkew},t.prototype.getLocalTransform=function(t){var e=t.transformable;return e.localDirtyFlag&&(this.calcLocalTransform(e),e.localDirtyFlag=!1),e.localTransform},t.prototype.setLocalTransform=function(t,e){var n=q.getTranslation(K.Ue(),e),r=q.getRotation(Q.Ue(),e),i=q.getScaling(K.Ue(),e);this.setLocalScale(t,i),this.setLocalPosition(t,n),this.setLocalRotation(t,r)},t.prototype.resetLocalTransform=function(t){this.setLocalScale(t,[1,1,1]),this.setLocalPosition(t,[0,0,0]),this.setLocalEulerAngles(t,[0,0,0]),this.setLocalSkew(t,[0,0])},t.prototype.getTransformedGeometryBounds=function(t,e,n){void 0===e&&(e=!1);var r=this.getGeometryBounds(t,e);if(tH.isEmpty(r))return null;var i=n||new tH;return i.setFromTransformedAABB(r,this.getWorldTransform(t)),i},t.prototype.getGeometryBounds=function(t,e){void 0===e&&(e=!1);var n=t.geometry;return(e?n.renderBounds:n.contentBounds||null)||new tH},t.prototype.getBounds=function(t,e){var n=this;void 0===e&&(e=!1);var r=t.renderable;if(!r.boundsDirty&&!e&&r.bounds)return r.bounds;if(!r.renderBoundsDirty&&e&&r.renderBounds)return r.renderBounds;var i=e?r.renderBounds:r.bounds,o=this.getTransformedGeometryBounds(t,e,i);if(t.childNodes.forEach(function(t){var r=n.getBounds(t,e);r&&(o?o.add(r):(o=i||new tH).update(r.center,r.halfExtents))}),e){var a=nK(t);if(a){var s=a.parsedStyle.clipPath.getBounds(e);o?s&&(o=s.intersection(o)):o=s}}return o||(o=new tH),o&&(e?r.renderBounds=o:r.bounds=o),e?r.renderBoundsDirty=!1:r.boundsDirty=!1,o},t.prototype.getLocalBounds=function(t){if(t.parentNode){var e=q.create();t.parentNode.transformable&&(e=q.invert(q.create(),this.getWorldTransform(t.parentNode)));var n=this.getBounds(t);if(!tH.isEmpty(n)){var r=new tH;return r.setFromTransformedAABB(n,e),r}}return this.getBounds(t)},t.prototype.getBoundingClientRect=function(t){var e,n,r,i=this.getGeometryBounds(t);tH.isEmpty(i)||(r=new tH).setFromTransformedAABB(i,this.getWorldTransform(t));var o=null===(n=null===(e=t.ownerDocument)||void 0===e?void 0:e.defaultView)||void 0===n?void 0:n.getContextService().getBoundingClientRect();if(r){var a=(0,W.CR)(r.getMin(),2),s=a[0],l=a[1],c=(0,W.CR)(r.getMax(),2),u=c[0],h=c[1];return new tK(s+((null==o?void 0:o.left)||0),l+((null==o?void 0:o.top)||0),u-s,h-l)}return new tK((null==o?void 0:o.left)||0,(null==o?void 0:o.top)||0,0,0)},t.prototype.dirtifyWorldInternal=function(t,e){var n=this;if(!e.dirtyFlag){e.dirtyFlag=!0,e.frozen=!1,t.childNodes.forEach(function(t){var e=t.transformable;e.dirtyFlag||n.dirtifyWorldInternal(t,e)});var r=t.renderable;r&&(r.renderBoundsDirty=!0,r.boundsDirty=!0,r.dirty=!0)}},t.prototype.syncHierarchy=function(t){var e=t.transformable;if(!e.frozen){e.frozen=!0,(e.localDirtyFlag||e.dirtyFlag)&&this.sync(t,e);for(var n=t.childNodes,r=0;rs;--p){for(var v=0;v=0;l--){var c=s[l].trim();!ra.test(c)&&0>ro.indexOf(c)&&(c='"'.concat(c,'"')),s[l]=c}return"".concat(r," ").concat(i," ").concat(o," ").concat(a," ").concat(s.join(","))}(e),d=this.measureFont(f,n);0===d.fontSize&&(d.fontSize=r,d.ascent=r);var v=this.runtime.offscreenCanvasCreator.getOrCreateContext(n);v.font=f,e.isOverflowing=!1;var y=(i?this.wordWrap(t,e,n):t).split(/(?:\r\n|\r|\n)/),g=Array(y.length),m=0;if(u){u.getTotalLength();for(var E=0;E=s){e.isOverflowing=!0;break}d=0,p[f]="";continue}if(d>0&&d+P>u){if(f+1>=s){if(e.isOverflowing=!0,g>0&&g<=u){for(var S=p[f].length,N=0,C=S,w=0;wu){C=w;break}N+=M}p[f]=(p[f]||"").slice(0,C)+h}break}if(d=0,p[++f]="",this.isBreakingSpace(x))continue;this.canBreakInLastChar(x)||(p=this.trimToBreakable(p),d=this.sumTextWidthByCache(p[f]||"",v)),this.shouldBreakByKinsokuShorui(x,T)&&(p=this.trimByKinsokuShorui(p),d+=y(b||""))}d+=P,p[f]=(p[f]||"")+x}return p.join("\n")},t.prototype.isBreakingSpace=function(t){return"string"==typeof t&&rO.BreakingSpaces.indexOf(t.charCodeAt(0))>=0},t.prototype.isNewline=function(t){return"string"==typeof t&&rO.Newlines.indexOf(t.charCodeAt(0))>=0},t.prototype.trimToBreakable=function(t){var e=(0,W.ev)([],(0,W.CR)(t),!1),n=e[e.length-2],r=this.findBreakableIndex(n);if(-1===r||!n)return e;var i=n.slice(r,r+1),o=this.isBreakingSpace(i),a=r+1,s=r+(o?0:1);return e[e.length-1]+=n.slice(a,n.length),e[e.length-2]=n.slice(0,s),e},t.prototype.canBreakInLastChar=function(t){return!(t&&rL.test(t))},t.prototype.sumTextWidthByCache=function(t,e){return t.split("").reduce(function(t,n){if(!e[n])throw Error("cannot count the word without cache");return t+e[n]},0)},t.prototype.findBreakableIndex=function(t){for(var e=t.length-1;e>=0;e--)if(!rL.test(t[e]))return e;return -1},t.prototype.getFromCache=function(t,e,n,r){var i=n[t];if("number"!=typeof i){var o=t.length*e;i=r.measureText(t).width+o,n[t]=i}return i},t}(),r_={},rF=(T=new rd,P=new rf,(b={})[M.CIRCLE]=new rc,b[M.ELLIPSE]=new ru,b[M.RECT]=T,b[M.IMAGE]=T,b[M.GROUP]=T,b[M.LINE]=new rh,b[M.TEXT]=new rv(r_),b[M.POLYLINE]=P,b[M.POLYGON]=P,b[M.PATH]=new rp,b[M.HTML]=null,b[M.MESH]=null,b),rB=(N=new nw,C=new nR,(S={})[Y.PERCENTAGE]=null,S[Y.NUMBER]=new n_,S[Y.ANGLE]=new nN,S[Y.DEFINED_PATH]=new nC,S[Y.PAINT]=N,S[Y.COLOR]=N,S[Y.FILTER]=new nM,S[Y.LENGTH]=C,S[Y.LENGTH_PERCENTAGE]=C,S[Y.LENGTH_PERCENTAGE_12]=new nA,S[Y.LENGTH_PERCENTAGE_14]=new nO,S[Y.COORDINATE]=new nD,S[Y.OFFSET_DISTANCE]=new nF,S[Y.OPACITY_VALUE]=new nB,S[Y.PATH]=new nU,S[Y.LIST_OF_POINTS]=new nZ,S[Y.SHADOW_BLUR]=new nV,S[Y.TEXT]=new nY,S[Y.TEXT_TRANSFORM]=new nX,S[Y.TRANSFORM]=new rs,S[Y.TRANSFORM_ORIGIN]=new function(){this.parser=ng},S[Y.Z_INDEX]=new rl,S[Y.MARKER]=new nG,S);r_.CameraContribution=tQ,r_.AnimationTimeline=null,r_.EasingFunction=null,r_.offscreenCanvasCreator=new rS,r_.nativeHTMLMap=new WeakMap,r_.sceneGraphSelector=new rw,r_.sceneGraphService=new rA(r_),r_.textService=new rG(r_),r_.geometryUpdaterFactory=rF,r_.CSSPropertySyntaxFactory=rB,r_.styleValueRegistry=new nS(r_),r_.layoutRegistry=null,r_.globalThis="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==n.g?n.g:{},r_.enableCSSParsing=!0,r_.enableDataset=!1,r_.enableStyleSyntax=!0;var rU=0,rZ=new rM(H.INSERTED,null,"","","",0,"",""),rV=new rM(H.REMOVED,null,"","","",0,"",""),rY=new rx(H.DESTROY),rX=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.entity=rU++,e.renderable={bounds:void 0,boundsDirty:!0,renderBounds:void 0,renderBoundsDirty:!0,dirtyRenderBounds:void 0,dirty:!1},e.cullable={strategy:Z.Standard,visibilityPlaneMask:-1,visible:!0,enable:!0},e.transformable={dirtyFlag:!1,localDirtyFlag:!1,frozen:!1,localPosition:[0,0,0],localRotation:[0,0,0,1],localScale:[1,1,1],localTransform:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],localSkew:[0,0],position:[0,0,0],rotation:[0,0,0,1],scaling:[1,1,1],worldTransform:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],origin:[0,0,0]},e.sortable={dirty:!1,sorted:void 0,renderOrder:0,dirtyChildren:[],dirtyReason:void 0},e.geometry={contentBounds:void 0,renderBounds:void 0},e.rBushNode={aabb:void 0},e.namespaceURI="g",e.scrollLeft=0,e.scrollTop=0,e.clientTop=0,e.clientLeft=0,e.destroyed=!1,e.style={},e.computedStyle=r_.enableCSSParsing?{anchor:eh,opacity:eh,fillOpacity:eh,strokeOpacity:eh,fill:eh,stroke:eh,transform:eh,transformOrigin:eh,visibility:eh,pointerEvents:eh,lineWidth:eh,lineCap:eh,lineJoin:eh,increasedLineWidthForHitTesting:eh,fontSize:eh,fontFamily:eh,fontStyle:eh,fontWeight:eh,fontVariant:eh,textAlign:eh,textBaseline:eh,textTransform:eh,zIndex:eh,filter:eh,shadowType:eh}:null,e.parsedStyle={},e.attributes={},e}return(0,W.ZT)(e,t),Object.defineProperty(e.prototype,"className",{get:function(){return this.getAttribute("class")||""},set:function(t){this.setAttribute("class",t)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"classList",{get:function(){return this.className.split(" ").filter(function(t){return""!==t})},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"tagName",{get:function(){return this.nodeName},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"children",{get:function(){return this.childNodes},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"childElementCount",{get:function(){return this.childNodes.length},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"firstElementChild",{get:function(){return this.firstChild},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"lastElementChild",{get:function(){return this.lastChild},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"parentElement",{get:function(){return this.parentNode},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"nextSibling",{get:function(){if(this.parentNode){var t=this.parentNode.childNodes.indexOf(this);return this.parentNode.childNodes[t+1]||null}return null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"previousSibling",{get:function(){if(this.parentNode){var t=this.parentNode.childNodes.indexOf(this);return this.parentNode.childNodes[t-1]||null}return null},enumerable:!1,configurable:!0}),e.prototype.cloneNode=function(t){throw Error(tq)},e.prototype.appendChild=function(t,e){var n;if(t.destroyed)throw Error("Cannot append a destroyed element.");return r_.sceneGraphService.attach(t,this,e),(null===(n=this.ownerDocument)||void 0===n?void 0:n.defaultView)&&this.ownerDocument.defaultView.mountChildren(t),rZ.relatedNode=this,t.dispatchEvent(rZ),t},e.prototype.insertBefore=function(t,e){if(e){t.parentElement&&t.parentElement.removeChild(t);var n=this.childNodes.indexOf(e);-1===n?this.appendChild(t):this.appendChild(t,n)}else this.appendChild(t);return t},e.prototype.replaceChild=function(t,e){var n=this.childNodes.indexOf(e);return this.removeChild(e),this.appendChild(t,n),e},e.prototype.removeChild=function(t){var e;return rV.relatedNode=this,t.dispatchEvent(rV),(null===(e=t.ownerDocument)||void 0===e?void 0:e.defaultView)&&t.ownerDocument.defaultView.unmountChildren(t),r_.sceneGraphService.detach(t),t},e.prototype.removeChildren=function(){for(var t=this.childNodes.length-1;t>=0;t--){var e=this.childNodes[t];this.removeChild(e)}},e.prototype.destroyChildren=function(){for(var t=this.childNodes.length-1;t>=0;t--){var e=this.childNodes[t];e.childNodes.length&&e.destroyChildren(),e.destroy()}},e.prototype.matches=function(t){return r_.sceneGraphService.matches(t,this)},e.prototype.getElementById=function(t){return r_.sceneGraphService.querySelector("#".concat(t),this)},e.prototype.getElementsByName=function(t){return r_.sceneGraphService.querySelectorAll('[name="'.concat(t,'"]'),this)},e.prototype.getElementsByClassName=function(t){return r_.sceneGraphService.querySelectorAll(".".concat(t),this)},e.prototype.getElementsByTagName=function(t){return r_.sceneGraphService.querySelectorAll(t,this)},e.prototype.querySelector=function(t){return r_.sceneGraphService.querySelector(t,this)},e.prototype.querySelectorAll=function(t){return r_.sceneGraphService.querySelectorAll(t,this)},e.prototype.closest=function(t){var e=this;do{if(r_.sceneGraphService.matches(t,e))return e;e=e.parentElement}while(null!==e);return null},e.prototype.find=function(t){var e=this,n=null;return this.forEach(function(r){return!!(r!==e&&t(r))&&(n=r,!0)}),n},e.prototype.findAll=function(t){var e=this,n=[];return this.forEach(function(r){r!==e&&t(r)&&n.push(r)}),n},e.prototype.after=function(){for(var t=this,e=[],n=0;n1){var n=t[0].currentPoint,r=t[1].currentPoint,i=t[1].startTangent;e=[],i?(e.push([n[0]-i[0],n[1]-i[1]]),e.push([n[0],n[1]])):(e.push([r[0],r[1]]),e.push([n[0],n[1]]))}return e},e.prototype.getEndTangent=function(){var t=this.parsedStyle.path.segments,e=t.length,n=[];if(e>1){var r=t[e-2].currentPoint,i=t[e-1].currentPoint,o=t[e-1].endTangent;n=[],o?(n.push([i[0]-o[0],i[1]-o[1]]),n.push([i[0],i[1]])):(n.push([r[0],r[1]]),n.push([i[0],i[1]]))}return n},e}(r$),r6=function(t){function e(e){var n=this;void 0===e&&(e={});var r=e.style,i=(0,W._T)(e,["style"]);(n=t.call(this,(0,W.pi)({type:M.POLYGON,style:r_.enableCSSParsing?(0,W.pi)({points:"",miterLimit:"",isClosed:!0},r):(0,W.pi)({},r),initialParsedStyle:r_.enableCSSParsing?null:{points:{points:[],totalLength:0,segments:[]},miterLimit:4,isClosed:!0}},i))||this).markerStartAngle=0,n.markerEndAngle=0,n.markerMidList=[];var o=n.parsedStyle,a=o.markerStart,s=o.markerEnd,l=o.markerMid;return a&&rH(a)&&(n.markerStartAngle=a.getLocalEulerAngles(),n.appendChild(a)),l&&rH(l)&&n.placeMarkerMid(l),s&&rH(s)&&(n.markerEndAngle=s.getLocalEulerAngles(),n.appendChild(s)),n.transformMarker(!0),n.transformMarker(!1),n}return(0,W.ZT)(e,t),e.prototype.attributeChangedCallback=function(t,e,n,r,i){"points"===t?(this.transformMarker(!0),this.transformMarker(!1),this.placeMarkerMid(this.parsedStyle.markerMid)):"markerStartOffset"===t||"markerEndOffset"===t?(this.transformMarker(!0),this.transformMarker(!1)):"markerStart"===t?(r&&rH(r)&&(this.markerStartAngle=0,r.remove()),i&&rH(i)&&(this.markerStartAngle=i.getLocalEulerAngles(),this.appendChild(i),this.transformMarker(!0))):"markerEnd"===t?(r&&rH(r)&&(this.markerEndAngle=0,r.remove()),i&&rH(i)&&(this.markerEndAngle=i.getLocalEulerAngles(),this.appendChild(i),this.transformMarker(!1))):"markerMid"===t&&this.placeMarkerMid(i)},e.prototype.transformMarker=function(t){var e,n,r,i,o,a,s=this.parsedStyle,l=s.markerStart,c=s.markerEnd,u=s.markerStartOffset,h=s.markerEndOffset,p=s.points,f=s.defX,d=s.defY,v=(p||{}).points,y=t?l:c;if(y&&rH(y)&&v){var g=0;if(r=v[0][0]-f,i=v[0][1]-d,t)e=v[1][0]-v[0][0],n=v[1][1]-v[0][1],o=u||0,a=this.markerStartAngle;else{var m=v.length;this.parsedStyle.isClosed?(e=v[m-1][0]-v[0][0],n=v[m-1][1]-v[0][1]):(r=v[m-1][0]-f,i=v[m-1][1]-d,e=v[m-2][0]-v[m-1][0],n=v[m-2][1]-v[m-1][1]),o=h||0,a=this.markerEndAngle}g=Math.atan2(n,e),y.setLocalEulerAngles(180*g/Math.PI+a),y.setLocalPosition(r+Math.cos(g)*o,i+Math.sin(g)*o)}},e.prototype.placeMarkerMid=function(t){var e=this.parsedStyle,n=e.points,r=e.defX,i=e.defY,o=(n||{}).points;if(this.markerMidList.forEach(function(t){t.remove()}),this.markerMidList=[],t&&rH(t)&&o)for(var a=1;a<(this.parsedStyle.isClosed?o.length:o.length-1);a++){var s=o[a][0]-r,l=o[a][1]-i,c=1===a?t:t.cloneNode(!0);this.markerMidList.push(c),this.appendChild(c),c.setLocalPosition(s,l)}},e}(r$),r7=function(t){function e(e){void 0===e&&(e={});var n=e.style,r=(0,W._T)(e,["style"]);return t.call(this,(0,W.pi)({type:M.POLYLINE,style:r_.enableCSSParsing?(0,W.pi)({points:"",miterLimit:"",isClosed:!1},n):(0,W.pi)({},n),initialParsedStyle:r_.enableCSSParsing?null:{points:{points:[],totalLength:0,segments:[]},miterLimit:4,isClosed:!1}},r))||this}return(0,W.ZT)(e,t),e.prototype.getTotalLength=function(){return this.parsedStyle.points.totalLength},e.prototype.getPointAtLength=function(t,e){return void 0===e&&(e=!1),this.getPoint(t/this.getTotalLength(),e)},e.prototype.getPoint=function(t,e){void 0===e&&(e=!1);var n=this.parsedStyle,r=n.defX,i=n.defY,o=n.points,a=o.points,s=o.segments,l=0,c=0;s.forEach(function(e,n){t>=e[0]&&t<=e[1]&&(l=(t-e[0])/(e[1]-e[0]),c=n)});var u=(0,tS.U4)(a[c][0],a[c][1],a[c+1][0],a[c+1][1],l),h=u.x,p=u.y,f=K.fF(K.Ue(),K.al(h-r,p-i,0),e?this.getWorldTransform():this.getLocalTransform());return new tz(f[0],f[1])},e.prototype.getStartTangent=function(){var t=this.parsedStyle.points.points,e=[];return e.push([t[1][0],t[1][1]]),e.push([t[0][0],t[0][1]]),e},e.prototype.getEndTangent=function(){var t=this.parsedStyle.points.points,e=t.length-1,n=[];return n.push([t[e-1][0],t[e-1][1]]),n.push([t[e][0],t[e][1]]),n},e}(r6),it=function(t){function e(e){void 0===e&&(e={});var n=e.style,r=(0,W._T)(e,["style"]);return t.call(this,(0,W.pi)({type:M.RECT,style:r_.enableCSSParsing?(0,W.pi)({x:"",y:"",width:"",height:"",radius:""},n):(0,W.pi)({},n)},r))||this}return(0,W.ZT)(e,t),e}(r$),ie=function(t){function e(e){void 0===e&&(e={});var n=e.style,r=(0,W._T)(e,["style"]);return t.call(this,(0,W.pi)({type:M.TEXT,style:r_.enableCSSParsing?(0,W.pi)({x:"",y:"",text:"",fontSize:"",fontFamily:"",fontStyle:"",fontWeight:"",fontVariant:"",textAlign:"",textBaseline:"",textTransform:"",fill:"black",letterSpacing:"",lineHeight:"",miterLimit:"",wordWrap:!1,wordWrapWidth:0,leading:0,dx:"",dy:""},n):(0,W.pi)({fill:"black"},n),initialParsedStyle:r_.enableCSSParsing?{}:{x:0,y:0,fontSize:16,fontFamily:"sans-serif",fontStyle:"normal",fontWeight:"normal",fontVariant:"normal",lineHeight:0,letterSpacing:0,textBaseline:"alphabetic",textAlign:"start",wordWrap:!1,wordWrapWidth:0,leading:0,dx:0,dy:0}},r))||this}return(0,W.ZT)(e,t),e.prototype.getComputedTextLength=function(){var t;return(null===(t=this.parsedStyle.metrics)||void 0===t?void 0:t.maxLineWidth)||0},e.prototype.getLineBoundingRects=function(){var t;return(null===(t=this.parsedStyle.metrics)||void 0===t?void 0:t.lineMetrics)||[]},e.prototype.isOverflowing=function(){return!!this.parsedStyle.isOverflowing},e}(r$),ir=function(){function t(){this.registry={},this.define(M.CIRCLE,r0),this.define(M.ELLIPSE,r2),this.define(M.RECT,it),this.define(M.IMAGE,r4),this.define(M.LINE,r9),this.define(M.GROUP,r3),this.define(M.PATH,r8),this.define(M.POLYGON,r6),this.define(M.POLYLINE,r7),this.define(M.TEXT,ie),this.define(M.HTML,r5)}return t.prototype.define=function(t,e){this.registry[t]=e},t.prototype.get=function(t){return this.registry[t]},t}(),ii=function(t){function e(){var e=t.call(this)||this;e.defaultView=null,e.ownerDocument=null,e.nodeName="document";try{e.timeline=new r_.AnimationTimeline(e)}catch(t){}var n={};return nE.forEach(function(t){var e=t.n,r=t.inh,i=t.d;r&&i&&(n[e]=en(i)?i(M.GROUP):i)}),e.documentElement=new r3({id:"g-root",style:n}),e.documentElement.ownerDocument=e,e.documentElement.parentNode=e,e.childNodes=[e.documentElement],e}return(0,W.ZT)(e,t),Object.defineProperty(e.prototype,"children",{get:function(){return this.childNodes},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"childElementCount",{get:function(){return this.childNodes.length},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"firstElementChild",{get:function(){return this.firstChild},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"lastElementChild",{get:function(){return this.lastChild},enumerable:!1,configurable:!0}),e.prototype.createElement=function(t,e){if("svg"===t)return this.documentElement;var n=this.defaultView.customElements.get(t);n||(console.warn("Unsupported tagName: ",t),n="tspan"===t?ie:r3);var r=new n(e);return r.ownerDocument=this,r},e.prototype.createElementNS=function(t,e,n){return this.createElement(e,n)},e.prototype.cloneNode=function(t){throw Error(tq)},e.prototype.destroy=function(){try{this.documentElement.destroyChildren(),this.timeline.destroy()}catch(t){}},e.prototype.elementsFromBBox=function(t,e,n,r){var i=this.defaultView.context.rBushRoot.search({minX:t,minY:e,maxX:n,maxY:r}),o=[];return i.forEach(function(t){var e=t.displayObject,n=["auto","visiblepainted","visiblefill","visiblestroke","visible"].includes(e.parsedStyle.pointerEvents);(!n||n&&e.isVisible())&&!e.isCulled()&&e.isInteractive()&&o.push(e)}),o.sort(function(t,e){return e.sortable.renderOrder-t.sortable.renderOrder}),o},e.prototype.elementFromPointSync=function(t,e){var n=this.defaultView.canvas2Viewport({x:t,y:e}),r=n.x,i=n.y,o=this.defaultView.getConfig(),a=o.width,s=o.height;if(r<0||i<0||r>a||i>s)return null;var l=this.defaultView.viewport2Client({x:r,y:i}),c=l.x,u=l.y,h=this.defaultView.getRenderingService().hooks.pickSync.call({topmost:!0,position:{x:t,y:e,viewportX:r,viewportY:i,clientX:c,clientY:u},picked:[]}).picked;return h&&h[0]||this.documentElement},e.prototype.elementFromPoint=function(t,e){return(0,W.mG)(this,void 0,void 0,function(){var n,r,i,o,a,s,l,c,u,h;return(0,W.Jh)(this,function(p){switch(p.label){case 0:if(r=(n=this.defaultView.canvas2Viewport({x:t,y:e})).x,i=n.y,a=(o=this.defaultView.getConfig()).width,s=o.height,r<0||i<0||r>a||i>s)return[2,null];return c=(l=this.defaultView.viewport2Client({x:r,y:i})).x,u=l.y,[4,this.defaultView.getRenderingService().hooks.pick.promise({topmost:!0,position:{x:t,y:e,viewportX:r,viewportY:i,clientX:c,clientY:u},picked:[]})];case 1:return[2,(h=p.sent().picked)&&h[0]||this.documentElement]}})})},e.prototype.elementsFromPointSync=function(t,e){var n=this.defaultView.canvas2Viewport({x:t,y:e}),r=n.x,i=n.y,o=this.defaultView.getConfig(),a=o.width,s=o.height;if(r<0||i<0||r>a||i>s)return[];var l=this.defaultView.viewport2Client({x:r,y:i}),c=l.x,u=l.y,h=this.defaultView.getRenderingService().hooks.pickSync.call({topmost:!1,position:{x:t,y:e,viewportX:r,viewportY:i,clientX:c,clientY:u},picked:[]}).picked;return h[h.length-1]!==this.documentElement&&h.push(this.documentElement),h},e.prototype.elementsFromPoint=function(t,e){return(0,W.mG)(this,void 0,void 0,function(){var n,r,i,o,a,s,l,c,u,h;return(0,W.Jh)(this,function(p){switch(p.label){case 0:if(r=(n=this.defaultView.canvas2Viewport({x:t,y:e})).x,i=n.y,a=(o=this.defaultView.getConfig()).width,s=o.height,r<0||i<0||r>a||i>s)return[2,[]];return c=(l=this.defaultView.viewport2Client({x:r,y:i})).x,u=l.y,[4,this.defaultView.getRenderingService().hooks.pick.promise({topmost:!1,position:{x:t,y:e,viewportX:r,viewportY:i,clientX:c,clientY:u},picked:[]})];case 1:return(h=p.sent().picked)[h.length-1]!==this.documentElement&&h.push(this.documentElement),[2,h]}})})},e.prototype.appendChild=function(t,e){throw Error(tJ)},e.prototype.insertBefore=function(t,e){throw Error(tJ)},e.prototype.removeChild=function(t,e){throw Error(tJ)},e.prototype.replaceChild=function(t,e,n){throw Error(tJ)},e.prototype.append=function(){throw Error(tJ)},e.prototype.prepend=function(){throw Error(tJ)},e.prototype.getElementById=function(t){return this.documentElement.getElementById(t)},e.prototype.getElementsByName=function(t){return this.documentElement.getElementsByName(t)},e.prototype.getElementsByTagName=function(t){return this.documentElement.getElementsByTagName(t)},e.prototype.getElementsByClassName=function(t){return this.documentElement.getElementsByClassName(t)},e.prototype.querySelector=function(t){return this.documentElement.querySelector(t)},e.prototype.querySelectorAll=function(t){return this.documentElement.querySelectorAll(t)},e.prototype.find=function(t){return this.documentElement.find(t)},e.prototype.findAll=function(t){return this.documentElement.findAll(t)},e}(rT),io=function(){function t(t){this.strategies=t}return t.prototype.apply=function(e){var n=e.camera,r=e.renderingService,i=e.renderingContext,o=this.strategies;r.hooks.cull.tap(t.tag,function(t){if(t){var e=t.cullable;return(0===o.length?e.visible=i.unculledEntities.indexOf(t.entity)>-1:e.visible=o.every(function(e){return e.isVisible(n,t)}),!t.isCulled()&&t.isVisible())?t:(t.dispatchEvent(new rx(H.CULLED)),null)}return t}),r.hooks.afterRender.tap(t.tag,function(t){t.cullable.visibilityPlaneMask=-1})},t.tag="Culling",t}(),ia=function(){function t(){var t=this;this.autoPreventDefault=!1,this.rootPointerEvent=new rm(null),this.rootWheelEvent=new rE(null),this.onPointerMove=function(e){var n,r,i,o,a=null===(o=null===(i=t.context.renderingContext.root)||void 0===i?void 0:i.ownerDocument)||void 0===o?void 0:o.defaultView;if(!a.supportsTouchEvents||"touch"!==e.pointerType){var s=t.normalizeToPointerEvent(e,a);try{for(var l=(0,W.XA)(s),c=l.next();!c.done;c=l.next()){var u=c.value,h=t.bootstrapEvent(t.rootPointerEvent,u,a,e);t.context.eventService.mapEvent(h)}}catch(t){n={error:t}}finally{try{c&&!c.done&&(r=l.return)&&r.call(l)}finally{if(n)throw n.error}}t.setCursor(t.context.eventService.cursor)}},this.onClick=function(e){var n,r,i,o,a=null===(o=null===(i=t.context.renderingContext.root)||void 0===i?void 0:i.ownerDocument)||void 0===o?void 0:o.defaultView,s=t.normalizeToPointerEvent(e,a);try{for(var l=(0,W.XA)(s),c=l.next();!c.done;c=l.next()){var u=c.value,h=t.bootstrapEvent(t.rootPointerEvent,u,a,e);t.context.eventService.mapEvent(h)}}catch(t){n={error:t}}finally{try{c&&!c.done&&(r=l.return)&&r.call(l)}finally{if(n)throw n.error}}t.setCursor(t.context.eventService.cursor)}}return t.prototype.apply=function(e){var n=this;this.context=e;var r=e.renderingService,i=this.context.renderingContext.root.ownerDocument.defaultView;this.context.eventService.setPickHandler(function(t){return n.context.renderingService.hooks.pickSync.call({position:t,picked:[],topmost:!0}).picked[0]||null}),r.hooks.pointerWheel.tap(t.tag,function(t){var e=n.normalizeWheelEvent(t);n.context.eventService.mapEvent(e)}),r.hooks.pointerDown.tap(t.tag,function(t){if(!i.supportsTouchEvents||"touch"!==t.pointerType){var e,r,o=n.normalizeToPointerEvent(t,i);n.autoPreventDefault&&o[0].isNormalized&&(t.cancelable||!("cancelable"in t))&&t.preventDefault();try{for(var a=(0,W.XA)(o),s=a.next();!s.done;s=a.next()){var l=s.value,c=n.bootstrapEvent(n.rootPointerEvent,l,i,t);n.context.eventService.mapEvent(c)}}catch(t){e={error:t}}finally{try{s&&!s.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}n.setCursor(n.context.eventService.cursor)}}),r.hooks.pointerUp.tap(t.tag,function(t){if(!i.supportsTouchEvents||"touch"!==t.pointerType){var e,r,o=n.context.contextService.getDomElement(),a="outside";try{a=o&&t.target&&t.target!==o&&o.contains&&!o.contains(t.target)?"outside":""}catch(t){}var s=n.normalizeToPointerEvent(t,i);try{for(var l=(0,W.XA)(s),c=l.next();!c.done;c=l.next()){var u=c.value,h=n.bootstrapEvent(n.rootPointerEvent,u,i,t);h.type+=a,n.context.eventService.mapEvent(h)}}catch(t){e={error:t}}finally{try{c&&!c.done&&(r=l.return)&&r.call(l)}finally{if(e)throw e.error}}n.setCursor(n.context.eventService.cursor)}}),r.hooks.pointerMove.tap(t.tag,this.onPointerMove),r.hooks.pointerOver.tap(t.tag,this.onPointerMove),r.hooks.pointerOut.tap(t.tag,this.onPointerMove),r.hooks.click.tap(t.tag,this.onClick),r.hooks.pointerCancel.tap(t.tag,function(t){var e,r,o=n.normalizeToPointerEvent(t,i);try{for(var a=(0,W.XA)(o),s=a.next();!s.done;s=a.next()){var l=s.value,c=n.bootstrapEvent(n.rootPointerEvent,l,i,t);n.context.eventService.mapEvent(c)}}catch(t){e={error:t}}finally{try{s&&!s.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}n.setCursor(n.context.eventService.cursor)})},t.prototype.getViewportXY=function(t){var e,n,r=t.offsetX,i=t.offsetY,o=t.clientX,a=t.clientY;if(!this.context.config.supportsCSSTransform||(0,tr.Z)(r)||(0,tr.Z)(i)){var s=this.context.eventService.client2Viewport(new tz(o,a));e=s.x,n=s.y}else e=r,n=i;return{x:e,y:n}},t.prototype.bootstrapEvent=function(t,e,n,r){t.view=n,t.originalEvent=null,t.nativeEvent=r,t.pointerId=e.pointerId,t.width=e.width,t.height=e.height,t.isPrimary=e.isPrimary,t.pointerType=e.pointerType,t.pressure=e.pressure,t.tangentialPressure=e.tangentialPressure,t.tiltX=e.tiltX,t.tiltY=e.tiltY,t.twist=e.twist,this.transferMouseData(t,e);var i=this.getViewportXY(e),o=i.x,a=i.y;t.viewport.x=o,t.viewport.y=a;var s=this.context.eventService.viewport2Canvas(t.viewport),l=s.x,c=s.y;return t.canvas.x=l,t.canvas.y=c,t.global.copyFrom(t.canvas),t.offset.copyFrom(t.canvas),t.isTrusted=r.isTrusted,"pointerleave"===t.type&&(t.type="pointerout"),t.type.startsWith("mouse")&&(t.type=t.type.replace("mouse","pointer")),t.type.startsWith("touch")&&(t.type=n$[t.type]||t.type),t},t.prototype.normalizeWheelEvent=function(t){var e=this.rootWheelEvent;this.transferMouseData(e,t),e.deltaMode=t.deltaMode,e.deltaX=t.deltaX,e.deltaY=t.deltaY,e.deltaZ=t.deltaZ;var n=this.getViewportXY(t),r=n.x,i=n.y;e.viewport.x=r,e.viewport.y=i;var o=this.context.eventService.viewport2Canvas(e.viewport),a=o.x,s=o.y;return e.canvas.x=a,e.canvas.y=s,e.global.copyFrom(e.canvas),e.offset.copyFrom(e.canvas),e.nativeEvent=t,e.type=t.type,e},t.prototype.transferMouseData=function(t,e){t.isTrusted=e.isTrusted,t.srcElement=e.srcElement,t.timeStamp=nQ.now(),t.type=e.type,t.altKey=e.altKey,t.metaKey=e.metaKey,t.shiftKey=e.shiftKey,t.ctrlKey=e.ctrlKey,t.button=e.button,t.buttons=e.buttons,t.client.x=e.clientX,t.client.y=e.clientY,t.movement.x=e.movementX,t.movement.y=e.movementY,t.page.x=e.pageX,t.page.y=e.pageY,t.screen.x=e.screenX,t.screen.y=e.screenY,t.relatedTarget=null},t.prototype.setCursor=function(t){this.context.contextService.applyCursorStyle(t||this.context.config.cursor||"default")},t.prototype.normalizeToPointerEvent=function(t,e){var n=[];if(e.isTouchEvent(t))for(var r=0;r-1,a=0,s=r.length;a=1?Math.ceil(M):1,C=l||("auto"===(n=nJ(a,"width"))?a.offsetWidth:parseFloat(n))||a.width/M,w=c||("auto"===(r=nJ(a,"height"))?a.offsetHeight:parseFloat(r))||a.height/M),s&&(r_.offscreenCanvas=s),i.devicePixelRatio=M,i.requestAnimationFrame=null!=v?v:n7.bind(r_.globalThis),i.cancelAnimationFrame=null!=y?y:rt.bind(r_.globalThis),i.supportsTouchEvents=null!=E?E:"ontouchstart"in r_.globalThis,i.supportsPointerEvents=null!=m?m:!!r_.globalThis.PointerEvent,i.isTouchEvent=null!=S?S:function(t){return i.supportsTouchEvents&&t instanceof r_.globalThis.TouchEvent},i.isMouseEvent=null!=N?N:function(t){return!r_.globalThis.MouseEvent||t instanceof r_.globalThis.MouseEvent&&(!i.supportsPointerEvents||!(t instanceof r_.globalThis.PointerEvent))},i.initRenderingContext({container:o,canvas:a,width:C,height:w,renderer:h,offscreenCanvas:s,devicePixelRatio:M,cursor:f||"default",background:p||"transparent",createImage:g,document:d,supportsCSSTransform:x,useNativeClickEvent:T,alwaysTriggerPointerEventOnCanvas:P}),i.initDefaultCamera(C,w,h.clipSpaceNearZ),i.initRenderer(h,!0),i}return(0,W.ZT)(e,t),e.prototype.initRenderingContext=function(t){this.context.config=t,this.context.renderingContext={root:this.document.documentElement,renderListCurrentFrame:[],unculledEntities:[],renderReasons:new Set,force:!1,dirty:!1}},e.prototype.initDefaultCamera=function(t,e,n){var r=this,i=new r_.CameraContribution;i.clipSpaceNearZ=n,i.setType(A.EXPLORING,O.DEFAULT).setPosition(t/2,e/2,500).setFocalPoint(t/2,e/2,0).setOrthographic(-(t/2),t/2,e/2,-(e/2),.1,1e3),i.canvas=this,i.eventEmitter.on(t$.UPDATED,function(){r.context.renderingContext.renderReasons.add(X.CAMERA_CHANGED)}),this.context.camera=i},e.prototype.getConfig=function(){return this.context.config},e.prototype.getRoot=function(){return this.document.documentElement},e.prototype.getCamera=function(){return this.context.camera},e.prototype.getContextService=function(){return this.context.contextService},e.prototype.getEventService=function(){return this.context.eventService},e.prototype.getRenderingService=function(){return this.context.renderingService},e.prototype.getRenderingContext=function(){return this.context.renderingContext},e.prototype.getStats=function(){return this.getRenderingService().getStats()},Object.defineProperty(e.prototype,"ready",{get:function(){var t=this;return!this.readyPromise&&(this.readyPromise=new Promise(function(e){t.resolveReadyPromise=function(){e(t)}}),this.inited&&this.resolveReadyPromise()),this.readyPromise},enumerable:!1,configurable:!0}),e.prototype.destroy=function(t,e){void 0===t&&(t=!0),void 0===e&&(e=!1),e||this.dispatchEvent(new rx(j.BEFORE_DESTROY)),this.frameId&&(this.getConfig().cancelAnimationFrame||cancelAnimationFrame)(this.frameId);var n=this.getRoot();this.unmountChildren(n),t&&(this.document.destroy(),this.getEventService().destroy()),this.getRenderingService().destroy(),this.getContextService().destroy(),t&&this.context.rBushRoot&&(this.context.rBushRoot.clear(),this.context.rBushRoot=null,this.context.renderingContext.root=null),e||this.dispatchEvent(new rx(j.AFTER_DESTROY))},e.prototype.changeSize=function(t,e){this.resize(t,e)},e.prototype.resize=function(t,e){var n=this.context.config;n.width=t,n.height=e,this.getContextService().resize(t,e);var r=this.context.camera,i=r.getProjectionMode();r.setPosition(t/2,e/2,500).setFocalPoint(t/2,e/2,0),i===L.ORTHOGRAPHIC?r.setOrthographic(-(t/2),t/2,e/2,-(e/2),r.getNear(),r.getFar()):r.setAspect(t/e),this.dispatchEvent(new rx(j.RESIZE,{width:t,height:e}))},e.prototype.appendChild=function(t,e){return this.document.documentElement.appendChild(t,e)},e.prototype.insertBefore=function(t,e){return this.document.documentElement.insertBefore(t,e)},e.prototype.removeChild=function(t){return this.document.documentElement.removeChild(t)},e.prototype.removeChildren=function(){this.document.documentElement.removeChildren()},e.prototype.destroyChildren=function(){this.document.documentElement.destroyChildren()},e.prototype.render=function(){var t=this;this.dispatchEvent(ip),this.getRenderingService().render(this.getConfig(),function(){t.dispatchEvent(id)}),this.dispatchEvent(iv)},e.prototype.run=function(){var t=this,e=function(){t.render(),t.frameId=t.requestAnimationFrame(e)};e()},e.prototype.initRenderer=function(t,e){var n=this;if(void 0===e&&(e=!1),!t)throw Error("Renderer is required.");this.inited=!1,this.readyPromise=void 0,this.context.rBushRoot=new tC,this.context.renderingPlugins=[],this.context.renderingPlugins.push(new ia,new ic,new io([new il])),this.loadRendererContainerModule(t),this.context.contextService=new this.context.ContextService((0,W.pi)((0,W.pi)({},r_),this.context)),this.context.renderingService=new rN(r_,this.context),this.context.eventService=new rP(r_,this.context),this.context.eventService.init(),this.context.contextService.init?(this.context.contextService.init(),this.initRenderingService(t,e,!0)):this.context.contextService.initAsync().then(function(){n.initRenderingService(t,e)})},e.prototype.initRenderingService=function(t,e,n){var r=this;void 0===e&&(e=!1),void 0===n&&(n=!1),this.context.renderingService.init(function(){r.inited=!0,e?(n?r.requestAnimationFrame(function(){r.dispatchEvent(new rx(j.READY))}):r.dispatchEvent(new rx(j.READY)),r.readyPromise&&r.resolveReadyPromise()):r.dispatchEvent(new rx(j.RENDERER_CHANGED)),e||r.getRoot().forEach(function(t){var e=t.renderable;e&&(e.renderBoundsDirty=!0,e.boundsDirty=!0,e.dirty=!0)}),r.mountChildren(r.getRoot()),t.getConfig().enableAutoRendering&&r.run()})},e.prototype.loadRendererContainerModule=function(t){var e=this;t.getPlugins().forEach(function(t){t.context=e.context,t.init(r_)})},e.prototype.setRenderer=function(t){var e=this.getConfig();if(e.renderer!==t){var n=e.renderer;e.renderer=t,this.destroy(!1,!0),(0,W.ev)([],(0,W.CR)(null==n?void 0:n.getPlugins()),!1).reverse().forEach(function(t){t.destroy(r_)}),this.initRenderer(t)}},e.prototype.setCursor=function(t){this.getConfig().cursor=t,this.getContextService().applyCursorStyle(t)},e.prototype.unmountChildren=function(t){var e=this;t.childNodes.forEach(function(t){e.unmountChildren(t)}),this.inited&&(t.isMutationObserved?t.dispatchEvent(ih):(ih.target=t,this.dispatchEvent(ih,!0)),t!==this.document.documentElement&&(t.ownerDocument=null),t.isConnected=!1),t.isCustomElement&&t.disconnectedCallback&&t.disconnectedCallback()},e.prototype.mountChildren=function(t){var e=this;this.inited?t.isConnected||(t.ownerDocument=this.document,t.isConnected=!0,t.isMutationObserved?t.dispatchEvent(iu):(iu.target=t,this.dispatchEvent(iu,!0))):console.warn("[g]: You are trying to call `canvas.appendChild` before canvas' initialization finished. You can either await `canvas.ready` or listen to `CanvasEvent.READY` manually.","appended child: ",t.nodeName),t.childNodes.forEach(function(t){e.mountChildren(t)}),t.isCustomElement&&t.connectedCallback&&t.connectedCallback()},e.prototype.client2Viewport=function(t){return this.getEventService().client2Viewport(t)},e.prototype.viewport2Client=function(t){return this.getEventService().viewport2Client(t)},e.prototype.viewport2Canvas=function(t){return this.getEventService().viewport2Canvas(t)},e.prototype.canvas2Viewport=function(t){return this.getEventService().canvas2Viewport(t)},e.prototype.getPointByClient=function(t,e){return this.client2Viewport({x:t,y:e})},e.prototype.getClientByPoint=function(t,e){return this.viewport2Client({x:t,y:e})},e}(rb)}}]); \ No newline at end of file diff --git a/pilot/server/static/_next/static/chunks/365-2cad3676ccbb1b1a.js b/pilot/server/static/_next/static/chunks/365-2cad3676ccbb1b1a.js deleted file mode 100644 index 63206c284..000000000 --- a/pilot/server/static/_next/static/chunks/365-2cad3676ccbb1b1a.js +++ /dev/null @@ -1,14 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[365],{23430:function(e,t,r){r.d(t,{Z:function(){return l}});var n=r(87462),o=r(67294),i={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M505.7 661a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z"}}]},name:"download",theme:"outlined"},a=r(84089),l=o.forwardRef(function(e,t){return o.createElement(a.Z,(0,n.Z)({},e,{ref:t,icon:i}))})},57838:function(e,t,r){r.d(t,{Z:function(){return o}});var n=r(67294);function o(){let[,e]=n.useReducer(e=>e+1,0);return e}},69814:function(e,t,r){r.d(t,{Z:function(){return et}});var n=r(89739),o=r(63606),i=r(4340),a=r(97937),l=r(94184),s=r.n(l),c=r(98423),u=r(67294),d=r(53124),p=r(87462),f=r(1413),m=r(45987),g={percent:0,prefixCls:"rc-progress",strokeColor:"#2db7f5",strokeLinecap:"round",strokeWidth:1,trailColor:"#D9D9D9",trailWidth:1,gapPosition:"bottom"},h=function(){var e=(0,u.useRef)([]),t=(0,u.useRef)(null);return(0,u.useEffect)(function(){var r=Date.now(),n=!1;e.current.forEach(function(e){if(e){n=!0;var o=e.style;o.transitionDuration=".3s, .3s, .3s, .06s",t.current&&r-t.current<100&&(o.transitionDuration="0s, 0s")}}),n&&(t.current=Date.now())}),e.current},b=r(71002),v=r(97685),$=r(98924),y=0,w=(0,$.Z)(),k=function(e){var t=u.useState(),r=(0,v.Z)(t,2),n=r[0],o=r[1];return u.useEffect(function(){var e;o("rc_progress_".concat((w?(e=y,y+=1):e="TEST_OR_SSR",e)))},[]),e||n},E=["id","prefixCls","steps","strokeWidth","trailWidth","gapDegree","gapPosition","trailColor","strokeLinecap","style","className","strokeColor","percent"];function x(e){return+e.replace("%","")}function S(e){var t=null!=e?e:[];return Array.isArray(t)?t:[t]}var C=function(e,t,r,n,o,i,a,l,s,c){var u=arguments.length>10&&void 0!==arguments[10]?arguments[10]:0,d=(100-n)/100*t;return"round"===s&&100!==n&&(d+=c/2)>=t&&(d=t-.01),{stroke:"string"==typeof l?l:void 0,strokeDasharray:"".concat(t,"px ").concat(e),strokeDashoffset:d+u,transform:"rotate(".concat(o+r/100*360*((360-i)/360)+(0===i?0:({bottom:0,top:180,left:90,right:-90})[a]),"deg)"),transformOrigin:"0 0",transition:"stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s",fillOpacity:0}},O=function(e){var t,r,n,o,i=(0,f.Z)((0,f.Z)({},g),e),a=i.id,l=i.prefixCls,c=i.steps,d=i.strokeWidth,v=i.trailWidth,$=i.gapDegree,y=void 0===$?0:$,w=i.gapPosition,O=i.trailColor,j=i.strokeLinecap,I=i.style,D=i.className,Z=i.strokeColor,R=i.percent,N=(0,m.Z)(i,E),P=k(a),M="".concat(P,"-gradient"),F=50-d/2,z=2*Math.PI*F,A=y>0?90+y/2:-90,L=z*((360-y)/360),T="object"===(0,b.Z)(c)?c:{count:c,space:2},X=T.count,_=T.space,U=C(z,L,0,100,A,y,w,O,j,d),H=S(R),W=S(Z),B=W.find(function(e){return e&&"object"===(0,b.Z)(e)}),q=h();return u.createElement("svg",(0,p.Z)({className:s()("".concat(l,"-circle"),D),viewBox:"".concat(-50," ").concat(-50," ").concat(100," ").concat(100),style:I,id:a,role:"presentation"},N),B&&u.createElement("defs",null,u.createElement("linearGradient",{id:M,x1:"100%",y1:"0%",x2:"0%",y2:"0%"},Object.keys(B).sort(function(e,t){return x(e)-x(t)}).map(function(e,t){return u.createElement("stop",{key:t,offset:e,stopColor:B[e]})}))),!X&&u.createElement("circle",{className:"".concat(l,"-circle-trail"),r:F,cx:0,cy:0,stroke:O,strokeLinecap:j,strokeWidth:v||d,style:U}),X?(t=Math.round(X*(H[0]/100)),r=100/X,n=0,Array(X).fill(null).map(function(e,o){var i=o<=t-1?W[0]:O,a=i&&"object"===(0,b.Z)(i)?"url(#".concat(M,")"):void 0,s=C(z,L,n,r,A,y,w,i,"butt",d,_);return n+=(L-s.strokeDashoffset+_)*100/L,u.createElement("circle",{key:o,className:"".concat(l,"-circle-path"),r:F,cx:0,cy:0,stroke:a,strokeWidth:d,opacity:1,style:s,ref:function(e){q[o]=e}})})):(o=0,H.map(function(e,t){var r=W[t]||W[W.length-1],n=r&&"object"===(0,b.Z)(r)?"url(#".concat(M,")"):void 0,i=C(z,L,o,e,A,y,w,r,j,d);return o+=e,u.createElement("circle",{key:t,className:"".concat(l,"-circle-path"),r:F,cx:0,cy:0,stroke:n,strokeLinecap:j,strokeWidth:d,opacity:0===e?0:1,style:i,ref:function(e){q[t]=e}})}).reverse()))},j=r(83062),I=r(16397);function D(e){return!e||e<0?0:e>100?100:e}function Z(e){let{success:t,successPercent:r}=e,n=r;return t&&"progress"in t&&(n=t.progress),t&&"percent"in t&&(n=t.percent),n}let R=e=>{let{percent:t,success:r,successPercent:n}=e,o=D(Z({success:r,successPercent:n}));return[o,D(D(t)-o)]},N=e=>{let{success:t={},strokeColor:r}=e,{strokeColor:n}=t;return[n||I.ez.green,r||null]},P=(e,t,r)=>{var n,o,i,a;let l=-1,s=-1;if("step"===t){let t=r.steps,n=r.strokeWidth;"string"==typeof e||void 0===e?(l="small"===e?2:14,s=null!=n?n:8):"number"==typeof e?[l,s]=[e,e]:[l=14,s=8]=e,l*=t}else if("line"===t){let t=null==r?void 0:r.strokeWidth;"string"==typeof e||void 0===e?s=t||("small"===e?6:8):"number"==typeof e?[l,s]=[e,e]:[l=-1,s=8]=e}else("circle"===t||"dashboard"===t)&&("string"==typeof e||void 0===e?[l,s]="small"===e?[60,60]:[120,120]:"number"==typeof e?[l,s]=[e,e]:(l=null!==(o=null!==(n=e[0])&&void 0!==n?n:e[1])&&void 0!==o?o:120,s=null!==(a=null!==(i=e[0])&&void 0!==i?i:e[1])&&void 0!==a?a:120));return[l,s]},M=e=>3/e*100;var F=e=>{let{prefixCls:t,trailColor:r=null,strokeLinecap:n="round",gapPosition:o,gapDegree:i,width:a=120,type:l,children:c,success:d,size:p=a}=e,[f,m]=P(p,"circle"),{strokeWidth:g}=e;void 0===g&&(g=Math.max(M(f),6));let h=u.useMemo(()=>i||0===i?i:"dashboard"===l?75:void 0,[i,l]),b=o||"dashboard"===l&&"bottom"||void 0,v="[object Object]"===Object.prototype.toString.call(e.strokeColor),$=N({success:d,strokeColor:e.strokeColor}),y=s()(`${t}-inner`,{[`${t}-circle-gradient`]:v}),w=u.createElement(O,{percent:R(e),strokeWidth:g,trailWidth:g,strokeColor:$,strokeLinecap:n,trailColor:r,prefixCls:t,gapDegree:h,gapPosition:b});return u.createElement("div",{className:y,style:{width:f,height:m,fontSize:.15*f+6}},f<=20?u.createElement(j.Z,{title:c},u.createElement("span",null,w)):u.createElement(u.Fragment,null,w,c))},z=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,n=Object.getOwnPropertySymbols(e);ot.indexOf(n[o])&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]]);return r};let A=e=>{let t=[];return Object.keys(e).forEach(r=>{let n=parseFloat(r.replace(/%/g,""));isNaN(n)||t.push({key:n,value:e[r]})}),(t=t.sort((e,t)=>e.key-t.key)).map(e=>{let{key:t,value:r}=e;return`${r} ${t}%`}).join(", ")},L=(e,t)=>{let{from:r=I.ez.blue,to:n=I.ez.blue,direction:o="rtl"===t?"to left":"to right"}=e,i=z(e,["from","to","direction"]);if(0!==Object.keys(i).length){let e=A(i);return{backgroundImage:`linear-gradient(${o}, ${e})`}}return{backgroundImage:`linear-gradient(${o}, ${r}, ${n})`}};var T=e=>{let{prefixCls:t,direction:r,percent:n,size:o,strokeWidth:i,strokeColor:a,strokeLinecap:l="round",children:s,trailColor:c=null,success:d}=e,p=a&&"string"!=typeof a?L(a,r):{backgroundColor:a},f="square"===l||"butt"===l?0:void 0,m=null!=o?o:[-1,i||("small"===o?6:8)],[g,h]=P(m,"line",{strokeWidth:i}),b=Object.assign({width:`${D(n)}%`,height:h,borderRadius:f},p),v=Z(e),$={width:`${D(v)}%`,height:h,borderRadius:f,backgroundColor:null==d?void 0:d.strokeColor};return u.createElement(u.Fragment,null,u.createElement("div",{className:`${t}-outer`,style:{width:g<0?"100%":g,height:h}},u.createElement("div",{className:`${t}-inner`,style:{backgroundColor:c||void 0,borderRadius:f}},u.createElement("div",{className:`${t}-bg`,style:b}),void 0!==v?u.createElement("div",{className:`${t}-success-bg`,style:$}):null)),s)},X=e=>{let{size:t,steps:r,percent:n=0,strokeWidth:o=8,strokeColor:i,trailColor:a=null,prefixCls:l,children:c}=e,d=Math.round(r*(n/100)),p=null!=t?t:["small"===t?2:14,o],[f,m]=P(p,"step",{steps:r,strokeWidth:o}),g=f/r,h=Array(r);for(let e=0;e{let t=e?"100%":"-100%";return new _.E4(`antProgress${e?"RTL":"LTR"}Active`,{"0%":{transform:`translateX(${t}) scaleX(0)`,opacity:.1},"20%":{transform:`translateX(${t}) scaleX(0)`,opacity:.5},to:{transform:"translateX(0) scaleX(1)",opacity:0}})},q=e=>{let{componentCls:t,iconCls:r}=e;return{[t]:Object.assign(Object.assign({},(0,U.Wf)(e)),{display:"inline-block","&-rtl":{direction:"rtl"},"&-line":{position:"relative",width:"100%",fontSize:e.fontSize,marginInlineEnd:e.marginXS,marginBottom:e.marginXS},[`${t}-outer`]:{display:"inline-block",width:"100%"},[`&${t}-show-info`]:{[`${t}-outer`]:{marginInlineEnd:`calc(-2em - ${e.marginXS}px)`,paddingInlineEnd:`calc(2em + ${e.paddingXS}px)`}},[`${t}-inner`]:{position:"relative",display:"inline-block",width:"100%",overflow:"hidden",verticalAlign:"middle",backgroundColor:e.progressRemainingColor,borderRadius:e.progressLineRadius},[`${t}-inner:not(${t}-circle-gradient)`]:{[`${t}-circle-path`]:{stroke:e.colorInfo}},[`${t}-success-bg, ${t}-bg`]:{position:"relative",backgroundColor:e.colorInfo,borderRadius:e.progressLineRadius,transition:`all ${e.motionDurationSlow} ${e.motionEaseInOutCirc}`},[`${t}-success-bg`]:{position:"absolute",insetBlockStart:0,insetInlineStart:0,backgroundColor:e.colorSuccess},[`${t}-text`]:{display:"inline-block",width:"2em",marginInlineStart:e.marginXS,color:e.progressInfoTextColor,lineHeight:1,whiteSpace:"nowrap",textAlign:"start",verticalAlign:"middle",wordBreak:"normal",[r]:{fontSize:e.fontSize}},[`&${t}-status-active`]:{[`${t}-bg::before`]:{position:"absolute",inset:0,backgroundColor:e.colorBgContainer,borderRadius:e.progressLineRadius,opacity:0,animationName:B(),animationDuration:e.progressActiveMotionDuration,animationTimingFunction:e.motionEaseOutQuint,animationIterationCount:"infinite",content:'""'}},[`&${t}-rtl${t}-status-active`]:{[`${t}-bg::before`]:{animationName:B(!0)}},[`&${t}-status-exception`]:{[`${t}-bg`]:{backgroundColor:e.colorError},[`${t}-text`]:{color:e.colorError}},[`&${t}-status-exception ${t}-inner:not(${t}-circle-gradient)`]:{[`${t}-circle-path`]:{stroke:e.colorError}},[`&${t}-status-success`]:{[`${t}-bg`]:{backgroundColor:e.colorSuccess},[`${t}-text`]:{color:e.colorSuccess}},[`&${t}-status-success ${t}-inner:not(${t}-circle-gradient)`]:{[`${t}-circle-path`]:{stroke:e.colorSuccess}}})}},V=e=>{let{componentCls:t,iconCls:r}=e;return{[t]:{[`${t}-circle-trail`]:{stroke:e.progressRemainingColor},[`&${t}-circle ${t}-inner`]:{position:"relative",lineHeight:1,backgroundColor:"transparent"},[`&${t}-circle ${t}-text`]:{position:"absolute",insetBlockStart:"50%",insetInlineStart:0,width:"100%",margin:0,padding:0,color:e.colorText,lineHeight:1,whiteSpace:"normal",textAlign:"center",transform:"translateY(-50%)",[r]:{fontSize:`${e.fontSize/e.fontSizeSM}em`}},[`${t}-circle&-status-exception`]:{[`${t}-text`]:{color:e.colorError}},[`${t}-circle&-status-success`]:{[`${t}-text`]:{color:e.colorSuccess}}},[`${t}-inline-circle`]:{lineHeight:1,[`${t}-inner`]:{verticalAlign:"bottom"}}}},G=e=>{let{componentCls:t}=e;return{[t]:{[`${t}-steps`]:{display:"inline-block","&-outer":{display:"flex",flexDirection:"row",alignItems:"center"},"&-item":{flexShrink:0,minWidth:e.progressStepMinWidth,marginInlineEnd:e.progressStepMarginInlineEnd,backgroundColor:e.progressRemainingColor,transition:`all ${e.motionDurationSlow}`,"&-active":{backgroundColor:e.colorInfo}}}}}},J=e=>{let{componentCls:t,iconCls:r}=e;return{[t]:{[`${t}-small&-line, ${t}-small&-line ${t}-text ${r}`]:{fontSize:e.fontSizeSM}}}};var K=(0,H.Z)("Progress",e=>{let t=e.marginXXS/2,r=(0,W.TS)(e,{progressLineRadius:100,progressInfoTextColor:e.colorText,progressDefaultColor:e.colorInfo,progressRemainingColor:e.colorFillSecondary,progressStepMarginInlineEnd:t,progressStepMinWidth:t,progressActiveMotionDuration:"2.4s"});return[q(r),V(r),G(r),J(r)]}),Q=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,n=Object.getOwnPropertySymbols(e);ot.indexOf(n[o])&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]]);return r};let Y=["normal","exception","active","success"],ee=u.forwardRef((e,t)=>{let r;let{prefixCls:l,className:p,rootClassName:f,steps:m,strokeColor:g,percent:h=0,size:b="default",showInfo:v=!0,type:$="line",status:y,format:w,style:k}=e,E=Q(e,["prefixCls","className","rootClassName","steps","strokeColor","percent","size","showInfo","type","status","format","style"]),x=u.useMemo(()=>{var t,r;let n=Z(e);return parseInt(void 0!==n?null===(t=null!=n?n:0)||void 0===t?void 0:t.toString():null===(r=null!=h?h:0)||void 0===r?void 0:r.toString(),10)},[h,e.success,e.successPercent]),S=u.useMemo(()=>!Y.includes(y)&&x>=100?"success":y||"normal",[y,x]),{getPrefixCls:C,direction:O,progress:j}=u.useContext(d.E_),I=C("progress",l),[R,N]=K(I),M=u.useMemo(()=>{let t;if(!v)return null;let r=Z(e),l=w||(e=>`${e}%`),s="line"===$;return w||"exception"!==S&&"success"!==S?t=l(D(h),D(r)):"exception"===S?t=s?u.createElement(i.Z,null):u.createElement(a.Z,null):"success"===S&&(t=s?u.createElement(n.Z,null):u.createElement(o.Z,null)),u.createElement("span",{className:`${I}-text`,title:"string"==typeof t?t:void 0},t)},[v,h,x,S,$,I,w]),z=Array.isArray(g)?g[0]:g,A="string"==typeof g||Array.isArray(g)?g:void 0;"line"===$?r=m?u.createElement(X,Object.assign({},e,{strokeColor:A,prefixCls:I,steps:m}),M):u.createElement(T,Object.assign({},e,{strokeColor:z,prefixCls:I,direction:O}),M):("circle"===$||"dashboard"===$)&&(r=u.createElement(F,Object.assign({},e,{strokeColor:z,prefixCls:I,progressStatus:S}),M));let L=s()(I,`${I}-status-${S}`,`${I}-${"dashboard"===$&&"circle"||m&&"steps"||$}`,{[`${I}-inline-circle`]:"circle"===$&&P(b,"circle")[0]<=20,[`${I}-show-info`]:v,[`${I}-${b}`]:"string"==typeof b,[`${I}-rtl`]:"rtl"===O},null==j?void 0:j.className,p,f,N);return R(u.createElement("div",Object.assign({ref:t,style:Object.assign(Object.assign({},null==j?void 0:j.style),k),className:L,role:"progressbar","aria-valuenow":x},(0,c.Z)(E,["trailColor","strokeWidth","width","gapDegree","gapPosition","strokeLinecap","success","successPercent"])),r))});var et=ee},31365:function(e,t,r){r.d(t,{default:function(){return eZ}});var n=r(67294),o=r(74902),i=r(94184),a=r.n(i),l=r(87462),s=r(15671),c=r(43144),u=r(32531),d=r(73568),p=r(4942),f=r(45987),m=r(74165),g=r(71002),h=r(15861),b=r(64217);function v(e){var t=e.responseText||e.response;if(!t)return t;try{return JSON.parse(t)}catch(e){return t}}function $(e){var t=new XMLHttpRequest;e.onProgress&&t.upload&&(t.upload.onprogress=function(t){t.total>0&&(t.percent=t.loaded/t.total*100),e.onProgress(t)});var r=new FormData;e.data&&Object.keys(e.data).forEach(function(t){var n=e.data[t];if(Array.isArray(n)){n.forEach(function(e){r.append("".concat(t,"[]"),e)});return}r.append(t,n)}),e.file instanceof Blob?r.append(e.filename,e.file,e.file.name):r.append(e.filename,e.file),t.onerror=function(t){e.onError(t)},t.onload=function(){if(t.status<200||t.status>=300){var r;return e.onError(((r=Error("cannot ".concat(e.method," ").concat(e.action," ").concat(t.status,"'"))).status=t.status,r.method=e.method,r.url=e.action,r),v(t))}return e.onSuccess(v(t),t)},t.open(e.method,e.action,!0),e.withCredentials&&"withCredentials"in t&&(t.withCredentials=!0);var n=e.headers||{};return null!==n["X-Requested-With"]&&t.setRequestHeader("X-Requested-With","XMLHttpRequest"),Object.keys(n).forEach(function(e){null!==n[e]&&t.setRequestHeader(e,n[e])}),t.send(r),{abort:function(){t.abort()}}}var y=+new Date,w=0;function k(){return"rc-upload-".concat(y,"-").concat(++w)}var E=r(80334),x=function(e,t){if(e&&t){var r=Array.isArray(t)?t:t.split(","),n=e.name||"",o=e.type||"",i=o.replace(/\/.*$/,"");return r.some(function(e){var t=e.trim();if(/^\*(\/\*)?$/.test(e))return!0;if("."===t.charAt(0)){var r=n.toLowerCase(),a=t.toLowerCase(),l=[a];return(".jpg"===a||".jpeg"===a)&&(l=[".jpg",".jpeg"]),l.some(function(e){return r.endsWith(e)})}return/\/\*$/.test(t)?i===t.replace(/\/.*$/,""):o===t||!!/^\w+$/.test(t)&&((0,E.ZP)(!1,"Upload takes an invalidate 'accept' type '".concat(t,"'.Skip for check.")),!0)})}return!0},S=function(e,t,r){var n=function e(n,o){if(n.path=o||"",n.isFile)n.file(function(e){r(e)&&(n.fullPath&&!e.webkitRelativePath&&(Object.defineProperties(e,{webkitRelativePath:{writable:!0}}),e.webkitRelativePath=n.fullPath.replace(/^\//,""),Object.defineProperties(e,{webkitRelativePath:{writable:!1}})),t([e]))});else if(n.isDirectory){var i,a,l;i=function(t){t.forEach(function(t){e(t,"".concat(o).concat(n.name,"/"))})},a=n.createReader(),l=[],function e(){a.readEntries(function(t){var r=Array.prototype.slice.apply(t);l=l.concat(r),r.length?e():i(l)})}()}};e.forEach(function(e){n(e.webkitGetAsEntry())})},C=["component","prefixCls","className","disabled","id","style","multiple","accept","capture","children","directory","openFileDialogOnClick","onMouseEnter","onMouseLeave"],O=function(e){(0,u.Z)(r,e);var t=(0,d.Z)(r);function r(){(0,s.Z)(this,r);for(var e,n,i=arguments.length,a=Array(i),l=0;l{let{uid:r}=t;return r===e.uid});return -1===n?r.push(e):r[n]=e,r}function K(e,t){let r=void 0!==e.uid?"uid":"name";return t.filter(t=>t[r]===e[r])[0]}let Q=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=e.split("/"),r=t[t.length-1],n=r.split(/#|\?/)[0];return(/\.[^./\\]*$/.exec(n)||[""])[0]},Y=e=>0===e.indexOf("image/"),ee=e=>{if(e.type&&!e.thumbUrl)return Y(e.type);let t=e.thumbUrl||e.url||"",r=Q(t);return!!(/^data:image\//.test(t)||/(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico|heic|heif)$/i.test(r))||!/^data:/.test(t)&&!r};function et(e){return new Promise(t=>{if(!e.type||!Y(e.type)){t("");return}let r=document.createElement("canvas");r.width=200,r.height=200,r.style.cssText="position: fixed; left: 0; top: 0; width: 200px; height: 200px; z-index: 9999; display: none;",document.body.appendChild(r);let n=r.getContext("2d"),o=new Image;if(o.onload=()=>{let{width:e,height:i}=o,a=200,l=200,s=0,c=0;e>i?c=-((l=i*(200/e))-a)/2:s=-((a=e*(200/i))-l)/2,n.drawImage(o,s,c,a,l);let u=r.toDataURL();document.body.removeChild(r),window.URL.revokeObjectURL(o.src),t(u)},o.crossOrigin="anonymous",e.type.startsWith("image/svg+xml")){let t=new FileReader;t.onload=()=>{t.result&&(o.src=t.result)},t.readAsDataURL(e)}else if(e.type.startsWith("image/gif")){let r=new FileReader;r.onload=()=>{r.result&&t(r.result)},r.readAsDataURL(e)}else o.src=window.URL.createObjectURL(e)})}var er=r(48689),en=r(23430),eo=r(99611),ei=r(69814),ea=r(83062);let el=n.forwardRef((e,t)=>{var r,o;let{prefixCls:i,className:l,style:s,locale:c,listType:u,file:d,items:p,progress:f,iconRender:m,actionIconRender:g,itemRender:h,isImgUrl:b,showPreviewIcon:v,showRemoveIcon:$,showDownloadIcon:y,previewIcon:w,removeIcon:k,downloadIcon:E,onPreview:x,onDownload:S,onClose:C}=e,{status:O}=d,[j,I]=n.useState(O);n.useEffect(()=>{"removed"!==O&&I(O)},[O]);let[D,Z]=n.useState(!1);n.useEffect(()=>{let e=setTimeout(()=>{Z(!0)},300);return()=>{clearTimeout(e)}},[]);let N=m(d),P=n.createElement("div",{className:`${i}-icon`},N);if("picture"===u||"picture-card"===u||"picture-circle"===u){if("uploading"!==j&&(d.thumbUrl||d.url)){let e=(null==b?void 0:b(d))?n.createElement("img",{src:d.thumbUrl||d.url,alt:d.name,className:`${i}-list-item-image`,crossOrigin:d.crossOrigin}):N,t=a()(`${i}-list-item-thumbnail`,{[`${i}-list-item-file`]:b&&!b(d)});P=n.createElement("a",{className:t,onClick:e=>x(d,e),href:d.url||d.thumbUrl,target:"_blank",rel:"noopener noreferrer"},e)}else{let e=a()(`${i}-list-item-thumbnail`,{[`${i}-list-item-file`]:"uploading"!==j});P=n.createElement("div",{className:e},N)}}let M=a()(`${i}-list-item`,`${i}-list-item-${j}`),F="string"==typeof d.linkProps?JSON.parse(d.linkProps):d.linkProps,z=$?g(("function"==typeof k?k(d):k)||n.createElement(er.Z,null),()=>C(d),i,c.removeFile):null,A=y&&"done"===j?g(("function"==typeof E?E(d):E)||n.createElement(en.Z,null),()=>S(d),i,c.downloadFile):null,L="picture-card"!==u&&"picture-circle"!==u&&n.createElement("span",{key:"download-delete",className:a()(`${i}-list-item-actions`,{picture:"picture"===u})},A,z),T=a()(`${i}-list-item-name`),X=d.url?[n.createElement("a",Object.assign({key:"view",target:"_blank",rel:"noopener noreferrer",className:T,title:d.name},F,{href:d.url,onClick:e=>x(d,e)}),d.name),L]:[n.createElement("span",{key:"view",className:T,onClick:e=>x(d,e),title:d.name},d.name),L],_=v?n.createElement("a",{href:d.url||d.thumbUrl,target:"_blank",rel:"noopener noreferrer",style:d.url||d.thumbUrl?void 0:{pointerEvents:"none",opacity:.5},onClick:e=>x(d,e),title:c.previewFile},"function"==typeof w?w(d):w||n.createElement(eo.Z,null)):null,U=("picture-card"===u||"picture-circle"===u)&&"uploading"!==j&&n.createElement("span",{className:`${i}-list-item-actions`},_,"done"===j&&A,z),{getPrefixCls:W}=n.useContext(R.E_),B=W(),q=n.createElement("div",{className:M},P,X,U,D&&n.createElement(H.ZP,{motionName:`${B}-fade`,visible:"uploading"===j,motionDeadline:2e3},e=>{let{className:t}=e,r="percent"in d?n.createElement(ei.Z,Object.assign({},f,{type:"line",percent:d.percent,"aria-label":d["aria-label"],"aria-labelledby":d["aria-labelledby"]})):null;return n.createElement("div",{className:a()(`${i}-list-item-progress`,t)},r)})),V=d.response&&"string"==typeof d.response?d.response:(null===(r=d.error)||void 0===r?void 0:r.statusText)||(null===(o=d.error)||void 0===o?void 0:o.message)||c.uploadError,G="error"===j?n.createElement(ea.Z,{title:V,getPopupContainer:e=>e.parentNode},q):q;return n.createElement("div",{className:a()(`${i}-list-item-container`,l),style:s,ref:t},h?h(G,d,p,{download:S.bind(null,d),preview:x.bind(null,d),remove:C.bind(null,d)}):G)}),es=n.forwardRef((e,t)=>{let{listType:r="text",previewFile:i=et,onPreview:l,onDownload:s,onRemove:c,locale:u,iconRender:d,isImageUrl:p=ee,prefixCls:f,items:m=[],showPreviewIcon:g=!0,showRemoveIcon:h=!0,showDownloadIcon:b=!1,removeIcon:v,previewIcon:$,downloadIcon:y,progress:w={size:[-1,2],showInfo:!1},appendAction:k,appendActionVisible:E=!0,itemRender:x,disabled:S}=e,C=(0,W.Z)(),[O,j]=n.useState(!1);n.useEffect(()=>{("picture"===r||"picture-card"===r||"picture-circle"===r)&&(m||[]).forEach(e=>{"undefined"!=typeof document&&"undefined"!=typeof window&&window.FileReader&&window.File&&(e.originFileObj instanceof File||e.originFileObj instanceof Blob)&&void 0===e.thumbUrl&&(e.thumbUrl="",i&&i(e.originFileObj).then(t=>{e.thumbUrl=t||"",C()}))})},[r,m,i]),n.useEffect(()=>{j(!0)},[]);let I=(e,t)=>{if(l)return null==t||t.preventDefault(),l(e)},D=e=>{"function"==typeof s?s(e):e.url&&window.open(e.url)},Z=e=>{null==c||c(e)},N=e=>{if(d)return d(e,r);let t="uploading"===e.status,o=p&&p(e)?n.createElement(U,null):n.createElement(A,null),i=t?n.createElement(L.Z,null):n.createElement(X,null);return"picture"===r?i=t?n.createElement(L.Z,null):o:("picture-card"===r||"picture-circle"===r)&&(i=t?u.uploading:o),i},P=(e,t,r,o)=>{let i={type:"text",size:"small",title:o,onClick:r=>{t(),(0,q.l$)(e)&&e.props.onClick&&e.props.onClick(r)},className:`${r}-list-item-action`,disabled:S};if((0,q.l$)(e)){let t=(0,q.Tm)(e,Object.assign(Object.assign({},e.props),{onClick:()=>{}}));return n.createElement(V.ZP,Object.assign({},i,{icon:t}))}return n.createElement(V.ZP,Object.assign({},i),n.createElement("span",null,e))};n.useImperativeHandle(t,()=>({handlePreview:I,handleDownload:D}));let{getPrefixCls:M}=n.useContext(R.E_),F=M("upload",f),z=M(),T=a()(`${F}-list`,`${F}-list-${r}`),_=(0,o.Z)(m.map(e=>({key:e.uid,file:e}))),G="picture-card"===r||"picture-circle"===r?"animate-inline":"animate",J={motionDeadline:2e3,motionName:`${F}-${G}`,keys:_,motionAppear:O},K=n.useMemo(()=>{let e=Object.assign({},(0,B.Z)(z));return delete e.onAppearEnd,delete e.onEnterEnd,delete e.onLeaveEnd,e},[z]);return"picture-card"!==r&&"picture-circle"!==r&&(J=Object.assign(Object.assign({},K),J)),n.createElement("div",{className:T},n.createElement(H.V4,Object.assign({},J,{component:!1}),e=>{let{key:t,file:o,className:i,style:a}=e;return n.createElement(el,{key:t,locale:u,prefixCls:F,className:i,style:a,file:o,items:m,progress:w,listType:r,isImgUrl:p,showPreviewIcon:g,showRemoveIcon:h,showDownloadIcon:b,removeIcon:v,previewIcon:$,downloadIcon:y,iconRender:N,actionIconRender:P,itemRender:x,onPreview:I,onDownload:D,onClose:Z})}),k&&n.createElement(H.ZP,Object.assign({},J,{visible:E,forceRender:!0}),e=>{let{className:t,style:r}=e;return(0,q.Tm)(k,e=>({className:a()(e.className,t),style:Object.assign(Object.assign(Object.assign({},r),{pointerEvents:t?"none":void 0}),e.style)}))}))});var ec=r(14747),eu=r(33507),ed=r(67968),ep=r(45503),ef=e=>{let{componentCls:t,iconCls:r}=e;return{[`${t}-wrapper`]:{[`${t}-drag`]:{position:"relative",width:"100%",height:"100%",textAlign:"center",background:e.colorFillAlter,border:`${e.lineWidth}px dashed ${e.colorBorder}`,borderRadius:e.borderRadiusLG,cursor:"pointer",transition:`border-color ${e.motionDurationSlow}`,[t]:{padding:`${e.padding}px 0`},[`${t}-btn`]:{display:"table",width:"100%",height:"100%",outline:"none"},[`${t}-drag-container`]:{display:"table-cell",verticalAlign:"middle"},[`&:not(${t}-disabled):hover`]:{borderColor:e.colorPrimaryHover},[`p${t}-drag-icon`]:{marginBottom:e.margin,[r]:{color:e.colorPrimary,fontSize:e.uploadThumbnailSize}},[`p${t}-text`]:{margin:`0 0 ${e.marginXXS}px`,color:e.colorTextHeading,fontSize:e.fontSizeLG},[`p${t}-hint`]:{color:e.colorTextDescription,fontSize:e.fontSize},[`&${t}-disabled`]:{cursor:"not-allowed",[`p${t}-drag-icon ${r}, - p${t}-text, - p${t}-hint - `]:{color:e.colorTextDisabled}}}}}},em=e=>{let{componentCls:t,antCls:r,iconCls:n,fontSize:o,lineHeight:i}=e,a=`${t}-list-item`,l=`${a}-actions`,s=`${a}-action`,c=Math.round(o*i);return{[`${t}-wrapper`]:{[`${t}-list`]:Object.assign(Object.assign({},(0,ec.dF)()),{lineHeight:e.lineHeight,[a]:{position:"relative",height:e.lineHeight*o,marginTop:e.marginXS,fontSize:o,display:"flex",alignItems:"center",transition:`background-color ${e.motionDurationSlow}`,"&:hover":{backgroundColor:e.controlItemBgHover},[`${a}-name`]:Object.assign(Object.assign({},ec.vS),{padding:`0 ${e.paddingXS}px`,lineHeight:i,flex:"auto",transition:`all ${e.motionDurationSlow}`}),[l]:{[s]:{opacity:0},[`${s}${r}-btn-sm`]:{height:c,border:0,lineHeight:1,"> span":{transform:"scale(1)"}},[` - ${s}:focus, - &.picture ${s} - `]:{opacity:1},[n]:{color:e.actionsColor,transition:`all ${e.motionDurationSlow}`},[`&:hover ${n}`]:{color:e.colorText}},[`${t}-icon ${n}`]:{color:e.colorTextDescription,fontSize:o},[`${a}-progress`]:{position:"absolute",bottom:-e.uploadProgressOffset,width:"100%",paddingInlineStart:o+e.paddingXS,fontSize:o,lineHeight:0,pointerEvents:"none","> div":{margin:0}}},[`${a}:hover ${s}`]:{opacity:1,color:e.colorText},[`${a}-error`]:{color:e.colorError,[`${a}-name, ${t}-icon ${n}`]:{color:e.colorError},[l]:{[`${n}, ${n}:hover`]:{color:e.colorError},[s]:{opacity:1}}},[`${t}-list-item-container`]:{transition:`opacity ${e.motionDurationSlow}, height ${e.motionDurationSlow}`,"&::before":{display:"table",width:0,height:0,content:'""'}}})}}},eg=r(23183),eh=r(16932);let eb=new eg.E4("uploadAnimateInlineIn",{from:{width:0,height:0,margin:0,padding:0,opacity:0}}),ev=new eg.E4("uploadAnimateInlineOut",{to:{width:0,height:0,margin:0,padding:0,opacity:0}});var e$=e=>{let{componentCls:t}=e,r=`${t}-animate-inline`;return[{[`${t}-wrapper`]:{[`${r}-appear, ${r}-enter, ${r}-leave`]:{animationDuration:e.motionDurationSlow,animationTimingFunction:e.motionEaseInOutCirc,animationFillMode:"forwards"},[`${r}-appear, ${r}-enter`]:{animationName:eb},[`${r}-leave`]:{animationName:ev}}},{[`${t}-wrapper`]:(0,eh.J$)(e)},eb,ev]},ey=r(16397),ew=r(10274);let ek=e=>{let{componentCls:t,iconCls:r,uploadThumbnailSize:n,uploadProgressOffset:o}=e,i=`${t}-list`,a=`${i}-item`;return{[`${t}-wrapper`]:{[` - ${i}${i}-picture, - ${i}${i}-picture-card, - ${i}${i}-picture-circle - `]:{[a]:{position:"relative",height:n+2*e.lineWidth+2*e.paddingXS,padding:e.paddingXS,border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,borderRadius:e.borderRadiusLG,"&:hover":{background:"transparent"},[`${a}-thumbnail`]:Object.assign(Object.assign({},ec.vS),{width:n,height:n,lineHeight:`${n+e.paddingSM}px`,textAlign:"center",flex:"none",[r]:{fontSize:e.fontSizeHeading2,color:e.colorPrimary},img:{display:"block",width:"100%",height:"100%",overflow:"hidden"}}),[`${a}-progress`]:{bottom:o,width:`calc(100% - ${2*e.paddingSM}px)`,marginTop:0,paddingInlineStart:n+e.paddingXS}},[`${a}-error`]:{borderColor:e.colorError,[`${a}-thumbnail ${r}`]:{[`svg path[fill='${ey.iN[0]}']`]:{fill:e.colorErrorBg},[`svg path[fill='${ey.iN.primary}']`]:{fill:e.colorError}}},[`${a}-uploading`]:{borderStyle:"dashed",[`${a}-name`]:{marginBottom:o}}},[`${i}${i}-picture-circle ${a}`]:{[`&, &::before, ${a}-thumbnail`]:{borderRadius:"50%"}}}}},eE=e=>{let{componentCls:t,iconCls:r,fontSizeLG:n,colorTextLightSolid:o}=e,i=`${t}-list`,a=`${i}-item`,l=e.uploadPicCardSize;return{[` - ${t}-wrapper${t}-picture-card-wrapper, - ${t}-wrapper${t}-picture-circle-wrapper - `]:Object.assign(Object.assign({},(0,ec.dF)()),{display:"inline-block",width:"100%",[`${t}${t}-select`]:{width:l,height:l,marginInlineEnd:e.marginXS,marginBottom:e.marginXS,textAlign:"center",verticalAlign:"top",backgroundColor:e.colorFillAlter,border:`${e.lineWidth}px dashed ${e.colorBorder}`,borderRadius:e.borderRadiusLG,cursor:"pointer",transition:`border-color ${e.motionDurationSlow}`,[`> ${t}`]:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%",textAlign:"center"},[`&:not(${t}-disabled):hover`]:{borderColor:e.colorPrimary}},[`${i}${i}-picture-card, ${i}${i}-picture-circle`]:{[`${i}-item-container`]:{display:"inline-block",width:l,height:l,marginBlock:`0 ${e.marginXS}px`,marginInline:`0 ${e.marginXS}px`,verticalAlign:"top"},"&::after":{display:"none"},[a]:{height:"100%",margin:0,"&::before":{position:"absolute",zIndex:1,width:`calc(100% - ${2*e.paddingXS}px)`,height:`calc(100% - ${2*e.paddingXS}px)`,backgroundColor:e.colorBgMask,opacity:0,transition:`all ${e.motionDurationSlow}`,content:'" "'}},[`${a}:hover`]:{[`&::before, ${a}-actions`]:{opacity:1}},[`${a}-actions`]:{position:"absolute",insetInlineStart:0,zIndex:10,width:"100%",whiteSpace:"nowrap",textAlign:"center",opacity:0,transition:`all ${e.motionDurationSlow}`,[`${r}-eye, ${r}-download, ${r}-delete`]:{zIndex:10,width:n,margin:`0 ${e.marginXXS}px`,fontSize:n,cursor:"pointer",transition:`all ${e.motionDurationSlow}`,svg:{verticalAlign:"baseline"}}},[`${a}-actions, ${a}-actions:hover`]:{[`${r}-eye, ${r}-download, ${r}-delete`]:{color:new ew.C(o).setAlpha(.65).toRgbString(),"&:hover":{color:o}}},[`${a}-thumbnail, ${a}-thumbnail img`]:{position:"static",display:"block",width:"100%",height:"100%",objectFit:"contain"},[`${a}-name`]:{display:"none",textAlign:"center"},[`${a}-file + ${a}-name`]:{position:"absolute",bottom:e.margin,display:"block",width:`calc(100% - ${2*e.paddingXS}px)`},[`${a}-uploading`]:{[`&${a}`]:{backgroundColor:e.colorFillAlter},[`&::before, ${r}-eye, ${r}-download, ${r}-delete`]:{display:"none"}},[`${a}-progress`]:{bottom:e.marginXL,width:`calc(100% - ${2*e.paddingXS}px)`,paddingInlineStart:0}}}),[`${t}-wrapper${t}-picture-circle-wrapper`]:{[`${t}${t}-select`]:{borderRadius:"50%"}}}};var ex=e=>{let{componentCls:t}=e;return{[`${t}-rtl`]:{direction:"rtl"}}};let eS=e=>{let{componentCls:t,colorTextDisabled:r}=e;return{[`${t}-wrapper`]:Object.assign(Object.assign({},(0,ec.Wf)(e)),{[t]:{outline:0,"input[type='file']":{cursor:"pointer"}},[`${t}-select`]:{display:"inline-block"},[`${t}-disabled`]:{color:r,cursor:"not-allowed"}})}};var eC=(0,ed.Z)("Upload",e=>{let{fontSizeHeading3:t,fontSize:r,lineHeight:n,lineWidth:o,controlHeightLG:i}=e,a=(0,ep.TS)(e,{uploadThumbnailSize:2*t,uploadProgressOffset:Math.round(r*n)/2+o,uploadPicCardSize:2.55*i});return[eS(a),ef(a),ek(a),eE(a),em(a),e$(a),ex(a),(0,eu.Z)(a)]},e=>({actionsColor:e.colorTextDescription}));let eO=`__LIST_IGNORE_${Date.now()}__`,ej=n.forwardRef((e,t)=>{var r;let{fileList:i,defaultFileList:l,onRemove:s,showUploadList:c=!0,listType:u="text",onPreview:d,onDownload:p,onChange:f,onDrop:m,previewFile:g,disabled:h,locale:b,iconRender:v,isImageUrl:$,progress:y,prefixCls:w,className:k,type:E="select",children:x,style:S,itemRender:C,maxCount:O,data:j={},multiple:F=!1,action:z="",accept:A="",supportServerRender:L=!0}=e,T=n.useContext(N.Z),X=null!=h?h:T,[_,U]=(0,D.Z)(l||[],{value:i,postState:e=>null!=e?e:[]}),[H,W]=n.useState("drop"),B=n.useRef(null);n.useMemo(()=>{let e=Date.now();(i||[]).forEach((t,r)=>{t.uid||Object.isFrozen(t)||(t.uid=`__AUTO__${e}_${r}__`)})},[i]);let q=(e,t,r)=>{let n=(0,o.Z)(t),i=!1;1===O?n=n.slice(-1):O&&(i=n.length>O,n=n.slice(0,O)),(0,Z.flushSync)(()=>{U(n)});let a={file:e,fileList:n};r&&(a.event=r),(!i||n.some(t=>t.uid===e.uid))&&(0,Z.flushSync)(()=>{null==f||f(a)})},V=e=>{let t=e.filter(e=>!e.file[eO]);if(!t.length)return;let r=t.map(e=>G(e.file)),n=(0,o.Z)(_);r.forEach(e=>{n=J(e,n)}),r.forEach((e,r)=>{let o=e;if(t[r].parsedFile)e.status="uploading";else{let t;let{originFileObj:r}=e;try{t=new File([r],r.name,{type:r.type})}catch(e){(t=new Blob([r],{type:r.type})).name=r.name,t.lastModifiedDate=new Date,t.lastModified=new Date().getTime()}t.uid=e.uid,o=t}q(o,n)})},Q=(e,t,r)=>{try{"string"==typeof e&&(e=JSON.parse(e))}catch(e){}if(!K(t,_))return;let n=G(t);n.status="done",n.percent=100,n.response=e,n.xhr=r;let o=J(n,_);q(n,o)},Y=(e,t)=>{if(!K(t,_))return;let r=G(t);r.status="uploading",r.percent=e.percent;let n=J(r,_);q(r,n,e)},ee=(e,t,r)=>{if(!K(r,_))return;let n=G(r);n.error=e,n.response=t,n.status="error";let o=J(n,_);q(n,o)},et=e=>{let t;Promise.resolve("function"==typeof s?s(e):s).then(r=>{var n;if(!1===r)return;let o=function(e,t){let r=void 0!==e.uid?"uid":"name",n=t.filter(t=>t[r]!==e[r]);return n.length===t.length?null:n}(e,_);o&&(t=Object.assign(Object.assign({},e),{status:"removed"}),null==_||_.forEach(e=>{let r=void 0!==t.uid?"uid":"name";e[r]!==t[r]||Object.isFrozen(e)||(e.status="removed")}),null===(n=B.current)||void 0===n||n.abort(t),q(t,o))})},er=e=>{W(e.type),"drop"===e.type&&(null==m||m(e))};n.useImperativeHandle(t,()=>({onBatchStart:V,onSuccess:Q,onProgress:Y,onError:ee,fileList:_,upload:B.current}));let{getPrefixCls:en,direction:eo,upload:ei}=n.useContext(R.E_),ea=en("upload",w),el=Object.assign(Object.assign({onBatchStart:V,onError:ee,onProgress:Y,onSuccess:Q},e),{data:j,multiple:F,action:z,accept:A,supportServerRender:L,prefixCls:ea,disabled:X,beforeUpload:(t,r)=>{var n,o,i,a;return n=void 0,o=void 0,i=void 0,a=function*(){let{beforeUpload:n,transformFile:o}=e,i=t;if(n){let e=yield n(t,r);if(!1===e)return!1;if(delete t[eO],e===eO)return Object.defineProperty(t,eO,{value:!0,configurable:!0}),!1;"object"==typeof e&&e&&(i=e)}return o&&(i=yield o(i)),i},new(i||(i=Promise))(function(e,t){function r(e){try{s(a.next(e))}catch(e){t(e)}}function l(e){try{s(a.throw(e))}catch(e){t(e)}}function s(t){var n;t.done?e(t.value):((n=t.value)instanceof i?n:new i(function(e){e(n)})).then(r,l)}s((a=a.apply(n,o||[])).next())})},onChange:void 0});delete el.className,delete el.style,(!x||X)&&delete el.id;let[ec,eu]=eC(ea),[ed]=(0,P.Z)("Upload",M.Z.Upload),{showRemoveIcon:ep,showPreviewIcon:ef,showDownloadIcon:em,removeIcon:eg,previewIcon:eh,downloadIcon:eb}="boolean"==typeof c?{}:c,ev=(e,t)=>c?n.createElement(es,{prefixCls:ea,listType:u,items:_,previewFile:g,onPreview:d,onDownload:p,onRemove:et,showRemoveIcon:!X&&ep,showPreviewIcon:ef,showDownloadIcon:em,removeIcon:eg,previewIcon:eh,downloadIcon:eb,iconRender:v,locale:Object.assign(Object.assign({},ed),b),isImageUrl:$,progress:y,appendAction:e,appendActionVisible:t,itemRender:C,disabled:X}):e,e$=a()(`${ea}-wrapper`,k,eu,null==ei?void 0:ei.className,{[`${ea}-rtl`]:"rtl"===eo,[`${ea}-picture-card-wrapper`]:"picture-card"===u,[`${ea}-picture-circle-wrapper`]:"picture-circle"===u}),ey=Object.assign(Object.assign({},null==ei?void 0:ei.style),S);if("drag"===E){let e=a()(eu,ea,`${ea}-drag`,{[`${ea}-drag-uploading`]:_.some(e=>"uploading"===e.status),[`${ea}-drag-hover`]:"dragover"===H,[`${ea}-disabled`]:X,[`${ea}-rtl`]:"rtl"===eo});return ec(n.createElement("span",{className:e$},n.createElement("div",{className:e,style:ey,onDrop:er,onDragOver:er,onDragLeave:er},n.createElement(I,Object.assign({},el,{ref:B,className:`${ea}-btn`}),n.createElement("div",{className:`${ea}-drag-container`},x))),ev()))}let ew=a()(ea,`${ea}-select`,{[`${ea}-disabled`]:X}),ek=(r=x?void 0:{display:"none"},n.createElement("div",{className:ew,style:r},n.createElement(I,Object.assign({},el,{ref:B}))));return ec("picture-card"===u||"picture-circle"===u?n.createElement("span",{className:e$},ev(ek,!!x)):n.createElement("span",{className:e$},ek,ev()))});var eI=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,n=Object.getOwnPropertySymbols(e);ot.indexOf(n[o])&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]]);return r};let eD=n.forwardRef((e,t)=>{var{style:r,height:o}=e,i=eI(e,["style","height"]);return n.createElement(ej,Object.assign({ref:t},i,{type:"drag",style:Object.assign(Object.assign({},r),{height:o})}))});ej.Dragger=eD,ej.LIST_IGNORE=eO;var eZ=ej}}]); \ No newline at end of file diff --git a/pilot/server/static/_next/static/chunks/367-5b7ab3e8e2777607.js b/pilot/server/static/_next/static/chunks/367-5b7ab3e8e2777607.js deleted file mode 100644 index a7a68b951..000000000 --- a/pilot/server/static/_next/static/chunks/367-5b7ab3e8e2777607.js +++ /dev/null @@ -1,78 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[367],{27547:function(e,t,n){var r=n(64836);t.Z=void 0;var o=r(n(64938)),l=n(85893),i=(0,o.default)((0,l.jsx)("path",{d:"M12 12.75c1.63 0 3.07.39 4.24.9 1.08.48 1.76 1.56 1.76 2.73V18H6v-1.61c0-1.18.68-2.26 1.76-2.73 1.17-.52 2.61-.91 4.24-.91zM4 13c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm1.13 1.1c-.37-.06-.74-.1-1.13-.1-.99 0-1.93.21-2.78.58C.48 14.9 0 15.62 0 16.43V18h4.5v-1.61c0-.83.23-1.61.63-2.29zM20 13c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm4 3.43c0-.81-.48-1.53-1.22-1.85-.85-.37-1.79-.58-2.78-.58-.39 0-.76.04-1.13.1.4.68.63 1.46.63 2.29V18H24v-1.57zM12 6c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3z"}),"Groups");t.Z=i},15398:function(e,t,n){var r=n(64836);t.Z=void 0;var o=r(n(64938)),l=n(85893),i=(0,o.default)((0,l.jsx)("path",{d:"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"}),"Person");t.Z=i},57838:function(e,t,n){n.d(t,{Z:function(){return o}});var r=n(67294);function o(){let[,e]=r.useReducer(e=>e+1,0);return e}},84567:function(e,t,n){n.d(t,{Z:function(){return w}});var r=n(94184),o=n.n(r),l=n(50132),i=n(67294),a=n(53124),c=n(98866),s=n(65223);let d=i.createContext(null);var u=n(63185),f=n(45353),p=n(17415),m=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let h=i.forwardRef((e,t)=>{var n;let{prefixCls:r,className:h,rootClassName:g,children:b,indeterminate:v=!1,style:x,onMouseEnter:y,onMouseLeave:w,skipGroup:C=!1,disabled:$}=e,S=m(e,["prefixCls","className","rootClassName","children","indeterminate","style","onMouseEnter","onMouseLeave","skipGroup","disabled"]),{getPrefixCls:E,direction:k,checkbox:Z}=i.useContext(a.E_),N=i.useContext(d),{isFormItemInput:O}=i.useContext(s.aM),R=i.useContext(c.Z),I=null!==(n=(null==N?void 0:N.disabled)||$)&&void 0!==n?n:R,z=i.useRef(S.value);i.useEffect(()=>{null==N||N.registerValue(S.value)},[]),i.useEffect(()=>{if(!C)return S.value!==z.current&&(null==N||N.cancelValue(z.current),null==N||N.registerValue(S.value),z.current=S.value),()=>null==N?void 0:N.cancelValue(S.value)},[S.value]);let j=E("checkbox",r),[T,M]=(0,u.ZP)(j),P=Object.assign({},S);N&&!C&&(P.onChange=function(){S.onChange&&S.onChange.apply(S,arguments),N.toggleOption&&N.toggleOption({label:b,value:S.value})},P.name=N.name,P.checked=N.value.includes(S.value));let L=o()(`${j}-wrapper`,{[`${j}-rtl`]:"rtl"===k,[`${j}-wrapper-checked`]:P.checked,[`${j}-wrapper-disabled`]:I,[`${j}-wrapper-in-form-item`]:O},null==Z?void 0:Z.className,h,g,M),H=o()({[`${j}-indeterminate`]:v},p.A,M);return T(i.createElement(f.Z,{component:"Checkbox",disabled:I},i.createElement("label",{className:L,style:Object.assign(Object.assign({},null==Z?void 0:Z.style),x),onMouseEnter:y,onMouseLeave:w},i.createElement(l.Z,Object.assign({"aria-checked":v?"mixed":void 0},P,{prefixCls:j,className:H,disabled:I,ref:t})),void 0!==b&&i.createElement("span",null,b))))});var g=n(74902),b=n(98423),v=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let x=i.forwardRef((e,t)=>{let{defaultValue:n,children:r,options:l=[],prefixCls:c,className:s,rootClassName:f,style:p,onChange:m}=e,x=v(e,["defaultValue","children","options","prefixCls","className","rootClassName","style","onChange"]),{getPrefixCls:y,direction:w}=i.useContext(a.E_),[C,$]=i.useState(x.value||n||[]),[S,E]=i.useState([]);i.useEffect(()=>{"value"in x&&$(x.value||[])},[x.value]);let k=i.useMemo(()=>l.map(e=>"string"==typeof e||"number"==typeof e?{label:e,value:e}:e),[l]),Z=y("checkbox",c),N=`${Z}-group`,[O,R]=(0,u.ZP)(Z),I=(0,b.Z)(x,["value","disabled"]),z=l.length?k.map(e=>i.createElement(h,{prefixCls:Z,key:e.value.toString(),disabled:"disabled"in e?e.disabled:x.disabled,value:e.value,checked:C.includes(e.value),onChange:e.onChange,className:`${N}-item`,style:e.style,title:e.title},e.label)):r,j={toggleOption:e=>{let t=C.indexOf(e.value),n=(0,g.Z)(C);-1===t?n.push(e.value):n.splice(t,1),"value"in x||$(n),null==m||m(n.filter(e=>S.includes(e)).sort((e,t)=>{let n=k.findIndex(t=>t.value===e),r=k.findIndex(e=>e.value===t);return n-r}))},value:C,disabled:x.disabled,name:x.name,registerValue:e=>{E(t=>[].concat((0,g.Z)(t),[e]))},cancelValue:e=>{E(t=>t.filter(t=>t!==e))}},T=o()(N,{[`${N}-rtl`]:"rtl"===w},s,f,R);return O(i.createElement("div",Object.assign({className:T,style:p},I,{ref:t}),i.createElement(d.Provider,{value:j},z)))});var y=i.memo(x);h.Group=y,h.__ANT_CHECKBOX=!0;var w=h},75081:function(e,t,n){n.d(t,{Z:function(){return w}});var r=n(94184),o=n.n(r),l=n(98423),i=n(67294),a=n(96159),c=n(53124),s=n(23183),d=n(14747),u=n(67968),f=n(45503);let p=new s.E4("antSpinMove",{to:{opacity:1}}),m=new s.E4("antRotate",{to:{transform:"rotate(405deg)"}}),h=e=>({[`${e.componentCls}`]:Object.assign(Object.assign({},(0,d.Wf)(e)),{position:"absolute",display:"none",color:e.colorPrimary,fontSize:0,textAlign:"center",verticalAlign:"middle",opacity:0,transition:`transform ${e.motionDurationSlow} ${e.motionEaseInOutCirc}`,"&-spinning":{position:"static",display:"inline-block",opacity:1},"&-nested-loading":{position:"relative",[`> div > ${e.componentCls}`]:{position:"absolute",top:0,insetInlineStart:0,zIndex:4,display:"block",width:"100%",height:"100%",maxHeight:e.contentHeight,[`${e.componentCls}-dot`]:{position:"absolute",top:"50%",insetInlineStart:"50%",margin:-e.spinDotSize/2},[`${e.componentCls}-text`]:{position:"absolute",top:"50%",width:"100%",paddingTop:(e.spinDotSize-e.fontSize)/2+2,textShadow:`0 1px 2px ${e.colorBgContainer}`,fontSize:e.fontSize},[`&${e.componentCls}-show-text ${e.componentCls}-dot`]:{marginTop:-(e.spinDotSize/2)-10},"&-sm":{[`${e.componentCls}-dot`]:{margin:-e.spinDotSizeSM/2},[`${e.componentCls}-text`]:{paddingTop:(e.spinDotSizeSM-e.fontSize)/2+2},[`&${e.componentCls}-show-text ${e.componentCls}-dot`]:{marginTop:-(e.spinDotSizeSM/2)-10}},"&-lg":{[`${e.componentCls}-dot`]:{margin:-(e.spinDotSizeLG/2)},[`${e.componentCls}-text`]:{paddingTop:(e.spinDotSizeLG-e.fontSize)/2+2},[`&${e.componentCls}-show-text ${e.componentCls}-dot`]:{marginTop:-(e.spinDotSizeLG/2)-10}}},[`${e.componentCls}-container`]:{position:"relative",transition:`opacity ${e.motionDurationSlow}`,"&::after":{position:"absolute",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,zIndex:10,width:"100%",height:"100%",background:e.colorBgContainer,opacity:0,transition:`all ${e.motionDurationSlow}`,content:'""',pointerEvents:"none"}},[`${e.componentCls}-blur`]:{clear:"both",opacity:.5,userSelect:"none",pointerEvents:"none","&::after":{opacity:.4,pointerEvents:"auto"}}},"&-tip":{color:e.spinDotDefault},[`${e.componentCls}-dot`]:{position:"relative",display:"inline-block",fontSize:e.spinDotSize,width:"1em",height:"1em","&-item":{position:"absolute",display:"block",width:(e.spinDotSize-e.marginXXS/2)/2,height:(e.spinDotSize-e.marginXXS/2)/2,backgroundColor:e.colorPrimary,borderRadius:"100%",transform:"scale(0.75)",transformOrigin:"50% 50%",opacity:.3,animationName:p,animationDuration:"1s",animationIterationCount:"infinite",animationTimingFunction:"linear",animationDirection:"alternate","&:nth-child(1)":{top:0,insetInlineStart:0},"&:nth-child(2)":{top:0,insetInlineEnd:0,animationDelay:"0.4s"},"&:nth-child(3)":{insetInlineEnd:0,bottom:0,animationDelay:"0.8s"},"&:nth-child(4)":{bottom:0,insetInlineStart:0,animationDelay:"1.2s"}},"&-spin":{transform:"rotate(45deg)",animationName:m,animationDuration:"1.2s",animationIterationCount:"infinite",animationTimingFunction:"linear"}},[`&-sm ${e.componentCls}-dot`]:{fontSize:e.spinDotSizeSM,i:{width:(e.spinDotSizeSM-e.marginXXS/2)/2,height:(e.spinDotSizeSM-e.marginXXS/2)/2}},[`&-lg ${e.componentCls}-dot`]:{fontSize:e.spinDotSizeLG,i:{width:(e.spinDotSizeLG-e.marginXXS)/2,height:(e.spinDotSizeLG-e.marginXXS)/2}},[`&${e.componentCls}-show-text ${e.componentCls}-text`]:{display:"block"}})});var g=(0,u.Z)("Spin",e=>{let t=(0,f.TS)(e,{spinDotDefault:e.colorTextDescription,spinDotSize:e.controlHeightLG/2,spinDotSizeSM:.35*e.controlHeightLG,spinDotSizeLG:e.controlHeight});return[h(t)]},{contentHeight:400}),b=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let v=null,x=e=>{let{spinPrefixCls:t,spinning:n=!0,delay:r=0,className:s,rootClassName:d,size:u="default",tip:f,wrapperClassName:p,style:m,children:h,hashId:g}=e,x=b(e,["spinPrefixCls","spinning","delay","className","rootClassName","size","tip","wrapperClassName","style","children","hashId"]),[y,w]=i.useState(()=>n&&(!n||!r||!!isNaN(Number(r))));i.useEffect(()=>{if(n){var e;let t=function(e,t,n){var r,o=n||{},l=o.noTrailing,i=void 0!==l&&l,a=o.noLeading,c=void 0!==a&&a,s=o.debounceMode,d=void 0===s?void 0:s,u=!1,f=0;function p(){r&&clearTimeout(r)}function m(){for(var n=arguments.length,o=Array(n),l=0;le?c?(f=Date.now(),i||(r=setTimeout(d?h:m,e))):m():!0!==i&&(r=setTimeout(d?h:m,void 0===d?e-s:e)))}return m.cancel=function(e){var t=(e||{}).upcomingOnly;p(),u=!(void 0!==t&&t)},m}(r,()=>{w(!0)},{debounceMode:!1!==(void 0!==(e=({}).atBegin)&&e)});return t(),()=>{var e;null===(e=null==t?void 0:t.cancel)||void 0===e||e.call(t)}}w(!1)},[r,n]);let C=i.useMemo(()=>void 0!==h,[h]),{direction:$,spin:S}=i.useContext(c.E_),E=o()(t,null==S?void 0:S.className,{[`${t}-sm`]:"small"===u,[`${t}-lg`]:"large"===u,[`${t}-spinning`]:y,[`${t}-show-text`]:!!f,[`${t}-rtl`]:"rtl"===$},s,d,g),k=o()(`${t}-container`,{[`${t}-blur`]:y}),Z=(0,l.Z)(x,["indicator","prefixCls"]),N=Object.assign(Object.assign({},null==S?void 0:S.style),m),O=i.createElement("div",Object.assign({},Z,{style:N,className:E,"aria-live":"polite","aria-busy":y}),function(e,t){let{indicator:n}=t,r=`${e}-dot`;return null===n?null:(0,a.l$)(n)?(0,a.Tm)(n,{className:o()(n.props.className,r)}):(0,a.l$)(v)?(0,a.Tm)(v,{className:o()(v.props.className,r)}):i.createElement("span",{className:o()(r,`${e}-dot-spin`)},i.createElement("i",{className:`${e}-dot-item`,key:1}),i.createElement("i",{className:`${e}-dot-item`,key:2}),i.createElement("i",{className:`${e}-dot-item`,key:3}),i.createElement("i",{className:`${e}-dot-item`,key:4}))}(t,e),f&&C?i.createElement("div",{className:`${t}-text`},f):null);return C?i.createElement("div",Object.assign({},Z,{className:o()(`${t}-nested-loading`,p,g)}),y&&i.createElement("div",{key:"loading"},O),i.createElement("div",{className:k,key:"container"},h)):O},y=e=>{let{prefixCls:t}=e,{getPrefixCls:n}=i.useContext(c.E_),r=n("spin",t),[o,l]=g(r),a=Object.assign(Object.assign({},e),{spinPrefixCls:r,hashId:l});return o(i.createElement(x,Object.assign({},a)))};y.setDefaultIndicator=e=>{v=e};var w=y},61607:function(e,t,n){n.d(t,{Z:function(){return tq}});var r,o={},l="rc-table-internal-hook",i=n(97685),a=n(66680),c=n(8410),s=n(91881),d=n(67294),u=n(73935);function f(e,t){var n=(0,a.Z)("function"==typeof t?t:function(e){if(void 0===t)return e;if(!Array.isArray(t))return e[t];var n={};return t.forEach(function(t){n[t]=e[t]}),n}),r=d.useContext(null==e?void 0:e.Context),o=r||{},l=o.listeners,u=o.getValue,f=d.useRef();f.current=n(r?u():null==e?void 0:e.defaultValue);var p=d.useState({}),m=(0,i.Z)(p,2)[1];return(0,c.Z)(function(){if(r)return l.add(e),function(){l.delete(e)};function e(e){var t=n(e);(0,s.Z)(f.current,t,!0)||m({})}},[r]),f.current}var p=n(87462),m=n(42550),h=function(){var e=d.createContext(null);function t(){return d.useContext(e)}return{makeImmutable:function(n,r){var o=(0,m.Yr)(n),l=function(l,i){var a=o?{ref:i}:{},c=d.useRef(0),s=d.useRef(l);return null!==t()?d.createElement(n,(0,p.Z)({},l,a)):((!r||r(s.current,l))&&(c.current+=1),s.current=l,d.createElement(e.Provider,{value:c.current},d.createElement(n,(0,p.Z)({},l,a))))};return o?d.forwardRef(l):l},responseImmutable:function(e,n){var r=(0,m.Yr)(e),o=function(n,o){var l=r?{ref:o}:{};return t(),d.createElement(e,(0,p.Z)({},n,l))};return r?d.memo(d.forwardRef(o),n):d.memo(o,n)},useImmutableMark:t}}(),g=h.makeImmutable,b=h.responseImmutable,v=h.useImmutableMark,x={Context:r=d.createContext(void 0),Provider:function(e){var t=e.value,n=e.children,o=d.useRef(t);o.current=t;var l=d.useState(function(){return{getValue:function(){return o.current},listeners:new Set}}),a=(0,i.Z)(l,1)[0];return(0,c.Z)(function(){(0,u.unstable_batchedUpdates)(function(){a.listeners.forEach(function(e){e(t)})})},[t]),d.createElement(r.Provider,{value:a},n)},defaultValue:void 0};d.memo(function(){var e,t,n,r,o,l,i=(n=d.useRef(0),n.current+=1,r=d.useRef(e),o=[],Object.keys(e||{}).map(function(t){var n;(null==e?void 0:e[t])!==(null===(n=r.current)||void 0===n?void 0:n[t])&&o.push(t)}),r.current=e,l=d.useRef([]),o.length&&(l.current=o),d.useDebugValue(n.current),d.useDebugValue(l.current.join(", ")),t&&console.log("".concat(t,":"),n.current,l.current),n.current);return d.createElement("h1",null,"Render Times: ",i)}).displayName="RenderBlock";var y=n(71002),w=n(1413),C=n(4942),$=n(94184),S=n.n($),E=n(56982),k=n(88306);n(80334);var Z=d.createContext({renderWithProps:!1});function N(e){var t=[],n={};return e.forEach(function(e){for(var r=e||{},o=r.key,l=r.dataIndex,i=o||(null==l?[]:Array.isArray(l)?l:[l]).join("-")||"RC_TABLE_KEY";n[i];)i="".concat(i,"_next");n[i]=!0,t.push(i)}),t}var O=function(e){var t,n=e.ellipsis,r=e.rowType,o=e.children,l=!0===n?{showTitle:!0}:n;return l&&(l.showTitle||"header"===r)&&("string"==typeof o||"number"==typeof o?t=o.toString():d.isValidElement(o)&&"string"==typeof o.props.children&&(t=o.props.children)),t},R=d.memo(function(e){var t,n,r,o,l,a,c,u,m,h,g=e.component,b=e.children,$=e.ellipsis,N=e.scope,R=e.prefixCls,I=e.className,z=e.align,j=e.record,T=e.render,M=e.dataIndex,P=e.renderIndex,L=e.shouldCellUpdate,H=e.index,D=e.rowType,B=e.colSpan,A=e.rowSpan,_=e.fixLeft,F=e.fixRight,W=e.firstFixLeft,K=e.lastFixLeft,V=e.firstFixRight,X=e.lastFixRight,G=e.appendNode,U=e.additionalProps,Y=void 0===U?{}:U,J=e.isSticky,q="".concat(R,"-cell"),Q=f(x,["supportSticky","allColumnsFixedLeft"]),ee=Q.supportSticky,et=Q.allColumnsFixedLeft,en=(t=d.useContext(Z),n=v(),(0,E.Z)(function(){if(null!=b)return[b];var e=null==M||""===M?[]:Array.isArray(M)?M:[M],n=(0,k.Z)(j,e),r=n,o=void 0;if(T){var l=T(n,j,P);!l||"object"!==(0,y.Z)(l)||Array.isArray(l)||d.isValidElement(l)?r=l:(r=l.children,o=l.props,t.renderWithProps=!0)}return[r,o]},[n,j,b,M,T,P],function(e,n){if(L){var r=(0,i.Z)(e,2)[1];return L((0,i.Z)(n,2)[1],r)}return!!t.renderWithProps||!(0,s.Z)(e,n,!0)})),er=(0,i.Z)(en,2),eo=er[0],el=er[1],ei={},ea="number"==typeof _&&ee,ec="number"==typeof F&ⅇea&&(ei.position="sticky",ei.left=_),ec&&(ei.position="sticky",ei.right=F);var es=null!==(r=null!==(o=null!==(l=null==el?void 0:el.colSpan)&&void 0!==l?l:Y.colSpan)&&void 0!==o?o:B)&&void 0!==r?r:1,ed=null!==(a=null!==(c=null!==(u=null==el?void 0:el.rowSpan)&&void 0!==u?u:Y.rowSpan)&&void 0!==c?c:A)&&void 0!==a?a:1,eu=f(x,function(e){var t,n;return[(t=ed||1,n=e.hoverStartRow,H<=e.hoverEndRow&&H+t-1>=n),e.onHover]}),ef=(0,i.Z)(eu,2),ep=ef[0],em=ef[1];if(0===es||0===ed)return null;var eh=null!==(m=Y.title)&&void 0!==m?m:O({rowType:D,ellipsis:$,children:eo}),eg=S()(q,I,(h={},(0,C.Z)(h,"".concat(q,"-fix-left"),ea&&ee),(0,C.Z)(h,"".concat(q,"-fix-left-first"),W&&ee),(0,C.Z)(h,"".concat(q,"-fix-left-last"),K&&ee),(0,C.Z)(h,"".concat(q,"-fix-left-all"),K&&et&&ee),(0,C.Z)(h,"".concat(q,"-fix-right"),ec&&ee),(0,C.Z)(h,"".concat(q,"-fix-right-first"),V&&ee),(0,C.Z)(h,"".concat(q,"-fix-right-last"),X&&ee),(0,C.Z)(h,"".concat(q,"-ellipsis"),$),(0,C.Z)(h,"".concat(q,"-with-append"),G),(0,C.Z)(h,"".concat(q,"-fix-sticky"),(ea||ec)&&J&&ee),(0,C.Z)(h,"".concat(q,"-row-hover"),!el&&ep),h),Y.className,null==el?void 0:el.className),eb={};z&&(eb.textAlign=z);var ev=(0,w.Z)((0,w.Z)((0,w.Z)((0,w.Z)({},Y.style),eb),ei),null==el?void 0:el.style),ex=eo;return"object"!==(0,y.Z)(ex)||Array.isArray(ex)||d.isValidElement(ex)||(ex=null),$&&(K||V)&&(ex=d.createElement("span",{className:"".concat(q,"-content")},ex)),d.createElement(g,(0,p.Z)({},el,Y,{className:eg,style:ev,title:eh,scope:N,onMouseEnter:function(e){var t;j&&em(H,H+ed-1),null==Y||null===(t=Y.onMouseEnter)||void 0===t||t.call(Y,e)},onMouseLeave:function(e){var t;j&&em(-1,-1),null==Y||null===(t=Y.onMouseLeave)||void 0===t||t.call(Y,e)},colSpan:1!==es?es:null,rowSpan:1!==ed?ed:null}),G,ex)});function I(e,t,n,r,o,l){var i,a,c=n[e]||{},s=n[t]||{};"left"===c.fixed?i=r.left["rtl"===o?t:e]:"right"===s.fixed&&(a=r.right["rtl"===o?e:t]);var d=!1,u=!1,f=!1,p=!1,m=n[t+1],h=n[e-1],g=!(null!=l&&l.children);return"rtl"===o?void 0!==i?p=!(h&&"left"===h.fixed)&&g:void 0!==a&&(f=!(m&&"right"===m.fixed)&&g):void 0!==i?d=!(m&&"left"===m.fixed)&&g:void 0!==a&&(u=!(h&&"right"===h.fixed)&&g),{fixLeft:i,fixRight:a,lastFixLeft:d,firstFixRight:u,lastFixRight:f,firstFixLeft:p,isSticky:r.isSticky}}var z=d.createContext({}),j=n(45987),T=["children"];function M(e){return e.children}M.Row=function(e){var t=e.children,n=(0,j.Z)(e,T);return d.createElement("tr",n,t)},M.Cell=function(e){var t=e.className,n=e.index,r=e.children,o=e.colSpan,l=void 0===o?1:o,i=e.rowSpan,a=e.align,c=f(x,["prefixCls","direction"]),s=c.prefixCls,u=c.direction,m=d.useContext(z),h=m.scrollColumnIndex,g=m.stickyOffsets,b=m.flattenColumns,v=m.columns,y=n+l-1+1===h?l+1:l,w=I(n,n+y-1,b,g,u,null==v?void 0:v[n]);return d.createElement(R,(0,p.Z)({className:t,index:n,component:"td",prefixCls:s,record:null,dataIndex:null,align:a,colSpan:y,rowSpan:i,render:function(){return r}},w))};var P=b(function(e){var t=e.children,n=e.stickyOffsets,r=e.flattenColumns,o=e.columns,l=f(x,"prefixCls"),i=r.length-1,a=r[i],c=d.useMemo(function(){return{stickyOffsets:n,flattenColumns:r,scrollColumnIndex:null!=a&&a.scrollbar?i:null,columns:o}},[a,r,i,n,o]);return d.createElement(z.Provider,{value:c},d.createElement("tfoot",{className:"".concat(l,"-summary")},t))}),L=n(9220),H=n(5110),D=n(98924),B=function(e){if((0,D.Z)()&&window.document.documentElement){var t=Array.isArray(e)?e:[e],n=window.document.documentElement;return t.some(function(e){return e in n.style})}return!1},A=function(e,t){if(!B(e))return!1;var n=document.createElement("div"),r=n.style[e];return n.style[e]=t,n.style[e]!==r},_=n(74204),F=n(64217),W=n(74902),K=function(e){var t=e.prefixCls,n=e.children,r=e.component,o=e.cellComponent,l=e.className,i=e.expanded,a=e.colSpan,c=e.isEmpty,s=f(x,["scrollbarSize","fixHeader","fixColumn","componentWidth","horizonScroll"]),u=s.scrollbarSize,p=s.fixHeader,m=s.fixColumn,h=s.componentWidth,g=s.horizonScroll,b=n;return(c?g:m)&&(b=d.createElement("div",{style:{width:h-(p?u:0),position:"sticky",left:0,overflow:"hidden"},className:"".concat(t,"-expanded-row-fixed")},0!==h&&b)),d.createElement(r,{className:l,style:{display:i?null:"none"}},d.createElement(R,{component:o,prefixCls:t,colSpan:a},b))};function V(e){var t,n,r=e.className,o=e.style,l=e.record,a=e.index,c=e.renderIndex,s=e.rowKey,u=e.rowExpandable,m=e.expandedKeys,h=e.onRow,g=e.indent,b=void 0===g?0:g,v=e.rowComponent,y=e.cellComponent,C=e.scopeCellComponent,$=e.childrenColumnName,E=f(x,["prefixCls","fixedInfoList","flattenColumns","expandableType","expandRowByClick","onTriggerExpand","rowClassName","expandedRowClassName","indentSize","expandIcon","expandedRowRender","expandIconColumnIndex"]),k=E.prefixCls,Z=E.fixedInfoList,O=E.flattenColumns,I=E.expandableType,z=E.expandRowByClick,j=E.onTriggerExpand,T=E.rowClassName,M=E.expandedRowClassName,P=E.indentSize,L=E.expandIcon,H=E.expandedRowRender,D=E.expandIconColumnIndex,B=d.useState(!1),A=(0,i.Z)(B,2),_=A[0],F=A[1],W=m&&m.has(s);d.useEffect(function(){W&&F(!0)},[W]);var V="row"===I&&(!u||u(l)),X="nest"===I,G=$&&l&&l[$],U=V||X,Y=d.useRef(j);Y.current=j;var J=function(){Y.current.apply(Y,arguments)},q=null==h?void 0:h(l,a);"string"==typeof T?t=T:"function"==typeof T&&(t=T(l,a,b));var Q=N(O),ee=d.createElement(v,(0,p.Z)({},q,{"data-row-key":s,className:S()(r,"".concat(k,"-row"),"".concat(k,"-row-level-").concat(b),t,q&&q.className),style:(0,w.Z)((0,w.Z)({},o),q?q.style:null),onClick:function(e){var t;z&&U&&J(l,e);for(var n=arguments.length,r=Array(n>1?n-1:0),o=1;o=0;a-=1){var c=t[a],s=n&&n[a],u=s&&s[Q];if(c||u||i){var f=u||{},m=(f.columnType,(0,j.Z)(f,ee));o.unshift(d.createElement("col",(0,p.Z)({key:a,style:{width:c}},m))),i=!0}}return d.createElement("colgroup",null,o)},en=["className","noData","columns","flattenColumns","colWidths","columCount","stickyOffsets","direction","fixHeader","stickyTopOffset","stickyBottomOffset","stickyClassName","onScroll","maxContentScroll","children"],er=d.forwardRef(function(e,t){var n=e.className,r=e.noData,o=e.columns,l=e.flattenColumns,i=e.colWidths,a=e.columCount,c=e.stickyOffsets,s=e.direction,u=e.fixHeader,p=e.stickyTopOffset,h=e.stickyBottomOffset,g=e.stickyClassName,b=e.onScroll,v=e.maxContentScroll,y=e.children,$=(0,j.Z)(e,en),E=f(x,["prefixCls","scrollbarSize","isSticky"]),k=E.prefixCls,Z=E.scrollbarSize,N=E.isSticky,O=N&&!u?0:Z,R=d.useRef(null),I=d.useCallback(function(e){(0,m.mH)(t,e),(0,m.mH)(R,e)},[]);d.useEffect(function(){var e;function t(e){var t=e.currentTarget,n=e.deltaX;n&&(b({currentTarget:t,scrollLeft:t.scrollLeft+n}),e.preventDefault())}return null===(e=R.current)||void 0===e||e.addEventListener("wheel",t),function(){var e;null===(e=R.current)||void 0===e||e.removeEventListener("wheel",t)}},[]);var z=d.useMemo(function(){return l.every(function(e){return e.width>=0})},[l]),T=l[l.length-1],M={fixed:T?T.fixed:null,scrollbar:!0,onHeaderCell:function(){return{className:"".concat(k,"-cell-scrollbar")}}},P=(0,d.useMemo)(function(){return O?[].concat((0,W.Z)(o),[M]):o},[O,o]),L=(0,d.useMemo)(function(){return O?[].concat((0,W.Z)(l),[M]):l},[O,l]),H=(0,d.useMemo)(function(){var e=c.right,t=c.left;return(0,w.Z)((0,w.Z)({},c),{},{left:"rtl"===s?[].concat((0,W.Z)(t.map(function(e){return e+O})),[0]):t,right:"rtl"===s?e:[].concat((0,W.Z)(e.map(function(e){return e+O})),[0]),isSticky:N})},[O,c,N]),D=(0,d.useMemo)(function(){for(var e=[],t=0;t1?"colgroup":"col":null,ellipsis:l.ellipsis,align:l.align,component:l.title?i:a,prefixCls:m,key:g[t]},c,{additionalProps:n,rowType:"header"}))}))}el.displayName="HeaderRow";var ei=b(function(e){var t=e.stickyOffsets,n=e.columns,r=e.flattenColumns,o=e.onHeaderRow,l=f(x,["prefixCls","getComponent"]),i=l.prefixCls,a=l.getComponent,c=d.useMemo(function(){return function(e){var t=[];!function e(n,r){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;t[o]=t[o]||[];var l=r;return n.filter(Boolean).map(function(n){var r={key:n.key,className:n.className||"",children:n.title,column:n,colStart:l},i=1,a=n.children;return a&&a.length>0&&(i=e(a,l,o+1).reduce(function(e,t){return e+t},0),r.hasSubColumns=!0),"colSpan"in n&&(i=n.colSpan),"rowSpan"in n&&(r.rowSpan=n.rowSpan),r.colSpan=i,r.colEnd=r.colStart+i-1,t[o].push(r),l+=i,i})}(e,0);for(var n=t.length,r=function(e){t[e].forEach(function(t){("rowSpan"in t)||t.hasSubColumns||(t.rowSpan=n-e)})},o=0;o0?[].concat((0,W.Z)(e),(0,W.Z)(eu(o).map(function(e){return(0,w.Z)({fixed:r},e)}))):[].concat((0,W.Z)(e),[(0,w.Z)((0,w.Z)({},t),{},{fixed:r})])},[])}var ef=function(e,t){var n=e.prefixCls,r=e.columns,l=e.children,i=e.expandable,a=e.expandedKeys,c=e.columnTitle,s=e.getRowKey,u=e.onTriggerExpand,f=e.expandIcon,p=e.rowExpandable,m=e.expandIconColumnIndex,h=e.direction,g=e.expandRowByClick,b=e.columnWidth,v=e.fixed,x=d.useMemo(function(){return r||ed(l)},[r,l]),y=d.useMemo(function(){if(i){var e,t,r=x.slice();if(!r.includes(o)){var l=m||0;l>=0&&r.splice(l,0,o)}var h=r.indexOf(o);r=r.filter(function(e,t){return e!==o||t===h});var y=x[h];t=("left"===v||v)&&!m?"left":("right"===v||v)&&m===x.length?"right":y?y.fixed:null;var w=(e={},(0,C.Z)(e,Q,{className:"".concat(n,"-expand-icon-col"),columnType:"EXPAND_COLUMN"}),(0,C.Z)(e,"title",c),(0,C.Z)(e,"fixed",t),(0,C.Z)(e,"className","".concat(n,"-row-expand-icon-cell")),(0,C.Z)(e,"width",b),(0,C.Z)(e,"render",function(e,t,r){var o=s(t,r),l=f({prefixCls:n,expanded:a.has(o),expandable:!p||p(t),record:t,onExpand:u});return g?d.createElement("span",{onClick:function(e){return e.stopPropagation()}},l):l}),e);return r.map(function(e){return e===o?w:e})}return x.filter(function(e){return e!==o})},[i,x,s,a,f,h]),$=d.useMemo(function(){var e=y;return t&&(e=t(e)),e.length||(e=[{render:function(){return null}}]),e},[t,y,h]),S=d.useMemo(function(){return"rtl"===h?eu($).map(function(e){var t=e.fixed,n=(0,j.Z)(e,es),r=t;return"left"===t?r="right":"right"===t&&(r="left"),(0,w.Z)({fixed:r},n)}):eu($)},[$,h]);return[$,S]};function ep(e){var t,n=e.prefixCls,r=e.record,o=e.onExpand,l=e.expanded,i=e.expandable,a="".concat(n,"-row-expand-icon");return i?d.createElement("span",{className:S()(a,(t={},(0,C.Z)(t,"".concat(n,"-row-expanded"),l),(0,C.Z)(t,"".concat(n,"-row-collapsed"),!l),t)),onClick:function(e){o(r,e),e.stopPropagation()}}):d.createElement("span",{className:S()(a,"".concat(n,"-row-spaced"))})}function em(e){var t=(0,d.useRef)(e),n=(0,d.useState)({}),r=(0,i.Z)(n,2)[1],o=(0,d.useRef)(null),l=(0,d.useRef)([]);return(0,d.useEffect)(function(){return function(){o.current=null}},[]),[t.current,function(e){l.current.push(e);var n=Promise.resolve();o.current=n,n.then(function(){if(o.current===n){var e=l.current,i=t.current;l.current=[],e.forEach(function(e){t.current=e(t.current)}),o.current=null,i!==t.current&&r({})}})}]}var eh=(0,D.Z)()?window:null,eg=function(e){var t=e.className,n=e.children;return d.createElement("div",{className:t},n)},eb=n(64019),ev=n(27678),ex=d.forwardRef(function(e,t){var n,r,o=e.scrollBodyRef,l=e.onScroll,a=e.offsetScroll,c=e.container,s=f(x,"prefixCls"),u=(null===(n=o.current)||void 0===n?void 0:n.scrollWidth)||0,p=(null===(r=o.current)||void 0===r?void 0:r.clientWidth)||0,m=u&&p*(p/u),h=d.useRef(),g=em({scrollLeft:0,isHiddenScrollBar:!1}),b=(0,i.Z)(g,2),v=b[0],y=b[1],$=d.useRef({delta:0,x:0}),E=d.useState(!1),k=(0,i.Z)(E,2),Z=k[0],N=k[1],O=function(){N(!1)},R=function(e){var t,n=(e||(null===(t=window)||void 0===t?void 0:t.event)).buttons;if(!Z||0===n){Z&&N(!1);return}var r=$.current.x+e.pageX-$.current.x-$.current.delta;r<=0&&(r=0),r+m>=p&&(r=p-m),l({scrollLeft:r/p*(u+2)}),$.current.x=e.pageX},I=function(){if(o.current){var e=(0,ev.os)(o.current).top,t=e+o.current.offsetHeight,n=c===window?document.documentElement.scrollTop+window.innerHeight:(0,ev.os)(c).top+c.clientHeight;t-(0,_.Z)()<=n||e>=n-a?y(function(e){return(0,w.Z)((0,w.Z)({},e),{},{isHiddenScrollBar:!0})}):y(function(e){return(0,w.Z)((0,w.Z)({},e),{},{isHiddenScrollBar:!1})})}},z=function(e){y(function(t){return(0,w.Z)((0,w.Z)({},t),{},{scrollLeft:e/u*p||0})})};return(d.useImperativeHandle(t,function(){return{setScrollLeft:z}}),d.useEffect(function(){var e=(0,eb.Z)(document.body,"mouseup",O,!1),t=(0,eb.Z)(document.body,"mousemove",R,!1);return I(),function(){e.remove(),t.remove()}},[m,Z]),d.useEffect(function(){var e=(0,eb.Z)(c,"scroll",I,!1),t=(0,eb.Z)(window,"resize",I,!1);return function(){e.remove(),t.remove()}},[c]),d.useEffect(function(){v.isHiddenScrollBar||y(function(e){var t=o.current;return t?(0,w.Z)((0,w.Z)({},e),{},{scrollLeft:t.scrollLeft/t.scrollWidth*t.clientWidth}):e})},[v.isHiddenScrollBar]),u<=p||!m||v.isHiddenScrollBar)?null:d.createElement("div",{style:{height:(0,_.Z)(),width:p,bottom:a},className:"".concat(s,"-sticky-scroll")},d.createElement("div",{onMouseDown:function(e){e.persist(),$.current.delta=e.pageX-v.scrollLeft,$.current.x=0,N(!0),e.preventDefault()},ref:h,className:S()("".concat(s,"-sticky-scroll-bar"),(0,C.Z)({},"".concat(s,"-sticky-scroll-bar-active"),Z)),style:{width:"".concat(m,"px"),transform:"translate3d(".concat(v.scrollLeft,"px, 0, 0)")}}))}),ey=[],ew={};function eC(){return"No Data"}function e$(e){var t,n=(0,w.Z)({rowKey:"key",prefixCls:"rc-table",emptyText:eC},e),r=n.prefixCls,o=n.className,c=n.rowClassName,u=n.style,f=n.data,m=n.rowKey,h=n.scroll,g=n.tableLayout,b=n.direction,v=n.title,$=n.footer,Z=n.summary,O=n.caption,R=n.id,z=n.showHeader,T=n.components,D=n.emptyText,K=n.onRow,V=n.onHeaderRow,X=n.internalHooks,G=n.transformColumns,U=n.internalRefs,Y=n.sticky,Q=f||ey,ee=!!Q.length,en=d.useCallback(function(e,t){return(0,k.Z)(T,e)||t},[T]),er=d.useMemo(function(){return"function"==typeof m?m:function(e){return e&&e[m]}},[m]),el=(tM=d.useState(-1),tL=(tP=(0,i.Z)(tM,2))[0],tH=tP[1],tD=d.useState(-1),tA=(tB=(0,i.Z)(tD,2))[0],t_=tB[1],[tL,tA,d.useCallback(function(e,t){tH(e),t_(t)},[])]),ea=(0,i.Z)(el,3),ec=ea[0],es=ea[1],ed=ea[2],eu=(tW=n.expandable,tK=(0,j.Z)(n,q),!1===(tF="expandable"in n?(0,w.Z)((0,w.Z)({},tK),tW):tK).showExpandColumn&&(tF.expandIconColumnIndex=-1),tV=tF.expandIcon,tX=tF.expandedRowKeys,tG=tF.defaultExpandedRowKeys,tU=tF.defaultExpandAllRows,tY=tF.expandedRowRender,tJ=tF.onExpand,tq=tF.onExpandedRowsChange,tQ=tF.childrenColumnName||"children",t0=d.useMemo(function(){return tY?"row":!!(n.expandable&&n.internalHooks===l&&n.expandable.__PARENT_RENDER_ICON__||Q.some(function(e){return e&&"object"===(0,y.Z)(e)&&e[tQ]}))&&"nest"},[!!tY,Q]),t1=d.useState(function(){if(tG)return tG;if(tU){var e;return e=[],function t(n){(n||[]).forEach(function(n,r){e.push(er(n,r)),t(n[tQ])})}(Q),e}return[]}),t4=(t2=(0,i.Z)(t1,2))[0],t3=t2[1],t8=d.useMemo(function(){return new Set(tX||t4||[])},[tX,t4]),t5=d.useCallback(function(e){var t,n=er(e,Q.indexOf(e)),r=t8.has(n);r?(t8.delete(n),t=(0,W.Z)(t8)):t=[].concat((0,W.Z)(t8),[n]),t3(t),tJ&&tJ(!r,e),tq&&tq(t)},[er,t8,Q,tJ,tq]),[tF,t0,t8,tV||ep,tQ,t5]),eb=(0,i.Z)(eu,6),ev=eb[0],e$=eb[1],eS=eb[2],eE=eb[3],ek=eb[4],eZ=eb[5],eN=d.useState(0),eO=(0,i.Z)(eN,2),eR=eO[0],eI=eO[1],ez=ef((0,w.Z)((0,w.Z)((0,w.Z)({},n),ev),{},{expandable:!!ev.expandedRowRender,columnTitle:ev.columnTitle,expandedKeys:eS,getRowKey:er,onTriggerExpand:eZ,expandIcon:eE,expandIconColumnIndex:ev.expandIconColumnIndex,direction:b}),X===l?G:null),ej=(0,i.Z)(ez,2),eT=ej[0],eM=ej[1],eP=d.useMemo(function(){return{columns:eT,flattenColumns:eM}},[eT,eM]),eL=d.useRef(),eH=d.useRef(),eD=d.useRef(),eB=d.useRef(),eA=d.useRef(),e_=d.useState(!1),eF=(0,i.Z)(e_,2),eW=eF[0],eK=eF[1],eV=d.useState(!1),eX=(0,i.Z)(eV,2),eG=eX[0],eU=eX[1],eY=em(new Map),eJ=(0,i.Z)(eY,2),eq=eJ[0],eQ=eJ[1],e0=N(eM).map(function(e){return eq.get(e)}),e1=d.useMemo(function(){return e0},[e0.join("_")]),e2=(t6=eM.length,(0,d.useMemo)(function(){for(var e=[],t=[],n=0,r=0,o=0;o0)):(eK(l>0),eU(l{let{_renderTimes:n}=e,{_renderTimes:r}=t;return n!==r});function eM(e,t){return"key"in e&&void 0!==e.key&&null!==e.key?e.key:e.dataIndex?Array.isArray(e.dataIndex)?e.dataIndex.join("."):e.dataIndex:t}function eP(e,t){return t?`${t}-${e}`:`${e}`}function eL(e,t){return"function"==typeof e?e(t):e}var eH={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z"}}]},name:"filter",theme:"filled"},eD=n(84089),eB=d.forwardRef(function(e,t){return d.createElement(eD.Z,(0,p.Z)({},e,{ref:t,icon:eH}))}),eA=n(57838),e_=n(71577),eF=n(84567),eW=n(85418),eK=n(32983),eV=n(82610),eX=n(76529),eG=n(78045),eU=n(57346),eY=n(68795),eJ=n(59566),eq=function(e){let{value:t,onChange:n,filterSearch:r,tablePrefixCls:o,locale:l}=e;return r?d.createElement("div",{className:`${o}-filter-dropdown-search`},d.createElement(eJ.default,{prefix:d.createElement(eY.Z,null),placeholder:l.filterSearchPlaceholder,onChange:n,value:t,htmlSize:1,className:`${o}-filter-dropdown-search-input`})):null},eQ=n(15105);let e0=e=>{let{keyCode:t}=e;t===eQ.Z.ENTER&&e.stopPropagation()},e1=d.forwardRef((e,t)=>d.createElement("div",{className:e.className,onClick:e=>e.stopPropagation(),onKeyDown:e0,ref:t},e.children));function e2(e){let t=[];return(e||[]).forEach(e=>{let{value:n,children:r}=e;t.push(n),r&&(t=[].concat((0,W.Z)(t),(0,W.Z)(e2(r))))}),t}function e4(e,t){return("string"==typeof t||"number"==typeof t)&&(null==t?void 0:t.toString().toLowerCase().includes(e.trim().toLowerCase()))}var e3=function(e){var t,n;let r,o;let{tablePrefixCls:l,prefixCls:i,column:a,dropdownPrefixCls:c,columnKey:u,filterMultiple:f,filterMode:p="menu",filterSearch:m=!1,filterState:h,triggerFilter:g,locale:b,children:v,getPopupContainer:x}=e,{filterDropdownOpen:y,onFilterDropdownOpenChange:w,filterResetToDefaultFilteredValue:C,defaultFilteredValue:$,filterDropdownVisible:E,onFilterDropdownVisibleChange:k}=a,[Z,N]=d.useState(!1),O=!!(h&&((null===(t=h.filteredKeys)||void 0===t?void 0:t.length)||h.forceFiltered)),R=e=>{N(e),null==w||w(e),null==k||k(e)},I=null!==(n=null!=y?y:E)&&void 0!==n?n:Z,z=null==h?void 0:h.filteredKeys,[j,T]=function(e){let t=d.useRef(e),n=(0,eA.Z)();return[()=>t.current,e=>{t.current=e,n()}]}(z||[]),M=e=>{let{selectedKeys:t}=e;T(t)};d.useEffect(()=>{Z&&M({selectedKeys:z||[]})},[z]);let[P,L]=d.useState([]),[H,D]=d.useState(""),B=e=>{let{value:t}=e.target;D(t)};d.useEffect(()=>{Z||D("")},[Z]);let A=e=>{let t=e&&e.length?e:null;if(null===t&&(!h||!h.filteredKeys)||(0,s.Z)(t,null==h?void 0:h.filteredKeys,!0))return null;g({column:a,key:u,filteredKeys:t})},_=()=>{R(!1),A(j())},F=function(){let{confirm:e,closeDropdown:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{confirm:!1,closeDropdown:!1};e&&A([]),t&&R(!1),D(""),C?T(($||[]).map(e=>String(e))):T([])},W=S()({[`${c}-menu-without-submenu`]:!(a.filters||[]).some(e=>{let{children:t}=e;return t})}),K=e=>{let{filters:t}=e;return(t||[]).map((e,t)=>{let n=String(e.value),r={title:e.text,key:void 0!==e.value?n:t};return e.children&&(r.children=K({filters:e.children})),r})},V=e=>{var t;return Object.assign(Object.assign({},e),{text:e.title,value:e.key,children:(null===(t=e.children)||void 0===t?void 0:t.map(e=>V(e)))||[]})};if("function"==typeof a.filterDropdown)r=a.filterDropdown({prefixCls:`${c}-custom`,setSelectedKeys:e=>M({selectedKeys:e}),selectedKeys:j(),confirm:function(){let{closeDropdown:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{closeDropdown:!0};e&&R(!1),A(j())},clearFilters:F,filters:a.filters,visible:I,close:()=>{R(!1)}});else if(a.filterDropdown)r=a.filterDropdown;else{let e=j()||[];r=d.createElement(d.Fragment,null,0===(a.filters||[]).length?d.createElement(eK.Z,{image:eK.Z.PRESENTED_IMAGE_SIMPLE,description:b.filterEmptyText,imageStyle:{height:24},style:{margin:0,padding:"16px 0"}}):"tree"===p?d.createElement(d.Fragment,null,d.createElement(eq,{filterSearch:m,value:H,onChange:B,tablePrefixCls:l,locale:b}),d.createElement("div",{className:`${l}-filter-dropdown-tree`},f?d.createElement(eF.Z,{checked:e.length===e2(a.filters).length,indeterminate:e.length>0&&e.length{if(e.target.checked){let e=e2(null==a?void 0:a.filters).map(e=>String(e));T(e)}else T([])}},b.filterCheckall):null,d.createElement(eU.Z,{checkable:!0,selectable:!1,blockNode:!0,multiple:f,checkStrictly:!f,className:`${c}-menu`,onCheck:(e,t)=>{let{node:n,checked:r}=t;f?M({selectedKeys:e}):M({selectedKeys:r&&n.key?[n.key]:[]})},checkedKeys:e,selectedKeys:e,showIcon:!1,treeData:K({filters:a.filters}),autoExpandParent:!0,defaultExpandAll:!0,filterTreeNode:H.trim()?e=>"function"==typeof m?m(H,V(e)):e4(H,e.title):void 0}))):d.createElement(d.Fragment,null,d.createElement(eq,{filterSearch:m,value:H,onChange:B,tablePrefixCls:l,locale:b}),d.createElement(eV.Z,{selectable:!0,multiple:f,prefixCls:`${c}-menu`,className:W,onSelect:M,onDeselect:M,selectedKeys:e,getPopupContainer:x,openKeys:P,onOpenChange:e=>{L(e)},items:function e(t){let{filters:n,prefixCls:r,filteredKeys:o,filterMultiple:l,searchValue:i,filterSearch:a}=t;return n.map((t,n)=>{let c=String(t.value);if(t.children)return{key:c||n,label:t.text,popupClassName:`${r}-dropdown-submenu`,children:e({filters:t.children,prefixCls:r,filteredKeys:o,filterMultiple:l,searchValue:i,filterSearch:a})};let s=l?eF.Z:eG.ZP,u={key:void 0!==t.value?c:n,label:d.createElement(d.Fragment,null,d.createElement(s,{checked:o.includes(c)}),d.createElement("span",null,t.text))};return i.trim()?"function"==typeof a?a(i,t)?u:null:e4(i,t.text)?u:null:u})}({filters:a.filters||[],filterSearch:m,prefixCls:i,filteredKeys:j(),filterMultiple:f,searchValue:H})})),d.createElement("div",{className:`${i}-dropdown-btns`},d.createElement(e_.ZP,{type:"link",size:"small",disabled:C?(0,s.Z)(($||[]).map(e=>String(e)),e,!0):0===e.length,onClick:()=>F()},b.filterReset),d.createElement(e_.ZP,{type:"primary",size:"small",onClick:_},b.filterConfirm)))}a.filterDropdown&&(r=d.createElement(eX.J,{selectable:void 0},r)),o="function"==typeof a.filterIcon?a.filterIcon(O):a.filterIcon?a.filterIcon:d.createElement(eB,null);let{direction:X}=d.useContext(eZ.E_);return d.createElement("div",{className:`${i}-column`},d.createElement("span",{className:`${l}-column-title`},v),d.createElement(eW.Z,{dropdownRender:()=>d.createElement(e1,{className:`${i}-dropdown`},r),trigger:["click"],open:I,onOpenChange:e=>{e&&void 0!==z&&T(z||[]),R(e),e||a.filterDropdown||_()},getPopupContainer:x,placement:"rtl"===X?"bottomLeft":"bottomRight"},d.createElement("span",{role:"button",tabIndex:-1,className:S()(`${i}-trigger`,{active:O}),onClick:e=>{e.stopPropagation()}},o)))};function e8(e,t,n){let r=[];return(e||[]).forEach((e,o)=>{var l;let i=eP(o,n);if(e.filters||"filterDropdown"in e||"onFilter"in e){if("filteredValue"in e){let t=e.filteredValue;"filterDropdown"in e||(t=null!==(l=null==t?void 0:t.map(String))&&void 0!==l?l:t),r.push({column:e,key:eM(e,i),filteredKeys:t,forceFiltered:e.filtered})}else r.push({column:e,key:eM(e,i),filteredKeys:t&&e.defaultFilteredValue?e.defaultFilteredValue:void 0,forceFiltered:e.filtered})}"children"in e&&(r=[].concat((0,W.Z)(r),(0,W.Z)(e8(e.children,t,i))))}),r}function e5(e){let t={};return e.forEach(e=>{let{key:n,filteredKeys:r,column:o}=e,{filters:l,filterDropdown:i}=o;if(i)t[n]=r||null;else if(Array.isArray(r)){let e=e2(l);t[n]=e.filter(e=>r.includes(String(e)))}else t[n]=null}),t}function e6(e,t){return t.reduce((e,t)=>{let{column:{onFilter:n,filters:r},filteredKeys:o}=t;return n&&o&&o.length?e.filter(e=>o.some(t=>{let o=e2(r),l=o.findIndex(e=>String(e)===String(t)),i=-1!==l?o[l]:t;return n(i,e)})):e},e)}let e7=e=>e.flatMap(e=>"children"in e?[e].concat((0,W.Z)(e7(e.children||[]))):[e]);var e9=function(e){let{prefixCls:t,dropdownPrefixCls:n,mergedColumns:r,onFilterChange:o,getPopupContainer:l,locale:i}=e,a=d.useMemo(()=>e7(r||[]),[r]),[c,s]=d.useState(()=>e8(a,!0)),u=d.useMemo(()=>{let e=e8(a,!1);if(0===e.length)return e;let t=!0;if(e.forEach(e=>{let{filteredKeys:n}=e;void 0!==n&&(t=!1)}),t){let e=(a||[]).map((e,t)=>eM(e,eP(t)));return c.filter(t=>{let{key:n}=t;return e.includes(n)}).map(t=>{let n=a[e.findIndex(e=>e===t.key)];return Object.assign(Object.assign({},t),{column:Object.assign(Object.assign({},t.column),n),forceFiltered:n.filtered})})}return e},[a,c]),f=d.useMemo(()=>e5(u),[u]),p=e=>{let t=u.filter(t=>{let{key:n}=t;return n!==e.key});t.push(e),s(t),o(e5(t),t)};return[e=>(function e(t,n,r,o,l,i,a,c){return r.map((r,s)=>{let u=eP(s,c),{filterMultiple:f=!0,filterMode:p,filterSearch:m}=r,h=r;if(h.filters||h.filterDropdown){let e=eM(h,u),c=o.find(t=>{let{key:n}=t;return e===n});h=Object.assign(Object.assign({},h),{title:o=>d.createElement(e3,{tablePrefixCls:t,prefixCls:`${t}-filter`,dropdownPrefixCls:n,column:h,columnKey:e,filterState:c,filterMultiple:f,filterMode:p,filterSearch:m,triggerFilter:i,locale:l,getPopupContainer:a},eL(r.title,o))})}return"children"in h&&(h=Object.assign(Object.assign({},h),{children:e(t,n,h.children,o,l,i,a,u)})),h})})(t,n,e,u,i,p,l),u,f]},te=n(38780),tt=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n},tn=function(e,t,n){let r=n&&"object"==typeof n?n:{},{total:o=0}=r,l=tt(r,["total"]),[i,a]=(0,d.useState)(()=>({current:"defaultCurrent"in l?l.defaultCurrent:1,pageSize:"defaultPageSize"in l?l.defaultPageSize:10})),c=(0,te.Z)(i,l,{total:o>0?o:e}),s=Math.ceil((o||e)/c.pageSize);c.current>s&&(c.current=s||1);let u=(e,t)=>{a({current:null!=e?e:1,pageSize:t||c.pageSize})};return!1===n?[{},()=>{}]:[Object.assign(Object.assign({},c),{onChange:(e,r)=>{var o;n&&(null===(o=n.onChange)||void 0===o||o.call(n,e,r)),u(e,r),t(e,r||(null==c?void 0:c.pageSize))}}),u]},tr=n(80882),to=n(10225),tl=n(17341),ti=n(1089),ta=n(21770);let tc={},ts="SELECT_ALL",td="SELECT_INVERT",tu="SELECT_NONE",tf=[],tp=(e,t)=>{let n=[];return(t||[]).forEach(t=>{n.push(t),t&&"object"==typeof t&&e in t&&(n=[].concat((0,W.Z)(n),(0,W.Z)(tp(e,t[e]))))}),n};var tm=(e,t)=>{let{preserveSelectedRowKeys:n,selectedRowKeys:r,defaultSelectedRowKeys:o,getCheckboxProps:l,onChange:i,onSelect:a,onSelectAll:c,onSelectInvert:s,onSelectNone:u,onSelectMultiple:f,columnWidth:p,type:m,selections:h,fixed:g,renderCell:b,hideSelectAll:v,checkStrictly:x=!0}=t||{},{prefixCls:y,data:w,pageData:C,getRecordByKey:$,getRowKey:E,expandType:k,childrenColumnName:Z,locale:N,getPopupContainer:O}=e,[R,I]=(0,ta.Z)(r||o||tf,{value:r}),z=d.useRef(new Map),j=(0,d.useCallback)(e=>{if(n){let t=new Map;e.forEach(e=>{let n=$(e);!n&&z.current.has(e)&&(n=z.current.get(e)),t.set(e,n)}),z.current=t}},[$,n]);d.useEffect(()=>{j(R)},[R]);let{keyEntities:T}=(0,d.useMemo)(()=>{if(x)return{keyEntities:null};let e=w;if(n){let t=new Set(w.map((e,t)=>E(e,t))),n=Array.from(z.current).reduce((e,n)=>{let[r,o]=n;return t.has(r)?e:e.concat(o)},[]);e=[].concat((0,W.Z)(e),(0,W.Z)(n))}return(0,ti.I8)(e,{externalGetKey:E,childrenPropName:Z})},[w,E,x,Z,n]),M=(0,d.useMemo)(()=>tp(Z,C),[Z,C]),P=(0,d.useMemo)(()=>{let e=new Map;return M.forEach((t,n)=>{let r=E(t,n),o=(l?l(t):null)||{};e.set(r,o)}),e},[M,E,l]),L=(0,d.useCallback)(e=>{var t;return!!(null===(t=P.get(E(e)))||void 0===t?void 0:t.disabled)},[P,E]),[H,D]=(0,d.useMemo)(()=>{if(x)return[R||[],[]];let{checkedKeys:e,halfCheckedKeys:t}=(0,tl.S)(R,!0,T,L);return[e||[],t]},[R,x,T,L]),B=(0,d.useMemo)(()=>{let e="radio"===m?H.slice(0,1):H;return new Set(e)},[H,m]),A=(0,d.useMemo)(()=>"radio"===m?new Set:new Set(D),[D,m]),[_,F]=(0,d.useState)(null);d.useEffect(()=>{t||I(tf)},[!!t]);let K=(0,d.useCallback)((e,t)=>{let r,o;j(e),n?(r=e,o=e.map(e=>z.current.get(e))):(r=[],o=[],e.forEach(e=>{let t=$(e);void 0!==t&&(r.push(e),o.push(t))})),I(r),null==i||i(r,o,{type:t})},[I,$,i,n]),V=(0,d.useCallback)((e,t,n,r)=>{if(a){let o=n.map(e=>$(e));a($(e),t,o,r)}K(n,"single")},[a,$,K]),X=(0,d.useMemo)(()=>{if(!h||v)return null;let e=!0===h?[ts,td,tu]:h;return e.map(e=>e===ts?{key:"all",text:N.selectionAll,onSelect(){K(w.map((e,t)=>E(e,t)).filter(e=>{let t=P.get(e);return!(null==t?void 0:t.disabled)||B.has(e)}),"all")}}:e===td?{key:"invert",text:N.selectInvert,onSelect(){let e=new Set(B);C.forEach((t,n)=>{let r=E(t,n),o=P.get(r);(null==o?void 0:o.disabled)||(e.has(r)?e.delete(r):e.add(r))});let t=Array.from(e);s&&s(t),K(t,"invert")}}:e===tu?{key:"none",text:N.selectNone,onSelect(){null==u||u(),K(Array.from(B).filter(e=>{let t=P.get(e);return null==t?void 0:t.disabled}),"none")}}:e).map(e=>Object.assign(Object.assign({},e),{onSelect:function(){for(var t,n=arguments.length,r=Array(n),o=0;o{var n;let r,o;if(!t)return e.filter(e=>e!==tc);let l=(0,W.Z)(e),i=new Set(B),a=M.map(E).filter(e=>!P.get(e).disabled),s=a.every(e=>i.has(e)),u=a.some(e=>i.has(e));if("radio"!==m){let e;if(X){let t={getPopupContainer:O,items:X.map((e,t)=>{let{key:n,text:r,onSelect:o}=e;return{key:null!=n?n:t,onClick:()=>{null==o||o(a)},label:r}})};e=d.createElement("div",{className:`${y}-selection-extra`},d.createElement(eW.Z,{menu:t,getPopupContainer:O},d.createElement("span",null,d.createElement(tr.Z,null))))}let t=M.map((e,t)=>{let n=E(e,t),r=P.get(n)||{};return Object.assign({checked:i.has(n)},r)}).filter(e=>{let{disabled:t}=e;return t}),n=!!t.length&&t.length===M.length,o=n&&t.every(e=>{let{checked:t}=e;return t}),l=n&&t.some(e=>{let{checked:t}=e;return t});r=!v&&d.createElement("div",{className:`${y}-selection`},d.createElement(eF.Z,{checked:n?o:!!M.length&&s,indeterminate:n?!o&&l:!s&&u,onChange:()=>{let e=[];s?a.forEach(t=>{i.delete(t),e.push(t)}):a.forEach(t=>{i.has(t)||(i.add(t),e.push(t))});let t=Array.from(i);null==c||c(!s,t.map(e=>$(e)),e.map(e=>$(e))),K(t,"all"),F(null)},disabled:0===M.length||n,"aria-label":e?"Custom selection":"Select all",skipGroup:!0}),e)}if(o="radio"===m?(e,t,n)=>{let r=E(t,n),o=i.has(r);return{node:d.createElement(eG.ZP,Object.assign({},P.get(r),{checked:o,onClick:e=>e.stopPropagation(),onChange:e=>{i.has(r)||V(r,!0,[r],e.nativeEvent)}})),checked:o}}:(e,t,n)=>{var r;let o;let l=E(t,n),c=i.has(l),s=A.has(l),u=P.get(l);return o="nest"===k?s:null!==(r=null==u?void 0:u.indeterminate)&&void 0!==r?r:s,{node:d.createElement(eF.Z,Object.assign({},u,{indeterminate:o,checked:c,skipGroup:!0,onClick:e=>e.stopPropagation(),onChange:e=>{let{nativeEvent:t}=e,{shiftKey:n}=t,r=-1,o=-1;if(n&&x){let e=new Set([_,l]);a.some((t,n)=>{if(e.has(t)){if(-1!==r)return o=n,!0;r=n}return!1})}if(-1!==o&&r!==o&&x){let e=a.slice(r,o+1),t=[];c?e.forEach(e=>{i.has(e)&&(t.push(e),i.delete(e))}):e.forEach(e=>{i.has(e)||(t.push(e),i.add(e))});let n=Array.from(i);null==f||f(!c,n.map(e=>$(e)),t.map(e=>$(e))),K(n,"multiple")}else if(x){let e=c?(0,to._5)(H,l):(0,to.L0)(H,l);V(l,!c,e,t)}else{let e=(0,tl.S)([].concat((0,W.Z)(H),[l]),!0,T,L),{checkedKeys:n,halfCheckedKeys:r}=e,o=n;if(c){let e=new Set(n);e.delete(l),o=(0,tl.S)(Array.from(e),{checked:!1,halfCheckedKeys:r},T,L).checkedKeys}V(l,!c,o,t)}c?F(null):F(l)}})),checked:c}},!l.includes(tc)){if(0===l.findIndex(e=>{var t;return(null===(t=e[Q])||void 0===t?void 0:t.columnType)==="EXPAND_COLUMN"})){let[e,...t]=l;l=[e,tc].concat((0,W.Z)(t))}else l=[tc].concat((0,W.Z)(l))}let w=l.indexOf(tc);l=l.filter((e,t)=>e!==tc||t===w);let C=l[w-1],Z=l[w+1],N=g;void 0===N&&((null==Z?void 0:Z.fixed)!==void 0?N=Z.fixed:(null==C?void 0:C.fixed)!==void 0&&(N=C.fixed)),N&&C&&(null===(n=C[Q])||void 0===n?void 0:n.columnType)==="EXPAND_COLUMN"&&void 0===C.fixed&&(C.fixed=N);let R=S()(`${y}-selection-col`,{[`${y}-selection-col-with-dropdown`]:h&&"checkbox"===m}),I={fixed:N,width:p,className:`${y}-selection-column`,title:t.columnTitle||r,render:(e,t,n)=>{let{node:r,checked:l}=o(e,t,n);return b?b(l,t,n,r):r},onCell:t.onCell,[Q]:{className:R}};return l.map(e=>e===tc?I:e)},[E,M,t,H,B,A,p,X,k,_,P,f,V,L]);return[G,B]},th={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z"}}]},name:"caret-down",theme:"outlined"},tg=d.forwardRef(function(e,t){return d.createElement(eD.Z,(0,p.Z)({},e,{ref:t,icon:th}))}),tb={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z"}}]},name:"caret-up",theme:"outlined"},tv=d.forwardRef(function(e,t){return d.createElement(eD.Z,(0,p.Z)({},e,{ref:t,icon:tb}))}),tx=n(83062);let ty="ascend",tw="descend";function tC(e){return"object"==typeof e.sorter&&"number"==typeof e.sorter.multiple&&e.sorter.multiple}function t$(e){return"function"==typeof e?e:!!e&&"object"==typeof e&&!!e.compare&&e.compare}function tS(e,t,n){let r=[];function o(e,t){r.push({column:e,key:eM(e,t),multiplePriority:tC(e),sortOrder:e.sortOrder})}return(e||[]).forEach((e,l)=>{let i=eP(l,n);e.children?("sortOrder"in e&&o(e,i),r=[].concat((0,W.Z)(r),(0,W.Z)(tS(e.children,t,i)))):e.sorter&&("sortOrder"in e?o(e,i):t&&e.defaultSortOrder&&r.push({column:e,key:eM(e,i),multiplePriority:tC(e),sortOrder:e.defaultSortOrder}))}),r}function tE(e){let{column:t,sortOrder:n}=e;return{column:t,order:n,field:t.dataIndex,columnKey:t.key}}function tk(e){let t=e.filter(e=>{let{sortOrder:t}=e;return t}).map(tE);return 0===t.length&&e.length?Object.assign(Object.assign({},tE(e[e.length-1])),{column:void 0}):t.length<=1?t[0]||{}:t}function tZ(e,t,n){let r=t.slice().sort((e,t)=>t.multiplePriority-e.multiplePriority),o=e.slice(),l=r.filter(e=>{let{column:{sorter:t},sortOrder:n}=e;return t$(t)&&n});return l.length?o.sort((e,t)=>{for(let n=0;n{let r=e[n];return r?Object.assign(Object.assign({},e),{[n]:tZ(r,t,n)}):e}):o}var tN=n(10274),tO=n(14747),tR=n(67968),tI=n(45503),tz=e=>{let{componentCls:t}=e,n=`${e.lineWidth}px ${e.lineType} ${e.tableBorderColor}`,r=(n,r,o)=>({[`&${t}-${n}`]:{[`> ${t}-container`]:{[`> ${t}-content, > ${t}-body`]:{[` - > table > tbody > tr > th, - > table > tbody > tr > td - `]:{[`> ${t}-expanded-row-fixed`]:{margin:`-${r}px -${o+e.lineWidth}px`}}}}}});return{[`${t}-wrapper`]:{[`${t}${t}-bordered`]:Object.assign(Object.assign(Object.assign({[`> ${t}-title`]:{border:n,borderBottom:0},[`> ${t}-container`]:{borderInlineStart:n,borderTop:n,[` - > ${t}-content, - > ${t}-header, - > ${t}-body, - > ${t}-summary - `]:{"> table":{[` - > thead > tr > th, - > thead > tr > td, - > tbody > tr > th, - > tbody > tr > td, - > tfoot > tr > th, - > tfoot > tr > td - `]:{borderInlineEnd:n},"> thead":{"> tr:not(:last-child) > th":{borderBottom:n},"> tr > th::before":{backgroundColor:"transparent !important"}},[` - > thead > tr, - > tbody > tr, - > tfoot > tr - `]:{[`> ${t}-cell-fix-right-first::after`]:{borderInlineEnd:n}},[` - > tbody > tr > th, - > tbody > tr > td - `]:{[`> ${t}-expanded-row-fixed`]:{margin:`-${e.tablePaddingVertical}px -${e.tablePaddingHorizontal+e.lineWidth}px`,"&::after":{position:"absolute",top:0,insetInlineEnd:e.lineWidth,bottom:0,borderInlineEnd:n,content:'""'}}}}}},[`&${t}-scroll-horizontal`]:{[`> ${t}-container > ${t}-body`]:{"> table > tbody":{[` - > tr${t}-expanded-row, - > tr${t}-placeholder - `]:{"> th, > td":{borderInlineEnd:0}}}}}},r("middle",e.tablePaddingVerticalMiddle,e.tablePaddingHorizontalMiddle)),r("small",e.tablePaddingVerticalSmall,e.tablePaddingHorizontalSmall)),{[`> ${t}-footer`]:{border:n,borderTop:0}}),[`${t}-cell`]:{[`${t}-container:first-child`]:{borderTop:0},"&-scrollbar:not([rowspan])":{boxShadow:`0 ${e.lineWidth}px 0 ${e.lineWidth}px ${e.tableHeaderBg}`}},[`${t}-bordered ${t}-cell-scrollbar`]:{borderInlineEnd:n}}}},tj=e=>{let{componentCls:t}=e;return{[`${t}-wrapper`]:{[`${t}-cell-ellipsis`]:Object.assign(Object.assign({},tO.vS),{wordBreak:"keep-all",[` - &${t}-cell-fix-left-last, - &${t}-cell-fix-right-first - `]:{overflow:"visible",[`${t}-cell-content`]:{display:"block",overflow:"hidden",textOverflow:"ellipsis"}},[`${t}-column-title`]:{overflow:"hidden",textOverflow:"ellipsis",wordBreak:"keep-all"}})}}},tT=e=>{let{componentCls:t}=e;return{[`${t}-wrapper`]:{[`${t}-tbody > tr${t}-placeholder`]:{textAlign:"center",color:e.colorTextDisabled,[` - &:hover > th, - &:hover > td, - `]:{background:e.colorBgContainer}}}}};let tM=e=>({color:e.colorLink,textDecoration:"none",outline:"none",cursor:"pointer",transition:`color ${e.motionDurationSlow}`,"&:focus, &:hover":{color:e.colorLinkHover},"&:active":{color:e.colorLinkActive}});var tP=e=>{let{componentCls:t,antCls:n,controlInteractiveSize:r,motionDurationSlow:o,lineWidth:l,paddingXS:i,lineType:a,tableBorderColor:c,tableExpandIconBg:s,tableExpandColumnWidth:d,borderRadius:u,fontSize:f,fontSizeSM:p,lineHeight:m,tablePaddingVertical:h,tablePaddingHorizontal:g,tableExpandedRowBg:b,paddingXXS:v}=e,x=r/2-l,y=2*x+3*l,w=`${l}px ${a} ${c}`,C=v-l;return{[`${t}-wrapper`]:{[`${t}-expand-icon-col`]:{width:d},[`${t}-row-expand-icon-cell`]:{textAlign:"center",[`${t}-row-expand-icon`]:{display:"inline-flex",float:"none",verticalAlign:"sub"}},[`${t}-row-indent`]:{height:1,float:"left"},[`${t}-row-expand-icon`]:Object.assign(Object.assign({},tM(e)),{position:"relative",float:"left",boxSizing:"border-box",width:y,height:y,padding:0,color:"inherit",lineHeight:`${y}px`,background:s,border:w,borderRadius:u,transform:`scale(${r/y})`,transition:`all ${o}`,userSelect:"none","&:focus, &:hover, &:active":{borderColor:"currentcolor"},"&::before, &::after":{position:"absolute",background:"currentcolor",transition:`transform ${o} ease-out`,content:'""'},"&::before":{top:x,insetInlineEnd:C,insetInlineStart:C,height:l},"&::after":{top:C,bottom:C,insetInlineStart:x,width:l,transform:"rotate(90deg)"},"&-collapsed::before":{transform:"rotate(-180deg)"},"&-collapsed::after":{transform:"rotate(0deg)"},"&-spaced":{"&::before, &::after":{display:"none",content:"none"},background:"transparent",border:0,visibility:"hidden"}}),[`${t}-row-indent + ${t}-row-expand-icon`]:{marginTop:(f*m-3*l)/2-Math.ceil((1.4*p-3*l)/2),marginInlineEnd:i},[`tr${t}-expanded-row`]:{"&, &:hover":{"> th, > td":{background:b}},[`${n}-descriptions-view`]:{display:"flex",table:{flex:"auto",width:"auto"}}},[`${t}-expanded-row-fixed`]:{position:"relative",margin:`-${h}px -${g}px`,padding:`${h}px ${g}px`}}}},tL=e=>{let{componentCls:t,antCls:n,iconCls:r,tableFilterDropdownWidth:o,tableFilterDropdownSearchWidth:l,paddingXXS:i,paddingXS:a,colorText:c,lineWidth:s,lineType:d,tableBorderColor:u,tableHeaderIconColor:f,fontSizeSM:p,tablePaddingHorizontal:m,borderRadius:h,motionDurationSlow:g,colorTextDescription:b,colorPrimary:v,tableHeaderFilterActiveBg:x,colorTextDisabled:y,tableFilterDropdownBg:w,tableFilterDropdownHeight:C,controlItemBgHover:$,controlItemBgActive:S,boxShadowSecondary:E}=e,k=`${n}-dropdown`,Z=`${t}-filter-dropdown`,N=`${n}-tree`,O=`${s}px ${d} ${u}`;return[{[`${t}-wrapper`]:{[`${t}-filter-column`]:{display:"flex",justifyContent:"space-between"},[`${t}-filter-trigger`]:{position:"relative",display:"flex",alignItems:"center",marginBlock:-i,marginInline:`${i}px ${-m/2}px`,padding:`0 ${i}px`,color:f,fontSize:p,borderRadius:h,cursor:"pointer",transition:`all ${g}`,"&:hover":{color:b,background:x},"&.active":{color:v}}}},{[`${n}-dropdown`]:{[Z]:Object.assign(Object.assign({},(0,tO.Wf)(e)),{minWidth:o,backgroundColor:w,borderRadius:h,boxShadow:E,overflow:"hidden",[`${k}-menu`]:{maxHeight:C,overflowX:"hidden",border:0,boxShadow:"none",borderRadius:"unset","&:empty::after":{display:"block",padding:`${a}px 0`,color:y,fontSize:p,textAlign:"center",content:'"Not Found"'}},[`${Z}-tree`]:{paddingBlock:`${a}px 0`,paddingInline:a,[N]:{padding:0},[`${N}-treenode ${N}-node-content-wrapper:hover`]:{backgroundColor:$},[`${N}-treenode-checkbox-checked ${N}-node-content-wrapper`]:{"&, &:hover":{backgroundColor:S}}},[`${Z}-search`]:{padding:a,borderBottom:O,"&-input":{input:{minWidth:l},[r]:{color:y}}},[`${Z}-checkall`]:{width:"100%",marginBottom:i,marginInlineStart:i},[`${Z}-btns`]:{display:"flex",justifyContent:"space-between",padding:`${a-s}px ${a}px`,overflow:"hidden",borderTop:O}})}},{[`${n}-dropdown ${Z}, ${Z}-submenu`]:{[`${n}-checkbox-wrapper + span`]:{paddingInlineStart:a,color:c},"> ul":{maxHeight:"calc(100vh - 130px)",overflowX:"hidden",overflowY:"auto"}}}]},tH=e=>{let{componentCls:t,lineWidth:n,colorSplit:r,motionDurationSlow:o,zIndexTableFixed:l,tableBg:i,zIndexTableSticky:a}=e;return{[`${t}-wrapper`]:{[` - ${t}-cell-fix-left, - ${t}-cell-fix-right - `]:{position:"sticky !important",zIndex:l,background:i},[` - ${t}-cell-fix-left-first::after, - ${t}-cell-fix-left-last::after - `]:{position:"absolute",top:0,right:{_skip_check_:!0,value:0},bottom:-n,width:30,transform:"translateX(100%)",transition:`box-shadow ${o}`,content:'""',pointerEvents:"none"},[`${t}-cell-fix-left-all::after`]:{display:"none"},[` - ${t}-cell-fix-right-first::after, - ${t}-cell-fix-right-last::after - `]:{position:"absolute",top:0,bottom:-n,left:{_skip_check_:!0,value:0},width:30,transform:"translateX(-100%)",transition:`box-shadow ${o}`,content:'""',pointerEvents:"none"},[`${t}-container`]:{"&::before, &::after":{position:"absolute",top:0,bottom:0,zIndex:a+1,width:30,transition:`box-shadow ${o}`,content:'""',pointerEvents:"none"},"&::before":{insetInlineStart:0},"&::after":{insetInlineEnd:0}},[`${t}-ping-left`]:{[`&:not(${t}-has-fix-left) ${t}-container`]:{position:"relative","&::before":{boxShadow:`inset 10px 0 8px -8px ${r}`}},[` - ${t}-cell-fix-left-first::after, - ${t}-cell-fix-left-last::after - `]:{boxShadow:`inset 10px 0 8px -8px ${r}`},[`${t}-cell-fix-left-last::before`]:{backgroundColor:"transparent !important"}},[`${t}-ping-right`]:{[`&:not(${t}-has-fix-right) ${t}-container`]:{position:"relative","&::after":{boxShadow:`inset -10px 0 8px -8px ${r}`}},[` - ${t}-cell-fix-right-first::after, - ${t}-cell-fix-right-last::after - `]:{boxShadow:`inset -10px 0 8px -8px ${r}`}}}}},tD=e=>{let{componentCls:t,antCls:n}=e;return{[`${t}-wrapper`]:{[`${t}-pagination${n}-pagination`]:{margin:`${e.margin}px 0`},[`${t}-pagination`]:{display:"flex",flexWrap:"wrap",rowGap:e.paddingXS,"> *":{flex:"none"},"&-left":{justifyContent:"flex-start"},"&-center":{justifyContent:"center"},"&-right":{justifyContent:"flex-end"}}}}},tB=e=>{let{componentCls:t,tableRadius:n}=e;return{[`${t}-wrapper`]:{[t]:{[`${t}-title, ${t}-header`]:{borderRadius:`${n}px ${n}px 0 0`},[`${t}-title + ${t}-container`]:{borderStartStartRadius:0,borderStartEndRadius:0,[`${t}-header, table`]:{borderRadius:0},"table > thead > tr:first-child":{"th:first-child, th:last-child, td:first-child, td:last-child":{borderRadius:0}}},"&-container":{borderStartStartRadius:n,borderStartEndRadius:n,"table > thead > tr:first-child":{"> *:first-child":{borderStartStartRadius:n},"> *:last-child":{borderStartEndRadius:n}}},"&-footer":{borderRadius:`0 0 ${n}px ${n}px`}}}}},tA=e=>{let{componentCls:t}=e;return{[`${t}-wrapper-rtl`]:{direction:"rtl",table:{direction:"rtl"},[`${t}-pagination-left`]:{justifyContent:"flex-end"},[`${t}-pagination-right`]:{justifyContent:"flex-start"},[`${t}-row-expand-icon`]:{float:"right","&::after":{transform:"rotate(-90deg)"},"&-collapsed::before":{transform:"rotate(180deg)"},"&-collapsed::after":{transform:"rotate(0deg)"}},[`${t}-container`]:{"&::before":{insetInlineStart:"unset",insetInlineEnd:0},"&::after":{insetInlineStart:0,insetInlineEnd:"unset"},[`${t}-row-indent`]:{float:"right"}}}}},t_=e=>{let{componentCls:t,antCls:n,iconCls:r,fontSizeIcon:o,padding:l,paddingXS:i,tableHeaderIconColor:a,tableHeaderIconColorHover:c,tableSelectionColumnWidth:s}=e;return{[`${t}-wrapper`]:{[`${t}-selection-col`]:{width:s,[`&${t}-selection-col-with-dropdown`]:{width:s+o+l/4}},[`${t}-bordered ${t}-selection-col`]:{width:s+2*i,[`&${t}-selection-col-with-dropdown`]:{width:s+o+l/4+2*i}},[` - table tr th${t}-selection-column, - table tr td${t}-selection-column - `]:{paddingInlineEnd:e.paddingXS,paddingInlineStart:e.paddingXS,textAlign:"center",[`${n}-radio-wrapper`]:{marginInlineEnd:0}},[`table tr th${t}-selection-column${t}-cell-fix-left`]:{zIndex:e.zIndexTableFixed+1},[`table tr th${t}-selection-column::after`]:{backgroundColor:"transparent !important"},[`${t}-selection`]:{position:"relative",display:"inline-flex",flexDirection:"column"},[`${t}-selection-extra`]:{position:"absolute",top:0,zIndex:1,cursor:"pointer",transition:`all ${e.motionDurationSlow}`,marginInlineStart:"100%",paddingInlineStart:`${e.tablePaddingHorizontal/4}px`,[r]:{color:a,fontSize:o,verticalAlign:"baseline","&:hover":{color:c}}}}}},tF=e=>{let{componentCls:t}=e,n=(n,r,o,l)=>({[`${t}${t}-${n}`]:{fontSize:l,[` - ${t}-title, - ${t}-footer, - ${t}-thead > tr > th, - ${t}-tbody > tr > th, - ${t}-tbody > tr > td, - tfoot > tr > th, - tfoot > tr > td - `]:{padding:`${r}px ${o}px`},[`${t}-filter-trigger`]:{marginInlineEnd:`-${o/2}px`},[`${t}-expanded-row-fixed`]:{margin:`-${r}px -${o}px`},[`${t}-tbody`]:{[`${t}-wrapper:only-child ${t}`]:{marginBlock:`-${r}px`,marginInline:`${e.tableExpandColumnWidth-o}px -${o}px`}},[`${t}-selection-column`]:{paddingInlineStart:`${o/4}px`}}});return{[`${t}-wrapper`]:Object.assign(Object.assign({},n("middle",e.tablePaddingVerticalMiddle,e.tablePaddingHorizontalMiddle,e.tableFontSizeMiddle)),n("small",e.tablePaddingVerticalSmall,e.tablePaddingHorizontalSmall,e.tableFontSizeSmall))}},tW=e=>{let{componentCls:t,marginXXS:n,fontSizeIcon:r,tableHeaderIconColor:o,tableHeaderIconColorHover:l}=e;return{[`${t}-wrapper`]:{[`${t}-thead th${t}-column-has-sorters`]:{outline:"none",cursor:"pointer",transition:`all ${e.motionDurationSlow}`,"&:hover":{background:e.tableHeaderSortHoverBg,"&::before":{backgroundColor:"transparent !important"}},"&:focus-visible":{color:e.colorPrimary},[` - &${t}-cell-fix-left:hover, - &${t}-cell-fix-right:hover - `]:{background:e.tableFixedHeaderSortActiveBg}},[`${t}-thead th${t}-column-sort`]:{background:e.tableHeaderSortBg,"&::before":{backgroundColor:"transparent !important"}},[`td${t}-column-sort`]:{background:e.tableBodySortBg},[`${t}-column-title`]:{position:"relative",zIndex:1,flex:1},[`${t}-column-sorters`]:{display:"flex",flex:"auto",alignItems:"center",justifyContent:"space-between","&::after":{position:"absolute",inset:0,width:"100%",height:"100%",content:'""'}},[`${t}-column-sorter`]:{marginInlineStart:n,color:o,fontSize:0,transition:`color ${e.motionDurationSlow}`,"&-inner":{display:"inline-flex",flexDirection:"column",alignItems:"center"},"&-up, &-down":{fontSize:r,"&.active":{color:e.colorPrimary}},[`${t}-column-sorter-up + ${t}-column-sorter-down`]:{marginTop:"-0.3em"}},[`${t}-column-sorters:hover ${t}-column-sorter`]:{color:l}}}},tK=e=>{let{componentCls:t,opacityLoading:n,tableScrollThumbBg:r,tableScrollThumbBgHover:o,tableScrollThumbSize:l,tableScrollBg:i,zIndexTableSticky:a}=e,c=`${e.lineWidth}px ${e.lineType} ${e.tableBorderColor}`;return{[`${t}-wrapper`]:{[`${t}-sticky`]:{"&-holder":{position:"sticky",zIndex:a,background:e.colorBgContainer},"&-scroll":{position:"sticky",bottom:0,height:`${l}px !important`,zIndex:a,display:"flex",alignItems:"center",background:i,borderTop:c,opacity:n,"&:hover":{transformOrigin:"center bottom"},"&-bar":{height:l,backgroundColor:r,borderRadius:100,transition:`all ${e.motionDurationSlow}, transform none`,position:"absolute",bottom:0,"&:hover, &-active":{backgroundColor:o}}}}}}},tV=e=>{let{componentCls:t,lineWidth:n,tableBorderColor:r}=e,o=`${n}px ${e.lineType} ${r}`;return{[`${t}-wrapper`]:{[`${t}-summary`]:{position:"relative",zIndex:e.zIndexTableFixed,background:e.tableBg,"> tr":{"> th, > td":{borderBottom:o}}},[`div${t}-summary`]:{boxShadow:`0 -${n}px 0 ${r}`}}}};let tX=e=>{let{componentCls:t,fontWeightStrong:n,tablePaddingVertical:r,tablePaddingHorizontal:o,lineWidth:l,lineType:i,tableBorderColor:a,tableFontSize:c,tableBg:s,tableRadius:d,tableHeaderTextColor:u,motionDurationMid:f,tableHeaderBg:p,tableHeaderCellSplitColor:m,tableRowHoverBg:h,tableSelectedRowBg:g,tableSelectedRowHoverBg:b,tableFooterTextColor:v,tableFooterBg:x,paddingContentVerticalLG:y}=e,w=`${l}px ${i} ${a}`;return{[`${t}-wrapper`]:Object.assign(Object.assign({clear:"both",maxWidth:"100%"},(0,tO.dF)()),{[t]:Object.assign(Object.assign({},(0,tO.Wf)(e)),{fontSize:c,background:s,borderRadius:`${d}px ${d}px 0 0`}),table:{width:"100%",textAlign:"start",borderRadius:`${d}px ${d}px 0 0`,borderCollapse:"separate",borderSpacing:0},[` - ${t}-thead > tr > th, - ${t}-tbody > tr > th, - ${t}-tbody > tr > td, - tfoot > tr > th, - tfoot > tr > td - `]:{position:"relative",padding:`${y}px ${o}px`,overflowWrap:"break-word"},[`${t}-title`]:{padding:`${r}px ${o}px`},[`${t}-thead`]:{[` - > tr > th, - > tr > td - `]:{position:"relative",color:u,fontWeight:n,textAlign:"start",background:p,borderBottom:w,transition:`background ${f} ease`,"&[colspan]:not([colspan='1'])":{textAlign:"center"},[`&:not(:last-child):not(${t}-selection-column):not(${t}-row-expand-icon-cell):not([colspan])::before`]:{position:"absolute",top:"50%",insetInlineEnd:0,width:1,height:"1.6em",backgroundColor:m,transform:"translateY(-50%)",transition:`background-color ${f}`,content:'""'}},"> tr:not(:last-child) > th[colspan]":{borderBottom:0}},[`${t}-tbody`]:{"> tr":{"> th, > td":{transition:`background ${f}, border-color ${f}`,borderBottom:w,[` - > ${t}-wrapper:only-child, - > ${t}-expanded-row-fixed > ${t}-wrapper:only-child - `]:{[t]:{marginBlock:`-${r}px`,marginInline:`${e.tableExpandColumnWidth-o}px -${o}px`,[`${t}-tbody > tr:last-child > td`]:{borderBottom:0,"&:first-child, &:last-child":{borderRadius:0}}}}},"> th":{position:"relative",color:u,fontWeight:n,textAlign:"start",background:p,borderBottom:w,transition:`background ${f} ease`},[` - &${t}-row:hover > th, - &${t}-row:hover > td, - > th${t}-cell-row-hover, - > td${t}-cell-row-hover - `]:{background:h},[`&${t}-row-selected`]:{"> th, > td":{background:g},"&:hover > th, &:hover > td":{background:b}}}},[`${t}-footer`]:{padding:`${r}px ${o}px`,color:v,background:x}})}};var tG=(0,tR.Z)("Table",e=>{let{controlItemBgActive:t,controlItemBgActiveHover:n,colorTextPlaceholder:r,colorTextHeading:o,colorSplit:l,colorBorderSecondary:i,fontSize:a,padding:c,paddingXS:s,paddingSM:d,controlHeight:u,colorFillAlter:f,colorIcon:p,colorIconHover:m,opacityLoading:h,colorBgContainer:g,borderRadiusLG:b,colorFillContent:v,colorFillSecondary:x,controlInteractiveSize:y}=e,w=new tN.C(p),C=new tN.C(m),$=new tN.C(x).onBackground(g).toHexShortString(),S=new tN.C(v).onBackground(g).toHexShortString(),E=new tN.C(f).onBackground(g).toHexShortString(),k=(0,tI.TS)(e,{tableFontSize:a,tableBg:g,tableRadius:b,tablePaddingVertical:c,tablePaddingHorizontal:c,tablePaddingVerticalMiddle:d,tablePaddingHorizontalMiddle:s,tablePaddingVerticalSmall:s,tablePaddingHorizontalSmall:s,tableBorderColor:i,tableHeaderTextColor:o,tableHeaderBg:E,tableFooterTextColor:o,tableFooterBg:E,tableHeaderCellSplitColor:i,tableHeaderSortBg:$,tableHeaderSortHoverBg:S,tableHeaderIconColor:w.clone().setAlpha(w.getAlpha()*h).toRgbString(),tableHeaderIconColorHover:C.clone().setAlpha(C.getAlpha()*h).toRgbString(),tableBodySortBg:E,tableFixedHeaderSortActiveBg:$,tableHeaderFilterActiveBg:v,tableFilterDropdownBg:g,tableRowHoverBg:E,tableSelectedRowBg:t,tableSelectedRowHoverBg:n,zIndexTableFixed:2,zIndexTableSticky:3,tableFontSizeMiddle:a,tableFontSizeSmall:a,tableSelectionColumnWidth:u,tableExpandIconBg:g,tableExpandColumnWidth:y+2*e.padding,tableExpandedRowBg:f,tableFilterDropdownWidth:120,tableFilterDropdownHeight:264,tableFilterDropdownSearchWidth:140,tableScrollThumbSize:8,tableScrollThumbBg:r,tableScrollThumbBgHover:o,tableScrollBg:l});return[tX(k),tD(k),tV(k),tW(k),tL(k),tz(k),tB(k),tP(k),tV(k),tT(k),t_(k),tH(k),tK(k),tj(k),tF(k),tA(k)]});let tU=[];var tY=d.forwardRef((e,t)=>{let n,r,o;let{prefixCls:i,className:a,rootClassName:c,style:s,size:u,bordered:f,dropdownPrefixCls:p,dataSource:m,pagination:h,rowSelection:g,rowKey:b="key",rowClassName:v,columns:x,children:y,childrenColumnName:w,onChange:C,getPopupContainer:$,loading:E,expandIcon:k,expandable:Z,expandedRowRender:N,expandIconColumnIndex:O,indentSize:R,scroll:I,sortDirections:z,locale:j,showSorterTooltip:T=!0}=e,M=d.useMemo(()=>x||ed(y),[x,y]),P=d.useMemo(()=>M.some(e=>e.responsive),[M]),L=(0,eR.Z)(P),H=d.useMemo(()=>{let e=new Set(Object.keys(L).filter(e=>L[e]));return M.filter(t=>!t.responsive||t.responsive.some(t=>e.has(t)))},[M,L]),D=(0,eE.Z)(e,["className","style","columns"]),{locale:B=eI.Z,direction:A,table:_,renderEmpty:F,getPrefixCls:K,getPopupContainer:V}=d.useContext(eZ.E_),X=(0,eO.Z)(u),G=Object.assign(Object.assign({},B.Table),j),U=m||tU,Y=K("table",i),J=K("dropdown",p),q=Object.assign({childrenColumnName:w,expandIconColumnIndex:O},Z),{childrenColumnName:Q="children"}=q,ee=d.useMemo(()=>U.some(e=>null==e?void 0:e[Q])?"nest":N||Z&&Z.expandedRowRender?"row":null,[U]),et={body:d.useRef()},en=d.useMemo(()=>"function"==typeof b?b:e=>null==e?void 0:e[b],[b]),[er]=function(e,t,n){let r=d.useRef({});return[function(o){if(!r.current||r.current.data!==e||r.current.childrenColumnName!==t||r.current.getRowKey!==n){let o=new Map;!function e(r){r.forEach((r,l)=>{let i=n(r,l);o.set(i,r),r&&"object"==typeof r&&t in r&&e(r[t]||[])})}(e),r.current={data:e,childrenColumnName:t,kvMap:o,getRowKey:n}}return r.current.kvMap.get(o)}]}(U,Q,en),eo={},el=function(e,t){var n,r,o;let l=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=Object.assign(Object.assign({},eo),e);l&&(null===(n=eo.resetPagination)||void 0===n||n.call(eo),(null===(r=i.pagination)||void 0===r?void 0:r.current)&&(i.pagination.current=1),h&&h.onChange&&h.onChange(1,null===(o=i.pagination)||void 0===o?void 0:o.pageSize)),I&&!1!==I.scrollToFirstRowOnChange&&et.body.current&&(0,ek.Z)(0,{getContainer:()=>et.body.current}),null==C||C(i.pagination,i.filters,i.sorter,{currentDataSource:e6(tZ(U,i.sorterStates,Q),i.filterStates),action:t})},[ei,ea,ec,es]=function(e){let{prefixCls:t,mergedColumns:n,onSorterChange:r,sortDirections:o,tableLocale:l,showSorterTooltip:i}=e,[a,c]=d.useState(tS(n,!0)),s=d.useMemo(()=>{let e=!0,t=tS(n,!1);if(!t.length)return a;let r=[];function o(t){e?r.push(t):r.push(Object.assign(Object.assign({},t),{sortOrder:null}))}let l=null;return t.forEach(t=>{null===l?(o(t),t.sortOrder&&(!1===t.multiplePriority?e=!1:l=!0)):(l&&!1!==t.multiplePriority||(e=!1),o(t))}),r},[n,a]),u=d.useMemo(()=>{let e=s.map(e=>{let{column:t,sortOrder:n}=e;return{column:t,order:n}});return{sortColumns:e,sortColumn:e[0]&&e[0].column,sortOrder:e[0]&&e[0].order}},[s]);function f(e){let t;c(t=!1!==e.multiplePriority&&s.length&&!1!==s[0].multiplePriority?[].concat((0,W.Z)(s.filter(t=>{let{key:n}=t;return n!==e.key})),[e]):[e]),r(tk(t),t)}return[e=>(function e(t,n,r,o,l,i,a,c){return(n||[]).map((n,s)=>{let u=eP(s,c),f=n;if(f.sorter){let e;let c=f.sortDirections||l,s=void 0===f.showSorterTooltip?a:f.showSorterTooltip,p=eM(f,u),m=r.find(e=>{let{key:t}=e;return t===p}),h=m?m.sortOrder:null,g=h?c[c.indexOf(h)+1]:c[0];if(n.sortIcon)e=n.sortIcon({sortOrder:h});else{let n=c.includes(ty)&&d.createElement(tv,{className:S()(`${t}-column-sorter-up`,{active:h===ty})}),r=c.includes(tw)&&d.createElement(tg,{className:S()(`${t}-column-sorter-down`,{active:h===tw})});e=d.createElement("span",{className:S()(`${t}-column-sorter`,{[`${t}-column-sorter-full`]:!!(n&&r)})},d.createElement("span",{className:`${t}-column-sorter-inner`,"aria-hidden":"true"},n,r))}let{cancelSort:b,triggerAsc:v,triggerDesc:x}=i||{},y=b;g===tw?y=x:g===ty&&(y=v);let w="object"==typeof s?s:{title:y};f=Object.assign(Object.assign({},f),{className:S()(f.className,{[`${t}-column-sort`]:h}),title:r=>{let o=d.createElement("div",{className:`${t}-column-sorters`},d.createElement("span",{className:`${t}-column-title`},eL(n.title,r)),e);return s?d.createElement(tx.Z,Object.assign({},w),o):o},onHeaderCell:e=>{let r=n.onHeaderCell&&n.onHeaderCell(e)||{},l=r.onClick,i=r.onKeyDown;r.onClick=e=>{o({column:n,key:p,sortOrder:g,multiplePriority:tC(n)}),null==l||l(e)},r.onKeyDown=e=>{e.keyCode===eQ.Z.ENTER&&(o({column:n,key:p,sortOrder:g,multiplePriority:tC(n)}),null==i||i(e))};let a=function(e,t){let n=eL(e,t);return"[object Object]"===Object.prototype.toString.call(n)?"":n}(n.title,{}),c=null==a?void 0:a.toString();return h?r["aria-sort"]="ascend"===h?"ascending":"descending":r["aria-label"]=c||"",r.className=S()(r.className,`${t}-column-has-sorters`),r.tabIndex=0,n.ellipsis&&(r.title=(null!=a?a:"").toString()),r}})}return"children"in f&&(f=Object.assign(Object.assign({},f),{children:e(t,f.children,r,o,l,i,a,u)})),f})})(t,e,s,f,o,l,i),s,u,()=>tk(s)]}({prefixCls:Y,mergedColumns:H,onSorterChange:(e,t)=>{el({sorter:e,sorterStates:t},"sort",!1)},sortDirections:z||["ascend","descend"],tableLocale:G,showSorterTooltip:T}),eu=d.useMemo(()=>tZ(U,ea,Q),[U,ea]);eo.sorter=es(),eo.sorterStates=ea;let[ef,ep,em]=e9({prefixCls:Y,locale:G,dropdownPrefixCls:J,mergedColumns:H,onFilterChange:(e,t)=>{el({filters:e,filterStates:t},"filter",!0)},getPopupContainer:$||V}),eh=e6(eu,ep);eo.filters=em,eo.filterStates=ep;let eg=d.useMemo(()=>{let e={};return Object.keys(em).forEach(t=>{null!==em[t]&&(e[t]=em[t])}),Object.assign(Object.assign({},ec),{filters:e})},[ec,em]),[eb]=function(e){let t=d.useCallback(t=>(function e(t,n){return t.map(t=>{let r=Object.assign({},t);return r.title=eL(t.title,n),"children"in r&&(r.children=e(r.children,n)),r})})(t,e),[e]);return[t]}(eg),[ev,ex]=tn(eh.length,(e,t)=>{el({pagination:Object.assign(Object.assign({},eo.pagination),{current:e,pageSize:t})},"paginate")},h);eo.pagination=!1===h?{}:function(e,t){let n={current:e.current,pageSize:e.pageSize},r=t&&"object"==typeof t?t:{};return Object.keys(r).forEach(t=>{let r=e[t];"function"!=typeof r&&(n[t]=r)}),n}(ev,h),eo.resetPagination=ex;let ey=d.useMemo(()=>{if(!1===h||!ev.pageSize)return eh;let{current:e=1,total:t,pageSize:n=10}=ev;return eh.lengthn?eh.slice((e-1)*n,e*n):eh:eh.slice((e-1)*n,e*n)},[!!h,eh,ev&&ev.current,ev&&ev.pageSize,ev&&ev.total]),[ew,eC]=tm({prefixCls:Y,data:eh,pageData:ey,getRowKey:en,getRecordByKey:er,expandType:ee,childrenColumnName:Q,locale:G,getPopupContainer:$||V},g);q.__PARENT_RENDER_ICON__=q.expandIcon,q.expandIcon=q.expandIcon||k||function(e){let{prefixCls:t,onExpand:n,record:r,expanded:o,expandable:l}=e,i=`${t}-row-expand-icon`;return d.createElement("button",{type:"button",onClick:e=>{n(r,e),e.stopPropagation()},className:S()(i,{[`${i}-spaced`]:!l,[`${i}-expanded`]:l&&o,[`${i}-collapsed`]:l&&!o}),"aria-label":o?G.collapse:G.expand,"aria-expanded":o})},"nest"===ee&&void 0===q.expandIconColumnIndex?q.expandIconColumnIndex=g?1:0:q.expandIconColumnIndex>0&&g&&(q.expandIconColumnIndex-=1),"number"!=typeof q.indentSize&&(q.indentSize="number"==typeof R?R:15);let e$=d.useCallback(e=>eb(ew(ef(ei(e)))),[ei,ef,ew]);if(!1!==h&&(null==ev?void 0:ev.total)){let e;e=ev.size?ev.size:"small"===X||"middle"===X?"small":void 0;let t=t=>d.createElement(ez.Z,Object.assign({},ev,{className:S()(`${Y}-pagination ${Y}-pagination-${t}`,ev.className),size:e})),o="rtl"===A?"left":"right",{position:l}=ev;if(null!==l&&Array.isArray(l)){let e=l.find(e=>e.includes("top")),i=l.find(e=>e.includes("bottom")),a=l.every(e=>"none"==`${e}`);e||i||a||(r=t(o)),e&&(n=t(e.toLowerCase().replace("top",""))),i&&(r=t(i.toLowerCase().replace("bottom","")))}else r=t(o)}"boolean"==typeof E?o={spinning:E}:"object"==typeof E&&(o=Object.assign({spinning:!0},E));let[eS,eH]=tG(Y),eD=S()(`${Y}-wrapper`,null==_?void 0:_.className,{[`${Y}-wrapper-rtl`]:"rtl"===A},a,c,eH),eB=Object.assign(Object.assign({},null==_?void 0:_.style),s),eA=j&&j.emptyText||(null==F?void 0:F("Table"))||d.createElement(eN.Z,{componentName:"Table"});return eS(d.createElement("div",{ref:t,className:eD,style:eB},d.createElement(ej.Z,Object.assign({spinning:!1},o),n,d.createElement(eT,Object.assign({},D,{columns:H,direction:A,expandable:q,prefixCls:Y,className:S()({[`${Y}-middle`]:"middle"===X,[`${Y}-small`]:"small"===X,[`${Y}-bordered`]:f,[`${Y}-empty`]:0===U.length}),data:ey,rowKey:en,rowClassName:(e,t,n)=>{let r;return r="function"==typeof v?S()(v(e,t,n)):S()(v),S()({[`${Y}-row-selected`]:eC.has(en(e,t))},r)},emptyText:eA,internalHooks:l,internalRefs:et,transformColumns:e$})),r)))});let tJ=d.forwardRef((e,t)=>{let n=d.useRef(0);return n.current+=1,d.createElement(tY,Object.assign({},e,{ref:t,_renderTimes:n.current}))});tJ.SELECTION_COLUMN=tc,tJ.EXPAND_COLUMN=o,tJ.SELECTION_ALL=ts,tJ.SELECTION_INVERT=td,tJ.SELECTION_NONE=tu,tJ.Column=function(e){return null},tJ.ColumnGroup=function(e){return null},tJ.Summary=M;var tq=tJ},64019:function(e,t,n){n.d(t,{Z:function(){return o}});var r=n(73935);function o(e,t,n,o){var l=r.unstable_batchedUpdates?function(e){r.unstable_batchedUpdates(n,e)}:n;return null!=e&&e.addEventListener&&e.addEventListener(t,l,o),{remove:function(){null!=e&&e.removeEventListener&&e.removeEventListener(t,l,o)}}}},27678:function(e,t,n){function r(){return{width:document.documentElement.clientWidth,height:window.innerHeight||document.documentElement.clientHeight}}function o(e){var t=e.getBoundingClientRect(),n=document.documentElement;return{left:t.left+(window.pageXOffset||n.scrollLeft)-(n.clientLeft||document.body.clientLeft||0),top:t.top+(window.pageYOffset||n.scrollTop)-(n.clientTop||document.body.clientTop||0)}}n.d(t,{g1:function(){return r},os:function(){return o}})}}]); \ No newline at end of file diff --git a/pilot/server/static/_next/static/chunks/266.b9b43e9c52cbcbe7.js b/pilot/server/static/_next/static/chunks/396.2cca7f693431f729.js similarity index 98% rename from pilot/server/static/_next/static/chunks/266.b9b43e9c52cbcbe7.js rename to pilot/server/static/_next/static/chunks/396.2cca7f693431f729.js index 7d2a719b8..eadb3cc49 100644 --- a/pilot/server/static/_next/static/chunks/266.b9b43e9c52cbcbe7.js +++ b/pilot/server/static/_next/static/chunks/396.2cca7f693431f729.js @@ -1,7 +1,7 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[266],{24019:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});var r=n(87462),a=n(67294),i={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}},{tag:"path",attrs:{d:"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z"}}]},name:"clock-circle",theme:"outlined"},o=n(84089),s=a.forwardRef(function(e,t){return a.createElement(o.Z,(0,r.Z)({},e,{ref:t,icon:i}))})},89035:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});var r=n(87462),a=n(67294),i={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M516 673c0 4.4 3.4 8 7.5 8h185c4.1 0 7.5-3.6 7.5-8v-48c0-4.4-3.4-8-7.5-8h-185c-4.1 0-7.5 3.6-7.5 8v48zm-194.9 6.1l192-161c3.8-3.2 3.8-9.1 0-12.3l-192-160.9A7.95 7.95 0 00308 351v62.7c0 2.4 1 4.6 2.9 6.1L420.7 512l-109.8 92.2a8.1 8.1 0 00-2.9 6.1V673c0 6.8 7.9 10.5 13.1 6.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"}}]},name:"code",theme:"outlined"},o=n(84089),s=a.forwardRef(function(e,t){return a.createElement(o.Z,(0,r.Z)({},e,{ref:t,icon:i}))})},57132:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});var r=n(87462),a=n(67294),i={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z"}}]},name:"copy",theme:"outlined"},o=n(84089),s=a.forwardRef(function(e,t){return a.createElement(o.Z,(0,r.Z)({},e,{ref:t,icon:i}))})},50228:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});var r=n(87462),a=n(67294),i={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M300 328a60 60 0 10120 0 60 60 0 10-120 0zM852 64H172c-17.7 0-32 14.3-32 32v660c0 17.7 14.3 32 32 32h680c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-32 660H204V128h616v596zM604 328a60 60 0 10120 0 60 60 0 10-120 0zm250.2 556H169.8c-16.5 0-29.8 14.3-29.8 32v36c0 4.4 3.3 8 7.4 8h729.1c4.1 0 7.4-3.6 7.4-8v-36c.1-17.7-13.2-32-29.7-32zM664 508H360c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h304c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z"}}]},name:"robot",theme:"outlined"},o=n(84089),s=a.forwardRef(function(e,t){return a.createElement(o.Z,(0,r.Z)({},e,{ref:t,icon:i}))})},98165:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});var r=n(87462),a=n(67294),i={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M168 504.2c1-43.7 10-86.1 26.9-126 17.3-41 42.1-77.7 73.7-109.4S337 212.3 378 195c42.4-17.9 87.4-27 133.9-27s91.5 9.1 133.8 27A341.5 341.5 0 01755 268.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 003 14.1l175.7 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c0-6.7-7.7-10.5-12.9-6.3l-56.4 44.1C765.8 155.1 646.2 92 511.8 92 282.7 92 96.3 275.6 92 503.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8zm756 7.8h-60c-4.4 0-7.9 3.5-8 7.8-1 43.7-10 86.1-26.9 126-17.3 41-42.1 77.8-73.7 109.4A342.45 342.45 0 01512.1 856a342.24 342.24 0 01-243.2-100.8c-9.9-9.9-19.2-20.4-27.8-31.4l60.2-47a8 8 0 00-3-14.1l-175.7-43c-5-1.2-9.9 2.6-9.9 7.7l-.7 181c0 6.7 7.7 10.5 12.9 6.3l56.4-44.1C258.2 868.9 377.8 932 512.2 932c229.2 0 415.5-183.7 419.8-411.8a8 8 0 00-8-8.2z"}}]},name:"sync",theme:"outlined"},o=n(84089),s=a.forwardRef(function(e,t){return a.createElement(o.Z,(0,r.Z)({},e,{ref:t,icon:i}))})},87547:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});var r=n(87462),a=n(67294),i={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z"}}]},name:"user",theme:"outlined"},o=n(84089),s=a.forwardRef(function(e,t){return a.createElement(o.Z,(0,r.Z)({},e,{ref:t,icon:i}))})},1375:function(e,t,n){"use strict";async function r(e,t){let n;let r=e.getReader();for(;!(n=await r.read()).done;)t(n.value)}function a(){return{data:"",event:"",id:"",retry:void 0}}n.d(t,{a:function(){return o},L:function(){return l}});var i=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var a=0,r=Object.getOwnPropertySymbols(e);at.indexOf(r[a])&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]]);return n};let o="text/event-stream",s="last-event-id";function l(e,t){var{signal:n,headers:l,onopen:u,onmessage:d,onclose:p,onerror:m,openWhenHidden:g,fetch:f}=t,h=i(t,["signal","headers","onopen","onmessage","onclose","onerror","openWhenHidden","fetch"]);return new Promise((t,i)=>{let b;let E=Object.assign({},l);function T(){b.abort(),document.hidden||v()}E.accept||(E.accept=o),g||document.addEventListener("visibilitychange",T);let S=1e3,y=0;function A(){document.removeEventListener("visibilitychange",T),window.clearTimeout(y),b.abort()}null==n||n.addEventListener("abort",()=>{A(),t()});let _=null!=f?f:window.fetch,k=null!=u?u:c;async function v(){var n,o;b=new AbortController;try{let n,i,l,c;let u=await _(e,Object.assign(Object.assign({},h),{headers:E,signal:b.signal}));await k(u),await r(u.body,(o=function(e,t,n){let r=a(),i=new TextDecoder;return function(o,s){if(0===o.length)null==n||n(r),r=a();else if(s>0){let n=i.decode(o.subarray(0,s)),a=s+(32===o[s+1]?2:1),l=i.decode(o.subarray(a));switch(n){case"data":r.data=r.data?r.data+"\n"+l:l;break;case"event":r.event=l;break;case"id":e(r.id=l);break;case"retry":let c=parseInt(l,10);isNaN(c)||t(r.retry=c)}}}}(e=>{e?E[s]=e:delete E[s]},e=>{S=e},d),c=!1,function(e){void 0===n?(n=e,i=0,l=-1):n=function(e,t){let n=new Uint8Array(e.length+t.length);return n.set(e),n.set(t,e.length),n}(n,e);let t=n.length,r=0;for(;i{"open"===t&&(null==n||n(e,r)),p.current=a},[n]),g=r.useMemo(()=>void 0!==a?{open:a}:{},[a]),[f,h]=(0,i.r)({controlledProps:g,initialState:t?{open:!0}:{open:!1},onStateChange:m,reducer:s});return r.useEffect(()=>{f.open||null===p.current||p.current===o.Q.blur||null==u||u.focus()},[f.open,u]),{contextValue:{state:f,dispatch:h,popupId:l,registerPopup:c,registerTrigger:d,triggerElement:u},open:f.open}}({defaultOpen:c,onOpenChange:u,open:n});return(0,l.jsx)(a.D.Provider,{value:d,children:t})}},85241:function(e,t,n){"use strict";n.d(t,{D:function(){return a}});var r=n(67294);let a=r.createContext(null)},51633:function(e,t,n){"use strict";n.d(t,{Q:function(){return r}});let r={blur:"dropdown:blur",escapeKeyDown:"dropdown:escapeKeyDown",toggle:"dropdown:toggle",open:"dropdown:open",close:"dropdown:close"}},41132:function(e,t,n){"use strict";var r=n(34678),a=n(85893);t.Z=(0,r.Z)((0,a.jsx)("path",{d:"M18.3 5.71a.9959.9959 0 0 0-1.41 0L12 10.59 7.11 5.7a.9959.9959 0 0 0-1.41 0c-.39.39-.39 1.02 0 1.41L10.59 12 5.7 16.89c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0L12 13.41l4.89 4.89c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L13.41 12l4.89-4.89c.38-.38.38-1.02 0-1.4z"}),"CloseRounded")},59301:function(e,t,n){"use strict";var r=n(34678),a=n(85893);t.Z=(0,r.Z)((0,a.jsx)("path",{d:"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"}),"MoreHoriz")},66478:function(e,t,n){"use strict";n.d(t,{Z:function(){return R},f:function(){return v}});var r=n(63366),a=n(87462),i=n(67294),o=n(70758),s=n(94780),l=n(14142),c=n(33703),u=n(74312),d=n(20407),p=n(78653),m=n(30220),g=n(48699),f=n(26821);function h(e){return(0,f.d6)("MuiButton",e)}let b=(0,f.sI)("MuiButton",["root","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","variantPlain","variantOutlined","variantSoft","variantSolid","focusVisible","disabled","sizeSm","sizeMd","sizeLg","fullWidth","startDecorator","endDecorator","loading","loadingIndicatorCenter"]);var E=n(89996),T=n(85893);let S=["children","action","color","variant","size","fullWidth","startDecorator","endDecorator","loading","loadingPosition","loadingIndicator","disabled","component","slots","slotProps"],y=e=>{let{color:t,disabled:n,focusVisible:r,focusVisibleClassName:a,fullWidth:i,size:o,variant:c,loading:u}=e,d={root:["root",n&&"disabled",r&&"focusVisible",i&&"fullWidth",c&&`variant${(0,l.Z)(c)}`,t&&`color${(0,l.Z)(t)}`,o&&`size${(0,l.Z)(o)}`,u&&"loading"],startDecorator:["startDecorator"],endDecorator:["endDecorator"],loadingIndicatorCenter:["loadingIndicatorCenter"]},p=(0,s.Z)(d,h,{});return r&&a&&(p.root+=` ${a}`),p},A=(0,u.Z)("span",{name:"JoyButton",slot:"StartDecorator",overridesResolver:(e,t)=>t.startDecorator})({"--Icon-margin":"0 0 0 calc(var(--Button-gap) / -2)","--CircularProgress-margin":"0 0 0 calc(var(--Button-gap) / -2)",display:"inherit",marginRight:"var(--Button-gap)"}),_=(0,u.Z)("span",{name:"JoyButton",slot:"EndDecorator",overridesResolver:(e,t)=>t.endDecorator})({"--Icon-margin":"0 calc(var(--Button-gap) / -2) 0 0","--CircularProgress-margin":"0 calc(var(--Button-gap) / -2) 0 0",display:"inherit",marginLeft:"var(--Button-gap)"}),k=(0,u.Z)("span",{name:"JoyButton",slot:"LoadingCenter",overridesResolver:(e,t)=>t.loadingIndicatorCenter})(({theme:e,ownerState:t})=>{var n,r;return(0,a.Z)({display:"inherit",position:"absolute",left:"50%",transform:"translateX(-50%)",color:null==(n=e.variants[t.variant])||null==(n=n[t.color])?void 0:n.color},t.disabled&&{color:null==(r=e.variants[`${t.variant}Disabled`])||null==(r=r[t.color])?void 0:r.color})}),v=({theme:e,ownerState:t})=>{var n,r,i,o;return[(0,a.Z)({"--Icon-margin":"initial","--Icon-color":"neutral"!==t.color||"solid"===t.variant?"currentColor":e.vars.palette.text.icon},"sm"===t.size&&{"--Icon-fontSize":e.vars.fontSize.lg,"--CircularProgress-size":"20px","--CircularProgress-thickness":"2px","--Button-gap":"0.375rem",minHeight:"var(--Button-minHeight, 2rem)",fontSize:e.vars.fontSize.sm,paddingBlock:"2px",paddingInline:"0.75rem"},"md"===t.size&&{"--Icon-fontSize":e.vars.fontSize.xl,"--CircularProgress-size":"24px","--CircularProgress-thickness":"3px","--Button-gap":"0.5rem",minHeight:"var(--Button-minHeight, 2.5rem)",fontSize:e.vars.fontSize.sm,paddingBlock:"0.25rem",paddingInline:"1rem"},"lg"===t.size&&{"--Icon-fontSize":e.vars.fontSize.xl2,"--CircularProgress-size":"28px","--CircularProgress-thickness":"4px","--Button-gap":"0.75rem",minHeight:"var(--Button-minHeight, 3rem)",fontSize:e.vars.fontSize.md,paddingBlock:"0.375rem",paddingInline:"1.5rem"},{WebkitTapHighlightColor:"transparent",borderRadius:`var(--Button-radius, ${e.vars.radius.sm})`,margin:"var(--Button-margin)",border:"none",backgroundColor:"transparent",cursor:"pointer",display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",textDecoration:"none",fontFamily:e.vars.fontFamily.body,fontWeight:e.vars.fontWeight.lg,lineHeight:1},t.fullWidth&&{width:"100%"},{[e.focus.selector]:e.focus.default}),(0,a.Z)({},null==(n=e.variants[t.variant])?void 0:n[t.color],{"&:hover":{"@media (hover: hover)":null==(r=e.variants[`${t.variant}Hover`])?void 0:r[t.color]},'&:active, &[aria-pressed="true"]':null==(i=e.variants[`${t.variant}Active`])?void 0:i[t.color],"&:disabled":null==(o=e.variants[`${t.variant}Disabled`])?void 0:o[t.color]},"center"===t.loadingPosition&&{[`&.${b.loading}`]:{color:"transparent"}})]},N=(0,u.Z)("button",{name:"JoyButton",slot:"Root",overridesResolver:(e,t)=>t.root})(v),C=i.forwardRef(function(e,t){var n;let s=(0,d.Z)({props:e,name:"JoyButton"}),{children:l,action:u,color:f="primary",variant:h="solid",size:b="md",fullWidth:v=!1,startDecorator:C,endDecorator:R,loading:I=!1,loadingPosition:O="center",loadingIndicator:w,disabled:x,component:L,slots:D={},slotProps:P={}}=s,M=(0,r.Z)(s,S),F=i.useContext(E.Z),U=e.variant||F.variant||h,B=e.size||F.size||b,{getColor:H}=(0,p.VT)(U),G=H(e.color,F.color||f),z=null!=(n=e.disabled||e.loading)?n:F.disabled||x||I,$=i.useRef(null),j=(0,c.Z)($,t),{focusVisible:V,setFocusVisible:W,getRootProps:K}=(0,o.U)((0,a.Z)({},s,{disabled:z,rootRef:j})),Z=null!=w?w:(0,T.jsx)(g.Z,(0,a.Z)({},"context"!==G&&{color:G},{thickness:{sm:2,md:3,lg:4}[B]||3}));i.useImperativeHandle(u,()=>({focusVisible:()=>{var e;W(!0),null==(e=$.current)||e.focus()}}),[W]);let Y=(0,a.Z)({},s,{color:G,fullWidth:v,variant:U,size:B,focusVisible:V,loading:I,loadingPosition:O,disabled:z}),q=y(Y),X=(0,a.Z)({},M,{component:L,slots:D,slotProps:P}),[Q,J]=(0,m.Z)("root",{ref:t,className:q.root,elementType:N,externalForwardedProps:X,getSlotProps:K,ownerState:Y}),[ee,et]=(0,m.Z)("startDecorator",{className:q.startDecorator,elementType:A,externalForwardedProps:X,ownerState:Y}),[en,er]=(0,m.Z)("endDecorator",{className:q.endDecorator,elementType:_,externalForwardedProps:X,ownerState:Y}),[ea,ei]=(0,m.Z)("loadingIndicatorCenter",{className:q.loadingIndicatorCenter,elementType:k,externalForwardedProps:X,ownerState:Y});return(0,T.jsxs)(Q,(0,a.Z)({},J,{children:[(C||I&&"start"===O)&&(0,T.jsx)(ee,(0,a.Z)({},et,{children:I&&"start"===O?Z:C})),l,I&&"center"===O&&(0,T.jsx)(ea,(0,a.Z)({},ei,{children:Z})),(R||I&&"end"===O)&&(0,T.jsx)(en,(0,a.Z)({},er,{children:I&&"end"===O?Z:R}))]}))});C.muiName="Button";var R=C},89996:function(e,t,n){"use strict";var r=n(67294);let a=r.createContext({});t.Z=a},48699:function(e,t,n){"use strict";n.d(t,{Z:function(){return I}});var r=n(87462),a=n(63366),i=n(67294),o=n(90512),s=n(14142),l=n(94780),c=n(70917),u=n(74312),d=n(20407),p=n(78653),m=n(30220),g=n(26821);function f(e){return(0,g.d6)("MuiCircularProgress",e)}(0,g.sI)("MuiCircularProgress",["root","determinate","svg","track","progress","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","sizeSm","sizeMd","sizeLg","variantPlain","variantOutlined","variantSoft","variantSolid"]);var h=n(85893);let b=e=>e,E,T=["color","backgroundColor"],S=["children","className","color","size","variant","thickness","determinate","value","component","slots","slotProps"],y=(0,c.F4)({"0%":{transform:"rotate(-90deg)"},"100%":{transform:"rotate(270deg)"}}),A=e=>{let{determinate:t,color:n,variant:r,size:a}=e,i={root:["root",t&&"determinate",n&&`color${(0,s.Z)(n)}`,r&&`variant${(0,s.Z)(r)}`,a&&`size${(0,s.Z)(a)}`],svg:["svg"],track:["track"],progress:["progress"]};return(0,l.Z)(i,f,{})};function _(e,t){return`var(--CircularProgress-${e}Thickness, var(--CircularProgress-thickness, ${t}))`}let k=(0,u.Z)("span",{name:"JoyCircularProgress",slot:"Root",overridesResolver:(e,t)=>t.root})(({ownerState:e,theme:t})=>{var n;let i=(null==(n=t.variants[e.variant])?void 0:n[e.color])||{},{color:o,backgroundColor:s}=i,l=(0,a.Z)(i,T);return(0,r.Z)({"--Icon-fontSize":"calc(0.4 * var(--_root-size))","--CircularProgress-trackColor":s,"--CircularProgress-progressColor":o,"--CircularProgress-percent":e.value,"--CircularProgress-linecap":"round"},"sm"===e.size&&{"--_root-size":"var(--CircularProgress-size, 24px)","--_track-thickness":_("track","3px"),"--_progress-thickness":_("progress","3px")},"sm"===e.instanceSize&&{"--CircularProgress-size":"24px"},"md"===e.size&&{"--_track-thickness":_("track","6px"),"--_progress-thickness":_("progress","6px"),"--_root-size":"var(--CircularProgress-size, 40px)"},"md"===e.instanceSize&&{"--CircularProgress-size":"40px"},"lg"===e.size&&{"--_track-thickness":_("track","8px"),"--_progress-thickness":_("progress","8px"),"--_root-size":"var(--CircularProgress-size, 64px)"},"lg"===e.instanceSize&&{"--CircularProgress-size":"64px"},e.thickness&&{"--_track-thickness":`${e.thickness}px`,"--_progress-thickness":`${e.thickness}px`},{"--_thickness-diff":"calc(var(--_track-thickness) - var(--_progress-thickness))","--_inner-size":"calc(var(--_root-size) - 2 * var(--variant-borderWidth, 0px))","--_outlined-inset":"max(var(--_track-thickness), var(--_progress-thickness))",width:"var(--_root-size)",height:"var(--_root-size)",borderRadius:"var(--_root-size)",margin:"var(--CircularProgress-margin)",boxSizing:"border-box",display:"inline-flex",justifyContent:"center",alignItems:"center",flexShrink:0,position:"relative",color:o},e.children&&{fontFamily:t.vars.fontFamily.body,fontWeight:t.vars.fontWeight.md,fontSize:"calc(0.2 * var(--_root-size))"},l,"outlined"===e.variant&&{"&:before":(0,r.Z)({content:'""',display:"block",position:"absolute",borderRadius:"inherit",top:"var(--_outlined-inset)",left:"var(--_outlined-inset)",right:"var(--_outlined-inset)",bottom:"var(--_outlined-inset)"},l)})}),v=(0,u.Z)("svg",{name:"JoyCircularProgress",slot:"Svg",overridesResolver:(e,t)=>t.svg})({width:"inherit",height:"inherit",display:"inherit",boxSizing:"inherit",position:"absolute",top:"calc(-1 * var(--variant-borderWidth, 0px))",left:"calc(-1 * var(--variant-borderWidth, 0px))"}),N=(0,u.Z)("circle",{name:"JoyCircularProgress",slot:"track",overridesResolver:(e,t)=>t.track})({cx:"50%",cy:"50%",r:"calc(var(--_inner-size) / 2 - var(--_track-thickness) / 2 + min(0px, var(--_thickness-diff) / 2))",fill:"transparent",strokeWidth:"var(--_track-thickness)",stroke:"var(--CircularProgress-trackColor)"}),C=(0,u.Z)("circle",{name:"JoyCircularProgress",slot:"progress",overridesResolver:(e,t)=>t.progress})({"--_progress-radius":"calc(var(--_inner-size) / 2 - var(--_progress-thickness) / 2 - max(0px, var(--_thickness-diff) / 2))","--_progress-length":"calc(2 * 3.1415926535 * var(--_progress-radius))",cx:"50%",cy:"50%",r:"var(--_progress-radius)",fill:"transparent",strokeWidth:"var(--_progress-thickness)",stroke:"var(--CircularProgress-progressColor)",strokeLinecap:"var(--CircularProgress-linecap, round)",strokeDasharray:"var(--_progress-length)",strokeDashoffset:"calc(var(--_progress-length) - var(--CircularProgress-percent) * var(--_progress-length) / 100)",transformOrigin:"center",transform:"rotate(-90deg)"},({ownerState:e})=>!e.determinate&&(0,c.iv)(E||(E=b` +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[396],{24019:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});var r=n(87462),a=n(67294),i={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}},{tag:"path",attrs:{d:"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z"}}]},name:"clock-circle",theme:"outlined"},o=n(84089),s=a.forwardRef(function(e,t){return a.createElement(o.Z,(0,r.Z)({},e,{ref:t,icon:i}))})},89035:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});var r=n(87462),a=n(67294),i={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M516 673c0 4.4 3.4 8 7.5 8h185c4.1 0 7.5-3.6 7.5-8v-48c0-4.4-3.4-8-7.5-8h-185c-4.1 0-7.5 3.6-7.5 8v48zm-194.9 6.1l192-161c3.8-3.2 3.8-9.1 0-12.3l-192-160.9A7.95 7.95 0 00308 351v62.7c0 2.4 1 4.6 2.9 6.1L420.7 512l-109.8 92.2a8.1 8.1 0 00-2.9 6.1V673c0 6.8 7.9 10.5 13.1 6.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"}}]},name:"code",theme:"outlined"},o=n(84089),s=a.forwardRef(function(e,t){return a.createElement(o.Z,(0,r.Z)({},e,{ref:t,icon:i}))})},57132:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});var r=n(87462),a=n(67294),i={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z"}}]},name:"copy",theme:"outlined"},o=n(84089),s=a.forwardRef(function(e,t){return a.createElement(o.Z,(0,r.Z)({},e,{ref:t,icon:i}))})},14079:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});var r=n(87462),a=n(67294),i={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M928 161H699.2c-49.1 0-97.1 14.1-138.4 40.7L512 233l-48.8-31.3A255.2 255.2 0 00324.8 161H96c-17.7 0-32 14.3-32 32v568c0 17.7 14.3 32 32 32h228.8c49.1 0 97.1 14.1 138.4 40.7l44.4 28.6c1.3.8 2.8 1.3 4.3 1.3s3-.4 4.3-1.3l44.4-28.6C602 807.1 650.1 793 699.2 793H928c17.7 0 32-14.3 32-32V193c0-17.7-14.3-32-32-32zM324.8 721H136V233h188.8c35.4 0 69.8 10.1 99.5 29.2l48.8 31.3 6.9 4.5v462c-47.6-25.6-100.8-39-155.2-39zm563.2 0H699.2c-54.4 0-107.6 13.4-155.2 39V298l6.9-4.5 48.8-31.3c29.7-19.1 64.1-29.2 99.5-29.2H888v488zM396.9 361H211.1c-3.9 0-7.1 3.4-7.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45c.1-4.1-3.1-7.5-7-7.5zm223.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45c0-4.1-3.2-7.5-7.1-7.5H627.1c-3.9 0-7.1 3.4-7.1 7.5zM396.9 501H211.1c-3.9 0-7.1 3.4-7.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45c.1-4.1-3.1-7.5-7-7.5zm416 0H627.1c-3.9 0-7.1 3.4-7.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45c.1-4.1-3.1-7.5-7-7.5z"}}]},name:"read",theme:"outlined"},o=n(84089),s=a.forwardRef(function(e,t){return a.createElement(o.Z,(0,r.Z)({},e,{ref:t,icon:i}))})},87740:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});var r=n(87462),a=n(67294),i={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M758.2 839.1C851.8 765.9 912 651.9 912 523.9 912 303 733.5 124.3 512.6 124 291.4 123.7 112 302.8 112 523.9c0 125.2 57.5 236.9 147.6 310.2 3.5 2.8 8.6 2.2 11.4-1.3l39.4-50.5c2.7-3.4 2.1-8.3-1.2-11.1-8.1-6.6-15.9-13.7-23.4-21.2a318.64 318.64 0 01-68.6-101.7C200.4 609 192 567.1 192 523.9s8.4-85.1 25.1-124.5c16.1-38.1 39.2-72.3 68.6-101.7 29.4-29.4 63.6-52.5 101.7-68.6C426.9 212.4 468.8 204 512 204s85.1 8.4 124.5 25.1c38.1 16.1 72.3 39.2 101.7 68.6 29.4 29.4 52.5 63.6 68.6 101.7 16.7 39.4 25.1 81.3 25.1 124.5s-8.4 85.1-25.1 124.5a318.64 318.64 0 01-68.6 101.7c-9.3 9.3-19.1 18-29.3 26L668.2 724a8 8 0 00-14.1 3l-39.6 162.2c-1.2 5 2.6 9.9 7.7 9.9l167 .8c6.7 0 10.5-7.7 6.3-12.9l-37.3-47.9z"}}]},name:"redo",theme:"outlined"},o=n(84089),s=a.forwardRef(function(e,t){return a.createElement(o.Z,(0,r.Z)({},e,{ref:t,icon:i}))})},50228:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});var r=n(87462),a=n(67294),i={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M300 328a60 60 0 10120 0 60 60 0 10-120 0zM852 64H172c-17.7 0-32 14.3-32 32v660c0 17.7 14.3 32 32 32h680c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-32 660H204V128h616v596zM604 328a60 60 0 10120 0 60 60 0 10-120 0zm250.2 556H169.8c-16.5 0-29.8 14.3-29.8 32v36c0 4.4 3.3 8 7.4 8h729.1c4.1 0 7.4-3.6 7.4-8v-36c.1-17.7-13.2-32-29.7-32zM664 508H360c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h304c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z"}}]},name:"robot",theme:"outlined"},o=n(84089),s=a.forwardRef(function(e,t){return a.createElement(o.Z,(0,r.Z)({},e,{ref:t,icon:i}))})},98165:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});var r=n(87462),a=n(67294),i={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M168 504.2c1-43.7 10-86.1 26.9-126 17.3-41 42.1-77.7 73.7-109.4S337 212.3 378 195c42.4-17.9 87.4-27 133.9-27s91.5 9.1 133.8 27A341.5 341.5 0 01755 268.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 003 14.1l175.7 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c0-6.7-7.7-10.5-12.9-6.3l-56.4 44.1C765.8 155.1 646.2 92 511.8 92 282.7 92 96.3 275.6 92 503.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8zm756 7.8h-60c-4.4 0-7.9 3.5-8 7.8-1 43.7-10 86.1-26.9 126-17.3 41-42.1 77.8-73.7 109.4A342.45 342.45 0 01512.1 856a342.24 342.24 0 01-243.2-100.8c-9.9-9.9-19.2-20.4-27.8-31.4l60.2-47a8 8 0 00-3-14.1l-175.7-43c-5-1.2-9.9 2.6-9.9 7.7l-.7 181c0 6.7 7.7 10.5 12.9 6.3l56.4-44.1C258.2 868.9 377.8 932 512.2 932c229.2 0 415.5-183.7 419.8-411.8a8 8 0 00-8-8.2z"}}]},name:"sync",theme:"outlined"},o=n(84089),s=a.forwardRef(function(e,t){return a.createElement(o.Z,(0,r.Z)({},e,{ref:t,icon:i}))})},87547:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});var r=n(87462),a=n(67294),i={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z"}}]},name:"user",theme:"outlined"},o=n(84089),s=a.forwardRef(function(e,t){return a.createElement(o.Z,(0,r.Z)({},e,{ref:t,icon:i}))})},72868:function(e,t,n){"use strict";n.d(t,{L:function(){return c}});var r=n(67294),a=n(85241),i=n(78031),o=n(51633);function s(e,t){switch(t.type){case o.Q.blur:case o.Q.escapeKeyDown:return{open:!1};case o.Q.toggle:return{open:!e.open};case o.Q.open:return{open:!0};case o.Q.close:return{open:!1};default:throw Error("Unhandled action")}}var l=n(85893);function c(e){let{children:t,open:n,defaultOpen:c,onOpenChange:u}=e,{contextValue:d}=function(e={}){let{defaultOpen:t,onOpenChange:n,open:a}=e,[l,c]=r.useState(""),[u,d]=r.useState(null),p=r.useRef(null),m=r.useCallback((e,t,r,a)=>{"open"===t&&(null==n||n(e,r)),p.current=a},[n]),g=r.useMemo(()=>void 0!==a?{open:a}:{},[a]),[f,h]=(0,i.r)({controlledProps:g,initialState:t?{open:!0}:{open:!1},onStateChange:m,reducer:s});return r.useEffect(()=>{f.open||null===p.current||p.current===o.Q.blur||null==u||u.focus()},[f.open,u]),{contextValue:{state:f,dispatch:h,popupId:l,registerPopup:c,registerTrigger:d,triggerElement:u},open:f.open}}({defaultOpen:c,onOpenChange:u,open:n});return(0,l.jsx)(a.D.Provider,{value:d,children:t})}},85241:function(e,t,n){"use strict";n.d(t,{D:function(){return a}});var r=n(67294);let a=r.createContext(null)},51633:function(e,t,n){"use strict";n.d(t,{Q:function(){return r}});let r={blur:"dropdown:blur",escapeKeyDown:"dropdown:escapeKeyDown",toggle:"dropdown:toggle",open:"dropdown:open",close:"dropdown:close"}},41132:function(e,t,n){"use strict";var r=n(34678),a=n(85893);t.Z=(0,r.Z)((0,a.jsx)("path",{d:"M18.3 5.71a.9959.9959 0 0 0-1.41 0L12 10.59 7.11 5.7a.9959.9959 0 0 0-1.41 0c-.39.39-.39 1.02 0 1.41L10.59 12 5.7 16.89c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0L12 13.41l4.89 4.89c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L13.41 12l4.89-4.89c.38-.38.38-1.02 0-1.4z"}),"CloseRounded")},59301:function(e,t,n){"use strict";var r=n(34678),a=n(85893);t.Z=(0,r.Z)((0,a.jsx)("path",{d:"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"}),"MoreHoriz")},66478:function(e,t,n){"use strict";n.d(t,{Z:function(){return R},f:function(){return v}});var r=n(63366),a=n(87462),i=n(67294),o=n(70758),s=n(94780),l=n(14142),c=n(33703),u=n(74312),d=n(20407),p=n(78653),m=n(30220),g=n(48699),f=n(26821);function h(e){return(0,f.d6)("MuiButton",e)}let b=(0,f.sI)("MuiButton",["root","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","variantPlain","variantOutlined","variantSoft","variantSolid","focusVisible","disabled","sizeSm","sizeMd","sizeLg","fullWidth","startDecorator","endDecorator","loading","loadingIndicatorCenter"]);var E=n(89996),T=n(85893);let S=["children","action","color","variant","size","fullWidth","startDecorator","endDecorator","loading","loadingPosition","loadingIndicator","disabled","component","slots","slotProps"],y=e=>{let{color:t,disabled:n,focusVisible:r,focusVisibleClassName:a,fullWidth:i,size:o,variant:c,loading:u}=e,d={root:["root",n&&"disabled",r&&"focusVisible",i&&"fullWidth",c&&`variant${(0,l.Z)(c)}`,t&&`color${(0,l.Z)(t)}`,o&&`size${(0,l.Z)(o)}`,u&&"loading"],startDecorator:["startDecorator"],endDecorator:["endDecorator"],loadingIndicatorCenter:["loadingIndicatorCenter"]},p=(0,s.Z)(d,h,{});return r&&a&&(p.root+=` ${a}`),p},A=(0,u.Z)("span",{name:"JoyButton",slot:"StartDecorator",overridesResolver:(e,t)=>t.startDecorator})({"--Icon-margin":"0 0 0 calc(var(--Button-gap) / -2)","--CircularProgress-margin":"0 0 0 calc(var(--Button-gap) / -2)",display:"inherit",marginRight:"var(--Button-gap)"}),_=(0,u.Z)("span",{name:"JoyButton",slot:"EndDecorator",overridesResolver:(e,t)=>t.endDecorator})({"--Icon-margin":"0 calc(var(--Button-gap) / -2) 0 0","--CircularProgress-margin":"0 calc(var(--Button-gap) / -2) 0 0",display:"inherit",marginLeft:"var(--Button-gap)"}),k=(0,u.Z)("span",{name:"JoyButton",slot:"LoadingCenter",overridesResolver:(e,t)=>t.loadingIndicatorCenter})(({theme:e,ownerState:t})=>{var n,r;return(0,a.Z)({display:"inherit",position:"absolute",left:"50%",transform:"translateX(-50%)",color:null==(n=e.variants[t.variant])||null==(n=n[t.color])?void 0:n.color},t.disabled&&{color:null==(r=e.variants[`${t.variant}Disabled`])||null==(r=r[t.color])?void 0:r.color})}),v=({theme:e,ownerState:t})=>{var n,r,i,o;return[(0,a.Z)({"--Icon-margin":"initial","--Icon-color":"neutral"!==t.color||"solid"===t.variant?"currentColor":e.vars.palette.text.icon},"sm"===t.size&&{"--Icon-fontSize":e.vars.fontSize.lg,"--CircularProgress-size":"20px","--CircularProgress-thickness":"2px","--Button-gap":"0.375rem",minHeight:"var(--Button-minHeight, 2rem)",fontSize:e.vars.fontSize.sm,paddingBlock:"2px",paddingInline:"0.75rem"},"md"===t.size&&{"--Icon-fontSize":e.vars.fontSize.xl,"--CircularProgress-size":"24px","--CircularProgress-thickness":"3px","--Button-gap":"0.5rem",minHeight:"var(--Button-minHeight, 2.5rem)",fontSize:e.vars.fontSize.sm,paddingBlock:"0.25rem",paddingInline:"1rem"},"lg"===t.size&&{"--Icon-fontSize":e.vars.fontSize.xl2,"--CircularProgress-size":"28px","--CircularProgress-thickness":"4px","--Button-gap":"0.75rem",minHeight:"var(--Button-minHeight, 3rem)",fontSize:e.vars.fontSize.md,paddingBlock:"0.375rem",paddingInline:"1.5rem"},{WebkitTapHighlightColor:"transparent",borderRadius:`var(--Button-radius, ${e.vars.radius.sm})`,margin:"var(--Button-margin)",border:"none",backgroundColor:"transparent",cursor:"pointer",display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",textDecoration:"none",fontFamily:e.vars.fontFamily.body,fontWeight:e.vars.fontWeight.lg,lineHeight:1},t.fullWidth&&{width:"100%"},{[e.focus.selector]:e.focus.default}),(0,a.Z)({},null==(n=e.variants[t.variant])?void 0:n[t.color],{"&:hover":{"@media (hover: hover)":null==(r=e.variants[`${t.variant}Hover`])?void 0:r[t.color]},'&:active, &[aria-pressed="true"]':null==(i=e.variants[`${t.variant}Active`])?void 0:i[t.color],"&:disabled":null==(o=e.variants[`${t.variant}Disabled`])?void 0:o[t.color]},"center"===t.loadingPosition&&{[`&.${b.loading}`]:{color:"transparent"}})]},N=(0,u.Z)("button",{name:"JoyButton",slot:"Root",overridesResolver:(e,t)=>t.root})(v),C=i.forwardRef(function(e,t){var n;let s=(0,d.Z)({props:e,name:"JoyButton"}),{children:l,action:u,color:f="primary",variant:h="solid",size:b="md",fullWidth:v=!1,startDecorator:C,endDecorator:R,loading:I=!1,loadingPosition:O="center",loadingIndicator:w,disabled:x,component:L,slots:D={},slotProps:P={}}=s,M=(0,r.Z)(s,S),F=i.useContext(E.Z),U=e.variant||F.variant||h,B=e.size||F.size||b,{getColor:H}=(0,p.VT)(U),G=H(e.color,F.color||f),z=null!=(n=e.disabled||e.loading)?n:F.disabled||x||I,$=i.useRef(null),j=(0,c.Z)($,t),{focusVisible:V,setFocusVisible:W,getRootProps:K}=(0,o.U)((0,a.Z)({},s,{disabled:z,rootRef:j})),Z=null!=w?w:(0,T.jsx)(g.Z,(0,a.Z)({},"context"!==G&&{color:G},{thickness:{sm:2,md:3,lg:4}[B]||3}));i.useImperativeHandle(u,()=>({focusVisible:()=>{var e;W(!0),null==(e=$.current)||e.focus()}}),[W]);let Y=(0,a.Z)({},s,{color:G,fullWidth:v,variant:U,size:B,focusVisible:V,loading:I,loadingPosition:O,disabled:z}),q=y(Y),X=(0,a.Z)({},M,{component:L,slots:D,slotProps:P}),[Q,J]=(0,m.Z)("root",{ref:t,className:q.root,elementType:N,externalForwardedProps:X,getSlotProps:K,ownerState:Y}),[ee,et]=(0,m.Z)("startDecorator",{className:q.startDecorator,elementType:A,externalForwardedProps:X,ownerState:Y}),[en,er]=(0,m.Z)("endDecorator",{className:q.endDecorator,elementType:_,externalForwardedProps:X,ownerState:Y}),[ea,ei]=(0,m.Z)("loadingIndicatorCenter",{className:q.loadingIndicatorCenter,elementType:k,externalForwardedProps:X,ownerState:Y});return(0,T.jsxs)(Q,(0,a.Z)({},J,{children:[(C||I&&"start"===O)&&(0,T.jsx)(ee,(0,a.Z)({},et,{children:I&&"start"===O?Z:C})),l,I&&"center"===O&&(0,T.jsx)(ea,(0,a.Z)({},ei,{children:Z})),(R||I&&"end"===O)&&(0,T.jsx)(en,(0,a.Z)({},er,{children:I&&"end"===O?Z:R}))]}))});C.muiName="Button";var R=C},89996:function(e,t,n){"use strict";var r=n(67294);let a=r.createContext({});t.Z=a},48699:function(e,t,n){"use strict";n.d(t,{Z:function(){return I}});var r=n(87462),a=n(63366),i=n(67294),o=n(90512),s=n(14142),l=n(94780),c=n(70917),u=n(74312),d=n(20407),p=n(78653),m=n(30220),g=n(26821);function f(e){return(0,g.d6)("MuiCircularProgress",e)}(0,g.sI)("MuiCircularProgress",["root","determinate","svg","track","progress","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","sizeSm","sizeMd","sizeLg","variantPlain","variantOutlined","variantSoft","variantSolid"]);var h=n(85893);let b=e=>e,E,T=["color","backgroundColor"],S=["children","className","color","size","variant","thickness","determinate","value","component","slots","slotProps"],y=(0,c.F4)({"0%":{transform:"rotate(-90deg)"},"100%":{transform:"rotate(270deg)"}}),A=e=>{let{determinate:t,color:n,variant:r,size:a}=e,i={root:["root",t&&"determinate",n&&`color${(0,s.Z)(n)}`,r&&`variant${(0,s.Z)(r)}`,a&&`size${(0,s.Z)(a)}`],svg:["svg"],track:["track"],progress:["progress"]};return(0,l.Z)(i,f,{})};function _(e,t){return`var(--CircularProgress-${e}Thickness, var(--CircularProgress-thickness, ${t}))`}let k=(0,u.Z)("span",{name:"JoyCircularProgress",slot:"Root",overridesResolver:(e,t)=>t.root})(({ownerState:e,theme:t})=>{var n;let i=(null==(n=t.variants[e.variant])?void 0:n[e.color])||{},{color:o,backgroundColor:s}=i,l=(0,a.Z)(i,T);return(0,r.Z)({"--Icon-fontSize":"calc(0.4 * var(--_root-size))","--CircularProgress-trackColor":s,"--CircularProgress-progressColor":o,"--CircularProgress-percent":e.value,"--CircularProgress-linecap":"round"},"sm"===e.size&&{"--_root-size":"var(--CircularProgress-size, 24px)","--_track-thickness":_("track","3px"),"--_progress-thickness":_("progress","3px")},"sm"===e.instanceSize&&{"--CircularProgress-size":"24px"},"md"===e.size&&{"--_track-thickness":_("track","6px"),"--_progress-thickness":_("progress","6px"),"--_root-size":"var(--CircularProgress-size, 40px)"},"md"===e.instanceSize&&{"--CircularProgress-size":"40px"},"lg"===e.size&&{"--_track-thickness":_("track","8px"),"--_progress-thickness":_("progress","8px"),"--_root-size":"var(--CircularProgress-size, 64px)"},"lg"===e.instanceSize&&{"--CircularProgress-size":"64px"},e.thickness&&{"--_track-thickness":`${e.thickness}px`,"--_progress-thickness":`${e.thickness}px`},{"--_thickness-diff":"calc(var(--_track-thickness) - var(--_progress-thickness))","--_inner-size":"calc(var(--_root-size) - 2 * var(--variant-borderWidth, 0px))","--_outlined-inset":"max(var(--_track-thickness), var(--_progress-thickness))",width:"var(--_root-size)",height:"var(--_root-size)",borderRadius:"var(--_root-size)",margin:"var(--CircularProgress-margin)",boxSizing:"border-box",display:"inline-flex",justifyContent:"center",alignItems:"center",flexShrink:0,position:"relative",color:o},e.children&&{fontFamily:t.vars.fontFamily.body,fontWeight:t.vars.fontWeight.md,fontSize:"calc(0.2 * var(--_root-size))"},l,"outlined"===e.variant&&{"&:before":(0,r.Z)({content:'""',display:"block",position:"absolute",borderRadius:"inherit",top:"var(--_outlined-inset)",left:"var(--_outlined-inset)",right:"var(--_outlined-inset)",bottom:"var(--_outlined-inset)"},l)})}),v=(0,u.Z)("svg",{name:"JoyCircularProgress",slot:"Svg",overridesResolver:(e,t)=>t.svg})({width:"inherit",height:"inherit",display:"inherit",boxSizing:"inherit",position:"absolute",top:"calc(-1 * var(--variant-borderWidth, 0px))",left:"calc(-1 * var(--variant-borderWidth, 0px))"}),N=(0,u.Z)("circle",{name:"JoyCircularProgress",slot:"track",overridesResolver:(e,t)=>t.track})({cx:"50%",cy:"50%",r:"calc(var(--_inner-size) / 2 - var(--_track-thickness) / 2 + min(0px, var(--_thickness-diff) / 2))",fill:"transparent",strokeWidth:"var(--_track-thickness)",stroke:"var(--CircularProgress-trackColor)"}),C=(0,u.Z)("circle",{name:"JoyCircularProgress",slot:"progress",overridesResolver:(e,t)=>t.progress})({"--_progress-radius":"calc(var(--_inner-size) / 2 - var(--_progress-thickness) / 2 - max(0px, var(--_thickness-diff) / 2))","--_progress-length":"calc(2 * 3.1415926535 * var(--_progress-radius))",cx:"50%",cy:"50%",r:"var(--_progress-radius)",fill:"transparent",strokeWidth:"var(--_progress-thickness)",stroke:"var(--CircularProgress-progressColor)",strokeLinecap:"var(--CircularProgress-linecap, round)",strokeDasharray:"var(--_progress-length)",strokeDashoffset:"calc(var(--_progress-length) - var(--CircularProgress-percent) * var(--_progress-length) / 100)",transformOrigin:"center",transform:"rotate(-90deg)"},({ownerState:e})=>!e.determinate&&(0,c.iv)(E||(E=b` animation: var(--CircularProgress-circulation, 0.8s linear 0s infinite normal none running) ${0}; - `),y)),R=i.forwardRef(function(e,t){let n=(0,d.Z)({props:e,name:"JoyCircularProgress"}),{children:i,className:s,color:l="primary",size:c="md",variant:u="soft",thickness:g,determinate:f=!1,value:b=f?0:25,component:E,slots:T={},slotProps:y={}}=n,_=(0,a.Z)(n,S),{getColor:R}=(0,p.VT)(u),I=R(e.color,l),O=(0,r.Z)({},n,{color:I,size:c,variant:u,thickness:g,value:b,determinate:f,instanceSize:e.size}),w=A(O),x=(0,r.Z)({},_,{component:E,slots:T,slotProps:y}),[L,D]=(0,m.Z)("root",{ref:t,className:(0,o.Z)(w.root,s),elementType:k,externalForwardedProps:x,ownerState:O,additionalProps:(0,r.Z)({role:"progressbar",style:{"--CircularProgress-percent":b}},b&&f&&{"aria-valuenow":"number"==typeof b?Math.round(b):Math.round(Number(b||0))})}),[P,M]=(0,m.Z)("svg",{className:w.svg,elementType:v,externalForwardedProps:x,ownerState:O}),[F,U]=(0,m.Z)("track",{className:w.track,elementType:N,externalForwardedProps:x,ownerState:O}),[B,H]=(0,m.Z)("progress",{className:w.progress,elementType:C,externalForwardedProps:x,ownerState:O});return(0,h.jsxs)(L,(0,r.Z)({},D,{children:[(0,h.jsxs)(P,(0,r.Z)({},M,{children:[(0,h.jsx)(F,(0,r.Z)({},U)),(0,h.jsx)(B,(0,r.Z)({},H))]})),i]}))});var I=R},26047:function(e,t,n){"use strict";n.d(t,{Z:function(){return G}});var r=n(87462),a=n(63366),i=n(67294),o=n(90512),s=n(94780),l=n(34867),c=n(18719),u=n(70182);let d=(0,u.ZP)();var p=n(39214),m=n(96682),g=n(39707),f=n(88647);let h=(e,t)=>e.filter(e=>t.includes(e)),b=(e,t,n)=>{let r=e.keys[0];if(Array.isArray(t))t.forEach((t,r)=>{n((t,n)=>{r<=e.keys.length-1&&(0===r?Object.assign(t,n):t[e.up(e.keys[r])]=n)},t)});else if(t&&"object"==typeof t){let a=Object.keys(t).length>e.keys.length?e.keys:h(e.keys,Object.keys(t));a.forEach(a=>{if(-1!==e.keys.indexOf(a)){let i=t[a];void 0!==i&&n((t,n)=>{r===a?Object.assign(t,n):t[e.up(a)]=n},i)}})}else("number"==typeof t||"string"==typeof t)&&n((e,t)=>{Object.assign(e,t)},t)};function E(e){return e?`Level${e}`:""}function T(e){return e.unstable_level>0&&e.container}function S(e){return function(t){return`var(--Grid-${t}Spacing${E(e.unstable_level)})`}}function y(e){return function(t){return 0===e.unstable_level?`var(--Grid-${t}Spacing)`:`var(--Grid-${t}Spacing${E(e.unstable_level-1)})`}}function A(e){return 0===e.unstable_level?"var(--Grid-columns)":`var(--Grid-columns${E(e.unstable_level-1)})`}let _=({theme:e,ownerState:t})=>{let n=S(t),r={};return b(e.breakpoints,t.gridSize,(e,a)=>{let i={};!0===a&&(i={flexBasis:0,flexGrow:1,maxWidth:"100%"}),"auto"===a&&(i={flexBasis:"auto",flexGrow:0,flexShrink:0,maxWidth:"none",width:"auto"}),"number"==typeof a&&(i={flexGrow:0,flexBasis:"auto",width:`calc(100% * ${a} / ${A(t)}${T(t)?` + ${n("column")}`:""})`}),e(r,i)}),r},k=({theme:e,ownerState:t})=>{let n={};return b(e.breakpoints,t.gridOffset,(e,r)=>{let a={};"auto"===r&&(a={marginLeft:"auto"}),"number"==typeof r&&(a={marginLeft:0===r?"0px":`calc(100% * ${r} / ${A(t)})`}),e(n,a)}),n},v=({theme:e,ownerState:t})=>{if(!t.container)return{};let n=T(t)?{[`--Grid-columns${E(t.unstable_level)}`]:A(t)}:{"--Grid-columns":12};return b(e.breakpoints,t.columns,(e,r)=>{e(n,{[`--Grid-columns${E(t.unstable_level)}`]:r})}),n},N=({theme:e,ownerState:t})=>{if(!t.container)return{};let n=y(t),r=T(t)?{[`--Grid-rowSpacing${E(t.unstable_level)}`]:n("row")}:{};return b(e.breakpoints,t.rowSpacing,(n,a)=>{var i;n(r,{[`--Grid-rowSpacing${E(t.unstable_level)}`]:"string"==typeof a?a:null==(i=e.spacing)?void 0:i.call(e,a)})}),r},C=({theme:e,ownerState:t})=>{if(!t.container)return{};let n=y(t),r=T(t)?{[`--Grid-columnSpacing${E(t.unstable_level)}`]:n("column")}:{};return b(e.breakpoints,t.columnSpacing,(n,a)=>{var i;n(r,{[`--Grid-columnSpacing${E(t.unstable_level)}`]:"string"==typeof a?a:null==(i=e.spacing)?void 0:i.call(e,a)})}),r},R=({theme:e,ownerState:t})=>{if(!t.container)return{};let n={};return b(e.breakpoints,t.direction,(e,t)=>{e(n,{flexDirection:t})}),n},I=({ownerState:e})=>{let t=S(e),n=y(e);return(0,r.Z)({minWidth:0,boxSizing:"border-box"},e.container&&(0,r.Z)({display:"flex",flexWrap:"wrap"},e.wrap&&"wrap"!==e.wrap&&{flexWrap:e.wrap},{margin:`calc(${t("row")} / -2) calc(${t("column")} / -2)`},e.disableEqualOverflow&&{margin:`calc(${t("row")} * -1) 0px 0px calc(${t("column")} * -1)`}),(!e.container||T(e))&&(0,r.Z)({padding:`calc(${n("row")} / 2) calc(${n("column")} / 2)`},(e.disableEqualOverflow||e.parentDisableEqualOverflow)&&{padding:`${n("row")} 0px 0px ${n("column")}`}))},O=e=>{let t=[];return Object.entries(e).forEach(([e,n])=>{!1!==n&&void 0!==n&&t.push(`grid-${e}-${String(n)}`)}),t},w=(e,t="xs")=>{function n(e){return void 0!==e&&("string"==typeof e&&!Number.isNaN(Number(e))||"number"==typeof e&&e>0)}if(n(e))return[`spacing-${t}-${String(e)}`];if("object"==typeof e&&!Array.isArray(e)){let t=[];return Object.entries(e).forEach(([e,r])=>{n(r)&&t.push(`spacing-${e}-${String(r)}`)}),t}return[]},x=e=>void 0===e?[]:"object"==typeof e?Object.entries(e).map(([e,t])=>`direction-${e}-${t}`):[`direction-xs-${String(e)}`];var L=n(85893);let D=["className","children","columns","container","component","direction","wrap","spacing","rowSpacing","columnSpacing","disableEqualOverflow","unstable_level"],P=(0,f.Z)(),M=d("div",{name:"MuiGrid",slot:"Root",overridesResolver:(e,t)=>t.root});function F(e){return(0,p.Z)({props:e,name:"MuiGrid",defaultTheme:P})}var U=n(74312),B=n(20407);let H=function(e={}){let{createStyledComponent:t=M,useThemeProps:n=F,componentName:u="MuiGrid"}=e,d=i.createContext(void 0),p=(e,t)=>{let{container:n,direction:r,spacing:a,wrap:i,gridSize:o}=e,c={root:["root",n&&"container","wrap"!==i&&`wrap-xs-${String(i)}`,...x(r),...O(o),...n?w(a,t.breakpoints.keys[0]):[]]};return(0,s.Z)(c,e=>(0,l.Z)(u,e),{})},f=t(v,C,N,_,R,I,k),h=i.forwardRef(function(e,t){var s,l,u,h,b,E,T,S;let y=(0,m.Z)(),A=n(e),_=(0,g.Z)(A),k=i.useContext(d),{className:v,children:N,columns:C=12,container:R=!1,component:I="div",direction:O="row",wrap:w="wrap",spacing:x=0,rowSpacing:P=x,columnSpacing:M=x,disableEqualOverflow:F,unstable_level:U=0}=_,B=(0,a.Z)(_,D),H=F;U&&void 0!==F&&(H=e.disableEqualOverflow);let G={},z={},$={};Object.entries(B).forEach(([e,t])=>{void 0!==y.breakpoints.values[e]?G[e]=t:void 0!==y.breakpoints.values[e.replace("Offset","")]?z[e.replace("Offset","")]=t:$[e]=t});let j=null!=(s=e.columns)?s:U?void 0:C,V=null!=(l=e.spacing)?l:U?void 0:x,W=null!=(u=null!=(h=e.rowSpacing)?h:e.spacing)?u:U?void 0:P,K=null!=(b=null!=(E=e.columnSpacing)?E:e.spacing)?b:U?void 0:M,Z=(0,r.Z)({},_,{level:U,columns:j,container:R,direction:O,wrap:w,spacing:V,rowSpacing:W,columnSpacing:K,gridSize:G,gridOffset:z,disableEqualOverflow:null!=(T=null!=(S=H)?S:k)&&T,parentDisableEqualOverflow:k}),Y=p(Z,y),q=(0,L.jsx)(f,(0,r.Z)({ref:t,as:I,ownerState:Z,className:(0,o.Z)(Y.root,v)},$,{children:i.Children.map(N,e=>{if(i.isValidElement(e)&&(0,c.Z)(e,["Grid"])){var t;return i.cloneElement(e,{unstable_level:null!=(t=e.props.unstable_level)?t:U+1})}return e})}));return void 0!==H&&H!==(null!=k&&k)&&(q=(0,L.jsx)(d.Provider,{value:H,children:q})),q});return h.muiName="Grid",h}({createStyledComponent:(0,U.Z)("div",{name:"JoyGrid",slot:"Root",overridesResolver:(e,t)=>t.root}),useThemeProps:e=>(0,B.Z)({props:e,name:"JoyGrid"})});var G=H},14553:function(e,t,n){"use strict";n.d(t,{ZP:function(){return _}});var r=n(63366),a=n(87462),i=n(67294),o=n(14142),s=n(33703),l=n(70758),c=n(94780),u=n(74312),d=n(20407),p=n(78653),m=n(30220),g=n(26821);function f(e){return(0,g.d6)("MuiIconButton",e)}(0,g.sI)("MuiIconButton",["root","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","variantPlain","variantOutlined","variantSoft","variantSolid","focusVisible","disabled","sizeSm","sizeMd","sizeLg"]);var h=n(89996),b=n(85893);let E=["children","action","component","color","disabled","variant","size","slots","slotProps"],T=e=>{let{color:t,disabled:n,focusVisible:r,focusVisibleClassName:a,size:i,variant:s}=e,l={root:["root",n&&"disabled",r&&"focusVisible",s&&`variant${(0,o.Z)(s)}`,t&&`color${(0,o.Z)(t)}`,i&&`size${(0,o.Z)(i)}`]},u=(0,c.Z)(l,f,{});return r&&a&&(u.root+=` ${a}`),u},S=(0,u.Z)("button")(({theme:e,ownerState:t})=>{var n,r,i,o;return[(0,a.Z)({"--Icon-margin":"initial","--Icon-color":"neutral"!==t.color||"solid"===t.variant?"currentColor":e.vars.palette.text.icon},t.instanceSize&&{"--IconButton-size":({sm:"2rem",md:"2.5rem",lg:"3rem"})[t.instanceSize]},"sm"===t.size&&{"--Icon-fontSize":"calc(var(--IconButton-size, 2rem) / 1.6)","--CircularProgress-size":"20px","--CircularProgress-thickness":"2px",minWidth:"var(--IconButton-size, 2rem)",minHeight:"var(--IconButton-size, 2rem)",fontSize:e.vars.fontSize.sm,paddingInline:"2px"},"md"===t.size&&{"--Icon-fontSize":"calc(var(--IconButton-size, 2.5rem) / 1.667)","--CircularProgress-size":"24px","--CircularProgress-thickness":"3px",minWidth:"var(--IconButton-size, 2.5rem)",minHeight:"var(--IconButton-size, 2.5rem)",fontSize:e.vars.fontSize.md,paddingInline:"0.25rem"},"lg"===t.size&&{"--Icon-fontSize":"calc(var(--IconButton-size, 3rem) / 1.714)","--CircularProgress-size":"28px","--CircularProgress-thickness":"4px",minWidth:"var(--IconButton-size, 3rem)",minHeight:"var(--IconButton-size, 3rem)",fontSize:e.vars.fontSize.lg,paddingInline:"0.375rem"},{WebkitTapHighlightColor:"transparent",paddingBlock:0,fontFamily:e.vars.fontFamily.body,fontWeight:e.vars.fontWeight.md,margin:"var(--IconButton-margin)",borderRadius:`var(--IconButton-radius, ${e.vars.radius.sm})`,border:"none",boxSizing:"border-box",backgroundColor:"transparent",cursor:"pointer",display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",[e.focus.selector]:(0,a.Z)({"--Icon-color":"currentColor"},e.focus.default)}),(0,a.Z)({},null==(n=e.variants[t.variant])?void 0:n[t.color],{"&:hover":{"@media (hover: hover)":(0,a.Z)({"--Icon-color":"currentColor"},null==(r=e.variants[`${t.variant}Hover`])?void 0:r[t.color])},'&:active, &[aria-pressed="true"]':(0,a.Z)({"--Icon-color":"currentColor"},null==(i=e.variants[`${t.variant}Active`])?void 0:i[t.color]),"&:disabled":null==(o=e.variants[`${t.variant}Disabled`])?void 0:o[t.color]})]}),y=(0,u.Z)(S,{name:"JoyIconButton",slot:"Root",overridesResolver:(e,t)=>t.root})({}),A=i.forwardRef(function(e,t){var n;let o=(0,d.Z)({props:e,name:"JoyIconButton"}),{children:c,action:u,component:g="button",color:f="neutral",disabled:S,variant:A="plain",size:_="md",slots:k={},slotProps:v={}}=o,N=(0,r.Z)(o,E),C=i.useContext(h.Z),R=e.variant||C.variant||A,I=e.size||C.size||_,{getColor:O}=(0,p.VT)(R),w=O(e.color,C.color||f),x=null!=(n=e.disabled)?n:C.disabled||S,L=i.useRef(null),D=(0,s.Z)(L,t),{focusVisible:P,setFocusVisible:M,getRootProps:F}=(0,l.U)((0,a.Z)({},o,{disabled:x,rootRef:D}));i.useImperativeHandle(u,()=>({focusVisible:()=>{var e;M(!0),null==(e=L.current)||e.focus()}}),[M]);let U=(0,a.Z)({},o,{component:g,color:w,disabled:x,variant:R,size:I,focusVisible:P,instanceSize:e.size}),B=T(U),H=(0,a.Z)({},N,{component:g,slots:k,slotProps:v}),[G,z]=(0,m.Z)("root",{ref:t,className:B.root,elementType:y,getSlotProps:F,externalForwardedProps:H,ownerState:U});return(0,b.jsx)(G,(0,a.Z)({},z,{children:c}))});A.muiName="IconButton";var _=A},25359:function(e,t,n){"use strict";n.d(t,{Z:function(){return U}});var r=n(63366),a=n(87462),i=n(67294),o=n(14142),s=n(94780),l=n(33703),c=n(92996),u=n(73546),d=n(22644),p=n(7333);function m(e,t){if(t.type===d.F.itemHover)return e;let n=(0,p.R$)(e,t);if(null===n.highlightedValue&&t.context.items.length>0)return(0,a.Z)({},n,{highlightedValue:t.context.items[0]});if(t.type===d.F.keyDown&&"Escape"===t.event.key)return(0,a.Z)({},n,{open:!1});if(t.type===d.F.blur){var r,i,o;if(!(null!=(r=t.context.listboxRef.current)&&r.contains(t.event.relatedTarget))){let e=null==(i=t.context.listboxRef.current)?void 0:i.getAttribute("id"),r=null==(o=t.event.relatedTarget)?void 0:o.getAttribute("aria-controls");return e&&r&&e===r?n:(0,a.Z)({},n,{open:!1,highlightedValue:t.context.items[0]})}}return n}var g=n(85241),f=n(96592),h=n(51633),b=n(12247),E=n(2900);let T={dispatch:()=>{},popupId:"",registerPopup:()=>{},registerTrigger:()=>{},state:{open:!0},triggerElement:null};var S=n(26558),y=n(85893);function A(e){let{value:t,children:n}=e,{dispatch:r,getItemIndex:a,getItemState:o,registerHighlightChangeHandler:s,registerSelectionChangeHandler:l,registerItem:c,totalSubitemCount:u}=t,d=i.useMemo(()=>({dispatch:r,getItemState:o,getItemIndex:a,registerHighlightChangeHandler:s,registerSelectionChangeHandler:l}),[r,a,o,s,l]),p=i.useMemo(()=>({getItemIndex:a,registerItem:c,totalSubitemCount:u}),[c,a,u]);return(0,y.jsx)(b.s.Provider,{value:p,children:(0,y.jsx)(S.Z.Provider,{value:d,children:n})})}var _=n(53406),k=n(7293),v=n(50984),N=n(3419),C=n(43614),R=n(74312),I=n(20407),O=n(55907),w=n(78653),x=n(26821);function L(e){return(0,x.d6)("MuiMenu",e)}(0,x.sI)("MuiMenu",["root","listbox","expanded","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","variantPlain","variantOutlined","variantSoft","variantSolid","sizeSm","sizeMd","sizeLg"]);let D=["actions","children","color","component","disablePortal","keepMounted","id","invertedColors","onItemsChange","modifiers","variant","size","slots","slotProps"],P=e=>{let{open:t,variant:n,color:r,size:a}=e,i={root:["root",t&&"expanded",n&&`variant${(0,o.Z)(n)}`,r&&`color${(0,o.Z)(r)}`,a&&`size${(0,o.Z)(a)}`],listbox:["listbox"]};return(0,s.Z)(i,L,{})},M=(0,R.Z)(v.C,{name:"JoyMenu",slot:"Root",overridesResolver:(e,t)=>t.root})(({theme:e,ownerState:t})=>{var n,r;let i=null==(n=e.variants[t.variant])?void 0:n[t.color];return[(0,a.Z)({"--focus-outline-offset":`calc(${e.vars.focus.thickness} * -1)`,"--ListItem-stickyBackground":(null==i?void 0:i.backgroundColor)||(null==i?void 0:i.background)||e.vars.palette.background.popup,"--ListItem-stickyTop":"calc(var(--List-padding, var(--ListDivider-gap)) * -1)"},N.M,{borderRadius:`var(--List-radius, ${e.vars.radius.sm})`,boxShadow:e.shadow.md,overflow:"auto",zIndex:`var(--unstable_popup-zIndex, ${e.vars.zIndex.popup})`},!(null!=i&&i.backgroundColor)&&{backgroundColor:e.vars.palette.background.popup}),"context"!==t.color&&t.invertedColors&&(null==(r=e.colorInversion[t.variant])?void 0:r[t.color])]}),F=i.forwardRef(function(e,t){var n;let o=(0,I.Z)({props:e,name:"JoyMenu"}),{actions:s,children:p,color:S="neutral",component:v,disablePortal:R=!1,keepMounted:x=!1,id:L,invertedColors:F=!1,onItemsChange:U,modifiers:B,variant:H="outlined",size:G="md",slots:z={},slotProps:$={}}=o,j=(0,r.Z)(o,D),{getColor:V}=(0,w.VT)(H),W=R?V(e.color,S):S,{contextValue:K,getListboxProps:Z,dispatch:Y,open:q,triggerElement:X}=function(e={}){var t,n;let{listboxRef:r,onItemsChange:o,id:s}=e,d=i.useRef(null),p=(0,l.Z)(d,r),S=null!=(t=(0,c.Z)(s))?t:"",{state:{open:y},dispatch:A,triggerElement:_,registerPopup:k}=null!=(n=i.useContext(g.D))?n:T,v=i.useRef(y),{subitems:N,contextValue:C}=(0,b.Y)(),R=i.useMemo(()=>Array.from(N.keys()),[N]),I=i.useCallback(e=>{var t,n;return null==e?null:null!=(t=null==(n=N.get(e))?void 0:n.ref.current)?t:null},[N]),{dispatch:O,getRootProps:w,contextValue:x,state:{highlightedValue:L},rootRef:D}=(0,f.s)({disabledItemsFocusable:!0,focusManagement:"DOM",getItemDomElement:I,getInitialState:()=>({selectedValues:[],highlightedValue:null}),isItemDisabled:e=>{var t;return(null==N||null==(t=N.get(e))?void 0:t.disabled)||!1},items:R,getItemAsString:e=>{var t,n;return(null==(t=N.get(e))?void 0:t.label)||(null==(n=N.get(e))||null==(n=n.ref.current)?void 0:n.innerText)},rootRef:p,onItemsChange:o,reducerActionContext:{listboxRef:d},selectionMode:"none",stateReducer:m});(0,u.Z)(()=>{k(S)},[S,k]),i.useEffect(()=>{if(y&&L===R[0]&&!v.current){var e;null==(e=N.get(R[0]))||null==(e=e.ref)||null==(e=e.current)||e.focus()}},[y,L,N,R]),i.useEffect(()=>{var e,t;null!=(e=d.current)&&e.contains(document.activeElement)&&null!==L&&(null==N||null==(t=N.get(L))||null==(t=t.ref.current)||t.focus())},[L,N]);let P=e=>t=>{var n,r;null==(n=e.onBlur)||n.call(e,t),t.defaultMuiPrevented||null!=(r=d.current)&&r.contains(t.relatedTarget)||t.relatedTarget===_||A({type:h.Q.blur,event:t})},M=e=>t=>{var n;null==(n=e.onKeyDown)||n.call(e,t),t.defaultMuiPrevented||"Escape"!==t.key||A({type:h.Q.escapeKeyDown,event:t})},F=(e={})=>({onBlur:P(e),onKeyDown:M(e)});return i.useDebugValue({subitems:N,highlightedValue:L}),{contextValue:(0,a.Z)({},C,x),dispatch:O,getListboxProps:(e={})=>{let t=(0,E.f)(F,w);return(0,a.Z)({},t(e),{id:S,role:"menu"})},highlightedValue:L,listboxRef:D,menuItems:N,open:y,triggerElement:_}}({onItemsChange:U,id:L,listboxRef:t});i.useImperativeHandle(s,()=>({dispatch:Y,resetHighlight:()=>Y({type:d.F.resetHighlight,event:null})}),[Y]);let Q=(0,a.Z)({},o,{disablePortal:R,invertedColors:F,color:W,variant:H,size:G,open:q,nesting:!1,row:!1}),J=P(Q),ee=(0,a.Z)({},j,{component:v,slots:z,slotProps:$}),et=i.useMemo(()=>[{name:"offset",options:{offset:[0,4]}},...B||[]],[B]),en=(0,k.y)({elementType:M,getSlotProps:Z,externalForwardedProps:ee,externalSlotProps:{},ownerState:Q,additionalProps:{anchorEl:X,open:q&&null!==X,disablePortal:R,keepMounted:x,modifiers:et},className:J.root}),er=(0,y.jsx)(A,{value:K,children:(0,y.jsx)(O.Yb,{variant:F?void 0:H,color:S,children:(0,y.jsx)(C.Z.Provider,{value:"menu",children:(0,y.jsx)(N.Z,{nested:!0,children:p})})})});return F&&(er=(0,y.jsx)(w.do,{variant:H,children:er})),er=(0,y.jsx)(M,(0,a.Z)({},en,!(null!=(n=o.slots)&&n.root)&&{as:_.r,slots:{root:v||"ul"}},{children:er})),R?er:(0,y.jsx)(w.ZP.Provider,{value:void 0,children:er})});var U=F},59562:function(e,t,n){"use strict";n.d(t,{Z:function(){return O}});var r=n(63366),a=n(87462),i=n(67294),o=n(33703),s=n(85241),l=n(51633),c=n(70758),u=n(2900),d=n(94780),p=n(14142),m=n(26821);function g(e){return(0,m.d6)("MuiMenuButton",e)}(0,m.sI)("MuiMenuButton",["root","colorPrimary","colorNeutral","colorDanger","colorInfo","colorSuccess","colorWarning","colorContext","variantPlain","variantOutlined","variantSoft","variantSolid","disabled","sizeSm","sizeMd","sizeLg","fullWidth","startDecorator","endDecorator","loading","loadingIndicatorCenter"]);var f=n(20407),h=n(30220),b=n(48699),E=n(66478),T=n(74312),S=n(78653),y=n(89996),A=n(85893);let _=["children","color","component","disabled","endDecorator","loading","loadingPosition","loadingIndicator","size","slotProps","slots","startDecorator","variant"],k=e=>{let{color:t,disabled:n,fullWidth:r,size:a,variant:i,loading:o}=e,s={root:["root",n&&"disabled",r&&"fullWidth",i&&`variant${(0,p.Z)(i)}`,t&&`color${(0,p.Z)(t)}`,a&&`size${(0,p.Z)(a)}`,o&&"loading"],startDecorator:["startDecorator"],endDecorator:["endDecorator"],loadingIndicatorCenter:["loadingIndicatorCenter"]};return(0,d.Z)(s,g,{})},v=(0,T.Z)("button",{name:"JoyMenuButton",slot:"Root",overridesResolver:(e,t)=>t.root})(E.f),N=(0,T.Z)("span",{name:"JoyMenuButton",slot:"StartDecorator",overridesResolver:(e,t)=>t.startDecorator})({"--Icon-margin":"0 0 0 calc(var(--Button-gap) / -2)","--CircularProgress-margin":"0 0 0 calc(var(--Button-gap) / -2)",display:"inherit",marginRight:"var(--Button-gap)"}),C=(0,T.Z)("span",{name:"JoyMenuButton",slot:"EndDecorator",overridesResolver:(e,t)=>t.endDecorator})({"--Icon-margin":"0 calc(var(--Button-gap) / -2) 0 0","--CircularProgress-margin":"0 calc(var(--Button-gap) / -2) 0 0",display:"inherit",marginLeft:"var(--Button-gap)"}),R=(0,T.Z)("span",{name:"JoyMenuButton",slot:"LoadingCenter",overridesResolver:(e,t)=>t.loadingIndicatorCenter})(({theme:e,ownerState:t})=>{var n,r;return(0,a.Z)({display:"inherit",position:"absolute",left:"50%",transform:"translateX(-50%)",color:null==(n=e.variants[t.variant])||null==(n=n[t.color])?void 0:n.color},t.disabled&&{color:null==(r=e.variants[`${t.variant}Disabled`])||null==(r=r[t.color])?void 0:r.color})}),I=i.forwardRef(function(e,t){var n;let d=(0,f.Z)({props:e,name:"JoyMenuButton"}),{children:p,color:m="neutral",component:g,disabled:E=!1,endDecorator:T,loading:I=!1,loadingPosition:O="center",loadingIndicator:w,size:x="md",slotProps:L={},slots:D={},startDecorator:P,variant:M="outlined"}=d,F=(0,r.Z)(d,_),U=i.useContext(y.Z),B=e.variant||U.variant||M,H=e.size||U.size||x,{getColor:G}=(0,S.VT)(B),z=G(e.color,U.color||m),$=null!=(n=e.disabled)?n:U.disabled||E||I,{getRootProps:j,open:V,active:W}=function(e={}){let{disabled:t=!1,focusableWhenDisabled:n,rootRef:r}=e,d=i.useContext(s.D);if(null===d)throw Error("useMenuButton: no menu context available.");let{state:p,dispatch:m,registerTrigger:g,popupId:f}=d,{getRootProps:h,rootRef:b,active:E}=(0,c.U)({disabled:t,focusableWhenDisabled:n,rootRef:r}),T=(0,o.Z)(b,g),S=e=>t=>{var n;null==(n=e.onClick)||n.call(e,t),t.defaultMuiPrevented||m({type:l.Q.toggle,event:t})},y=e=>t=>{var n;null==(n=e.onKeyDown)||n.call(e,t),t.defaultMuiPrevented||"ArrowDown"!==t.key&&"ArrowUp"!==t.key||(t.preventDefault(),m({type:l.Q.open,event:t}))},A=(e={})=>({onClick:S(e),onKeyDown:y(e)});return{active:E,getRootProps:(e={})=>{let t=(0,u.f)(h,A);return(0,a.Z)({},t(e),{"aria-haspopup":"menu","aria-expanded":p.open,"aria-controls":f,ref:T})},open:p.open,rootRef:T}}({rootRef:t,disabled:$}),K=null!=w?w:(0,A.jsx)(b.Z,(0,a.Z)({},"context"!==z&&{color:z},{thickness:{sm:2,md:3,lg:4}[H]||3})),Z=(0,a.Z)({},d,{active:W,color:z,disabled:$,open:V,size:H,variant:B}),Y=k(Z),q=(0,a.Z)({},F,{component:g,slots:D,slotProps:L}),[X,Q]=(0,h.Z)("root",{elementType:v,getSlotProps:j,externalForwardedProps:q,ref:t,ownerState:Z,className:Y.root}),[J,ee]=(0,h.Z)("startDecorator",{className:Y.startDecorator,elementType:N,externalForwardedProps:q,ownerState:Z}),[et,en]=(0,h.Z)("endDecorator",{className:Y.endDecorator,elementType:C,externalForwardedProps:q,ownerState:Z}),[er,ea]=(0,h.Z)("loadingIndicatorCenter",{className:Y.loadingIndicatorCenter,elementType:R,externalForwardedProps:q,ownerState:Z});return(0,A.jsxs)(X,(0,a.Z)({},Q,{children:[(P||I&&"start"===O)&&(0,A.jsx)(J,(0,a.Z)({},ee,{children:I&&"start"===O?K:P})),p,I&&"center"===O&&(0,A.jsx)(er,(0,a.Z)({},ea,{children:K})),(T||I&&"end"===O)&&(0,A.jsx)(et,(0,a.Z)({},en,{children:I&&"end"===O?K:T}))]}))});var O=I},7203:function(e,t,n){"use strict";n.d(t,{Z:function(){return L}});var r=n(87462),a=n(63366),i=n(67294),o=n(14142),s=n(94780),l=n(92996),c=n(33703),u=n(70758),d=n(43069),p=n(51633),m=n(85241),g=n(2900),f=n(14072);function h(e){return`menu-item-${e.size}`}let b={dispatch:()=>{},popupId:"",registerPopup:()=>{},registerTrigger:()=>{},state:{open:!0},triggerElement:null};var E=n(39984),T=n(74312),S=n(20407),y=n(78653),A=n(55907),_=n(26821);function k(e){return(0,_.d6)("MuiMenuItem",e)}(0,_.sI)("MuiMenuItem",["root","focusVisible","disabled","selected","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","variantPlain","variantSoft","variantOutlined","variantSolid"]);var v=n(40780);let N=i.createContext("horizontal");var C=n(30220),R=n(85893);let I=["children","disabled","component","selected","color","orientation","variant","slots","slotProps"],O=e=>{let{focusVisible:t,disabled:n,selected:r,color:a,variant:i}=e,l={root:["root",t&&"focusVisible",n&&"disabled",r&&"selected",a&&`color${(0,o.Z)(a)}`,i&&`variant${(0,o.Z)(i)}`]},c=(0,s.Z)(l,k,{});return c},w=(0,T.Z)(E.r,{name:"JoyMenuItem",slot:"Root",overridesResolver:(e,t)=>t.root})({}),x=i.forwardRef(function(e,t){let n=(0,S.Z)({props:e,name:"JoyMenuItem"}),o=i.useContext(v.Z),{children:s,disabled:E=!1,component:T="li",selected:_=!1,color:k="neutral",orientation:x="horizontal",variant:L="plain",slots:D={},slotProps:P={}}=n,M=(0,a.Z)(n,I),{variant:F=L,color:U=k}=(0,A.yP)(e.variant,e.color),{getColor:B}=(0,y.VT)(F),H=B(e.color,U),{getRootProps:G,disabled:z,focusVisible:$}=function(e){var t;let{disabled:n=!1,id:a,rootRef:o,label:s}=e,E=(0,l.Z)(a),T=i.useRef(null),S=i.useMemo(()=>({disabled:n,id:null!=E?E:"",label:s,ref:T}),[n,E,s]),{dispatch:y}=null!=(t=i.useContext(m.D))?t:b,{getRootProps:A,highlighted:_,rootRef:k}=(0,d.J)({item:E}),{index:v,totalItemCount:N}=(0,f.B)(null!=E?E:h,S),{getRootProps:C,focusVisible:R,rootRef:I}=(0,u.U)({disabled:n,focusableWhenDisabled:!0}),O=(0,c.Z)(k,I,o,T);i.useDebugValue({id:E,highlighted:_,disabled:n,label:s});let w=e=>t=>{var n;null==(n=e.onClick)||n.call(e,t),t.defaultMuiPrevented||y({type:p.Q.close,event:t})},x=(e={})=>(0,r.Z)({},e,{onClick:w(e)});function L(e={}){let t=(0,g.f)(x,(0,g.f)(C,A));return(0,r.Z)({},t(e),{ref:O,role:"menuitem"})}return void 0===E?{getRootProps:L,disabled:!1,focusVisible:R,highlighted:!1,index:-1,totalItemCount:0,rootRef:O}:{getRootProps:L,disabled:n,focusVisible:R,highlighted:_,index:v,totalItemCount:N,rootRef:O}}({disabled:E,rootRef:t}),j=(0,r.Z)({},n,{component:T,color:H,disabled:z,focusVisible:$,orientation:x,selected:_,row:o,variant:F}),V=O(j),W=(0,r.Z)({},M,{component:T,slots:D,slotProps:P}),[K,Z]=(0,C.Z)("root",{ref:t,elementType:w,getSlotProps:G,externalForwardedProps:W,className:V.root,ownerState:j});return(0,R.jsx)(N.Provider,{value:x,children:(0,R.jsx)(K,(0,r.Z)({},Z,{children:s}))})});var L=x},3414:function(e,t,n){"use strict";n.d(t,{Z:function(){return A}});var r=n(63366),a=n(87462),i=n(67294),o=n(90512),s=n(94780),l=n(14142),c=n(54844),u=n(20407),d=n(74312),p=n(58859),m=n(26821);function g(e){return(0,m.d6)("MuiSheet",e)}(0,m.sI)("MuiSheet",["root","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","variantPlain","variantOutlined","variantSoft","variantSolid"]);var f=n(78653),h=n(30220),b=n(85893);let E=["className","color","component","variant","invertedColors","slots","slotProps"],T=e=>{let{variant:t,color:n}=e,r={root:["root",t&&`variant${(0,l.Z)(t)}`,n&&`color${(0,l.Z)(n)}`]};return(0,s.Z)(r,g,{})},S=(0,d.Z)("div",{name:"JoySheet",slot:"Root",overridesResolver:(e,t)=>t.root})(({theme:e,ownerState:t})=>{var n,r;let i=null==(n=e.variants[t.variant])?void 0:n[t.color],{borderRadius:o,bgcolor:s,backgroundColor:l,background:u}=(0,p.V)({theme:e,ownerState:t},["borderRadius","bgcolor","backgroundColor","background"]),d=(0,c.DW)(e,`palette.${s}`)||s||(0,c.DW)(e,`palette.${l}`)||l||u||(null==i?void 0:i.backgroundColor)||(null==i?void 0:i.background)||e.vars.palette.background.surface;return[(0,a.Z)({"--Icon-color":"neutral"!==t.color||"solid"===t.variant?"currentColor":e.vars.palette.text.icon,"--ListItem-stickyBackground":"transparent"===d?"initial":d,"--Sheet-background":"transparent"===d?"initial":d},void 0!==o&&{"--List-radius":`calc(${o} - var(--variant-borderWidth, 0px))`,"--unstable_actionRadius":`calc(${o} - var(--variant-borderWidth, 0px))`},{backgroundColor:e.vars.palette.background.surface,position:"relative"}),(0,a.Z)({},e.typography["body-md"],i),"context"!==t.color&&t.invertedColors&&(null==(r=e.colorInversion[t.variant])?void 0:r[t.color])]}),y=i.forwardRef(function(e,t){let n=(0,u.Z)({props:e,name:"JoySheet"}),{className:i,color:s="neutral",component:l="div",variant:c="plain",invertedColors:d=!1,slots:p={},slotProps:m={}}=n,g=(0,r.Z)(n,E),{getColor:y}=(0,f.VT)(c),A=y(e.color,s),_=(0,a.Z)({},n,{color:A,component:l,invertedColors:d,variant:c}),k=T(_),v=(0,a.Z)({},g,{component:l,slots:p,slotProps:m}),[N,C]=(0,h.Z)("root",{ref:t,className:(0,o.Z)(k.root,i),elementType:S,externalForwardedProps:v,ownerState:_}),R=(0,b.jsx)(N,(0,a.Z)({},C));return d?(0,b.jsx)(f.do,{variant:c,children:R}):R});var A=y},63955:function(e,t,n){"use strict";let r;n.d(t,{Z:function(){return q}});var a=n(63366),i=n(87462),o=n(67294),s=n(90512),l=n(14142),c=n(94780),u=n(82690),d=n(19032),p=n(99962),m=n(33703),g=n(73546),f=n(59948),h={border:0,clip:"rect(0 0 0 0)",height:"1px",margin:-1,overflow:"hidden",padding:0,position:"absolute",whiteSpace:"nowrap",width:"1px"},b=n(6414);function E(e,t){return e-t}function T(e,t,n){return null==e?t:Math.min(Math.max(t,e),n)}function S(e,t){var n;let{index:r}=null!=(n=e.reduce((e,n,r)=>{let a=Math.abs(t-n);return null===e||a({left:`${e}%`}),leap:e=>({width:`${e}%`})},"horizontal-reverse":{offset:e=>({right:`${e}%`}),leap:e=>({width:`${e}%`})},vertical:{offset:e=>({bottom:`${e}%`}),leap:e=>({height:`${e}%`})}},N=e=>e;function C(){return void 0===r&&(r="undefined"==typeof CSS||"function"!=typeof CSS.supports||CSS.supports("touch-action","none")),r}var R=n(28442),I=n(74312),O=n(20407),w=n(78653),x=n(30220),L=n(26821);function D(e){return(0,L.d6)("MuiSlider",e)}let P=(0,L.sI)("MuiSlider",["root","disabled","dragging","focusVisible","marked","vertical","trackInverted","trackFalse","rail","track","mark","markActive","markLabel","thumb","thumbStart","thumbEnd","valueLabel","valueLabelOpen","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","variantPlain","variantOutlined","variantSoft","variantSolid","disabled","sizeSm","sizeMd","sizeLg","input"]);var M=n(85893);let F=["aria-label","aria-valuetext","className","classes","disableSwap","disabled","defaultValue","getAriaLabel","getAriaValueText","marks","max","min","name","onChange","onChangeCommitted","onMouseDown","orientation","scale","step","tabIndex","track","value","valueLabelDisplay","valueLabelFormat","isRtl","color","size","variant","component","slots","slotProps"];function U(e){return e}let B=e=>{let{disabled:t,dragging:n,marked:r,orientation:a,track:i,variant:o,color:s,size:u}=e,d={root:["root",t&&"disabled",n&&"dragging",r&&"marked","vertical"===a&&"vertical","inverted"===i&&"trackInverted",!1===i&&"trackFalse",o&&`variant${(0,l.Z)(o)}`,s&&`color${(0,l.Z)(s)}`,u&&`size${(0,l.Z)(u)}`],rail:["rail"],track:["track"],thumb:["thumb",t&&"disabled"],input:["input"],mark:["mark"],markActive:["markActive"],markLabel:["markLabel"],markLabelActive:["markLabelActive"],valueLabel:["valueLabel"],valueLabelOpen:["valueLabelOpen"],active:["active"],focusVisible:["focusVisible"]};return(0,c.Z)(d,D,{})},H=({theme:e,ownerState:t})=>(n={})=>{var r,a;let o=(null==(r=e.variants[`${t.variant}${n.state||""}`])?void 0:r[t.color])||{};return(0,i.Z)({},!n.state&&{"--variant-borderWidth":null!=(a=o["--variant-borderWidth"])?a:"0px"},{"--Slider-trackColor":o.color,"--Slider-thumbBackground":o.color,"--Slider-thumbColor":o.backgroundColor||e.vars.palette.background.surface,"--Slider-trackBackground":o.backgroundColor||e.vars.palette.background.surface,"--Slider-trackBorderColor":o.borderColor,"--Slider-railBackground":e.vars.palette.background.level2})},G=(0,I.Z)("span",{name:"JoySlider",slot:"Root",overridesResolver:(e,t)=>t.root})(({theme:e,ownerState:t})=>{let n=H({theme:e,ownerState:t});return[(0,i.Z)({"--Slider-size":"max(42px, max(var(--Slider-thumbSize), var(--Slider-trackSize)))","--Slider-trackRadius":"var(--Slider-size)","--Slider-markBackground":e.vars.palette.text.tertiary,[`& .${P.markActive}`]:{"--Slider-markBackground":"var(--Slider-trackColor)"}},"sm"===t.size&&{"--Slider-markSize":"2px","--Slider-trackSize":"4px","--Slider-thumbSize":"14px","--Slider-valueLabelArrowSize":"6px"},"md"===t.size&&{"--Slider-markSize":"2px","--Slider-trackSize":"6px","--Slider-thumbSize":"18px","--Slider-valueLabelArrowSize":"8px"},"lg"===t.size&&{"--Slider-markSize":"3px","--Slider-trackSize":"8px","--Slider-thumbSize":"24px","--Slider-valueLabelArrowSize":"10px"},{"--Slider-thumbRadius":"calc(var(--Slider-thumbSize) / 2)","--Slider-thumbWidth":"var(--Slider-thumbSize)"},n(),{"&:hover":(0,i.Z)({},n({state:"Hover"})),"&:active":(0,i.Z)({},n({state:"Active"})),[`&.${P.disabled}`]:(0,i.Z)({pointerEvents:"none",color:e.vars.palette.text.tertiary},n({state:"Disabled"})),boxSizing:"border-box",display:"inline-block",position:"relative",cursor:"pointer",touchAction:"none",WebkitTapHighlightColor:"transparent"},"horizontal"===t.orientation&&{padding:"calc(var(--Slider-size) / 2) 0",width:"100%"},"vertical"===t.orientation&&{padding:"0 calc(var(--Slider-size) / 2)",height:"100%"},{"@media print":{colorAdjust:"exact"}})]}),z=(0,I.Z)("span",{name:"JoySlider",slot:"Rail",overridesResolver:(e,t)=>t.rail})(({ownerState:e})=>[(0,i.Z)({display:"block",position:"absolute",backgroundColor:"inverted"===e.track?"var(--Slider-trackBackground)":"var(--Slider-railBackground)",border:"inverted"===e.track?"var(--variant-borderWidth, 0px) solid var(--Slider-trackBorderColor)":"initial",borderRadius:"var(--Slider-trackRadius)"},"horizontal"===e.orientation&&{height:"var(--Slider-trackSize)",top:"50%",left:0,right:0,transform:"translateY(-50%)"},"vertical"===e.orientation&&{width:"var(--Slider-trackSize)",top:0,bottom:0,left:"50%",transform:"translateX(-50%)"},"inverted"===e.track&&{opacity:1})]),$=(0,I.Z)("span",{name:"JoySlider",slot:"Track",overridesResolver:(e,t)=>t.track})(({ownerState:e})=>[(0,i.Z)({display:"block",position:"absolute",color:"var(--Slider-trackColor)",border:"inverted"===e.track?"initial":"var(--variant-borderWidth, 0px) solid var(--Slider-trackBorderColor)",backgroundColor:"inverted"===e.track?"var(--Slider-railBackground)":"var(--Slider-trackBackground)"},"horizontal"===e.orientation&&{height:"var(--Slider-trackSize)",top:"50%",transform:"translateY(-50%)",borderRadius:"var(--Slider-trackRadius) 0 0 var(--Slider-trackRadius)"},"vertical"===e.orientation&&{width:"var(--Slider-trackSize)",left:"50%",transform:"translateX(-50%)",borderRadius:"0 0 var(--Slider-trackRadius) var(--Slider-trackRadius)"},!1===e.track&&{display:"none"})]),j=(0,I.Z)("span",{name:"JoySlider",slot:"Thumb",overridesResolver:(e,t)=>t.thumb})(({ownerState:e,theme:t})=>{var n;return(0,i.Z)({position:"absolute",boxSizing:"border-box",outline:0,display:"flex",alignItems:"center",justifyContent:"center",width:"var(--Slider-thumbWidth)",height:"var(--Slider-thumbSize)",border:"var(--variant-borderWidth, 0px) solid var(--Slider-trackBorderColor)",borderRadius:"var(--Slider-thumbRadius)",boxShadow:"var(--Slider-thumbShadow)",color:"var(--Slider-thumbColor)",backgroundColor:"var(--Slider-thumbBackground)",[t.focus.selector]:(0,i.Z)({},t.focus.default,{outlineOffset:0,outlineWidth:"max(4px, var(--Slider-thumbSize) / 3.6)"},"context"!==e.color&&{outlineColor:`rgba(${null==(n=t.vars.palette)||null==(n=n[e.color])?void 0:n.mainChannel} / 0.32)`})},"horizontal"===e.orientation&&{top:"50%",transform:"translate(-50%, -50%)"},"vertical"===e.orientation&&{left:"50%",transform:"translate(-50%, 50%)"},{"&::before":{boxSizing:"border-box",content:'""',display:"block",position:"absolute",background:"transparent",top:0,left:0,width:"100%",height:"100%",border:"2px solid",borderColor:"var(--Slider-thumbColor)",borderRadius:"inherit"}})}),V=(0,I.Z)("span",{name:"JoySlider",slot:"Mark",overridesResolver:(e,t)=>t.mark})(({ownerState:e})=>(0,i.Z)({position:"absolute",width:"var(--Slider-markSize)",height:"var(--Slider-markSize)",borderRadius:"var(--Slider-markSize)",backgroundColor:"var(--Slider-markBackground)"},"horizontal"===e.orientation&&(0,i.Z)({top:"50%",transform:"translate(calc(var(--Slider-markSize) / -2), -50%)"},0===e.percent&&{transform:"translate(min(var(--Slider-markSize), 3px), -50%)"},100===e.percent&&{transform:"translate(calc(var(--Slider-markSize) * -1 - min(var(--Slider-markSize), 3px)), -50%)"}),"vertical"===e.orientation&&(0,i.Z)({left:"50%",transform:"translate(-50%, calc(var(--Slider-markSize) / 2))"},0===e.percent&&{transform:"translate(-50%, calc(min(var(--Slider-markSize), 3px) * -1))"},100===e.percent&&{transform:"translate(-50%, calc(var(--Slider-markSize) * 1 + min(var(--Slider-markSize), 3px)))"}))),W=(0,I.Z)("span",{name:"JoySlider",slot:"ValueLabel",overridesResolver:(e,t)=>t.valueLabel})(({theme:e,ownerState:t})=>(0,i.Z)({},"sm"===t.size&&{fontSize:e.fontSize.xs,lineHeight:e.lineHeight.md,paddingInline:"0.25rem",minWidth:"20px"},"md"===t.size&&{fontSize:e.fontSize.sm,lineHeight:e.lineHeight.md,paddingInline:"0.375rem",minWidth:"24px"},"lg"===t.size&&{fontSize:e.fontSize.md,lineHeight:e.lineHeight.md,paddingInline:"0.5rem",minWidth:"28px"},{zIndex:1,display:"flex",alignItems:"center",justifyContent:"center",whiteSpace:"nowrap",fontFamily:e.vars.fontFamily.body,fontWeight:e.vars.fontWeight.md,bottom:0,transformOrigin:"bottom center",transform:"translateY(calc((var(--Slider-thumbSize) + var(--Slider-valueLabelArrowSize)) * -1)) scale(0)",position:"absolute",backgroundColor:e.vars.palette.background.tooltip,boxShadow:e.shadow.sm,borderRadius:e.vars.radius.xs,color:"#fff","&::before":{display:"var(--Slider-valueLabelArrowDisplay)",position:"absolute",content:'""',color:e.vars.palette.background.tooltip,bottom:0,border:"calc(var(--Slider-valueLabelArrowSize) / 2) solid",borderColor:"currentColor",borderRightColor:"transparent",borderBottomColor:"transparent",borderLeftColor:"transparent",left:"50%",transform:"translate(-50%, 100%)",backgroundColor:"transparent"},[`&.${P.valueLabelOpen}`]:{transform:"translateY(calc((var(--Slider-thumbSize) + var(--Slider-valueLabelArrowSize)) * -1)) scale(1)"}})),K=(0,I.Z)("span",{name:"JoySlider",slot:"MarkLabel",overridesResolver:(e,t)=>t.markLabel})(({theme:e,ownerState:t})=>(0,i.Z)({fontFamily:e.vars.fontFamily.body},"sm"===t.size&&{fontSize:e.vars.fontSize.xs},"md"===t.size&&{fontSize:e.vars.fontSize.sm},"lg"===t.size&&{fontSize:e.vars.fontSize.md},{color:e.palette.text.tertiary,position:"absolute",whiteSpace:"nowrap"},"horizontal"===t.orientation&&{top:"calc(50% + 4px + (max(var(--Slider-trackSize), var(--Slider-thumbSize)) / 2))",transform:"translateX(-50%)"},"vertical"===t.orientation&&{left:"calc(50% + 8px + (max(var(--Slider-trackSize), var(--Slider-thumbSize)) / 2))",transform:"translateY(50%)"})),Z=(0,I.Z)("input",{name:"JoySlider",slot:"Input",overridesResolver:(e,t)=>t.input})({}),Y=o.forwardRef(function(e,t){let n=(0,O.Z)({props:e,name:"JoySlider"}),{"aria-label":r,"aria-valuetext":l,className:c,classes:b,disableSwap:I=!1,disabled:L=!1,defaultValue:D,getAriaLabel:P,getAriaValueText:H,marks:Y=!1,max:q=100,min:X=0,orientation:Q="horizontal",scale:J=U,step:ee=1,track:et="normal",valueLabelDisplay:en="off",valueLabelFormat:er=U,isRtl:ea=!1,color:ei="primary",size:eo="md",variant:es="solid",component:el,slots:ec={},slotProps:eu={}}=n,ed=(0,a.Z)(n,F),{getColor:ep}=(0,w.VT)("solid"),em=ep(e.color,ei),eg=(0,i.Z)({},n,{marks:Y,classes:b,disabled:L,defaultValue:D,disableSwap:I,isRtl:ea,max:q,min:X,orientation:Q,scale:J,step:ee,track:et,valueLabelDisplay:en,valueLabelFormat:er,color:em,size:eo,variant:es}),{axisProps:ef,getRootProps:eh,getHiddenInputProps:eb,getThumbProps:eE,open:eT,active:eS,axis:ey,focusedThumbIndex:eA,range:e_,dragging:ek,marks:ev,values:eN,trackOffset:eC,trackLeap:eR,getThumbStyle:eI}=function(e){let{"aria-labelledby":t,defaultValue:n,disabled:r=!1,disableSwap:a=!1,isRtl:s=!1,marks:l=!1,max:c=100,min:b=0,name:R,onChange:I,onChangeCommitted:O,orientation:w="horizontal",rootRef:x,scale:L=N,step:D=1,tabIndex:P,value:M}=e,F=o.useRef(),[U,B]=o.useState(-1),[H,G]=o.useState(-1),[z,$]=o.useState(!1),j=o.useRef(0),[V,W]=(0,d.Z)({controlled:M,default:null!=n?n:b,name:"Slider"}),K=I&&((e,t,n)=>{let r=e.nativeEvent||e,a=new r.constructor(r.type,r);Object.defineProperty(a,"target",{writable:!0,value:{value:t,name:R}}),I(a,t,n)}),Z=Array.isArray(V),Y=Z?V.slice().sort(E):[V];Y=Y.map(e=>T(e,b,c));let q=!0===l&&null!==D?[...Array(Math.floor((c-b)/D)+1)].map((e,t)=>({value:b+D*t})):l||[],X=q.map(e=>e.value),{isFocusVisibleRef:Q,onBlur:J,onFocus:ee,ref:et}=(0,p.Z)(),[en,er]=o.useState(-1),ea=o.useRef(),ei=(0,m.Z)(et,ea),eo=(0,m.Z)(x,ei),es=e=>t=>{var n;let r=Number(t.currentTarget.getAttribute("data-index"));ee(t),!0===Q.current&&er(r),G(r),null==e||null==(n=e.onFocus)||n.call(e,t)},el=e=>t=>{var n;J(t),!1===Q.current&&er(-1),G(-1),null==e||null==(n=e.onBlur)||n.call(e,t)};(0,g.Z)(()=>{if(r&&ea.current.contains(document.activeElement)){var e;null==(e=document.activeElement)||e.blur()}},[r]),r&&-1!==U&&B(-1),r&&-1!==en&&er(-1);let ec=e=>t=>{var n;null==(n=e.onChange)||n.call(e,t);let r=Number(t.currentTarget.getAttribute("data-index")),i=Y[r],o=X.indexOf(i),s=t.target.valueAsNumber;if(q&&null==D){let e=X[X.length-1];s=s>e?e:s{let n,r;let{current:i}=ea,{width:o,height:s,bottom:l,left:u}=i.getBoundingClientRect();if(n=0===ed.indexOf("vertical")?(l-e.y)/s:(e.x-u)/o,-1!==ed.indexOf("-reverse")&&(n=1-n),r=(c-b)*n+b,D)r=function(e,t,n){let r=Math.round((e-n)/t)*t+n;return Number(r.toFixed(function(e){if(1>Math.abs(e)){let t=e.toExponential().split("e-"),n=t[0].split(".")[1];return(n?n.length:0)+parseInt(t[1],10)}let t=e.toString().split(".")[1];return t?t.length:0}(t)))}(r,D,b);else{let e=S(X,r);r=X[e]}r=T(r,b,c);let d=0;if(Z){d=t?eu.current:S(Y,r),a&&(r=T(r,Y[d-1]||-1/0,Y[d+1]||1/0));let e=r;r=A({values:Y,newValue:r,index:d}),a&&t||(d=r.indexOf(e),eu.current=d)}return{newValue:r,activeIndex:d}},em=(0,f.Z)(e=>{let t=y(e,F);if(!t)return;if(j.current+=1,"mousemove"===e.type&&0===e.buttons){eg(e);return}let{newValue:n,activeIndex:r}=ep({finger:t,move:!0});_({sliderRef:ea,activeIndex:r,setActive:B}),W(n),!z&&j.current>2&&$(!0),K&&!k(n,V)&&K(e,n,r)}),eg=(0,f.Z)(e=>{let t=y(e,F);if($(!1),!t)return;let{newValue:n}=ep({finger:t,move:!0});B(-1),"touchend"===e.type&&G(-1),O&&O(e,n),F.current=void 0,eh()}),ef=(0,f.Z)(e=>{if(r)return;C()||e.preventDefault();let t=e.changedTouches[0];null!=t&&(F.current=t.identifier);let n=y(e,F);if(!1!==n){let{newValue:t,activeIndex:r}=ep({finger:n});_({sliderRef:ea,activeIndex:r,setActive:B}),W(t),K&&!k(t,V)&&K(e,t,r)}j.current=0;let a=(0,u.Z)(ea.current);a.addEventListener("touchmove",em),a.addEventListener("touchend",eg)}),eh=o.useCallback(()=>{let e=(0,u.Z)(ea.current);e.removeEventListener("mousemove",em),e.removeEventListener("mouseup",eg),e.removeEventListener("touchmove",em),e.removeEventListener("touchend",eg)},[eg,em]);o.useEffect(()=>{let{current:e}=ea;return e.addEventListener("touchstart",ef,{passive:C()}),()=>{e.removeEventListener("touchstart",ef,{passive:C()}),eh()}},[eh,ef]),o.useEffect(()=>{r&&eh()},[r,eh]);let eb=e=>t=>{var n;if(null==(n=e.onMouseDown)||n.call(e,t),r||t.defaultPrevented||0!==t.button)return;t.preventDefault();let a=y(t,F);if(!1!==a){let{newValue:e,activeIndex:n}=ep({finger:a});_({sliderRef:ea,activeIndex:n,setActive:B}),W(e),K&&!k(e,V)&&K(t,e,n)}j.current=0;let i=(0,u.Z)(ea.current);i.addEventListener("mousemove",em),i.addEventListener("mouseup",eg)},eE=((Z?Y[0]:b)-b)*100/(c-b),eT=(Y[Y.length-1]-b)*100/(c-b)-eE,eS=e=>t=>{var n;null==(n=e.onMouseOver)||n.call(e,t);let r=Number(t.currentTarget.getAttribute("data-index"));G(r)},ey=e=>t=>{var n;null==(n=e.onMouseLeave)||n.call(e,t),G(-1)};return{active:U,axis:ed,axisProps:v,dragging:z,focusedThumbIndex:en,getHiddenInputProps:(n={})=>{var a;let o={onChange:ec(n||{}),onFocus:es(n||{}),onBlur:el(n||{})},l=(0,i.Z)({},n,o);return(0,i.Z)({tabIndex:P,"aria-labelledby":t,"aria-orientation":w,"aria-valuemax":L(c),"aria-valuemin":L(b),name:R,type:"range",min:e.min,max:e.max,step:null===e.step&&e.marks?"any":null!=(a=e.step)?a:void 0,disabled:r},l,{style:(0,i.Z)({},h,{direction:s?"rtl":"ltr",width:"100%",height:"100%"})})},getRootProps:(e={})=>{let t={onMouseDown:eb(e||{})},n=(0,i.Z)({},e,t);return(0,i.Z)({ref:eo},n)},getThumbProps:(e={})=>{let t={onMouseOver:eS(e||{}),onMouseLeave:ey(e||{})};return(0,i.Z)({},e,t)},marks:q,open:H,range:Z,rootRef:eo,trackLeap:eT,trackOffset:eE,values:Y,getThumbStyle:e=>({pointerEvents:-1!==U&&U!==e?"none":void 0})}}((0,i.Z)({},eg,{rootRef:t}));eg.marked=ev.length>0&&ev.some(e=>e.label),eg.dragging=ek;let eO=(0,i.Z)({},ef[ey].offset(eC),ef[ey].leap(eR)),ew=B(eg),ex=(0,i.Z)({},ed,{component:el,slots:ec,slotProps:eu}),[eL,eD]=(0,x.Z)("root",{ref:t,className:(0,s.Z)(ew.root,c),elementType:G,externalForwardedProps:ex,getSlotProps:eh,ownerState:eg}),[eP,eM]=(0,x.Z)("rail",{className:ew.rail,elementType:z,externalForwardedProps:ex,ownerState:eg}),[eF,eU]=(0,x.Z)("track",{additionalProps:{style:eO},className:ew.track,elementType:$,externalForwardedProps:ex,ownerState:eg}),[eB,eH]=(0,x.Z)("mark",{className:ew.mark,elementType:V,externalForwardedProps:ex,ownerState:eg}),[eG,ez]=(0,x.Z)("markLabel",{className:ew.markLabel,elementType:K,externalForwardedProps:ex,ownerState:eg,additionalProps:{"aria-hidden":!0}}),[e$,ej]=(0,x.Z)("thumb",{className:ew.thumb,elementType:j,externalForwardedProps:ex,getSlotProps:eE,ownerState:eg}),[eV,eW]=(0,x.Z)("input",{className:ew.input,elementType:Z,externalForwardedProps:ex,getSlotProps:eb,ownerState:eg}),[eK,eZ]=(0,x.Z)("valueLabel",{className:ew.valueLabel,elementType:W,externalForwardedProps:ex,ownerState:eg});return(0,M.jsxs)(eL,(0,i.Z)({},eD,{children:[(0,M.jsx)(eP,(0,i.Z)({},eM)),(0,M.jsx)(eF,(0,i.Z)({},eU)),ev.filter(e=>e.value>=X&&e.value<=q).map((e,t)=>{let n;let r=(e.value-X)*100/(q-X),a=ef[ey].offset(r);return n=!1===et?-1!==eN.indexOf(e.value):"normal"===et&&(e_?e.value>=eN[0]&&e.value<=eN[eN.length-1]:e.value<=eN[0])||"inverted"===et&&(e_?e.value<=eN[0]||e.value>=eN[eN.length-1]:e.value>=eN[0]),(0,M.jsxs)(o.Fragment,{children:[(0,M.jsx)(eB,(0,i.Z)({"data-index":t},eH,!(0,R.X)(eB)&&{ownerState:(0,i.Z)({},eH.ownerState,{percent:r})},{style:(0,i.Z)({},a,eH.style),className:(0,s.Z)(eH.className,n&&ew.markActive)})),null!=e.label?(0,M.jsx)(eG,(0,i.Z)({"data-index":t},ez,{style:(0,i.Z)({},a,ez.style),className:(0,s.Z)(ew.markLabel,ez.className,n&&ew.markLabelActive),children:e.label})):null]},e.value)}),eN.map((e,t)=>{let n=(e-X)*100/(q-X),a=ef[ey].offset(n);return(0,M.jsxs)(e$,(0,i.Z)({"data-index":t},ej,{className:(0,s.Z)(ej.className,eS===t&&ew.active,eA===t&&ew.focusVisible),style:(0,i.Z)({},a,eI(t),ej.style),children:[(0,M.jsx)(eV,(0,i.Z)({"data-index":t,"aria-label":P?P(t):r,"aria-valuenow":J(e),"aria-valuetext":H?H(J(e),t):l,value:eN[t]},eW)),"off"!==en?(0,M.jsx)(eK,(0,i.Z)({},eZ,{className:(0,s.Z)(eZ.className,(eT===t||eS===t||"on"===en)&&ew.valueLabelOpen),children:"function"==typeof er?er(J(e),t):er})):null]}),t)})]}))});var q=Y},33028:function(e,t,n){"use strict";n.d(t,{Z:function(){return U}});var r=n(63366),a=n(87462),i=n(67294),o=n(14142),s=n(94780),l=n(73935),c=n(33703),u=n(74161),d=n(39336),p=n(73546),m=n(85893);let g=["onChange","maxRows","minRows","style","value"];function f(e){return parseInt(e,10)||0}let h={shadow:{visibility:"hidden",position:"absolute",overflow:"hidden",height:0,top:0,left:0,transform:"translateZ(0)"}};function b(e){return null==e||0===Object.keys(e).length||0===e.outerHeightStyle&&!e.overflow}let E=i.forwardRef(function(e,t){let{onChange:n,maxRows:o,minRows:s=1,style:E,value:T}=e,S=(0,r.Z)(e,g),{current:y}=i.useRef(null!=T),A=i.useRef(null),_=(0,c.Z)(t,A),k=i.useRef(null),v=i.useRef(0),[N,C]=i.useState({outerHeightStyle:0}),R=i.useCallback(()=>{let t=A.current,n=(0,u.Z)(t),r=n.getComputedStyle(t);if("0px"===r.width)return{outerHeightStyle:0};let a=k.current;a.style.width=r.width,a.value=t.value||e.placeholder||"x","\n"===a.value.slice(-1)&&(a.value+=" ");let i=r.boxSizing,l=f(r.paddingBottom)+f(r.paddingTop),c=f(r.borderBottomWidth)+f(r.borderTopWidth),d=a.scrollHeight;a.value="x";let p=a.scrollHeight,m=d;s&&(m=Math.max(Number(s)*p,m)),o&&(m=Math.min(Number(o)*p,m)),m=Math.max(m,p);let g=m+("border-box"===i?l+c:0),h=1>=Math.abs(m-d);return{outerHeightStyle:g,overflow:h}},[o,s,e.placeholder]),I=(e,t)=>{let{outerHeightStyle:n,overflow:r}=t;return v.current<20&&(n>0&&Math.abs((e.outerHeightStyle||0)-n)>1||e.overflow!==r)?(v.current+=1,{overflow:r,outerHeightStyle:n}):e},O=i.useCallback(()=>{let e=R();b(e)||C(t=>I(t,e))},[R]),w=()=>{let e=R();b(e)||l.flushSync(()=>{C(t=>I(t,e))})};return i.useEffect(()=>{let e;let t=(0,d.Z)(()=>{v.current=0,A.current&&w()}),n=A.current,r=(0,u.Z)(n);return r.addEventListener("resize",t),"undefined"!=typeof ResizeObserver&&(e=new ResizeObserver(()=>{v.current=0,A.current&&w()})).observe(n),()=>{t.clear(),r.removeEventListener("resize",t),e&&e.disconnect()}}),(0,p.Z)(()=>{O()}),i.useEffect(()=>{v.current=0},[T]),(0,m.jsxs)(i.Fragment,{children:[(0,m.jsx)("textarea",(0,a.Z)({value:T,onChange:e=>{v.current=0,y||O(),n&&n(e)},ref:_,rows:s,style:(0,a.Z)({height:N.outerHeightStyle,overflow:N.overflow?"hidden":void 0},E)},S)),(0,m.jsx)("textarea",{"aria-hidden":!0,className:e.className,readOnly:!0,ref:k,tabIndex:-1,style:(0,a.Z)({},h.shadow,E,{paddingTop:0,paddingBottom:0})})]})});var T=n(74312),S=n(20407),y=n(78653),A=n(30220),_=n(26821);function k(e){return(0,_.d6)("MuiTextarea",e)}let v=(0,_.sI)("MuiTextarea",["root","textarea","startDecorator","endDecorator","formControl","disabled","error","focused","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","sizeSm","sizeMd","sizeLg","variantPlain","variantOutlined","variantSoft"]);var N=n(71387);let C=i.createContext(void 0);var R=n(30437),I=n(76043);let O=["aria-describedby","aria-label","aria-labelledby","autoComplete","autoFocus","className","defaultValue","disabled","error","id","name","onClick","onChange","onKeyDown","onKeyUp","onFocus","onBlur","placeholder","readOnly","required","type","value"],w=["propsToForward","rootStateClasses","inputStateClasses","getRootProps","getInputProps","formControl","focused","error","disabled","size","color","variant","startDecorator","endDecorator","minRows","maxRows","component","slots","slotProps"],x=e=>{let{disabled:t,variant:n,color:r,size:a}=e,i={root:["root",t&&"disabled",n&&`variant${(0,o.Z)(n)}`,r&&`color${(0,o.Z)(r)}`,a&&`size${(0,o.Z)(a)}`],textarea:["textarea"],startDecorator:["startDecorator"],endDecorator:["endDecorator"]};return(0,s.Z)(i,k,{})},L=(0,T.Z)("div",{name:"JoyTextarea",slot:"Root",overridesResolver:(e,t)=>t.root})(({theme:e,ownerState:t})=>{var n,r,i,o,s;let l=null==(n=e.variants[`${t.variant}`])?void 0:n[t.color];return[(0,a.Z)({"--Textarea-radius":e.vars.radius.sm,"--Textarea-gap":"0.5rem","--Textarea-placeholderColor":"inherit","--Textarea-placeholderOpacity":.64,"--Textarea-decoratorColor":e.vars.palette.text.icon,"--Textarea-focused":"0","--Textarea-focusedThickness":e.vars.focus.thickness},"context"===t.color?{"--Textarea-focusedHighlight":e.vars.palette.focusVisible}:{"--Textarea-focusedHighlight":null==(r=e.vars.palette["neutral"===t.color?"primary":t.color])?void 0:r[500]},"sm"===t.size&&{"--Textarea-minHeight":"2rem","--Textarea-paddingBlock":"calc(0.5rem - var(--variant-borderWidth, 0px))","--Textarea-paddingInline":"0.5rem","--Textarea-decoratorChildHeight":"min(1.5rem, var(--Textarea-minHeight))","--Icon-fontSize":e.vars.fontSize.xl},"md"===t.size&&{"--Textarea-minHeight":"2.5rem","--Textarea-paddingBlock":"calc(0.5rem - var(--variant-borderWidth, 0px))","--Textarea-paddingInline":"0.75rem","--Textarea-decoratorChildHeight":"min(2rem, var(--Textarea-minHeight))","--Icon-fontSize":e.vars.fontSize.xl2},"lg"===t.size&&{"--Textarea-minHeight":"3rem","--Textarea-paddingBlock":"calc(0.75rem - var(--variant-borderWidth, 0px))","--Textarea-paddingInline":"1rem","--Textarea-gap":"0.75rem","--Textarea-decoratorChildHeight":"min(2.375rem, var(--Textarea-minHeight))","--Icon-fontSize":e.vars.fontSize.xl2},{"--_Textarea-paddingBlock":"max((var(--Textarea-minHeight) - 2 * var(--variant-borderWidth, 0px) - var(--Textarea-decoratorChildHeight)) / 2, 0px)","--Textarea-decoratorChildRadius":"max(var(--Textarea-radius) - var(--variant-borderWidth, 0px) - var(--_Textarea-paddingBlock), min(var(--_Textarea-paddingBlock) + var(--variant-borderWidth, 0px), var(--Textarea-radius) / 2))","--Button-minHeight":"var(--Textarea-decoratorChildHeight)","--IconButton-size":"var(--Textarea-decoratorChildHeight)","--Button-radius":"var(--Textarea-decoratorChildRadius)","--IconButton-radius":"var(--Textarea-decoratorChildRadius)",boxSizing:"border-box"},"plain"!==t.variant&&{boxShadow:e.shadow.xs},{minWidth:0,minHeight:"var(--Textarea-minHeight)",cursor:"text",position:"relative",display:"flex",flexDirection:"column",paddingInlineStart:"var(--Textarea-paddingInline)",paddingBlock:"var(--Textarea-paddingBlock)",borderRadius:"var(--Textarea-radius)"},e.typography[`body-${t.size}`],l,{backgroundColor:null!=(i=null==l?void 0:l.backgroundColor)?i:e.vars.palette.background.surface,"&:before":{boxSizing:"border-box",content:'""',display:"block",position:"absolute",pointerEvents:"none",top:0,left:0,right:0,bottom:0,zIndex:1,borderRadius:"inherit",margin:"calc(var(--variant-borderWidth, 0px) * -1)",boxShadow:"var(--Textarea-focusedInset, inset) 0 0 0 calc(var(--Textarea-focused) * var(--Textarea-focusedThickness)) var(--Textarea-focusedHighlight)"}}),{"&:hover":(0,a.Z)({},null==(o=e.variants[`${t.variant}Hover`])?void 0:o[t.color],{backgroundColor:null,cursor:"text"}),[`&.${v.disabled}`]:null==(s=e.variants[`${t.variant}Disabled`])?void 0:s[t.color],"&:focus-within::before":{"--Textarea-focused":"1"}}]}),D=(0,T.Z)(E,{name:"JoyTextarea",slot:"Textarea",overridesResolver:(e,t)=>t.textarea})({resize:"none",border:"none",minWidth:0,outline:0,padding:0,paddingInlineEnd:"var(--Textarea-paddingInline)",flex:"auto",alignSelf:"stretch",color:"inherit",backgroundColor:"transparent",fontFamily:"inherit",fontSize:"inherit",fontStyle:"inherit",fontWeight:"inherit",lineHeight:"inherit","&::-webkit-input-placeholder":{color:"var(--Textarea-placeholderColor)",opacity:"var(--Textarea-placeholderOpacity)"},"&::-moz-placeholder":{color:"var(--Textarea-placeholderColor)",opacity:"var(--Textarea-placeholderOpacity)"},"&:-ms-input-placeholder":{color:"var(--Textarea-placeholderColor)",opacity:"var(--Textarea-placeholderOpacity)"},"&::-ms-input-placeholder":{color:"var(--Textarea-placeholderColor)",opacity:"var(--Textarea-placeholderOpacity)"}}),P=(0,T.Z)("div",{name:"JoyTextarea",slot:"StartDecorator",overridesResolver:(e,t)=>t.startDecorator})({display:"flex",marginInlineStart:"calc(var(--Textarea-paddingBlock) - var(--Textarea-paddingInline))",marginInlineEnd:"var(--Textarea-paddingBlock)",marginBlockEnd:"var(--Textarea-gap)",color:"var(--Textarea-decoratorColor)",cursor:"initial"}),M=(0,T.Z)("div",{name:"JoyTextarea",slot:"EndDecorator",overridesResolver:(e,t)=>t.endDecorator})({display:"flex",marginInlineStart:"calc(var(--Textarea-paddingBlock) - var(--Textarea-paddingInline))",marginInlineEnd:"var(--Textarea-paddingBlock)",marginBlockStart:"var(--Textarea-gap)",color:"var(--Textarea-decoratorColor)",cursor:"initial"}),F=i.forwardRef(function(e,t){var n,o,s,l,u,d,p;let g=(0,S.Z)({props:e,name:"JoyTextarea"}),f=function(e,t){let n=i.useContext(I.Z),{"aria-describedby":o,"aria-label":s,"aria-labelledby":l,autoComplete:u,autoFocus:d,className:p,defaultValue:m,disabled:g,error:f,id:h,name:b,onClick:E,onChange:T,onKeyDown:S,onKeyUp:y,onFocus:A,onBlur:_,placeholder:k,readOnly:v,required:w,type:x,value:L}=e,D=(0,r.Z)(e,O),{getRootProps:P,getInputProps:M,focused:F,error:U,disabled:B}=function(e){let t,n,r,o,s;let{defaultValue:l,disabled:u=!1,error:d=!1,onBlur:p,onChange:m,onFocus:g,required:f=!1,value:h,inputRef:b}=e,E=i.useContext(C);if(E){var T,S,y;t=void 0,n=null!=(T=E.disabled)&&T,r=null!=(S=E.error)&&S,o=null!=(y=E.required)&&y,s=E.value}else t=l,n=u,r=d,o=f,s=h;let{current:A}=i.useRef(null!=s),_=i.useCallback(e=>{},[]),k=i.useRef(null),v=(0,c.Z)(k,b,_),[I,O]=i.useState(!1);i.useEffect(()=>{!E&&n&&I&&(O(!1),null==p||p())},[E,n,I,p]);let w=e=>t=>{var n,r;if(null!=E&&E.disabled){t.stopPropagation();return}null==(n=e.onFocus)||n.call(e,t),E&&E.onFocus?null==E||null==(r=E.onFocus)||r.call(E):O(!0)},x=e=>t=>{var n;null==(n=e.onBlur)||n.call(e,t),E&&E.onBlur?E.onBlur():O(!1)},L=e=>(t,...n)=>{var r,a;if(!A){let e=t.target||k.current;if(null==e)throw Error((0,N.Z)(17))}null==E||null==(r=E.onChange)||r.call(E,t),null==(a=e.onChange)||a.call(e,t,...n)},D=e=>t=>{var n;k.current&&t.currentTarget===t.target&&k.current.focus(),null==(n=e.onClick)||n.call(e,t)};return{disabled:n,error:r,focused:I,formControlContext:E,getInputProps:(e={})=>{let i=(0,a.Z)({},{onBlur:p,onChange:m,onFocus:g},(0,R._)(e)),l=(0,a.Z)({},e,i,{onBlur:x(i),onChange:L(i),onFocus:w(i)});return(0,a.Z)({},l,{"aria-invalid":r||void 0,defaultValue:t,ref:v,value:s,required:o,disabled:n})},getRootProps:(t={})=>{let n=(0,R._)(e,["onBlur","onChange","onFocus"]),r=(0,a.Z)({},n,(0,R._)(t));return(0,a.Z)({},t,r,{onClick:D(r)})},inputRef:v,required:o,value:s}}({disabled:null!=g?g:null==n?void 0:n.disabled,defaultValue:m,error:f,onBlur:_,onClick:E,onChange:T,onFocus:A,required:null!=w?w:null==n?void 0:n.required,value:L}),H={[t.disabled]:B,[t.error]:U,[t.focused]:F,[t.formControl]:!!n,[p]:p},G={[t.disabled]:B};return(0,a.Z)({formControl:n,propsToForward:{"aria-describedby":o,"aria-label":s,"aria-labelledby":l,autoComplete:u,autoFocus:d,disabled:B,id:h,onKeyDown:S,onKeyUp:y,name:b,placeholder:k,readOnly:v,type:x},rootStateClasses:H,inputStateClasses:G,getRootProps:P,getInputProps:M,focused:F,error:U,disabled:B},D)}(g,v),{propsToForward:h,rootStateClasses:b,inputStateClasses:E,getRootProps:T,getInputProps:_,formControl:k,focused:F,error:U=!1,disabled:B=!1,size:H="md",color:G="neutral",variant:z="outlined",startDecorator:$,endDecorator:j,minRows:V,maxRows:W,component:K,slots:Z={},slotProps:Y={}}=f,q=(0,r.Z)(f,w),X=null!=(n=null!=(o=e.disabled)?o:null==k?void 0:k.disabled)?n:B,Q=null!=(s=null!=(l=e.error)?l:null==k?void 0:k.error)?s:U,J=null!=(u=null!=(d=e.size)?d:null==k?void 0:k.size)?u:H,{getColor:ee}=(0,y.VT)(z),et=ee(e.color,Q?"danger":null!=(p=null==k?void 0:k.color)?p:G),en=(0,a.Z)({},g,{color:et,disabled:X,error:Q,focused:F,size:J,variant:z}),er=x(en),ea=(0,a.Z)({},q,{component:K,slots:Z,slotProps:Y}),[ei,eo]=(0,A.Z)("root",{ref:t,className:[er.root,b],elementType:L,externalForwardedProps:ea,getSlotProps:T,ownerState:en}),[es,el]=(0,A.Z)("textarea",{additionalProps:{id:null==k?void 0:k.htmlFor,"aria-describedby":null==k?void 0:k["aria-describedby"]},className:[er.textarea,E],elementType:D,internalForwardedProps:(0,a.Z)({},h,{minRows:V,maxRows:W}),externalForwardedProps:ea,getSlotProps:_,ownerState:en}),[ec,eu]=(0,A.Z)("startDecorator",{className:er.startDecorator,elementType:P,externalForwardedProps:ea,ownerState:en}),[ed,ep]=(0,A.Z)("endDecorator",{className:er.endDecorator,elementType:M,externalForwardedProps:ea,ownerState:en});return(0,m.jsxs)(ei,(0,a.Z)({},eo,{children:[$&&(0,m.jsx)(ec,(0,a.Z)({},eu,{children:$})),(0,m.jsx)(es,(0,a.Z)({},el)),j&&(0,m.jsx)(ed,(0,a.Z)({},ep,{children:j}))]}))});var U=F},38426:function(e,t,n){"use strict";n.d(t,{Z:function(){return eA}});var r=n(67294),a=n(99611),i=n(94184),o=n.n(i),s=n(87462),l=n(1413),c=n(4942),u=n(97685),d=n(71002),p=n(45987),m=n(27678),g=n(21770),f=["crossOrigin","decoding","draggable","loading","referrerPolicy","sizes","srcSet","useMap","alt"],h=r.createContext(null),b=0;function E(e){var t=e.src,n=e.isCustomPlaceholder,a=e.fallback,i=(0,r.useState)(n?"loading":"normal"),o=(0,u.Z)(i,2),s=o[0],l=o[1],c=(0,r.useRef)(!1),d="error"===s;(0,r.useEffect)(function(){new Promise(function(e){var n=document.createElement("img");n.onerror=function(){return e(!1)},n.onload=function(){return e(!0)},n.src=t}).then(function(e){e||l("error")})},[t]),(0,r.useEffect)(function(){n&&!c.current?l("loading"):d&&l("normal")},[t]);var p=function(){l("normal")};return[function(e){c.current=!1,"loading"===s&&null!=e&&e.complete&&(e.naturalWidth||e.naturalHeight)&&(c.current=!0,p())},d&&a?{src:a}:{onLoad:p,src:t},s]}var T=n(13328),S=n(64019),y=n(15105),A=n(80334);function _(e,t,n,r){var a=t+n,i=(n-r)/2;if(n>r){if(t>0)return(0,c.Z)({},e,i);if(t<0&&ar)return(0,c.Z)({},e,t<0?i:-i);return{}}var k=n(91881),v=n(75164),N={x:0,y:0,rotate:0,scale:1,flipX:!1,flipY:!1},C=n(2788),R=n(82225),I=function(e){var t=e.visible,n=e.maskTransitionName,a=e.getContainer,i=e.prefixCls,s=e.rootClassName,u=e.icons,d=e.countRender,p=e.showSwitch,m=e.showProgress,g=e.current,f=e.transform,b=e.count,E=e.scale,T=e.minScale,S=e.maxScale,A=e.closeIcon,_=e.onSwitchLeft,k=e.onSwitchRight,v=e.onClose,N=e.onZoomIn,I=e.onZoomOut,O=e.onRotateRight,w=e.onRotateLeft,x=e.onFlipX,L=e.onFlipY,D=e.toolbarRender,P=(0,r.useContext)(h),M=u.rotateLeft,F=u.rotateRight,U=u.zoomIn,B=u.zoomOut,H=u.close,G=u.left,z=u.right,$=u.flipX,j=u.flipY,V="".concat(i,"-operations-operation");r.useEffect(function(){var e=function(e){e.keyCode===y.Z.ESC&&v()};return t&&window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}},[t]);var W=[{icon:j,onClick:L,type:"flipY"},{icon:$,onClick:x,type:"flipX"},{icon:M,onClick:w,type:"rotateLeft"},{icon:F,onClick:O,type:"rotateRight"},{icon:B,onClick:I,type:"zoomOut",disabled:E===T},{icon:U,onClick:N,type:"zoomIn",disabled:E===S}].map(function(e){var t,n=e.icon,a=e.onClick,s=e.type,l=e.disabled;return r.createElement("div",{className:o()(V,(t={},(0,c.Z)(t,"".concat(i,"-operations-operation-").concat(s),!0),(0,c.Z)(t,"".concat(i,"-operations-operation-disabled"),!!l),t)),onClick:a,key:s},n)}),K=r.createElement("div",{className:"".concat(i,"-operations")},W);return r.createElement(R.ZP,{visible:t,motionName:n},function(e){var t=e.className,n=e.style;return r.createElement(C.Z,{open:!0,getContainer:null!=a?a:document.body},r.createElement("div",{className:o()("".concat(i,"-operations-wrapper"),t,s),style:n},null===A?null:r.createElement("button",{className:"".concat(i,"-close"),onClick:v},A||H),p&&r.createElement(r.Fragment,null,r.createElement("div",{className:o()("".concat(i,"-switch-left"),(0,c.Z)({},"".concat(i,"-switch-left-disabled"),0===g)),onClick:_},G),r.createElement("div",{className:o()("".concat(i,"-switch-right"),(0,c.Z)({},"".concat(i,"-switch-right-disabled"),g===b-1)),onClick:k},z)),r.createElement("div",{className:"".concat(i,"-footer")},m&&r.createElement("div",{className:"".concat(i,"-progress")},d?d(g+1,b):"".concat(g+1," / ").concat(b)),D?D(K,(0,l.Z)({icons:{flipYIcon:W[0],flipXIcon:W[1],rotateLeftIcon:W[2],rotateRightIcon:W[3],zoomOutIcon:W[4],zoomInIcon:W[5]},actions:{onFlipY:L,onFlipX:x,onRotateLeft:w,onRotateRight:O,onZoomOut:I,onZoomIn:N},transform:f},P?{current:g,total:b}:{})):K)))})},O=["fallback","src","imgRef"],w=["prefixCls","src","alt","fallback","movable","onClose","visible","icons","rootClassName","closeIcon","getContainer","current","count","countRender","scaleStep","minScale","maxScale","transitionName","maskTransitionName","imageRender","imgCommonProps","toolbarRender","onTransform","onChange"],x=function(e){var t=e.fallback,n=e.src,a=e.imgRef,i=(0,p.Z)(e,O),o=E({src:n,fallback:t}),l=(0,u.Z)(o,2),c=l[0],d=l[1];return r.createElement("img",(0,s.Z)({ref:function(e){a.current=e,c(e)}},i,d))},L=function(e){var t,n,a,i,d,g,f,b=e.prefixCls,E=e.src,C=e.alt,R=e.fallback,O=e.movable,L=void 0===O||O,D=e.onClose,P=e.visible,M=e.icons,F=e.rootClassName,U=e.closeIcon,B=e.getContainer,H=e.current,G=void 0===H?0:H,z=e.count,$=void 0===z?1:z,j=e.countRender,V=e.scaleStep,W=void 0===V?.5:V,K=e.minScale,Z=void 0===K?1:K,Y=e.maxScale,q=void 0===Y?50:Y,X=e.transitionName,Q=e.maskTransitionName,J=void 0===Q?"fade":Q,ee=e.imageRender,et=e.imgCommonProps,en=e.toolbarRender,er=e.onTransform,ea=e.onChange,ei=(0,p.Z)(e,w),eo=(0,r.useRef)(),es=(0,r.useRef)({deltaX:0,deltaY:0,transformX:0,transformY:0}),el=(0,r.useState)(!1),ec=(0,u.Z)(el,2),eu=ec[0],ed=ec[1],ep=(0,r.useContext)(h),em=ep&&$>1,eg=ep&&$>=1,ef=(t=(0,r.useRef)(null),n=(0,r.useRef)([]),a=(0,r.useState)(N),d=(i=(0,u.Z)(a,2))[0],g=i[1],f=function(e,r){null===t.current&&(n.current=[],t.current=(0,v.Z)(function(){g(function(e){var a=e;return n.current.forEach(function(e){a=(0,l.Z)((0,l.Z)({},a),e)}),t.current=null,null==er||er({transform:a,action:r}),a})})),n.current.push((0,l.Z)((0,l.Z)({},d),e))},{transform:d,resetTransform:function(e){g(N),er&&!(0,k.Z)(N,d)&&er({transform:N,action:e})},updateTransform:f,dispatchZoomChange:function(e,t,n,r){var a=eo.current,i=a.width,o=a.height,s=a.offsetWidth,l=a.offsetHeight,c=a.offsetLeft,u=a.offsetTop,p=e,g=d.scale*e;g>q?(p=q/d.scale,g=q):g0&&(e_(!1),eb("prev"),null==ea||ea(G-1,G))},eO=function(e){null==e||e.preventDefault(),null==e||e.stopPropagation(),G<$-1&&(e_(!1),eb("next"),null==ea||ea(G+1,G))},ew=function(){if(P&&eu){ed(!1);var e,t,n,r,a,i,o=es.current,s=o.transformX,c=o.transformY;if(eN!==s&&eC!==c){var u=eo.current.offsetWidth*ev,d=eo.current.offsetHeight*ev,p=eo.current.getBoundingClientRect(),g=p.left,f=p.top,h=ek%180!=0,b=(e=h?d:u,t=h?u:d,r=(n=(0,m.g1)()).width,a=n.height,i=null,e<=r&&t<=a?i={x:0,y:0}:(e>r||t>a)&&(i=(0,l.Z)((0,l.Z)({},_("x",g,e,r)),_("y",f,t,a))),i);b&&eE((0,l.Z)({},b),"dragRebound")}}},ex=function(e){P&&eu&&eE({x:e.pageX-es.current.deltaX,y:e.pageY-es.current.deltaY},"move")},eL=function(e){P&&em&&(e.keyCode===y.Z.LEFT?eI():e.keyCode===y.Z.RIGHT&&eO())};(0,r.useEffect)(function(){var e,t,n,r;if(L){n=(0,S.Z)(window,"mouseup",ew,!1),r=(0,S.Z)(window,"mousemove",ex,!1);try{window.top!==window.self&&(e=(0,S.Z)(window.top,"mouseup",ew,!1),t=(0,S.Z)(window.top,"mousemove",ex,!1))}catch(e){(0,A.Kp)(!1,"[rc-image] ".concat(e))}}return function(){var a,i,o,s;null===(a=n)||void 0===a||a.remove(),null===(i=r)||void 0===i||i.remove(),null===(o=e)||void 0===o||o.remove(),null===(s=t)||void 0===s||s.remove()}},[P,eu,eN,eC,ek,L]),(0,r.useEffect)(function(){var e=(0,S.Z)(window,"keydown",eL,!1);return function(){e.remove()}},[P,em,G]);var eD=r.createElement(x,(0,s.Z)({},et,{width:e.width,height:e.height,imgRef:eo,className:"".concat(b,"-img"),alt:C,style:{transform:"translate3d(".concat(eh.x,"px, ").concat(eh.y,"px, 0) scale3d(").concat(eh.flipX?"-":"").concat(ev,", ").concat(eh.flipY?"-":"").concat(ev,", 1) rotate(").concat(ek,"deg)"),transitionDuration:!eA&&"0s"},fallback:R,src:E,onWheel:function(e){if(P&&0!=e.deltaY){var t=1+Math.min(Math.abs(e.deltaY/100),1)*W;e.deltaY>0&&(t=1/t),eT(t,"wheel",e.clientX,e.clientY)}},onMouseDown:function(e){L&&0===e.button&&(e.preventDefault(),e.stopPropagation(),es.current={deltaX:e.pageX-eh.x,deltaY:e.pageY-eh.y,transformX:eh.x,transformY:eh.y},ed(!0))},onDoubleClick:function(e){P&&(1!==ev?eE({x:0,y:0,scale:1},"doubleClick"):eT(1+W,"doubleClick",e.clientX,e.clientY))}}));return r.createElement(r.Fragment,null,r.createElement(T.Z,(0,s.Z)({transitionName:void 0===X?"zoom":X,maskTransitionName:J,closable:!1,keyboard:!0,prefixCls:b,onClose:D,visible:P,wrapClassName:eR,rootClassName:F,getContainer:B},ei,{afterClose:function(){eb("close")}}),r.createElement("div",{className:"".concat(b,"-img-wrapper")},ee?ee(eD,(0,l.Z)({transform:eh},ep?{current:G}:{})):eD)),r.createElement(I,{visible:P,transform:eh,maskTransitionName:J,closeIcon:U,getContainer:B,prefixCls:b,rootClassName:F,icons:void 0===M?{}:M,countRender:j,showSwitch:em,showProgress:eg,current:G,count:$,scale:ev,minScale:Z,maxScale:q,toolbarRender:en,onSwitchLeft:eI,onSwitchRight:eO,onZoomIn:function(){eT(1+W,"zoomIn")},onZoomOut:function(){eT(1/(1+W),"zoomOut")},onRotateRight:function(){eE({rotate:ek+90},"rotateRight")},onRotateLeft:function(){eE({rotate:ek-90},"rotateLeft")},onFlipX:function(){eE({flipX:!eh.flipX},"flipX")},onFlipY:function(){eE({flipY:!eh.flipY},"flipY")},onClose:D}))},D=n(74902),P=["visible","onVisibleChange","getContainer","current","movable","minScale","maxScale","countRender","closeIcon","onChange","onTransform","toolbarRender","imageRender"],M=["src"],F=["src","alt","onPreviewClose","prefixCls","previewPrefixCls","placeholder","fallback","width","height","style","preview","className","onClick","onError","wrapperClassName","wrapperStyle","rootClassName"],U=["src","visible","onVisibleChange","getContainer","mask","maskClassName","movable","icons","scaleStep","minScale","maxScale","imageRender","toolbarRender"],B=function(e){var t,n,a,i,T=e.src,S=e.alt,y=e.onPreviewClose,A=e.prefixCls,_=void 0===A?"rc-image":A,k=e.previewPrefixCls,v=void 0===k?"".concat(_,"-preview"):k,N=e.placeholder,C=e.fallback,R=e.width,I=e.height,O=e.style,w=e.preview,x=void 0===w||w,D=e.className,P=e.onClick,M=e.onError,B=e.wrapperClassName,H=e.wrapperStyle,G=e.rootClassName,z=(0,p.Z)(e,F),$=N&&!0!==N,j="object"===(0,d.Z)(x)?x:{},V=j.src,W=j.visible,K=void 0===W?void 0:W,Z=j.onVisibleChange,Y=j.getContainer,q=j.mask,X=j.maskClassName,Q=j.movable,J=j.icons,ee=j.scaleStep,et=j.minScale,en=j.maxScale,er=j.imageRender,ea=j.toolbarRender,ei=(0,p.Z)(j,U),eo=null!=V?V:T,es=(0,g.Z)(!!K,{value:K,onChange:void 0===Z?y:Z}),el=(0,u.Z)(es,2),ec=el[0],eu=el[1],ed=E({src:T,isCustomPlaceholder:$,fallback:C}),ep=(0,u.Z)(ed,3),em=ep[0],eg=ep[1],ef=ep[2],eh=(0,r.useState)(null),eb=(0,u.Z)(eh,2),eE=eb[0],eT=eb[1],eS=(0,r.useContext)(h),ey=!!x,eA=o()(_,B,G,(0,c.Z)({},"".concat(_,"-error"),"error"===ef)),e_=(0,r.useMemo)(function(){var t={};return f.forEach(function(n){void 0!==e[n]&&(t[n]=e[n])}),t},f.map(function(t){return e[t]})),ek=(0,r.useMemo)(function(){return(0,l.Z)((0,l.Z)({},e_),{},{src:eo})},[eo,e_]),ev=(t=r.useState(function(){return String(b+=1)}),n=(0,u.Z)(t,1)[0],a=r.useContext(h),i={data:ek,canPreview:ey},r.useEffect(function(){if(a)return a.register(n,i)},[]),r.useEffect(function(){a&&a.register(n,i)},[ey,ek]),n);return r.createElement(r.Fragment,null,r.createElement("div",(0,s.Z)({},z,{className:eA,onClick:ey?function(e){var t=(0,m.os)(e.target),n=t.left,r=t.top;eS?eS.onPreview(ev,n,r):(eT({x:n,y:r}),eu(!0)),null==P||P(e)}:P,style:(0,l.Z)({width:R,height:I},H)}),r.createElement("img",(0,s.Z)({},e_,{className:o()("".concat(_,"-img"),(0,c.Z)({},"".concat(_,"-img-placeholder"),!0===N),D),style:(0,l.Z)({height:I},O),ref:em},eg,{width:R,height:I,onError:M})),"loading"===ef&&r.createElement("div",{"aria-hidden":"true",className:"".concat(_,"-placeholder")},N),q&&ey&&r.createElement("div",{className:o()("".concat(_,"-mask"),X),style:{display:(null==O?void 0:O.display)==="none"?"none":void 0}},q)),!eS&&ey&&r.createElement(L,(0,s.Z)({"aria-hidden":!ec,visible:ec,prefixCls:v,onClose:function(){eu(!1),eT(null)},mousePosition:eE,src:eo,alt:S,fallback:C,getContainer:void 0===Y?void 0:Y,icons:J,movable:Q,scaleStep:ee,minScale:et,maxScale:en,rootClassName:G,imageRender:er,imgCommonProps:e_,toolbarRender:ea},ei)))};B.PreviewGroup=function(e){var t,n,a,i,o,m,b=e.previewPrefixCls,E=e.children,T=e.icons,S=e.items,y=e.preview,A=e.fallback,_="object"===(0,d.Z)(y)?y:{},k=_.visible,v=_.onVisibleChange,N=_.getContainer,C=_.current,R=_.movable,I=_.minScale,O=_.maxScale,w=_.countRender,x=_.closeIcon,F=_.onChange,U=_.onTransform,B=_.toolbarRender,H=_.imageRender,G=(0,p.Z)(_,P),z=(t=r.useState({}),a=(n=(0,u.Z)(t,2))[0],i=n[1],o=r.useCallback(function(e,t){return i(function(n){return(0,l.Z)((0,l.Z)({},n),{},(0,c.Z)({},e,t))}),function(){i(function(t){var n=(0,l.Z)({},t);return delete n[e],n})}},[]),[r.useMemo(function(){return S?S.map(function(e){if("string"==typeof e)return{data:{src:e}};var t={};return Object.keys(e).forEach(function(n){["src"].concat((0,D.Z)(f)).includes(n)&&(t[n]=e[n])}),{data:t}}):Object.keys(a).reduce(function(e,t){var n=a[t],r=n.canPreview,i=n.data;return r&&e.push({data:i,id:t}),e},[])},[S,a]),o]),$=(0,u.Z)(z,2),j=$[0],V=$[1],W=(0,g.Z)(0,{value:C}),K=(0,u.Z)(W,2),Z=K[0],Y=K[1],q=(0,r.useState)(!1),X=(0,u.Z)(q,2),Q=X[0],J=X[1],ee=(null===(m=j[Z])||void 0===m?void 0:m.data)||{},et=ee.src,en=(0,p.Z)(ee,M),er=(0,g.Z)(!!k,{value:k,onChange:function(e,t){null==v||v(e,t,Z)}}),ea=(0,u.Z)(er,2),ei=ea[0],eo=ea[1],es=(0,r.useState)(null),el=(0,u.Z)(es,2),ec=el[0],eu=el[1],ed=r.useCallback(function(e,t,n){var r=j.findIndex(function(t){return t.id===e});eo(!0),eu({x:t,y:n}),Y(r<0?0:r),J(!0)},[j]);r.useEffect(function(){ei?Q||Y(0):J(!1)},[ei]);var ep=r.useMemo(function(){return{register:V,onPreview:ed}},[V,ed]);return r.createElement(h.Provider,{value:ep},E,r.createElement(L,(0,s.Z)({"aria-hidden":!ei,movable:R,visible:ei,prefixCls:void 0===b?"rc-image-preview":b,closeIcon:x,onClose:function(){eo(!1),eu(null)},mousePosition:ec,imgCommonProps:en,src:et,fallback:A,icons:void 0===T?{}:T,minScale:I,maxScale:O,getContainer:N,current:Z,count:j.length,countRender:w,onTransform:U,toolbarRender:B,imageRender:H,onChange:function(e,t){Y(e),null==F||F(e,t)}},G)))},B.displayName="Image";var H=n(33603),G=n(53124),z=n(88526),$=n(97937),j=n(6171),V=n(18073),W={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M672 418H144c-17.7 0-32 14.3-32 32v414c0 17.7 14.3 32 32 32h528c17.7 0 32-14.3 32-32V450c0-17.7-14.3-32-32-32zm-44 402H188V494h440v326z"}},{tag:"path",attrs:{d:"M819.3 328.5c-78.8-100.7-196-153.6-314.6-154.2l-.2-64c0-6.5-7.6-10.1-12.6-6.1l-128 101c-4 3.1-3.9 9.1 0 12.3L492 318.6c5.1 4 12.7.4 12.6-6.1v-63.9c12.9.1 25.9.9 38.8 2.5 42.1 5.2 82.1 18.2 119 38.7 38.1 21.2 71.2 49.7 98.4 84.3 27.1 34.7 46.7 73.7 58.1 115.8a325.95 325.95 0 016.5 140.9h74.9c14.8-103.6-11.3-213-81-302.3z"}}]},name:"rotate-left",theme:"outlined"},K=n(84089),Z=r.forwardRef(function(e,t){return r.createElement(K.Z,(0,s.Z)({},e,{ref:t,icon:W}))}),Y={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M480.5 251.2c13-1.6 25.9-2.4 38.8-2.5v63.9c0 6.5 7.5 10.1 12.6 6.1L660 217.6c4-3.2 4-9.2 0-12.3l-128-101c-5.1-4-12.6-.4-12.6 6.1l-.2 64c-118.6.5-235.8 53.4-314.6 154.2A399.75 399.75 0 00123.5 631h74.9c-.9-5.3-1.7-10.7-2.4-16.1-5.1-42.1-2.1-84.1 8.9-124.8 11.4-42.2 31-81.1 58.1-115.8 27.2-34.7 60.3-63.2 98.4-84.3 37-20.6 76.9-33.6 119.1-38.8z"}},{tag:"path",attrs:{d:"M880 418H352c-17.7 0-32 14.3-32 32v414c0 17.7 14.3 32 32 32h528c17.7 0 32-14.3 32-32V450c0-17.7-14.3-32-32-32zm-44 402H396V494h440v326z"}}]},name:"rotate-right",theme:"outlined"},q=r.forwardRef(function(e,t){return r.createElement(K.Z,(0,s.Z)({},e,{ref:t,icon:Y}))}),X={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M847.9 592H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h605.2L612.9 851c-4.1 5.2-.4 13 6.3 13h72.5c4.9 0 9.5-2.2 12.6-6.1l168.8-214.1c16.5-21 1.6-51.8-25.2-51.8zM872 356H266.8l144.3-183c4.1-5.2.4-13-6.3-13h-72.5c-4.9 0-9.5 2.2-12.6 6.1L150.9 380.2c-16.5 21-1.6 51.8 25.1 51.8h696c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z"}}]},name:"swap",theme:"outlined"},Q=r.forwardRef(function(e,t){return r.createElement(K.Z,(0,s.Z)({},e,{ref:t,icon:X}))}),J={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M637 443H519V309c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v134H325c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h118v134c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V519h118c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm284 424L775 721c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z"}}]},name:"zoom-in",theme:"outlined"},ee=r.forwardRef(function(e,t){return r.createElement(K.Z,(0,s.Z)({},e,{ref:t,icon:J}))}),et={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M637 443H325c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h312c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm284 424L775 721c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z"}}]},name:"zoom-out",theme:"outlined"},en=r.forwardRef(function(e,t){return r.createElement(K.Z,(0,s.Z)({},e,{ref:t,icon:et}))}),er=n(10274),ea=n(71194),ei=n(14747),eo=n(50438),es=n(16932),el=n(67968),ec=n(45503);let eu=e=>({position:e||"absolute",inset:0}),ed=e=>{let{iconCls:t,motionDurationSlow:n,paddingXXS:r,marginXXS:a,prefixCls:i,colorTextLightSolid:o}=e;return{position:"absolute",inset:0,display:"flex",alignItems:"center",justifyContent:"center",color:o,background:new er.C("#000").setAlpha(.5).toRgbString(),cursor:"pointer",opacity:0,transition:`opacity ${n}`,[`.${i}-mask-info`]:Object.assign(Object.assign({},ei.vS),{padding:`0 ${r}px`,[t]:{marginInlineEnd:a,svg:{verticalAlign:"baseline"}}})}},ep=e=>{let{previewCls:t,modalMaskBg:n,paddingSM:r,marginXL:a,margin:i,paddingLG:o,previewOperationColorDisabled:s,previewOperationHoverColor:l,motionDurationSlow:c,iconCls:u,colorTextLightSolid:d}=e,p=new er.C(n).setAlpha(.1),m=p.clone().setAlpha(.2);return{[`${t}-footer`]:{position:"fixed",bottom:a,left:{_skip_check_:!0,value:0},width:"100%",display:"flex",flexDirection:"column",alignItems:"center",color:e.previewOperationColor},[`${t}-progress`]:{marginBottom:i},[`${t}-close`]:{position:"fixed",top:a,right:{_skip_check_:!0,value:a},display:"flex",color:d,backgroundColor:p.toRgbString(),borderRadius:"50%",padding:r,outline:0,border:0,cursor:"pointer",transition:`all ${c}`,"&:hover":{backgroundColor:m.toRgbString()},[`& > ${u}`]:{fontSize:e.previewOperationSize}},[`${t}-operations`]:{display:"flex",alignItems:"center",padding:`0 ${o}px`,backgroundColor:p.toRgbString(),borderRadius:100,"&-operation":{marginInlineStart:r,padding:r,cursor:"pointer",transition:`all ${c}`,userSelect:"none",[`&:not(${t}-operations-operation-disabled):hover > ${u}`]:{color:l},"&-disabled":{color:s,cursor:"not-allowed"},"&:first-of-type":{marginInlineStart:0},[`& > ${u}`]:{fontSize:e.previewOperationSize}}}}},em=e=>{let{modalMaskBg:t,iconCls:n,previewOperationColorDisabled:r,previewCls:a,zIndexPopup:i,motionDurationSlow:o}=e,s=new er.C(t).setAlpha(.1),l=s.clone().setAlpha(.2);return{[`${a}-switch-left, ${a}-switch-right`]:{position:"fixed",insetBlockStart:"50%",zIndex:i+1,display:"flex",alignItems:"center",justifyContent:"center",width:e.imagePreviewSwitchSize,height:e.imagePreviewSwitchSize,marginTop:-e.imagePreviewSwitchSize/2,color:e.previewOperationColor,background:s.toRgbString(),borderRadius:"50%",transform:"translateY(-50%)",cursor:"pointer",transition:`all ${o}`,userSelect:"none","&:hover":{background:l.toRgbString()},"&-disabled":{"&, &:hover":{color:r,background:"transparent",cursor:"not-allowed",[`> ${n}`]:{cursor:"not-allowed"}}},[`> ${n}`]:{fontSize:e.previewOperationSize}},[`${a}-switch-left`]:{insetInlineStart:e.marginSM},[`${a}-switch-right`]:{insetInlineEnd:e.marginSM}}},eg=e=>{let{motionEaseOut:t,previewCls:n,motionDurationSlow:r,componentCls:a}=e;return[{[`${a}-preview-root`]:{[n]:{height:"100%",textAlign:"center",pointerEvents:"none"},[`${n}-body`]:Object.assign(Object.assign({},eu()),{overflow:"hidden"}),[`${n}-img`]:{maxWidth:"100%",maxHeight:"70%",verticalAlign:"middle",transform:"scale3d(1, 1, 1)",cursor:"grab",transition:`transform ${r} ${t} 0s`,userSelect:"none","&-wrapper":Object.assign(Object.assign({},eu()),{transition:`transform ${r} ${t} 0s`,display:"flex",justifyContent:"center",alignItems:"center","& > *":{pointerEvents:"auto"},"&::before":{display:"inline-block",width:1,height:"50%",marginInlineEnd:-1,content:'""'}})},[`${n}-moving`]:{[`${n}-preview-img`]:{cursor:"grabbing","&-wrapper":{transitionDuration:"0s"}}}}},{[`${a}-preview-root`]:{[`${n}-wrap`]:{zIndex:e.zIndexPopup}}},{[`${a}-preview-operations-wrapper`]:{position:"fixed",zIndex:e.zIndexPopup+1},"&":[ep(e),em(e)]}]},ef=e=>{let{componentCls:t}=e;return{[t]:{position:"relative",display:"inline-block",[`${t}-img`]:{width:"100%",height:"auto",verticalAlign:"middle"},[`${t}-img-placeholder`]:{backgroundColor:e.colorBgContainerDisabled,backgroundImage:"url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTQuNSAyLjVoLTEzQS41LjUgMCAwIDAgMSAzdjEwYS41LjUgMCAwIDAgLjUuNWgxM2EuNS41IDAgMCAwIC41LS41VjNhLjUuNSAwIDAgMC0uNS0uNXpNNS4yODEgNC43NWExIDEgMCAwIDEgMCAyIDEgMSAwIDAgMSAwLTJ6bTguMDMgNi44M2EuMTI3LjEyNyAwIDAgMS0uMDgxLjAzSDIuNzY5YS4xMjUuMTI1IDAgMCAxLS4wOTYtLjIwN2wyLjY2MS0zLjE1NmEuMTI2LjEyNiAwIDAgMSAuMTc3LS4wMTZsLjAxNi4wMTZMNy4wOCAxMC4wOWwyLjQ3LTIuOTNhLjEyNi4xMjYgMCAwIDEgLjE3Ny0uMDE2bC4wMTUuMDE2IDMuNTg4IDQuMjQ0YS4xMjcuMTI3IDAgMCAxLS4wMi4xNzV6IiBmaWxsPSIjOEM4QzhDIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4=')",backgroundRepeat:"no-repeat",backgroundPosition:"center center",backgroundSize:"30%"},[`${t}-mask`]:Object.assign({},ed(e)),[`${t}-mask:hover`]:{opacity:1},[`${t}-placeholder`]:Object.assign({},eu())}}},eh=e=>{let{previewCls:t}=e;return{[`${t}-root`]:(0,eo._y)(e,"zoom"),"&":(0,es.J$)(e,!0)}};var eb=(0,el.Z)("Image",e=>{let t=`${e.componentCls}-preview`,n=(0,ec.TS)(e,{previewCls:t,modalMaskBg:new er.C("#000").setAlpha(.45).toRgbString(),imagePreviewSwitchSize:e.controlHeightLG});return[ef(n),eg(n),(0,ea.Q)((0,ec.TS)(n,{componentCls:t})),eh(n)]},e=>({zIndexPopup:e.zIndexPopupBase+80,previewOperationColor:new er.C(e.colorTextLightSolid).setAlpha(.65).toRgbString(),previewOperationHoverColor:new er.C(e.colorTextLightSolid).setAlpha(.85).toRgbString(),previewOperationColorDisabled:new er.C(e.colorTextLightSolid).setAlpha(.25).toRgbString(),previewOperationSize:1.5*e.fontSizeIcon})),eE=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var a=0,r=Object.getOwnPropertySymbols(e);at.indexOf(r[a])&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]]);return n};let eT={rotateLeft:r.createElement(Z,null),rotateRight:r.createElement(q,null),zoomIn:r.createElement(ee,null),zoomOut:r.createElement(en,null),close:r.createElement($.Z,null),left:r.createElement(j.Z,null),right:r.createElement(V.Z,null),flipX:r.createElement(Q,null),flipY:r.createElement(Q,{rotate:90})};var eS=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var a=0,r=Object.getOwnPropertySymbols(e);at.indexOf(r[a])&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]]);return n};let ey=e=>{let{prefixCls:t,preview:n,className:i,rootClassName:s,style:l}=e,c=eS(e,["prefixCls","preview","className","rootClassName","style"]),{getPrefixCls:u,locale:d=z.Z,getPopupContainer:p,image:m}=r.useContext(G.E_),g=u("image",t),f=u(),h=d.Image||z.Z.Image,[b,E]=eb(g),T=o()(s,E),S=o()(i,E,null==m?void 0:m.className),y=r.useMemo(()=>{if(!1===n)return n;let e="object"==typeof n?n:{},{getContainer:t}=e,i=eS(e,["getContainer"]);return Object.assign(Object.assign({mask:r.createElement("div",{className:`${g}-mask-info`},r.createElement(a.Z,null),null==h?void 0:h.preview),icons:eT},i),{getContainer:t||p,transitionName:(0,H.m)(f,"zoom",e.transitionName),maskTransitionName:(0,H.m)(f,"fade",e.maskTransitionName)})},[n,h]),A=Object.assign(Object.assign({},null==m?void 0:m.style),l);return b(r.createElement(B,Object.assign({prefixCls:g,preview:y,rootClassName:T,className:S,style:A},c)))};ey.PreviewGroup=e=>{var{previewPrefixCls:t,preview:n}=e,a=eE(e,["previewPrefixCls","preview"]);let{getPrefixCls:i}=r.useContext(G.E_),s=i("image",t),l=`${s}-preview`,c=i(),[u,d]=eb(s),p=r.useMemo(()=>{var e;if(!1===n)return n;let t="object"==typeof n?n:{},r=o()(d,null!==(e=t.rootClassName)&&void 0!==e?e:"");return Object.assign(Object.assign({},t),{transitionName:(0,H.m)(c,"zoom",t.transitionName),maskTransitionName:(0,H.m)(c,"fade",t.maskTransitionName),rootClassName:r})},[n]);return u(r.createElement(B.PreviewGroup,Object.assign({preview:p,previewPrefixCls:l,icons:eT},a)))};var eA=ey},56851:function(e,t){"use strict";t.Q=function(e){for(var t,n=[],r=String(e||""),a=r.indexOf(","),i=0,o=!1;!o;)-1===a&&(a=r.length,o=!0),((t=r.slice(i,a).trim())||!o)&&n.push(t),i=a+1,a=r.indexOf(",",i);return n}},94470:function(e){"use strict";var t=Object.prototype.hasOwnProperty,n=Object.prototype.toString,r=Object.defineProperty,a=Object.getOwnPropertyDescriptor,i=function(e){return"function"==typeof Array.isArray?Array.isArray(e):"[object Array]"===n.call(e)},o=function(e){if(!e||"[object Object]"!==n.call(e))return!1;var r,a=t.call(e,"constructor"),i=e.constructor&&e.constructor.prototype&&t.call(e.constructor.prototype,"isPrototypeOf");if(e.constructor&&!a&&!i)return!1;for(r in e);return void 0===r||t.call(e,r)},s=function(e,t){r&&"__proto__"===t.name?r(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},l=function(e,n){if("__proto__"===n){if(!t.call(e,n))return;if(a)return a(e,n).value}return e[n]};e.exports=function e(){var t,n,r,a,c,u,d=arguments[0],p=1,m=arguments.length,g=!1;for("boolean"==typeof d&&(g=d,d=arguments[1]||{},p=2),(null==d||"object"!=typeof d&&"function"!=typeof d)&&(d={});p=97&&t<=122||t>=65&&t<=90}},7961:function(e,t,n){"use strict";var r=n(46260),a=n(46195);e.exports=function(e){return r(e)||a(e)}},46195:function(e){"use strict";e.exports=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=48&&t<=57}},79480:function(e){"use strict";e.exports=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=97&&t<=102||t>=65&&t<=70||t>=48&&t<=57}},89435:function(e){"use strict";var t;e.exports=function(e){var n,r="&"+e+";";return(t=t||document.createElement("i")).innerHTML=r,(59!==(n=t.textContent).charCodeAt(n.length-1)||"semi"===e)&&n!==r&&n}},57574:function(e,t,n){"use strict";var r=n(37452),a=n(93580),i=n(46195),o=n(79480),s=n(7961),l=n(89435);e.exports=function(e,t){var n,i,o={};for(i in t||(t={}),p)n=t[i],o[i]=null==n?p[i]:n;return(o.position.indent||o.position.start)&&(o.indent=o.position.indent||[],o.position=o.position.start),function(e,t){var n,i,o,p,T,S,y,A,_,k,v,N,C,R,I,O,w,x,L,D,P,M=t.additional,F=t.nonTerminated,U=t.text,B=t.reference,H=t.warning,G=t.textContext,z=t.referenceContext,$=t.warningContext,j=t.position,V=t.indent||[],W=e.length,K=0,Z=-1,Y=j.column||1,q=j.line||1,X="",Q=[];for("string"==typeof M&&(M=M.charCodeAt(0)),x=J(),k=H?function(e,t){var n=J();n.column+=t,n.offset+=t,H.call($,E[e],n,e)}:d,K--,W++;++K=55296&&n<=57343||n>1114111?(k(7,D),A=u(65533)):A in a?(k(6,D),A=a[A]):(N="",((i=A)>=1&&i<=8||11===i||i>=13&&i<=31||i>=127&&i<=159||i>=64976&&i<=65007||(65535&i)==65535||(65535&i)==65534)&&k(6,D),A>65535&&(A-=65536,N+=u(A>>>10|55296),A=56320|1023&A),A=N+u(A))):O!==m&&k(4,D)),A?(ee(),x=J(),K=P-1,Y+=P-I+1,Q.push(A),L=J(),L.offset++,B&&B.call(z,A,{start:x,end:L},e.slice(I-1,P)),x=L):(X+=S=e.slice(I-1,P),Y+=S.length,K=P-1)}else 10===y&&(q++,Z++,Y=0),y==y?(X+=u(y),Y++):ee();return Q.join("");function J(){return{line:q,column:Y,offset:K+(j.offset||0)}}function ee(){X&&(Q.push(X),U&&U.call(G,X,{start:x,end:J()}),X="")}}(e,o)};var c={}.hasOwnProperty,u=String.fromCharCode,d=Function.prototype,p={warning:null,reference:null,text:null,warningContext:null,referenceContext:null,textContext:null,position:{},additional:null,attribute:!1,nonTerminated:!0},m="named",g="hexadecimal",f="decimal",h={};h[g]=16,h[f]=10;var b={};b[m]=s,b[f]=i,b[g]=o;var E={};E[1]="Named character references must be terminated by a semicolon",E[2]="Numeric character references must be terminated by a semicolon",E[3]="Named character references cannot be empty",E[4]="Numeric character references cannot be empty",E[5]="Named character references must be known",E[6]="Numeric character references cannot be disallowed",E[7]="Numeric character references cannot be outside the permissible Unicode range"},31515:function(e,t,n){"use strict";let{DOCUMENT_MODE:r}=n(16152),a="html",i=["+//silmaril//dtd html pro v0r11 19970101//","-//as//dtd html 3.0 aswedit + extensions//","-//advasoft ltd//dtd html 3.0 aswedit + extensions//","-//ietf//dtd html 2.0 level 1//","-//ietf//dtd html 2.0 level 2//","-//ietf//dtd html 2.0 strict level 1//","-//ietf//dtd html 2.0 strict level 2//","-//ietf//dtd html 2.0 strict//","-//ietf//dtd html 2.0//","-//ietf//dtd html 2.1e//","-//ietf//dtd html 3.0//","-//ietf//dtd html 3.2 final//","-//ietf//dtd html 3.2//","-//ietf//dtd html 3//","-//ietf//dtd html level 0//","-//ietf//dtd html level 1//","-//ietf//dtd html level 2//","-//ietf//dtd html level 3//","-//ietf//dtd html strict level 0//","-//ietf//dtd html strict level 1//","-//ietf//dtd html strict level 2//","-//ietf//dtd html strict level 3//","-//ietf//dtd html strict//","-//ietf//dtd html//","-//metrius//dtd metrius presentational//","-//microsoft//dtd internet explorer 2.0 html strict//","-//microsoft//dtd internet explorer 2.0 html//","-//microsoft//dtd internet explorer 2.0 tables//","-//microsoft//dtd internet explorer 3.0 html strict//","-//microsoft//dtd internet explorer 3.0 html//","-//microsoft//dtd internet explorer 3.0 tables//","-//netscape comm. corp.//dtd html//","-//netscape comm. corp.//dtd strict html//","-//o'reilly and associates//dtd html 2.0//","-//o'reilly and associates//dtd html extended 1.0//","-//o'reilly and associates//dtd html extended relaxed 1.0//","-//sq//dtd html 2.0 hotmetal + extensions//","-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//","-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//","-//spyglass//dtd html 2.0 extended//","-//sun microsystems corp.//dtd hotjava html//","-//sun microsystems corp.//dtd hotjava strict html//","-//w3c//dtd html 3 1995-03-24//","-//w3c//dtd html 3.2 draft//","-//w3c//dtd html 3.2 final//","-//w3c//dtd html 3.2//","-//w3c//dtd html 3.2s draft//","-//w3c//dtd html 4.0 frameset//","-//w3c//dtd html 4.0 transitional//","-//w3c//dtd html experimental 19960712//","-//w3c//dtd html experimental 970421//","-//w3c//dtd w3 html//","-//w3o//dtd w3 html 3.0//","-//webtechs//dtd mozilla html 2.0//","-//webtechs//dtd mozilla html//"],o=i.concat(["-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"]),s=["-//w3o//dtd w3 html strict 3.0//en//","-/w3c/dtd html 4.0 transitional/en","html"],l=["-//w3c//dtd xhtml 1.0 frameset//","-//w3c//dtd xhtml 1.0 transitional//"],c=l.concat(["-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"]);function u(e){let t=-1!==e.indexOf('"')?"'":'"';return t+e+t}function d(e,t){for(let n=0;n-1)return r.QUIRKS;let e=null===t?o:i;if(d(n,e))return r.QUIRKS;if(d(n,e=null===t?l:c))return r.LIMITED_QUIRKS}return r.NO_QUIRKS},t.serializeContent=function(e,t,n){let r="!DOCTYPE ";return e&&(r+=e),t?r+=" PUBLIC "+u(t):n&&(r+=" SYSTEM"),null!==n&&(r+=" "+u(n)),r}},41734:function(e){"use strict";e.exports={controlCharacterInInputStream:"control-character-in-input-stream",noncharacterInInputStream:"noncharacter-in-input-stream",surrogateInInputStream:"surrogate-in-input-stream",nonVoidHtmlElementStartTagWithTrailingSolidus:"non-void-html-element-start-tag-with-trailing-solidus",endTagWithAttributes:"end-tag-with-attributes",endTagWithTrailingSolidus:"end-tag-with-trailing-solidus",unexpectedSolidusInTag:"unexpected-solidus-in-tag",unexpectedNullCharacter:"unexpected-null-character",unexpectedQuestionMarkInsteadOfTagName:"unexpected-question-mark-instead-of-tag-name",invalidFirstCharacterOfTagName:"invalid-first-character-of-tag-name",unexpectedEqualsSignBeforeAttributeName:"unexpected-equals-sign-before-attribute-name",missingEndTagName:"missing-end-tag-name",unexpectedCharacterInAttributeName:"unexpected-character-in-attribute-name",unknownNamedCharacterReference:"unknown-named-character-reference",missingSemicolonAfterCharacterReference:"missing-semicolon-after-character-reference",unexpectedCharacterAfterDoctypeSystemIdentifier:"unexpected-character-after-doctype-system-identifier",unexpectedCharacterInUnquotedAttributeValue:"unexpected-character-in-unquoted-attribute-value",eofBeforeTagName:"eof-before-tag-name",eofInTag:"eof-in-tag",missingAttributeValue:"missing-attribute-value",missingWhitespaceBetweenAttributes:"missing-whitespace-between-attributes",missingWhitespaceAfterDoctypePublicKeyword:"missing-whitespace-after-doctype-public-keyword",missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers:"missing-whitespace-between-doctype-public-and-system-identifiers",missingWhitespaceAfterDoctypeSystemKeyword:"missing-whitespace-after-doctype-system-keyword",missingQuoteBeforeDoctypePublicIdentifier:"missing-quote-before-doctype-public-identifier",missingQuoteBeforeDoctypeSystemIdentifier:"missing-quote-before-doctype-system-identifier",missingDoctypePublicIdentifier:"missing-doctype-public-identifier",missingDoctypeSystemIdentifier:"missing-doctype-system-identifier",abruptDoctypePublicIdentifier:"abrupt-doctype-public-identifier",abruptDoctypeSystemIdentifier:"abrupt-doctype-system-identifier",cdataInHtmlContent:"cdata-in-html-content",incorrectlyOpenedComment:"incorrectly-opened-comment",eofInScriptHtmlCommentLikeText:"eof-in-script-html-comment-like-text",eofInDoctype:"eof-in-doctype",nestedComment:"nested-comment",abruptClosingOfEmptyComment:"abrupt-closing-of-empty-comment",eofInComment:"eof-in-comment",incorrectlyClosedComment:"incorrectly-closed-comment",eofInCdata:"eof-in-cdata",absenceOfDigitsInNumericCharacterReference:"absence-of-digits-in-numeric-character-reference",nullCharacterReference:"null-character-reference",surrogateCharacterReference:"surrogate-character-reference",characterReferenceOutsideUnicodeRange:"character-reference-outside-unicode-range",controlCharacterReference:"control-character-reference",noncharacterCharacterReference:"noncharacter-character-reference",missingWhitespaceBeforeDoctypeName:"missing-whitespace-before-doctype-name",missingDoctypeName:"missing-doctype-name",invalidCharacterSequenceAfterDoctypeName:"invalid-character-sequence-after-doctype-name",duplicateAttribute:"duplicate-attribute",nonConformingDoctype:"non-conforming-doctype",missingDoctype:"missing-doctype",misplacedDoctype:"misplaced-doctype",endTagWithoutMatchingOpenElement:"end-tag-without-matching-open-element",closingOfElementWithOpenChildElements:"closing-of-element-with-open-child-elements",disallowedContentInNoscriptInHead:"disallowed-content-in-noscript-in-head",openElementsLeftAfterEof:"open-elements-left-after-eof",abandonedHeadElementChild:"abandoned-head-element-child",misplacedStartTagForHeadElement:"misplaced-start-tag-for-head-element",nestedNoscriptInHead:"nested-noscript-in-head",eofInElementThatCanContainOnlyText:"eof-in-element-that-can-contain-only-text"}},88779:function(e,t,n){"use strict";let r=n(55763),a=n(16152),i=a.TAG_NAMES,o=a.NAMESPACES,s=a.ATTRS,l={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},c={attributename:"attributeName",attributetype:"attributeType",basefrequency:"baseFrequency",baseprofile:"baseProfile",calcmode:"calcMode",clippathunits:"clipPathUnits",diffuseconstant:"diffuseConstant",edgemode:"edgeMode",filterunits:"filterUnits",glyphref:"glyphRef",gradienttransform:"gradientTransform",gradientunits:"gradientUnits",kernelmatrix:"kernelMatrix",kernelunitlength:"kernelUnitLength",keypoints:"keyPoints",keysplines:"keySplines",keytimes:"keyTimes",lengthadjust:"lengthAdjust",limitingconeangle:"limitingConeAngle",markerheight:"markerHeight",markerunits:"markerUnits",markerwidth:"markerWidth",maskcontentunits:"maskContentUnits",maskunits:"maskUnits",numoctaves:"numOctaves",pathlength:"pathLength",patterncontentunits:"patternContentUnits",patterntransform:"patternTransform",patternunits:"patternUnits",pointsatx:"pointsAtX",pointsaty:"pointsAtY",pointsatz:"pointsAtZ",preservealpha:"preserveAlpha",preserveaspectratio:"preserveAspectRatio",primitiveunits:"primitiveUnits",refx:"refX",refy:"refY",repeatcount:"repeatCount",repeatdur:"repeatDur",requiredextensions:"requiredExtensions",requiredfeatures:"requiredFeatures",specularconstant:"specularConstant",specularexponent:"specularExponent",spreadmethod:"spreadMethod",startoffset:"startOffset",stddeviation:"stdDeviation",stitchtiles:"stitchTiles",surfacescale:"surfaceScale",systemlanguage:"systemLanguage",tablevalues:"tableValues",targetx:"targetX",targety:"targetY",textlength:"textLength",viewbox:"viewBox",viewtarget:"viewTarget",xchannelselector:"xChannelSelector",ychannelselector:"yChannelSelector",zoomandpan:"zoomAndPan"},u={"xlink:actuate":{prefix:"xlink",name:"actuate",namespace:o.XLINK},"xlink:arcrole":{prefix:"xlink",name:"arcrole",namespace:o.XLINK},"xlink:href":{prefix:"xlink",name:"href",namespace:o.XLINK},"xlink:role":{prefix:"xlink",name:"role",namespace:o.XLINK},"xlink:show":{prefix:"xlink",name:"show",namespace:o.XLINK},"xlink:title":{prefix:"xlink",name:"title",namespace:o.XLINK},"xlink:type":{prefix:"xlink",name:"type",namespace:o.XLINK},"xml:base":{prefix:"xml",name:"base",namespace:o.XML},"xml:lang":{prefix:"xml",name:"lang",namespace:o.XML},"xml:space":{prefix:"xml",name:"space",namespace:o.XML},xmlns:{prefix:"",name:"xmlns",namespace:o.XMLNS},"xmlns:xlink":{prefix:"xmlns",name:"xlink",namespace:o.XMLNS}},d=t.SVG_TAG_NAMES_ADJUSTMENT_MAP={altglyph:"altGlyph",altglyphdef:"altGlyphDef",altglyphitem:"altGlyphItem",animatecolor:"animateColor",animatemotion:"animateMotion",animatetransform:"animateTransform",clippath:"clipPath",feblend:"feBlend",fecolormatrix:"feColorMatrix",fecomponenttransfer:"feComponentTransfer",fecomposite:"feComposite",feconvolvematrix:"feConvolveMatrix",fediffuselighting:"feDiffuseLighting",fedisplacementmap:"feDisplacementMap",fedistantlight:"feDistantLight",feflood:"feFlood",fefunca:"feFuncA",fefuncb:"feFuncB",fefuncg:"feFuncG",fefuncr:"feFuncR",fegaussianblur:"feGaussianBlur",feimage:"feImage",femerge:"feMerge",femergenode:"feMergeNode",femorphology:"feMorphology",feoffset:"feOffset",fepointlight:"fePointLight",fespecularlighting:"feSpecularLighting",fespotlight:"feSpotLight",fetile:"feTile",feturbulence:"feTurbulence",foreignobject:"foreignObject",glyphref:"glyphRef",lineargradient:"linearGradient",radialgradient:"radialGradient",textpath:"textPath"},p={[i.B]:!0,[i.BIG]:!0,[i.BLOCKQUOTE]:!0,[i.BODY]:!0,[i.BR]:!0,[i.CENTER]:!0,[i.CODE]:!0,[i.DD]:!0,[i.DIV]:!0,[i.DL]:!0,[i.DT]:!0,[i.EM]:!0,[i.EMBED]:!0,[i.H1]:!0,[i.H2]:!0,[i.H3]:!0,[i.H4]:!0,[i.H5]:!0,[i.H6]:!0,[i.HEAD]:!0,[i.HR]:!0,[i.I]:!0,[i.IMG]:!0,[i.LI]:!0,[i.LISTING]:!0,[i.MENU]:!0,[i.META]:!0,[i.NOBR]:!0,[i.OL]:!0,[i.P]:!0,[i.PRE]:!0,[i.RUBY]:!0,[i.S]:!0,[i.SMALL]:!0,[i.SPAN]:!0,[i.STRONG]:!0,[i.STRIKE]:!0,[i.SUB]:!0,[i.SUP]:!0,[i.TABLE]:!0,[i.TT]:!0,[i.U]:!0,[i.UL]:!0,[i.VAR]:!0};t.causesExit=function(e){let t=e.tagName,n=t===i.FONT&&(null!==r.getTokenAttr(e,s.COLOR)||null!==r.getTokenAttr(e,s.SIZE)||null!==r.getTokenAttr(e,s.FACE));return!!n||p[t]},t.adjustTokenMathMLAttrs=function(e){for(let t=0;t=55296&&e<=57343},t.isSurrogatePair=function(e){return e>=56320&&e<=57343},t.getSurrogatePairCodePoint=function(e,t){return(e-55296)*1024+9216+t},t.isControlCodePoint=function(e){return 32!==e&&10!==e&&13!==e&&9!==e&&12!==e&&e>=1&&e<=31||e>=127&&e<=159},t.isUndefinedCodePoint=function(e){return e>=64976&&e<=65007||n.indexOf(e)>-1}},23843:function(e,t,n){"use strict";let r=n(81704);e.exports=class extends r{constructor(e,t){super(e),this.posTracker=null,this.onParseError=t.onParseError}_setErrorLocation(e){e.startLine=e.endLine=this.posTracker.line,e.startCol=e.endCol=this.posTracker.col,e.startOffset=e.endOffset=this.posTracker.offset}_reportError(e){let t={code:e,startLine:-1,startCol:-1,startOffset:-1,endLine:-1,endCol:-1,endOffset:-1};this._setErrorLocation(t),this.onParseError(t)}_getOverriddenMethods(e){return{_err(t){e._reportError(t)}}}}},22232:function(e,t,n){"use strict";let r=n(23843),a=n(70050),i=n(46110),o=n(81704);e.exports=class extends r{constructor(e,t){super(e,t),this.opts=t,this.ctLoc=null,this.locBeforeToken=!1}_setErrorLocation(e){this.ctLoc&&(e.startLine=this.ctLoc.startLine,e.startCol=this.ctLoc.startCol,e.startOffset=this.ctLoc.startOffset,e.endLine=this.locBeforeToken?this.ctLoc.startLine:this.ctLoc.endLine,e.endCol=this.locBeforeToken?this.ctLoc.startCol:this.ctLoc.endCol,e.endOffset=this.locBeforeToken?this.ctLoc.startOffset:this.ctLoc.endOffset)}_getOverriddenMethods(e,t){return{_bootstrap(n,r){t._bootstrap.call(this,n,r),o.install(this.tokenizer,a,e.opts),o.install(this.tokenizer,i)},_processInputToken(n){e.ctLoc=n.location,t._processInputToken.call(this,n)},_err(t,n){e.locBeforeToken=n&&n.beforeToken,e._reportError(t)}}}}},23288:function(e,t,n){"use strict";let r=n(23843),a=n(57930),i=n(81704);e.exports=class extends r{constructor(e,t){super(e,t),this.posTracker=i.install(e,a),this.lastErrOffset=-1}_reportError(e){this.lastErrOffset!==this.posTracker.offset&&(this.lastErrOffset=this.posTracker.offset,super._reportError(e))}}},70050:function(e,t,n){"use strict";let r=n(23843),a=n(23288),i=n(81704);e.exports=class extends r{constructor(e,t){super(e,t);let n=i.install(e.preprocessor,a,t);this.posTracker=n.posTracker}}},11077:function(e,t,n){"use strict";let r=n(81704);e.exports=class extends r{constructor(e,t){super(e),this.onItemPop=t.onItemPop}_getOverriddenMethods(e,t){return{pop(){e.onItemPop(this.current),t.pop.call(this)},popAllUpToHtmlElement(){for(let t=this.stackTop;t>0;t--)e.onItemPop(this.items[t]);t.popAllUpToHtmlElement.call(this)},remove(n){e.onItemPop(this.current),t.remove.call(this,n)}}}}},452:function(e,t,n){"use strict";let r=n(81704),a=n(55763),i=n(46110),o=n(11077),s=n(16152),l=s.TAG_NAMES;e.exports=class extends r{constructor(e){super(e),this.parser=e,this.treeAdapter=this.parser.treeAdapter,this.posTracker=null,this.lastStartTagToken=null,this.lastFosterParentingLocation=null,this.currentToken=null}_setStartLocation(e){let t=null;this.lastStartTagToken&&((t=Object.assign({},this.lastStartTagToken.location)).startTag=this.lastStartTagToken.location),this.treeAdapter.setNodeSourceCodeLocation(e,t)}_setEndLocation(e,t){let n=this.treeAdapter.getNodeSourceCodeLocation(e);if(n&&t.location){let n=t.location,r=this.treeAdapter.getTagName(e),i=t.type===a.END_TAG_TOKEN&&r===t.tagName,o={};i?(o.endTag=Object.assign({},n),o.endLine=n.endLine,o.endCol=n.endCol,o.endOffset=n.endOffset):(o.endLine=n.startLine,o.endCol=n.startCol,o.endOffset=n.startOffset),this.treeAdapter.updateNodeSourceCodeLocation(e,o)}}_getOverriddenMethods(e,t){return{_bootstrap(n,a){t._bootstrap.call(this,n,a),e.lastStartTagToken=null,e.lastFosterParentingLocation=null,e.currentToken=null;let s=r.install(this.tokenizer,i);e.posTracker=s.posTracker,r.install(this.openElements,o,{onItemPop:function(t){e._setEndLocation(t,e.currentToken)}})},_runParsingLoop(n){t._runParsingLoop.call(this,n);for(let t=this.openElements.stackTop;t>=0;t--)e._setEndLocation(this.openElements.items[t],e.currentToken)},_processTokenInForeignContent(n){e.currentToken=n,t._processTokenInForeignContent.call(this,n)},_processToken(n){e.currentToken=n,t._processToken.call(this,n);let r=n.type===a.END_TAG_TOKEN&&(n.tagName===l.HTML||n.tagName===l.BODY&&this.openElements.hasInScope(l.BODY));if(r)for(let t=this.openElements.stackTop;t>=0;t--){let r=this.openElements.items[t];if(this.treeAdapter.getTagName(r)===n.tagName){e._setEndLocation(r,n);break}}},_setDocumentType(e){t._setDocumentType.call(this,e);let n=this.treeAdapter.getChildNodes(this.document),r=n.length;for(let t=0;t{let i=a.MODE[r];n[i]=function(n){e.ctLoc=e._getCurrentLocation(),t[i].call(this,n)}}),n}}},57930:function(e,t,n){"use strict";let r=n(81704);e.exports=class extends r{constructor(e){super(e),this.preprocessor=e,this.isEol=!1,this.lineStartPos=0,this.droppedBufferSize=0,this.offset=0,this.col=0,this.line=1}_getOverriddenMethods(e,t){return{advance(){let n=this.pos+1,r=this.html[n];return e.isEol&&(e.isEol=!1,e.line++,e.lineStartPos=n),("\n"===r||"\r"===r&&"\n"!==this.html[n+1])&&(e.isEol=!0),e.col=n-e.lineStartPos+1,e.offset=e.droppedBufferSize+n,t.advance.call(this)},retreat(){t.retreat.call(this),e.isEol=!1,e.col=this.pos-e.lineStartPos+1},dropParsedChunk(){let n=this.pos;t.dropParsedChunk.call(this);let r=n-this.pos;e.lineStartPos-=r,e.droppedBufferSize+=r,e.offset=e.droppedBufferSize+this.pos}}}}},12484:function(e){"use strict";class t{constructor(e){this.length=0,this.entries=[],this.treeAdapter=e,this.bookmark=null}_getNoahArkConditionCandidates(e){let n=[];if(this.length>=3){let r=this.treeAdapter.getAttrList(e).length,a=this.treeAdapter.getTagName(e),i=this.treeAdapter.getNamespaceURI(e);for(let e=this.length-1;e>=0;e--){let o=this.entries[e];if(o.type===t.MARKER_ENTRY)break;let s=o.element,l=this.treeAdapter.getAttrList(s),c=this.treeAdapter.getTagName(s)===a&&this.treeAdapter.getNamespaceURI(s)===i&&l.length===r;c&&n.push({idx:e,attrs:l})}}return n.length<3?[]:n}_ensureNoahArkCondition(e){let t=this._getNoahArkConditionCandidates(e),n=t.length;if(n){let r=this.treeAdapter.getAttrList(e),a=r.length,i=Object.create(null);for(let e=0;e=2;e--)this.entries.splice(t[e].idx,1),this.length--}}insertMarker(){this.entries.push({type:t.MARKER_ENTRY}),this.length++}pushElement(e,n){this._ensureNoahArkCondition(e),this.entries.push({type:t.ELEMENT_ENTRY,element:e,token:n}),this.length++}insertElementAfterBookmark(e,n){let r=this.length-1;for(;r>=0&&this.entries[r]!==this.bookmark;r--);this.entries.splice(r+1,0,{type:t.ELEMENT_ENTRY,element:e,token:n}),this.length++}removeEntry(e){for(let t=this.length-1;t>=0;t--)if(this.entries[t]===e){this.entries.splice(t,1),this.length--;break}}clearToLastMarker(){for(;this.length;){let e=this.entries.pop();if(this.length--,e.type===t.MARKER_ENTRY)break}}getElementEntryInScopeWithTagName(e){for(let n=this.length-1;n>=0;n--){let r=this.entries[n];if(r.type===t.MARKER_ENTRY)break;if(this.treeAdapter.getTagName(r.element)===e)return r}return null}getElementEntry(e){for(let n=this.length-1;n>=0;n--){let r=this.entries[n];if(r.type===t.ELEMENT_ENTRY&&r.element===e)return r}return null}}t.MARKER_ENTRY="MARKER_ENTRY",t.ELEMENT_ENTRY="ELEMENT_ENTRY",e.exports=t},7045:function(e,t,n){"use strict";let r=n(55763),a=n(46519),i=n(12484),o=n(452),s=n(22232),l=n(81704),c=n(17296),u=n(8904),d=n(31515),p=n(88779),m=n(41734),g=n(54284),f=n(16152),h=f.TAG_NAMES,b=f.NAMESPACES,E=f.ATTRS,T={scriptingEnabled:!0,sourceCodeLocationInfo:!1,onParseError:null,treeAdapter:c},S="hidden",y="INITIAL_MODE",A="BEFORE_HTML_MODE",_="BEFORE_HEAD_MODE",k="IN_HEAD_MODE",v="IN_HEAD_NO_SCRIPT_MODE",N="AFTER_HEAD_MODE",C="IN_BODY_MODE",R="TEXT_MODE",I="IN_TABLE_MODE",O="IN_TABLE_TEXT_MODE",w="IN_CAPTION_MODE",x="IN_COLUMN_GROUP_MODE",L="IN_TABLE_BODY_MODE",D="IN_ROW_MODE",P="IN_CELL_MODE",M="IN_SELECT_MODE",F="IN_SELECT_IN_TABLE_MODE",U="IN_TEMPLATE_MODE",B="AFTER_BODY_MODE",H="IN_FRAMESET_MODE",G="AFTER_FRAMESET_MODE",z="AFTER_AFTER_BODY_MODE",$="AFTER_AFTER_FRAMESET_MODE",j={[h.TR]:D,[h.TBODY]:L,[h.THEAD]:L,[h.TFOOT]:L,[h.CAPTION]:w,[h.COLGROUP]:x,[h.TABLE]:I,[h.BODY]:C,[h.FRAMESET]:H},V={[h.CAPTION]:I,[h.COLGROUP]:I,[h.TBODY]:I,[h.TFOOT]:I,[h.THEAD]:I,[h.COL]:x,[h.TR]:L,[h.TD]:D,[h.TH]:D},W={[y]:{[r.CHARACTER_TOKEN]:ee,[r.NULL_CHARACTER_TOKEN]:ee,[r.WHITESPACE_CHARACTER_TOKEN]:Z,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:function(e,t){e._setDocumentType(t);let n=t.forceQuirks?f.DOCUMENT_MODE.QUIRKS:d.getDocumentMode(t);d.isConforming(t)||e._err(m.nonConformingDoctype),e.treeAdapter.setDocumentMode(e.document,n),e.insertionMode=A},[r.START_TAG_TOKEN]:ee,[r.END_TAG_TOKEN]:ee,[r.EOF_TOKEN]:ee},[A]:{[r.CHARACTER_TOKEN]:et,[r.NULL_CHARACTER_TOKEN]:et,[r.WHITESPACE_CHARACTER_TOKEN]:Z,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:function(e,t){t.tagName===h.HTML?(e._insertElement(t,b.HTML),e.insertionMode=_):et(e,t)},[r.END_TAG_TOKEN]:function(e,t){let n=t.tagName;(n===h.HTML||n===h.HEAD||n===h.BODY||n===h.BR)&&et(e,t)},[r.EOF_TOKEN]:et},[_]:{[r.CHARACTER_TOKEN]:en,[r.NULL_CHARACTER_TOKEN]:en,[r.WHITESPACE_CHARACTER_TOKEN]:Z,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Y,[r.START_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.HTML?eS(e,t):n===h.HEAD?(e._insertElement(t,b.HTML),e.headElement=e.openElements.current,e.insertionMode=k):en(e,t)},[r.END_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.HEAD||n===h.BODY||n===h.HTML||n===h.BR?en(e,t):e._err(m.endTagWithoutMatchingOpenElement)},[r.EOF_TOKEN]:en},[k]:{[r.CHARACTER_TOKEN]:ei,[r.NULL_CHARACTER_TOKEN]:ei,[r.WHITESPACE_CHARACTER_TOKEN]:Q,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Y,[r.START_TAG_TOKEN]:er,[r.END_TAG_TOKEN]:ea,[r.EOF_TOKEN]:ei},[v]:{[r.CHARACTER_TOKEN]:eo,[r.NULL_CHARACTER_TOKEN]:eo,[r.WHITESPACE_CHARACTER_TOKEN]:Q,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Y,[r.START_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.HTML?eS(e,t):n===h.BASEFONT||n===h.BGSOUND||n===h.HEAD||n===h.LINK||n===h.META||n===h.NOFRAMES||n===h.STYLE?er(e,t):n===h.NOSCRIPT?e._err(m.nestedNoscriptInHead):eo(e,t)},[r.END_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.NOSCRIPT?(e.openElements.pop(),e.insertionMode=k):n===h.BR?eo(e,t):e._err(m.endTagWithoutMatchingOpenElement)},[r.EOF_TOKEN]:eo},[N]:{[r.CHARACTER_TOKEN]:es,[r.NULL_CHARACTER_TOKEN]:es,[r.WHITESPACE_CHARACTER_TOKEN]:Q,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Y,[r.START_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.HTML?eS(e,t):n===h.BODY?(e._insertElement(t,b.HTML),e.framesetOk=!1,e.insertionMode=C):n===h.FRAMESET?(e._insertElement(t,b.HTML),e.insertionMode=H):n===h.BASE||n===h.BASEFONT||n===h.BGSOUND||n===h.LINK||n===h.META||n===h.NOFRAMES||n===h.SCRIPT||n===h.STYLE||n===h.TEMPLATE||n===h.TITLE?(e._err(m.abandonedHeadElementChild),e.openElements.push(e.headElement),er(e,t),e.openElements.remove(e.headElement)):n===h.HEAD?e._err(m.misplacedStartTagForHeadElement):es(e,t)},[r.END_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.BODY||n===h.HTML||n===h.BR?es(e,t):n===h.TEMPLATE?ea(e,t):e._err(m.endTagWithoutMatchingOpenElement)},[r.EOF_TOKEN]:es},[C]:{[r.CHARACTER_TOKEN]:ec,[r.NULL_CHARACTER_TOKEN]:Z,[r.WHITESPACE_CHARACTER_TOKEN]:el,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:eS,[r.END_TAG_TOKEN]:ek,[r.EOF_TOKEN]:ev},[R]:{[r.CHARACTER_TOKEN]:Q,[r.NULL_CHARACTER_TOKEN]:Q,[r.WHITESPACE_CHARACTER_TOKEN]:Q,[r.COMMENT_TOKEN]:Z,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:Z,[r.END_TAG_TOKEN]:function(e,t){t.tagName===h.SCRIPT&&(e.pendingScript=e.openElements.current),e.openElements.pop(),e.insertionMode=e.originalInsertionMode},[r.EOF_TOKEN]:function(e,t){e._err(m.eofInElementThatCanContainOnlyText),e.openElements.pop(),e.insertionMode=e.originalInsertionMode,e._processToken(t)}},[I]:{[r.CHARACTER_TOKEN]:eN,[r.NULL_CHARACTER_TOKEN]:eN,[r.WHITESPACE_CHARACTER_TOKEN]:eN,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:eC,[r.END_TAG_TOKEN]:eR,[r.EOF_TOKEN]:ev},[O]:{[r.CHARACTER_TOKEN]:function(e,t){e.pendingCharacterTokens.push(t),e.hasNonWhitespacePendingCharacterToken=!0},[r.NULL_CHARACTER_TOKEN]:Z,[r.WHITESPACE_CHARACTER_TOKEN]:function(e,t){e.pendingCharacterTokens.push(t)},[r.COMMENT_TOKEN]:eO,[r.DOCTYPE_TOKEN]:eO,[r.START_TAG_TOKEN]:eO,[r.END_TAG_TOKEN]:eO,[r.EOF_TOKEN]:eO},[w]:{[r.CHARACTER_TOKEN]:ec,[r.NULL_CHARACTER_TOKEN]:Z,[r.WHITESPACE_CHARACTER_TOKEN]:el,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.CAPTION||n===h.COL||n===h.COLGROUP||n===h.TBODY||n===h.TD||n===h.TFOOT||n===h.TH||n===h.THEAD||n===h.TR?e.openElements.hasInTableScope(h.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(h.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=I,e._processToken(t)):eS(e,t)},[r.END_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.CAPTION||n===h.TABLE?e.openElements.hasInTableScope(h.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(h.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=I,n===h.TABLE&&e._processToken(t)):n!==h.BODY&&n!==h.COL&&n!==h.COLGROUP&&n!==h.HTML&&n!==h.TBODY&&n!==h.TD&&n!==h.TFOOT&&n!==h.TH&&n!==h.THEAD&&n!==h.TR&&ek(e,t)},[r.EOF_TOKEN]:ev},[x]:{[r.CHARACTER_TOKEN]:ew,[r.NULL_CHARACTER_TOKEN]:ew,[r.WHITESPACE_CHARACTER_TOKEN]:Q,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.HTML?eS(e,t):n===h.COL?(e._appendElement(t,b.HTML),t.ackSelfClosing=!0):n===h.TEMPLATE?er(e,t):ew(e,t)},[r.END_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.COLGROUP?e.openElements.currentTagName===h.COLGROUP&&(e.openElements.pop(),e.insertionMode=I):n===h.TEMPLATE?ea(e,t):n!==h.COL&&ew(e,t)},[r.EOF_TOKEN]:ev},[L]:{[r.CHARACTER_TOKEN]:eN,[r.NULL_CHARACTER_TOKEN]:eN,[r.WHITESPACE_CHARACTER_TOKEN]:eN,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.TR?(e.openElements.clearBackToTableBodyContext(),e._insertElement(t,b.HTML),e.insertionMode=D):n===h.TH||n===h.TD?(e.openElements.clearBackToTableBodyContext(),e._insertFakeElement(h.TR),e.insertionMode=D,e._processToken(t)):n===h.CAPTION||n===h.COL||n===h.COLGROUP||n===h.TBODY||n===h.TFOOT||n===h.THEAD?e.openElements.hasTableBodyContextInTableScope()&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=I,e._processToken(t)):eC(e,t)},[r.END_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.TBODY||n===h.TFOOT||n===h.THEAD?e.openElements.hasInTableScope(n)&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=I):n===h.TABLE?e.openElements.hasTableBodyContextInTableScope()&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=I,e._processToken(t)):(n!==h.BODY&&n!==h.CAPTION&&n!==h.COL&&n!==h.COLGROUP||n!==h.HTML&&n!==h.TD&&n!==h.TH&&n!==h.TR)&&eR(e,t)},[r.EOF_TOKEN]:ev},[D]:{[r.CHARACTER_TOKEN]:eN,[r.NULL_CHARACTER_TOKEN]:eN,[r.WHITESPACE_CHARACTER_TOKEN]:eN,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.TH||n===h.TD?(e.openElements.clearBackToTableRowContext(),e._insertElement(t,b.HTML),e.insertionMode=P,e.activeFormattingElements.insertMarker()):n===h.CAPTION||n===h.COL||n===h.COLGROUP||n===h.TBODY||n===h.TFOOT||n===h.THEAD||n===h.TR?e.openElements.hasInTableScope(h.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=L,e._processToken(t)):eC(e,t)},[r.END_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.TR?e.openElements.hasInTableScope(h.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=L):n===h.TABLE?e.openElements.hasInTableScope(h.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=L,e._processToken(t)):n===h.TBODY||n===h.TFOOT||n===h.THEAD?(e.openElements.hasInTableScope(n)||e.openElements.hasInTableScope(h.TR))&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=L,e._processToken(t)):(n!==h.BODY&&n!==h.CAPTION&&n!==h.COL&&n!==h.COLGROUP||n!==h.HTML&&n!==h.TD&&n!==h.TH)&&eR(e,t)},[r.EOF_TOKEN]:ev},[P]:{[r.CHARACTER_TOKEN]:ec,[r.NULL_CHARACTER_TOKEN]:Z,[r.WHITESPACE_CHARACTER_TOKEN]:el,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.CAPTION||n===h.COL||n===h.COLGROUP||n===h.TBODY||n===h.TD||n===h.TFOOT||n===h.TH||n===h.THEAD||n===h.TR?(e.openElements.hasInTableScope(h.TD)||e.openElements.hasInTableScope(h.TH))&&(e._closeTableCell(),e._processToken(t)):eS(e,t)},[r.END_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.TD||n===h.TH?e.openElements.hasInTableScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=D):n===h.TABLE||n===h.TBODY||n===h.TFOOT||n===h.THEAD||n===h.TR?e.openElements.hasInTableScope(n)&&(e._closeTableCell(),e._processToken(t)):n!==h.BODY&&n!==h.CAPTION&&n!==h.COL&&n!==h.COLGROUP&&n!==h.HTML&&ek(e,t)},[r.EOF_TOKEN]:ev},[M]:{[r.CHARACTER_TOKEN]:Q,[r.NULL_CHARACTER_TOKEN]:Z,[r.WHITESPACE_CHARACTER_TOKEN]:Q,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:ex,[r.END_TAG_TOKEN]:eL,[r.EOF_TOKEN]:ev},[F]:{[r.CHARACTER_TOKEN]:Q,[r.NULL_CHARACTER_TOKEN]:Z,[r.WHITESPACE_CHARACTER_TOKEN]:Q,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.CAPTION||n===h.TABLE||n===h.TBODY||n===h.TFOOT||n===h.THEAD||n===h.TR||n===h.TD||n===h.TH?(e.openElements.popUntilTagNamePopped(h.SELECT),e._resetInsertionMode(),e._processToken(t)):ex(e,t)},[r.END_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.CAPTION||n===h.TABLE||n===h.TBODY||n===h.TFOOT||n===h.THEAD||n===h.TR||n===h.TD||n===h.TH?e.openElements.hasInTableScope(n)&&(e.openElements.popUntilTagNamePopped(h.SELECT),e._resetInsertionMode(),e._processToken(t)):eL(e,t)},[r.EOF_TOKEN]:ev},[U]:{[r.CHARACTER_TOKEN]:ec,[r.NULL_CHARACTER_TOKEN]:Z,[r.WHITESPACE_CHARACTER_TOKEN]:el,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:function(e,t){let n=t.tagName;if(n===h.BASE||n===h.BASEFONT||n===h.BGSOUND||n===h.LINK||n===h.META||n===h.NOFRAMES||n===h.SCRIPT||n===h.STYLE||n===h.TEMPLATE||n===h.TITLE)er(e,t);else{let r=V[n]||C;e._popTmplInsertionMode(),e._pushTmplInsertionMode(r),e.insertionMode=r,e._processToken(t)}},[r.END_TAG_TOKEN]:function(e,t){t.tagName===h.TEMPLATE&&ea(e,t)},[r.EOF_TOKEN]:eD},[B]:{[r.CHARACTER_TOKEN]:eP,[r.NULL_CHARACTER_TOKEN]:eP,[r.WHITESPACE_CHARACTER_TOKEN]:el,[r.COMMENT_TOKEN]:function(e,t){e._appendCommentNode(t,e.openElements.items[0])},[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:function(e,t){t.tagName===h.HTML?eS(e,t):eP(e,t)},[r.END_TAG_TOKEN]:function(e,t){t.tagName===h.HTML?e.fragmentContext||(e.insertionMode=z):eP(e,t)},[r.EOF_TOKEN]:J},[H]:{[r.CHARACTER_TOKEN]:Z,[r.NULL_CHARACTER_TOKEN]:Z,[r.WHITESPACE_CHARACTER_TOKEN]:Q,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.HTML?eS(e,t):n===h.FRAMESET?e._insertElement(t,b.HTML):n===h.FRAME?(e._appendElement(t,b.HTML),t.ackSelfClosing=!0):n===h.NOFRAMES&&er(e,t)},[r.END_TAG_TOKEN]:function(e,t){t.tagName!==h.FRAMESET||e.openElements.isRootHtmlElementCurrent()||(e.openElements.pop(),e.fragmentContext||e.openElements.currentTagName===h.FRAMESET||(e.insertionMode=G))},[r.EOF_TOKEN]:J},[G]:{[r.CHARACTER_TOKEN]:Z,[r.NULL_CHARACTER_TOKEN]:Z,[r.WHITESPACE_CHARACTER_TOKEN]:Q,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.HTML?eS(e,t):n===h.NOFRAMES&&er(e,t)},[r.END_TAG_TOKEN]:function(e,t){t.tagName===h.HTML&&(e.insertionMode=$)},[r.EOF_TOKEN]:J},[z]:{[r.CHARACTER_TOKEN]:eM,[r.NULL_CHARACTER_TOKEN]:eM,[r.WHITESPACE_CHARACTER_TOKEN]:el,[r.COMMENT_TOKEN]:X,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:function(e,t){t.tagName===h.HTML?eS(e,t):eM(e,t)},[r.END_TAG_TOKEN]:eM,[r.EOF_TOKEN]:J},[$]:{[r.CHARACTER_TOKEN]:Z,[r.NULL_CHARACTER_TOKEN]:Z,[r.WHITESPACE_CHARACTER_TOKEN]:el,[r.COMMENT_TOKEN]:X,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.HTML?eS(e,t):n===h.NOFRAMES&&er(e,t)},[r.END_TAG_TOKEN]:Z,[r.EOF_TOKEN]:J}};function K(e,t){let n,r;for(let a=0;a<8&&((r=e.activeFormattingElements.getElementEntryInScopeWithTagName(t.tagName))?e.openElements.contains(r.element)?e.openElements.hasInScope(t.tagName)||(r=null):(e.activeFormattingElements.removeEntry(r),r=null):e_(e,t),n=r);a++){let t=function(e,t){let n=null;for(let r=e.openElements.stackTop;r>=0;r--){let a=e.openElements.items[r];if(a===t.element)break;e._isSpecialElement(a)&&(n=a)}return n||(e.openElements.popUntilElementPopped(t.element),e.activeFormattingElements.removeEntry(t)),n}(e,n);if(!t)break;e.activeFormattingElements.bookmark=n;let r=function(e,t,n){let r=t,a=e.openElements.getCommonAncestor(t);for(let i=0,o=a;o!==n;i++,o=a){a=e.openElements.getCommonAncestor(o);let n=e.activeFormattingElements.getElementEntry(o),s=n&&i>=3,l=!n||s;l?(s&&e.activeFormattingElements.removeEntry(n),e.openElements.remove(o)):(o=function(e,t){let n=e.treeAdapter.getNamespaceURI(t.element),r=e.treeAdapter.createElement(t.token.tagName,n,t.token.attrs);return e.openElements.replace(t.element,r),t.element=r,r}(e,n),r===t&&(e.activeFormattingElements.bookmark=n),e.treeAdapter.detachNode(r),e.treeAdapter.appendChild(o,r),r=o)}return r}(e,t,n.element),a=e.openElements.getCommonAncestor(n.element);e.treeAdapter.detachNode(r),function(e,t,n){if(e._isElementCausesFosterParenting(t))e._fosterParentElement(n);else{let r=e.treeAdapter.getTagName(t),a=e.treeAdapter.getNamespaceURI(t);r===h.TEMPLATE&&a===b.HTML&&(t=e.treeAdapter.getTemplateContent(t)),e.treeAdapter.appendChild(t,n)}}(e,a,r),function(e,t,n){let r=e.treeAdapter.getNamespaceURI(n.element),a=n.token,i=e.treeAdapter.createElement(a.tagName,r,a.attrs);e._adoptNodes(t,i),e.treeAdapter.appendChild(t,i),e.activeFormattingElements.insertElementAfterBookmark(i,n.token),e.activeFormattingElements.removeEntry(n),e.openElements.remove(n.element),e.openElements.insertAfter(t,i)}(e,t,n)}}function Z(){}function Y(e){e._err(m.misplacedDoctype)}function q(e,t){e._appendCommentNode(t,e.openElements.currentTmplContent||e.openElements.current)}function X(e,t){e._appendCommentNode(t,e.document)}function Q(e,t){e._insertCharacters(t)}function J(e){e.stopped=!0}function ee(e,t){e._err(m.missingDoctype,{beforeToken:!0}),e.treeAdapter.setDocumentMode(e.document,f.DOCUMENT_MODE.QUIRKS),e.insertionMode=A,e._processToken(t)}function et(e,t){e._insertFakeRootElement(),e.insertionMode=_,e._processToken(t)}function en(e,t){e._insertFakeElement(h.HEAD),e.headElement=e.openElements.current,e.insertionMode=k,e._processToken(t)}function er(e,t){let n=t.tagName;n===h.HTML?eS(e,t):n===h.BASE||n===h.BASEFONT||n===h.BGSOUND||n===h.LINK||n===h.META?(e._appendElement(t,b.HTML),t.ackSelfClosing=!0):n===h.TITLE?e._switchToTextParsing(t,r.MODE.RCDATA):n===h.NOSCRIPT?e.options.scriptingEnabled?e._switchToTextParsing(t,r.MODE.RAWTEXT):(e._insertElement(t,b.HTML),e.insertionMode=v):n===h.NOFRAMES||n===h.STYLE?e._switchToTextParsing(t,r.MODE.RAWTEXT):n===h.SCRIPT?e._switchToTextParsing(t,r.MODE.SCRIPT_DATA):n===h.TEMPLATE?(e._insertTemplate(t,b.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=!1,e.insertionMode=U,e._pushTmplInsertionMode(U)):n===h.HEAD?e._err(m.misplacedStartTagForHeadElement):ei(e,t)}function ea(e,t){let n=t.tagName;n===h.HEAD?(e.openElements.pop(),e.insertionMode=N):n===h.BODY||n===h.BR||n===h.HTML?ei(e,t):n===h.TEMPLATE&&e.openElements.tmplCount>0?(e.openElements.generateImpliedEndTagsThoroughly(),e.openElements.currentTagName!==h.TEMPLATE&&e._err(m.closingOfElementWithOpenChildElements),e.openElements.popUntilTagNamePopped(h.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e._popTmplInsertionMode(),e._resetInsertionMode()):e._err(m.endTagWithoutMatchingOpenElement)}function ei(e,t){e.openElements.pop(),e.insertionMode=N,e._processToken(t)}function eo(e,t){let n=t.type===r.EOF_TOKEN?m.openElementsLeftAfterEof:m.disallowedContentInNoscriptInHead;e._err(n),e.openElements.pop(),e.insertionMode=k,e._processToken(t)}function es(e,t){e._insertFakeElement(h.BODY),e.insertionMode=C,e._processToken(t)}function el(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t)}function ec(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t),e.framesetOk=!1}function eu(e,t){e.openElements.hasInButtonScope(h.P)&&e._closePElement(),e._insertElement(t,b.HTML)}function ed(e,t){e.openElements.hasInButtonScope(h.P)&&e._closePElement(),e._insertElement(t,b.HTML),e.skipNextNewLine=!0,e.framesetOk=!1}function ep(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,b.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function em(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,b.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=!1}function eg(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,b.HTML),e.framesetOk=!1,t.ackSelfClosing=!0}function ef(e,t){e._appendElement(t,b.HTML),t.ackSelfClosing=!0}function eh(e,t){e._switchToTextParsing(t,r.MODE.RAWTEXT)}function eb(e,t){e.openElements.currentTagName===h.OPTION&&e.openElements.pop(),e._reconstructActiveFormattingElements(),e._insertElement(t,b.HTML)}function eE(e,t){e.openElements.hasInScope(h.RUBY)&&e.openElements.generateImpliedEndTags(),e._insertElement(t,b.HTML)}function eT(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,b.HTML)}function eS(e,t){let n=t.tagName;switch(n.length){case 1:n===h.I||n===h.S||n===h.B||n===h.U?ep(e,t):n===h.P?eu(e,t):n===h.A?function(e,t){let n=e.activeFormattingElements.getElementEntryInScopeWithTagName(h.A);n&&(K(e,t),e.openElements.remove(n.element),e.activeFormattingElements.removeEntry(n)),e._reconstructActiveFormattingElements(),e._insertElement(t,b.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}(e,t):eT(e,t);break;case 2:n===h.DL||n===h.OL||n===h.UL?eu(e,t):n===h.H1||n===h.H2||n===h.H3||n===h.H4||n===h.H5||n===h.H6?function(e,t){e.openElements.hasInButtonScope(h.P)&&e._closePElement();let n=e.openElements.currentTagName;(n===h.H1||n===h.H2||n===h.H3||n===h.H4||n===h.H5||n===h.H6)&&e.openElements.pop(),e._insertElement(t,b.HTML)}(e,t):n===h.LI||n===h.DD||n===h.DT?function(e,t){e.framesetOk=!1;let n=t.tagName;for(let t=e.openElements.stackTop;t>=0;t--){let r=e.openElements.items[t],a=e.treeAdapter.getTagName(r),i=null;if(n===h.LI&&a===h.LI?i=h.LI:(n===h.DD||n===h.DT)&&(a===h.DD||a===h.DT)&&(i=a),i){e.openElements.generateImpliedEndTagsWithExclusion(i),e.openElements.popUntilTagNamePopped(i);break}if(a!==h.ADDRESS&&a!==h.DIV&&a!==h.P&&e._isSpecialElement(r))break}e.openElements.hasInButtonScope(h.P)&&e._closePElement(),e._insertElement(t,b.HTML)}(e,t):n===h.EM||n===h.TT?ep(e,t):n===h.BR?eg(e,t):n===h.HR?(e.openElements.hasInButtonScope(h.P)&&e._closePElement(),e._appendElement(t,b.HTML),e.framesetOk=!1,t.ackSelfClosing=!0):n===h.RB?eE(e,t):n===h.RT||n===h.RP?(e.openElements.hasInScope(h.RUBY)&&e.openElements.generateImpliedEndTagsWithExclusion(h.RTC),e._insertElement(t,b.HTML)):n!==h.TH&&n!==h.TD&&n!==h.TR&&eT(e,t);break;case 3:n===h.DIV||n===h.DIR||n===h.NAV?eu(e,t):n===h.PRE?ed(e,t):n===h.BIG?ep(e,t):n===h.IMG||n===h.WBR?eg(e,t):n===h.XMP?(e.openElements.hasInButtonScope(h.P)&&e._closePElement(),e._reconstructActiveFormattingElements(),e.framesetOk=!1,e._switchToTextParsing(t,r.MODE.RAWTEXT)):n===h.SVG?(e._reconstructActiveFormattingElements(),p.adjustTokenSVGAttrs(t),p.adjustTokenXMLAttrs(t),t.selfClosing?e._appendElement(t,b.SVG):e._insertElement(t,b.SVG),t.ackSelfClosing=!0):n===h.RTC?eE(e,t):n!==h.COL&&eT(e,t);break;case 4:n===h.HTML?0===e.openElements.tmplCount&&e.treeAdapter.adoptAttributes(e.openElements.items[0],t.attrs):n===h.BASE||n===h.LINK||n===h.META?er(e,t):n===h.BODY?function(e,t){let n=e.openElements.tryPeekProperlyNestedBodyElement();n&&0===e.openElements.tmplCount&&(e.framesetOk=!1,e.treeAdapter.adoptAttributes(n,t.attrs))}(e,t):n===h.MAIN||n===h.MENU?eu(e,t):n===h.FORM?function(e,t){let n=e.openElements.tmplCount>0;e.formElement&&!n||(e.openElements.hasInButtonScope(h.P)&&e._closePElement(),e._insertElement(t,b.HTML),n||(e.formElement=e.openElements.current))}(e,t):n===h.CODE||n===h.FONT?ep(e,t):n===h.NOBR?(e._reconstructActiveFormattingElements(),e.openElements.hasInScope(h.NOBR)&&(K(e,t),e._reconstructActiveFormattingElements()),e._insertElement(t,b.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)):n===h.AREA?eg(e,t):n===h.MATH?(e._reconstructActiveFormattingElements(),p.adjustTokenMathMLAttrs(t),p.adjustTokenXMLAttrs(t),t.selfClosing?e._appendElement(t,b.MATHML):e._insertElement(t,b.MATHML),t.ackSelfClosing=!0):n===h.MENU?(e.openElements.hasInButtonScope(h.P)&&e._closePElement(),e._insertElement(t,b.HTML)):n!==h.HEAD&&eT(e,t);break;case 5:n===h.STYLE||n===h.TITLE?er(e,t):n===h.ASIDE?eu(e,t):n===h.SMALL?ep(e,t):n===h.TABLE?(e.treeAdapter.getDocumentMode(e.document)!==f.DOCUMENT_MODE.QUIRKS&&e.openElements.hasInButtonScope(h.P)&&e._closePElement(),e._insertElement(t,b.HTML),e.framesetOk=!1,e.insertionMode=I):n===h.EMBED?eg(e,t):n===h.INPUT?function(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,b.HTML);let n=r.getTokenAttr(t,E.TYPE);n&&n.toLowerCase()===S||(e.framesetOk=!1),t.ackSelfClosing=!0}(e,t):n===h.PARAM||n===h.TRACK?ef(e,t):n===h.IMAGE?(t.tagName=h.IMG,eg(e,t)):n!==h.FRAME&&n!==h.TBODY&&n!==h.TFOOT&&n!==h.THEAD&&eT(e,t);break;case 6:n===h.SCRIPT?er(e,t):n===h.CENTER||n===h.FIGURE||n===h.FOOTER||n===h.HEADER||n===h.HGROUP||n===h.DIALOG?eu(e,t):n===h.BUTTON?(e.openElements.hasInScope(h.BUTTON)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(h.BUTTON)),e._reconstructActiveFormattingElements(),e._insertElement(t,b.HTML),e.framesetOk=!1):n===h.STRIKE||n===h.STRONG?ep(e,t):n===h.APPLET||n===h.OBJECT?em(e,t):n===h.KEYGEN?eg(e,t):n===h.SOURCE?ef(e,t):n===h.IFRAME?(e.framesetOk=!1,e._switchToTextParsing(t,r.MODE.RAWTEXT)):n===h.SELECT?(e._reconstructActiveFormattingElements(),e._insertElement(t,b.HTML),e.framesetOk=!1,e.insertionMode===I||e.insertionMode===w||e.insertionMode===L||e.insertionMode===D||e.insertionMode===P?e.insertionMode=F:e.insertionMode=M):n===h.OPTION?eb(e,t):eT(e,t);break;case 7:n===h.BGSOUND?er(e,t):n===h.DETAILS||n===h.ADDRESS||n===h.ARTICLE||n===h.SECTION||n===h.SUMMARY?eu(e,t):n===h.LISTING?ed(e,t):n===h.MARQUEE?em(e,t):n===h.NOEMBED?eh(e,t):n!==h.CAPTION&&eT(e,t);break;case 8:n===h.BASEFONT?er(e,t):n===h.FRAMESET?function(e,t){let n=e.openElements.tryPeekProperlyNestedBodyElement();e.framesetOk&&n&&(e.treeAdapter.detachNode(n),e.openElements.popAllUpToHtmlElement(),e._insertElement(t,b.HTML),e.insertionMode=H)}(e,t):n===h.FIELDSET?eu(e,t):n===h.TEXTAREA?(e._insertElement(t,b.HTML),e.skipNextNewLine=!0,e.tokenizer.state=r.MODE.RCDATA,e.originalInsertionMode=e.insertionMode,e.framesetOk=!1,e.insertionMode=R):n===h.TEMPLATE?er(e,t):n===h.NOSCRIPT?e.options.scriptingEnabled?eh(e,t):eT(e,t):n===h.OPTGROUP?eb(e,t):n!==h.COLGROUP&&eT(e,t);break;case 9:n===h.PLAINTEXT?(e.openElements.hasInButtonScope(h.P)&&e._closePElement(),e._insertElement(t,b.HTML),e.tokenizer.state=r.MODE.PLAINTEXT):eT(e,t);break;case 10:n===h.BLOCKQUOTE||n===h.FIGCAPTION?eu(e,t):eT(e,t);break;default:eT(e,t)}}function ey(e,t){let n=t.tagName;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n))}function eA(e,t){let n=t.tagName;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker())}function e_(e,t){let n=t.tagName;for(let t=e.openElements.stackTop;t>0;t--){let r=e.openElements.items[t];if(e.treeAdapter.getTagName(r)===n){e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.popUntilElementPopped(r);break}if(e._isSpecialElement(r))break}}function ek(e,t){let n=t.tagName;switch(n.length){case 1:n===h.A||n===h.B||n===h.I||n===h.S||n===h.U?K(e,t):n===h.P?(e.openElements.hasInButtonScope(h.P)||e._insertFakeElement(h.P),e._closePElement()):e_(e,t);break;case 2:n===h.DL||n===h.UL||n===h.OL?ey(e,t):n===h.LI?e.openElements.hasInListItemScope(h.LI)&&(e.openElements.generateImpliedEndTagsWithExclusion(h.LI),e.openElements.popUntilTagNamePopped(h.LI)):n===h.DD||n===h.DT?function(e,t){let n=t.tagName;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.popUntilTagNamePopped(n))}(e,t):n===h.H1||n===h.H2||n===h.H3||n===h.H4||n===h.H5||n===h.H6?e.openElements.hasNumberedHeaderInScope()&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilNumberedHeaderPopped()):n===h.BR?(e._reconstructActiveFormattingElements(),e._insertFakeElement(h.BR),e.openElements.pop(),e.framesetOk=!1):n===h.EM||n===h.TT?K(e,t):e_(e,t);break;case 3:n===h.BIG?K(e,t):n===h.DIR||n===h.DIV||n===h.NAV||n===h.PRE?ey(e,t):e_(e,t);break;case 4:n===h.BODY?e.openElements.hasInScope(h.BODY)&&(e.insertionMode=B):n===h.HTML?e.openElements.hasInScope(h.BODY)&&(e.insertionMode=B,e._processToken(t)):n===h.FORM?function(e){let t=e.openElements.tmplCount>0,n=e.formElement;t||(e.formElement=null),(n||t)&&e.openElements.hasInScope(h.FORM)&&(e.openElements.generateImpliedEndTags(),t?e.openElements.popUntilTagNamePopped(h.FORM):e.openElements.remove(n))}(e,t):n===h.CODE||n===h.FONT||n===h.NOBR?K(e,t):n===h.MAIN||n===h.MENU?ey(e,t):e_(e,t);break;case 5:n===h.ASIDE?ey(e,t):n===h.SMALL?K(e,t):e_(e,t);break;case 6:n===h.CENTER||n===h.FIGURE||n===h.FOOTER||n===h.HEADER||n===h.HGROUP||n===h.DIALOG?ey(e,t):n===h.APPLET||n===h.OBJECT?eA(e,t):n===h.STRIKE||n===h.STRONG?K(e,t):e_(e,t);break;case 7:n===h.ADDRESS||n===h.ARTICLE||n===h.DETAILS||n===h.SECTION||n===h.SUMMARY||n===h.LISTING?ey(e,t):n===h.MARQUEE?eA(e,t):e_(e,t);break;case 8:n===h.FIELDSET?ey(e,t):n===h.TEMPLATE?ea(e,t):e_(e,t);break;case 10:n===h.BLOCKQUOTE||n===h.FIGCAPTION?ey(e,t):e_(e,t);break;default:e_(e,t)}}function ev(e,t){e.tmplInsertionModeStackTop>-1?eD(e,t):e.stopped=!0}function eN(e,t){let n=e.openElements.currentTagName;n===h.TABLE||n===h.TBODY||n===h.TFOOT||n===h.THEAD||n===h.TR?(e.pendingCharacterTokens=[],e.hasNonWhitespacePendingCharacterToken=!1,e.originalInsertionMode=e.insertionMode,e.insertionMode=O,e._processToken(t)):eI(e,t)}function eC(e,t){let n=t.tagName;switch(n.length){case 2:n===h.TD||n===h.TH||n===h.TR?(e.openElements.clearBackToTableContext(),e._insertFakeElement(h.TBODY),e.insertionMode=L,e._processToken(t)):eI(e,t);break;case 3:n===h.COL?(e.openElements.clearBackToTableContext(),e._insertFakeElement(h.COLGROUP),e.insertionMode=x,e._processToken(t)):eI(e,t);break;case 4:n===h.FORM?e.formElement||0!==e.openElements.tmplCount||(e._insertElement(t,b.HTML),e.formElement=e.openElements.current,e.openElements.pop()):eI(e,t);break;case 5:n===h.TABLE?e.openElements.hasInTableScope(h.TABLE)&&(e.openElements.popUntilTagNamePopped(h.TABLE),e._resetInsertionMode(),e._processToken(t)):n===h.STYLE?er(e,t):n===h.TBODY||n===h.TFOOT||n===h.THEAD?(e.openElements.clearBackToTableContext(),e._insertElement(t,b.HTML),e.insertionMode=L):n===h.INPUT?function(e,t){let n=r.getTokenAttr(t,E.TYPE);n&&n.toLowerCase()===S?e._appendElement(t,b.HTML):eI(e,t),t.ackSelfClosing=!0}(e,t):eI(e,t);break;case 6:n===h.SCRIPT?er(e,t):eI(e,t);break;case 7:n===h.CAPTION?(e.openElements.clearBackToTableContext(),e.activeFormattingElements.insertMarker(),e._insertElement(t,b.HTML),e.insertionMode=w):eI(e,t);break;case 8:n===h.COLGROUP?(e.openElements.clearBackToTableContext(),e._insertElement(t,b.HTML),e.insertionMode=x):n===h.TEMPLATE?er(e,t):eI(e,t);break;default:eI(e,t)}}function eR(e,t){let n=t.tagName;n===h.TABLE?e.openElements.hasInTableScope(h.TABLE)&&(e.openElements.popUntilTagNamePopped(h.TABLE),e._resetInsertionMode()):n===h.TEMPLATE?ea(e,t):n!==h.BODY&&n!==h.CAPTION&&n!==h.COL&&n!==h.COLGROUP&&n!==h.HTML&&n!==h.TBODY&&n!==h.TD&&n!==h.TFOOT&&n!==h.TH&&n!==h.THEAD&&n!==h.TR&&eI(e,t)}function eI(e,t){let n=e.fosterParentingEnabled;e.fosterParentingEnabled=!0,e._processTokenInBodyMode(t),e.fosterParentingEnabled=n}function eO(e,t){let n=0;if(e.hasNonWhitespacePendingCharacterToken)for(;n0?(e.openElements.popUntilTagNamePopped(h.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e._popTmplInsertionMode(),e._resetInsertionMode(),e._processToken(t)):e.stopped=!0}function eP(e,t){e.insertionMode=C,e._processToken(t)}function eM(e,t){e.insertionMode=C,e._processToken(t)}e.exports=class{constructor(e){this.options=u(T,e),this.treeAdapter=this.options.treeAdapter,this.pendingScript=null,this.options.sourceCodeLocationInfo&&l.install(this,o),this.options.onParseError&&l.install(this,s,{onParseError:this.options.onParseError})}parse(e){let t=this.treeAdapter.createDocument();return this._bootstrap(t,null),this.tokenizer.write(e,!0),this._runParsingLoop(null),t}parseFragment(e,t){t||(t=this.treeAdapter.createElement(h.TEMPLATE,b.HTML,[]));let n=this.treeAdapter.createElement("documentmock",b.HTML,[]);this._bootstrap(n,t),this.treeAdapter.getTagName(t)===h.TEMPLATE&&this._pushTmplInsertionMode(U),this._initTokenizerForFragmentParsing(),this._insertFakeRootElement(),this._resetInsertionMode(),this._findFormInFragmentContext(),this.tokenizer.write(e,!0),this._runParsingLoop(null);let r=this.treeAdapter.getFirstChild(n),a=this.treeAdapter.createDocumentFragment();return this._adoptNodes(r,a),a}_bootstrap(e,t){this.tokenizer=new r(this.options),this.stopped=!1,this.insertionMode=y,this.originalInsertionMode="",this.document=e,this.fragmentContext=t,this.headElement=null,this.formElement=null,this.openElements=new a(this.document,this.treeAdapter),this.activeFormattingElements=new i(this.treeAdapter),this.tmplInsertionModeStack=[],this.tmplInsertionModeStackTop=-1,this.currentTmplInsertionMode=null,this.pendingCharacterTokens=[],this.hasNonWhitespacePendingCharacterToken=!1,this.framesetOk=!0,this.skipNextNewLine=!1,this.fosterParentingEnabled=!1}_err(){}_runParsingLoop(e){for(;!this.stopped;){this._setupTokenizerCDATAMode();let t=this.tokenizer.getNextToken();if(t.type===r.HIBERNATION_TOKEN)break;if(this.skipNextNewLine&&(this.skipNextNewLine=!1,t.type===r.WHITESPACE_CHARACTER_TOKEN&&"\n"===t.chars[0])){if(1===t.chars.length)continue;t.chars=t.chars.substr(1)}if(this._processInputToken(t),e&&this.pendingScript)break}}runParsingLoopForCurrentChunk(e,t){if(this._runParsingLoop(t),t&&this.pendingScript){let e=this.pendingScript;this.pendingScript=null,t(e);return}e&&e()}_setupTokenizerCDATAMode(){let e=this._getAdjustedCurrentElement();this.tokenizer.allowCDATA=e&&e!==this.document&&this.treeAdapter.getNamespaceURI(e)!==b.HTML&&!this._isIntegrationPoint(e)}_switchToTextParsing(e,t){this._insertElement(e,b.HTML),this.tokenizer.state=t,this.originalInsertionMode=this.insertionMode,this.insertionMode=R}switchToPlaintextParsing(){this.insertionMode=R,this.originalInsertionMode=C,this.tokenizer.state=r.MODE.PLAINTEXT}_getAdjustedCurrentElement(){return 0===this.openElements.stackTop&&this.fragmentContext?this.fragmentContext:this.openElements.current}_findFormInFragmentContext(){let e=this.fragmentContext;do{if(this.treeAdapter.getTagName(e)===h.FORM){this.formElement=e;break}e=this.treeAdapter.getParentNode(e)}while(e)}_initTokenizerForFragmentParsing(){if(this.treeAdapter.getNamespaceURI(this.fragmentContext)===b.HTML){let e=this.treeAdapter.getTagName(this.fragmentContext);e===h.TITLE||e===h.TEXTAREA?this.tokenizer.state=r.MODE.RCDATA:e===h.STYLE||e===h.XMP||e===h.IFRAME||e===h.NOEMBED||e===h.NOFRAMES||e===h.NOSCRIPT?this.tokenizer.state=r.MODE.RAWTEXT:e===h.SCRIPT?this.tokenizer.state=r.MODE.SCRIPT_DATA:e===h.PLAINTEXT&&(this.tokenizer.state=r.MODE.PLAINTEXT)}}_setDocumentType(e){let t=e.name||"",n=e.publicId||"",r=e.systemId||"";this.treeAdapter.setDocumentType(this.document,t,n,r)}_attachElementToTree(e){if(this._shouldFosterParentOnInsertion())this._fosterParentElement(e);else{let t=this.openElements.currentTmplContent||this.openElements.current;this.treeAdapter.appendChild(t,e)}}_appendElement(e,t){let n=this.treeAdapter.createElement(e.tagName,t,e.attrs);this._attachElementToTree(n)}_insertElement(e,t){let n=this.treeAdapter.createElement(e.tagName,t,e.attrs);this._attachElementToTree(n),this.openElements.push(n)}_insertFakeElement(e){let t=this.treeAdapter.createElement(e,b.HTML,[]);this._attachElementToTree(t),this.openElements.push(t)}_insertTemplate(e){let t=this.treeAdapter.createElement(e.tagName,b.HTML,e.attrs),n=this.treeAdapter.createDocumentFragment();this.treeAdapter.setTemplateContent(t,n),this._attachElementToTree(t),this.openElements.push(t)}_insertFakeRootElement(){let e=this.treeAdapter.createElement(h.HTML,b.HTML,[]);this.treeAdapter.appendChild(this.openElements.current,e),this.openElements.push(e)}_appendCommentNode(e,t){let n=this.treeAdapter.createCommentNode(e.data);this.treeAdapter.appendChild(t,n)}_insertCharacters(e){if(this._shouldFosterParentOnInsertion())this._fosterParentText(e.chars);else{let t=this.openElements.currentTmplContent||this.openElements.current;this.treeAdapter.insertText(t,e.chars)}}_adoptNodes(e,t){for(let n=this.treeAdapter.getFirstChild(e);n;n=this.treeAdapter.getFirstChild(e))this.treeAdapter.detachNode(n),this.treeAdapter.appendChild(t,n)}_shouldProcessTokenInForeignContent(e){let t=this._getAdjustedCurrentElement();if(!t||t===this.document)return!1;let n=this.treeAdapter.getNamespaceURI(t);if(n===b.HTML||this.treeAdapter.getTagName(t)===h.ANNOTATION_XML&&n===b.MATHML&&e.type===r.START_TAG_TOKEN&&e.tagName===h.SVG)return!1;let a=e.type===r.CHARACTER_TOKEN||e.type===r.NULL_CHARACTER_TOKEN||e.type===r.WHITESPACE_CHARACTER_TOKEN,i=e.type===r.START_TAG_TOKEN&&e.tagName!==h.MGLYPH&&e.tagName!==h.MALIGNMARK;return!((i||a)&&this._isIntegrationPoint(t,b.MATHML)||(e.type===r.START_TAG_TOKEN||a)&&this._isIntegrationPoint(t,b.HTML))&&e.type!==r.EOF_TOKEN}_processToken(e){W[this.insertionMode][e.type](this,e)}_processTokenInBodyMode(e){W[C][e.type](this,e)}_processTokenInForeignContent(e){e.type===r.CHARACTER_TOKEN?(this._insertCharacters(e),this.framesetOk=!1):e.type===r.NULL_CHARACTER_TOKEN?(e.chars=g.REPLACEMENT_CHARACTER,this._insertCharacters(e)):e.type===r.WHITESPACE_CHARACTER_TOKEN?Q(this,e):e.type===r.COMMENT_TOKEN?q(this,e):e.type===r.START_TAG_TOKEN?function(e,t){if(p.causesExit(t)&&!e.fragmentContext){for(;e.treeAdapter.getNamespaceURI(e.openElements.current)!==b.HTML&&!e._isIntegrationPoint(e.openElements.current);)e.openElements.pop();e._processToken(t)}else{let n=e._getAdjustedCurrentElement(),r=e.treeAdapter.getNamespaceURI(n);r===b.MATHML?p.adjustTokenMathMLAttrs(t):r===b.SVG&&(p.adjustTokenSVGTagName(t),p.adjustTokenSVGAttrs(t)),p.adjustTokenXMLAttrs(t),t.selfClosing?e._appendElement(t,r):e._insertElement(t,r),t.ackSelfClosing=!0}}(this,e):e.type===r.END_TAG_TOKEN&&function(e,t){for(let n=e.openElements.stackTop;n>0;n--){let r=e.openElements.items[n];if(e.treeAdapter.getNamespaceURI(r)===b.HTML){e._processToken(t);break}if(e.treeAdapter.getTagName(r).toLowerCase()===t.tagName){e.openElements.popUntilElementPopped(r);break}}}(this,e)}_processInputToken(e){this._shouldProcessTokenInForeignContent(e)?this._processTokenInForeignContent(e):this._processToken(e),e.type===r.START_TAG_TOKEN&&e.selfClosing&&!e.ackSelfClosing&&this._err(m.nonVoidHtmlElementStartTagWithTrailingSolidus)}_isIntegrationPoint(e,t){let n=this.treeAdapter.getTagName(e),r=this.treeAdapter.getNamespaceURI(e),a=this.treeAdapter.getAttrList(e);return p.isIntegrationPoint(n,r,a,t)}_reconstructActiveFormattingElements(){let e=this.activeFormattingElements.length;if(e){let t=e,n=null;do if(t--,(n=this.activeFormattingElements.entries[t]).type===i.MARKER_ENTRY||this.openElements.contains(n.element)){t++;break}while(t>0);for(let r=t;r=0;e--){let n=this.openElements.items[e];0===e&&(t=!0,this.fragmentContext&&(n=this.fragmentContext));let r=this.treeAdapter.getTagName(n),a=j[r];if(a){this.insertionMode=a;break}if(t||r!==h.TD&&r!==h.TH){if(t||r!==h.HEAD){if(r===h.SELECT){this._resetInsertionModeForSelect(e);break}if(r===h.TEMPLATE){this.insertionMode=this.currentTmplInsertionMode;break}if(r===h.HTML){this.insertionMode=this.headElement?N:_;break}else if(t){this.insertionMode=C;break}}else{this.insertionMode=k;break}}else{this.insertionMode=P;break}}}_resetInsertionModeForSelect(e){if(e>0)for(let t=e-1;t>0;t--){let e=this.openElements.items[t],n=this.treeAdapter.getTagName(e);if(n===h.TEMPLATE)break;if(n===h.TABLE){this.insertionMode=F;return}}this.insertionMode=M}_pushTmplInsertionMode(e){this.tmplInsertionModeStack.push(e),this.tmplInsertionModeStackTop++,this.currentTmplInsertionMode=e}_popTmplInsertionMode(){this.tmplInsertionModeStack.pop(),this.tmplInsertionModeStackTop--,this.currentTmplInsertionMode=this.tmplInsertionModeStack[this.tmplInsertionModeStackTop]}_isElementCausesFosterParenting(e){let t=this.treeAdapter.getTagName(e);return t===h.TABLE||t===h.TBODY||t===h.TFOOT||t===h.THEAD||t===h.TR}_shouldFosterParentOnInsertion(){return this.fosterParentingEnabled&&this._isElementCausesFosterParenting(this.openElements.current)}_findFosterParentingLocation(){let e={parent:null,beforeElement:null};for(let t=this.openElements.stackTop;t>=0;t--){let n=this.openElements.items[t],r=this.treeAdapter.getTagName(n),a=this.treeAdapter.getNamespaceURI(n);if(r===h.TEMPLATE&&a===b.HTML){e.parent=this.treeAdapter.getTemplateContent(n);break}if(r===h.TABLE){e.parent=this.treeAdapter.getParentNode(n),e.parent?e.beforeElement=n:e.parent=this.openElements.items[t-1];break}}return e.parent||(e.parent=this.openElements.items[0]),e}_fosterParentElement(e){let t=this._findFosterParentingLocation();t.beforeElement?this.treeAdapter.insertBefore(t.parent,e,t.beforeElement):this.treeAdapter.appendChild(t.parent,e)}_fosterParentText(e){let t=this._findFosterParentingLocation();t.beforeElement?this.treeAdapter.insertTextBefore(t.parent,e,t.beforeElement):this.treeAdapter.insertText(t.parent,e)}_isSpecialElement(e){let t=this.treeAdapter.getTagName(e),n=this.treeAdapter.getNamespaceURI(e);return f.SPECIAL_ELEMENTS[n][t]}}},46519:function(e,t,n){"use strict";let r=n(16152),a=r.TAG_NAMES,i=r.NAMESPACES;function o(e){switch(e.length){case 1:return e===a.P;case 2:return e===a.RB||e===a.RP||e===a.RT||e===a.DD||e===a.DT||e===a.LI;case 3:return e===a.RTC;case 6:return e===a.OPTION;case 8:return e===a.OPTGROUP}return!1}function s(e,t){switch(e.length){case 2:if(e===a.TD||e===a.TH)return t===i.HTML;if(e===a.MI||e===a.MO||e===a.MN||e===a.MS)return t===i.MATHML;break;case 4:if(e===a.HTML)return t===i.HTML;if(e===a.DESC)return t===i.SVG;break;case 5:if(e===a.TABLE)return t===i.HTML;if(e===a.MTEXT)return t===i.MATHML;if(e===a.TITLE)return t===i.SVG;break;case 6:return(e===a.APPLET||e===a.OBJECT)&&t===i.HTML;case 7:return(e===a.CAPTION||e===a.MARQUEE)&&t===i.HTML;case 8:return e===a.TEMPLATE&&t===i.HTML;case 13:return e===a.FOREIGN_OBJECT&&t===i.SVG;case 14:return e===a.ANNOTATION_XML&&t===i.MATHML}return!1}e.exports=class{constructor(e,t){this.stackTop=-1,this.items=[],this.current=e,this.currentTagName=null,this.currentTmplContent=null,this.tmplCount=0,this.treeAdapter=t}_indexOf(e){let t=-1;for(let n=this.stackTop;n>=0;n--)if(this.items[n]===e){t=n;break}return t}_isInTemplate(){return this.currentTagName===a.TEMPLATE&&this.treeAdapter.getNamespaceURI(this.current)===i.HTML}_updateCurrentElement(){this.current=this.items[this.stackTop],this.currentTagName=this.current&&this.treeAdapter.getTagName(this.current),this.currentTmplContent=this._isInTemplate()?this.treeAdapter.getTemplateContent(this.current):null}push(e){this.items[++this.stackTop]=e,this._updateCurrentElement(),this._isInTemplate()&&this.tmplCount++}pop(){this.stackTop--,this.tmplCount>0&&this._isInTemplate()&&this.tmplCount--,this._updateCurrentElement()}replace(e,t){let n=this._indexOf(e);this.items[n]=t,n===this.stackTop&&this._updateCurrentElement()}insertAfter(e,t){let n=this._indexOf(e)+1;this.items.splice(n,0,t),n===++this.stackTop&&this._updateCurrentElement()}popUntilTagNamePopped(e){for(;this.stackTop>-1;){let t=this.currentTagName,n=this.treeAdapter.getNamespaceURI(this.current);if(this.pop(),t===e&&n===i.HTML)break}}popUntilElementPopped(e){for(;this.stackTop>-1;){let t=this.current;if(this.pop(),t===e)break}}popUntilNumberedHeaderPopped(){for(;this.stackTop>-1;){let e=this.currentTagName,t=this.treeAdapter.getNamespaceURI(this.current);if(this.pop(),e===a.H1||e===a.H2||e===a.H3||e===a.H4||e===a.H5||e===a.H6&&t===i.HTML)break}}popUntilTableCellPopped(){for(;this.stackTop>-1;){let e=this.currentTagName,t=this.treeAdapter.getNamespaceURI(this.current);if(this.pop(),e===a.TD||e===a.TH&&t===i.HTML)break}}popAllUpToHtmlElement(){this.stackTop=0,this._updateCurrentElement()}clearBackToTableContext(){for(;this.currentTagName!==a.TABLE&&this.currentTagName!==a.TEMPLATE&&this.currentTagName!==a.HTML||this.treeAdapter.getNamespaceURI(this.current)!==i.HTML;)this.pop()}clearBackToTableBodyContext(){for(;this.currentTagName!==a.TBODY&&this.currentTagName!==a.TFOOT&&this.currentTagName!==a.THEAD&&this.currentTagName!==a.TEMPLATE&&this.currentTagName!==a.HTML||this.treeAdapter.getNamespaceURI(this.current)!==i.HTML;)this.pop()}clearBackToTableRowContext(){for(;this.currentTagName!==a.TR&&this.currentTagName!==a.TEMPLATE&&this.currentTagName!==a.HTML||this.treeAdapter.getNamespaceURI(this.current)!==i.HTML;)this.pop()}remove(e){for(let t=this.stackTop;t>=0;t--)if(this.items[t]===e){this.items.splice(t,1),this.stackTop--,this._updateCurrentElement();break}}tryPeekProperlyNestedBodyElement(){let e=this.items[1];return e&&this.treeAdapter.getTagName(e)===a.BODY?e:null}contains(e){return this._indexOf(e)>-1}getCommonAncestor(e){let t=this._indexOf(e);return--t>=0?this.items[t]:null}isRootHtmlElementCurrent(){return 0===this.stackTop&&this.currentTagName===a.HTML}hasInScope(e){for(let t=this.stackTop;t>=0;t--){let n=this.treeAdapter.getTagName(this.items[t]),r=this.treeAdapter.getNamespaceURI(this.items[t]);if(n===e&&r===i.HTML)break;if(s(n,r))return!1}return!0}hasNumberedHeaderInScope(){for(let e=this.stackTop;e>=0;e--){let t=this.treeAdapter.getTagName(this.items[e]),n=this.treeAdapter.getNamespaceURI(this.items[e]);if((t===a.H1||t===a.H2||t===a.H3||t===a.H4||t===a.H5||t===a.H6)&&n===i.HTML)break;if(s(t,n))return!1}return!0}hasInListItemScope(e){for(let t=this.stackTop;t>=0;t--){let n=this.treeAdapter.getTagName(this.items[t]),r=this.treeAdapter.getNamespaceURI(this.items[t]);if(n===e&&r===i.HTML)break;if((n===a.UL||n===a.OL)&&r===i.HTML||s(n,r))return!1}return!0}hasInButtonScope(e){for(let t=this.stackTop;t>=0;t--){let n=this.treeAdapter.getTagName(this.items[t]),r=this.treeAdapter.getNamespaceURI(this.items[t]);if(n===e&&r===i.HTML)break;if(n===a.BUTTON&&r===i.HTML||s(n,r))return!1}return!0}hasInTableScope(e){for(let t=this.stackTop;t>=0;t--){let n=this.treeAdapter.getTagName(this.items[t]),r=this.treeAdapter.getNamespaceURI(this.items[t]);if(r===i.HTML){if(n===e)break;if(n===a.TABLE||n===a.TEMPLATE||n===a.HTML)return!1}}return!0}hasTableBodyContextInTableScope(){for(let e=this.stackTop;e>=0;e--){let t=this.treeAdapter.getTagName(this.items[e]),n=this.treeAdapter.getNamespaceURI(this.items[e]);if(n===i.HTML){if(t===a.TBODY||t===a.THEAD||t===a.TFOOT)break;if(t===a.TABLE||t===a.HTML)return!1}}return!0}hasInSelectScope(e){for(let t=this.stackTop;t>=0;t--){let n=this.treeAdapter.getTagName(this.items[t]),r=this.treeAdapter.getNamespaceURI(this.items[t]);if(r===i.HTML){if(n===e)break;if(n!==a.OPTION&&n!==a.OPTGROUP)return!1}}return!0}generateImpliedEndTags(){for(;o(this.currentTagName);)this.pop()}generateImpliedEndTagsThoroughly(){for(;function(e){switch(e.length){case 1:return e===a.P;case 2:return e===a.RB||e===a.RP||e===a.RT||e===a.DD||e===a.DT||e===a.LI||e===a.TD||e===a.TH||e===a.TR;case 3:return e===a.RTC;case 5:return e===a.TBODY||e===a.TFOOT||e===a.THEAD;case 6:return e===a.OPTION;case 7:return e===a.CAPTION;case 8:return e===a.OPTGROUP||e===a.COLGROUP}return!1}(this.currentTagName);)this.pop()}generateImpliedEndTagsWithExclusion(e){for(;o(this.currentTagName)&&this.currentTagName!==e;)this.pop()}}},55763:function(e,t,n){"use strict";let r=n(77118),a=n(54284),i=n(5482),o=n(41734),s=a.CODE_POINTS,l=a.CODE_POINT_SEQUENCES,c={128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376},u="DATA_STATE",d="RCDATA_STATE",p="RAWTEXT_STATE",m="SCRIPT_DATA_STATE",g="PLAINTEXT_STATE",f="TAG_OPEN_STATE",h="END_TAG_OPEN_STATE",b="TAG_NAME_STATE",E="RCDATA_LESS_THAN_SIGN_STATE",T="RCDATA_END_TAG_OPEN_STATE",S="RCDATA_END_TAG_NAME_STATE",y="RAWTEXT_LESS_THAN_SIGN_STATE",A="RAWTEXT_END_TAG_OPEN_STATE",_="RAWTEXT_END_TAG_NAME_STATE",k="SCRIPT_DATA_LESS_THAN_SIGN_STATE",v="SCRIPT_DATA_END_TAG_OPEN_STATE",N="SCRIPT_DATA_END_TAG_NAME_STATE",C="SCRIPT_DATA_ESCAPE_START_STATE",R="SCRIPT_DATA_ESCAPE_START_DASH_STATE",I="SCRIPT_DATA_ESCAPED_STATE",O="SCRIPT_DATA_ESCAPED_DASH_STATE",w="SCRIPT_DATA_ESCAPED_DASH_DASH_STATE",x="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE",L="SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE",D="SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE",P="SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE",M="SCRIPT_DATA_DOUBLE_ESCAPED_STATE",F="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE",U="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE",B="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE",H="SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE",G="BEFORE_ATTRIBUTE_NAME_STATE",z="ATTRIBUTE_NAME_STATE",$="AFTER_ATTRIBUTE_NAME_STATE",j="BEFORE_ATTRIBUTE_VALUE_STATE",V="ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE",W="ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE",K="ATTRIBUTE_VALUE_UNQUOTED_STATE",Z="AFTER_ATTRIBUTE_VALUE_QUOTED_STATE",Y="SELF_CLOSING_START_TAG_STATE",q="BOGUS_COMMENT_STATE",X="MARKUP_DECLARATION_OPEN_STATE",Q="COMMENT_START_STATE",J="COMMENT_START_DASH_STATE",ee="COMMENT_STATE",et="COMMENT_LESS_THAN_SIGN_STATE",en="COMMENT_LESS_THAN_SIGN_BANG_STATE",er="COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE",ea="COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE",ei="COMMENT_END_DASH_STATE",eo="COMMENT_END_STATE",es="COMMENT_END_BANG_STATE",el="DOCTYPE_STATE",ec="BEFORE_DOCTYPE_NAME_STATE",eu="DOCTYPE_NAME_STATE",ed="AFTER_DOCTYPE_NAME_STATE",ep="AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE",em="BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE",eg="DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE",ef="DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE",eh="AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE",eb="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE",eE="AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE",eT="BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE",eS="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE",ey="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE",eA="AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE",e_="BOGUS_DOCTYPE_STATE",ek="CDATA_SECTION_STATE",ev="CDATA_SECTION_BRACKET_STATE",eN="CDATA_SECTION_END_STATE",eC="CHARACTER_REFERENCE_STATE",eR="NAMED_CHARACTER_REFERENCE_STATE",eI="AMBIGUOS_AMPERSAND_STATE",eO="NUMERIC_CHARACTER_REFERENCE_STATE",ew="HEXADEMICAL_CHARACTER_REFERENCE_START_STATE",ex="DECIMAL_CHARACTER_REFERENCE_START_STATE",eL="HEXADEMICAL_CHARACTER_REFERENCE_STATE",eD="DECIMAL_CHARACTER_REFERENCE_STATE",eP="NUMERIC_CHARACTER_REFERENCE_END_STATE";function eM(e){return e===s.SPACE||e===s.LINE_FEED||e===s.TABULATION||e===s.FORM_FEED}function eF(e){return e>=s.DIGIT_0&&e<=s.DIGIT_9}function eU(e){return e>=s.LATIN_CAPITAL_A&&e<=s.LATIN_CAPITAL_Z}function eB(e){return e>=s.LATIN_SMALL_A&&e<=s.LATIN_SMALL_Z}function eH(e){return eB(e)||eU(e)}function eG(e){return eH(e)||eF(e)}function ez(e){return e>=s.LATIN_CAPITAL_A&&e<=s.LATIN_CAPITAL_F}function e$(e){return e>=s.LATIN_SMALL_A&&e<=s.LATIN_SMALL_F}function ej(e){return e<=65535?String.fromCharCode(e):String.fromCharCode((e-=65536)>>>10&1023|55296)+String.fromCharCode(56320|1023&e)}function eV(e){return String.fromCharCode(e+32)}function eW(e,t){let n=i[++e],r=++e,a=r+n-1;for(;r<=a;){let e=r+a>>>1,o=i[e];if(ot))return i[e+n];a=e-1}}return -1}class eK{constructor(){this.preprocessor=new r,this.tokenQueue=[],this.allowCDATA=!1,this.state=u,this.returnState="",this.charRefCode=-1,this.tempBuff=[],this.lastStartTagName="",this.consumedAfterSnapshot=-1,this.active=!1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr=null}_err(){}_errOnNextCodePoint(e){this._consume(),this._err(e),this._unconsume()}getNextToken(){for(;!this.tokenQueue.length&&this.active;){this.consumedAfterSnapshot=0;let e=this._consume();this._ensureHibernation()||this[this.state](e)}return this.tokenQueue.shift()}write(e,t){this.active=!0,this.preprocessor.write(e,t)}insertHtmlAtCurrentPos(e){this.active=!0,this.preprocessor.insertHtmlAtCurrentPos(e)}_ensureHibernation(){if(this.preprocessor.endOfChunkHit){for(;this.consumedAfterSnapshot>0;this.consumedAfterSnapshot--)this.preprocessor.retreat();return this.active=!1,this.tokenQueue.push({type:eK.HIBERNATION_TOKEN}),!0}return!1}_consume(){return this.consumedAfterSnapshot++,this.preprocessor.advance()}_unconsume(){this.consumedAfterSnapshot--,this.preprocessor.retreat()}_reconsumeInState(e){this.state=e,this._unconsume()}_consumeSequenceIfMatch(e,t,n){let r,a=0,i=!0,o=e.length,l=0,c=t;for(;l0&&(c=this._consume(),a++),c===s.EOF||c!==(r=e[l])&&(n||c!==r+32)){i=!1;break}if(!i)for(;a--;)this._unconsume();return i}_isTempBufferEqualToScriptString(){if(this.tempBuff.length!==l.SCRIPT_STRING.length)return!1;for(let e=0;e0&&this._err(o.endTagWithAttributes),e.selfClosing&&this._err(o.endTagWithTrailingSolidus)),this.tokenQueue.push(e)}_emitCurrentCharacterToken(){this.currentCharacterToken&&(this.tokenQueue.push(this.currentCharacterToken),this.currentCharacterToken=null)}_emitEOFToken(){this._createEOFToken(),this._emitCurrentToken()}_appendCharToCurrentCharacterToken(e,t){this.currentCharacterToken&&this.currentCharacterToken.type!==e&&this._emitCurrentCharacterToken(),this.currentCharacterToken?this.currentCharacterToken.chars+=t:this._createCharacterToken(e,t)}_emitCodePoint(e){let t=eK.CHARACTER_TOKEN;eM(e)?t=eK.WHITESPACE_CHARACTER_TOKEN:e===s.NULL&&(t=eK.NULL_CHARACTER_TOKEN),this._appendCharToCurrentCharacterToken(t,ej(e))}_emitSeveralCodePoints(e){for(let t=0;t-1;){let e=i[r],a=e<7,o=a&&1&e;o&&(t=2&e?[i[++r],i[++r]]:[i[++r]],n=0);let l=this._consume();if(this.tempBuff.push(l),n++,l===s.EOF)break;r=a?4&e?eW(r,l):-1:l===e?++r:-1}for(;n--;)this.tempBuff.pop(),this._unconsume();return t}_isCharacterReferenceInAttribute(){return this.returnState===V||this.returnState===W||this.returnState===K}_isCharacterReferenceAttributeQuirk(e){if(!e&&this._isCharacterReferenceInAttribute()){let e=this._consume();return this._unconsume(),e===s.EQUALS_SIGN||eG(e)}return!1}_flushCodePointsConsumedAsCharacterReference(){if(this._isCharacterReferenceInAttribute())for(let e=0;e")):e===s.NULL?(this._err(o.unexpectedNullCharacter),this.state=I,this._emitChars(a.REPLACEMENT_CHARACTER)):e===s.EOF?(this._err(o.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):(this.state=I,this._emitCodePoint(e))}[x](e){e===s.SOLIDUS?(this.tempBuff=[],this.state=L):eH(e)?(this.tempBuff=[],this._emitChars("<"),this._reconsumeInState(P)):(this._emitChars("<"),this._reconsumeInState(I))}[L](e){eH(e)?(this._createEndTagToken(),this._reconsumeInState(D)):(this._emitChars("")):e===s.NULL?(this._err(o.unexpectedNullCharacter),this.state=M,this._emitChars(a.REPLACEMENT_CHARACTER)):e===s.EOF?(this._err(o.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):(this.state=M,this._emitCodePoint(e))}[B](e){e===s.SOLIDUS?(this.tempBuff=[],this.state=H,this._emitChars("/")):this._reconsumeInState(M)}[H](e){eM(e)||e===s.SOLIDUS||e===s.GREATER_THAN_SIGN?(this.state=this._isTempBufferEqualToScriptString()?I:M,this._emitCodePoint(e)):eU(e)?(this.tempBuff.push(e+32),this._emitCodePoint(e)):eB(e)?(this.tempBuff.push(e),this._emitCodePoint(e)):this._reconsumeInState(M)}[G](e){eM(e)||(e===s.SOLIDUS||e===s.GREATER_THAN_SIGN||e===s.EOF?this._reconsumeInState($):e===s.EQUALS_SIGN?(this._err(o.unexpectedEqualsSignBeforeAttributeName),this._createAttr("="),this.state=z):(this._createAttr(""),this._reconsumeInState(z)))}[z](e){eM(e)||e===s.SOLIDUS||e===s.GREATER_THAN_SIGN||e===s.EOF?(this._leaveAttrName($),this._unconsume()):e===s.EQUALS_SIGN?this._leaveAttrName(j):eU(e)?this.currentAttr.name+=eV(e):e===s.QUOTATION_MARK||e===s.APOSTROPHE||e===s.LESS_THAN_SIGN?(this._err(o.unexpectedCharacterInAttributeName),this.currentAttr.name+=ej(e)):e===s.NULL?(this._err(o.unexpectedNullCharacter),this.currentAttr.name+=a.REPLACEMENT_CHARACTER):this.currentAttr.name+=ej(e)}[$](e){eM(e)||(e===s.SOLIDUS?this.state=Y:e===s.EQUALS_SIGN?this.state=j:e===s.GREATER_THAN_SIGN?(this.state=u,this._emitCurrentToken()):e===s.EOF?(this._err(o.eofInTag),this._emitEOFToken()):(this._createAttr(""),this._reconsumeInState(z)))}[j](e){eM(e)||(e===s.QUOTATION_MARK?this.state=V:e===s.APOSTROPHE?this.state=W:e===s.GREATER_THAN_SIGN?(this._err(o.missingAttributeValue),this.state=u,this._emitCurrentToken()):this._reconsumeInState(K))}[V](e){e===s.QUOTATION_MARK?this.state=Z:e===s.AMPERSAND?(this.returnState=V,this.state=eC):e===s.NULL?(this._err(o.unexpectedNullCharacter),this.currentAttr.value+=a.REPLACEMENT_CHARACTER):e===s.EOF?(this._err(o.eofInTag),this._emitEOFToken()):this.currentAttr.value+=ej(e)}[W](e){e===s.APOSTROPHE?this.state=Z:e===s.AMPERSAND?(this.returnState=W,this.state=eC):e===s.NULL?(this._err(o.unexpectedNullCharacter),this.currentAttr.value+=a.REPLACEMENT_CHARACTER):e===s.EOF?(this._err(o.eofInTag),this._emitEOFToken()):this.currentAttr.value+=ej(e)}[K](e){eM(e)?this._leaveAttrValue(G):e===s.AMPERSAND?(this.returnState=K,this.state=eC):e===s.GREATER_THAN_SIGN?(this._leaveAttrValue(u),this._emitCurrentToken()):e===s.NULL?(this._err(o.unexpectedNullCharacter),this.currentAttr.value+=a.REPLACEMENT_CHARACTER):e===s.QUOTATION_MARK||e===s.APOSTROPHE||e===s.LESS_THAN_SIGN||e===s.EQUALS_SIGN||e===s.GRAVE_ACCENT?(this._err(o.unexpectedCharacterInUnquotedAttributeValue),this.currentAttr.value+=ej(e)):e===s.EOF?(this._err(o.eofInTag),this._emitEOFToken()):this.currentAttr.value+=ej(e)}[Z](e){eM(e)?this._leaveAttrValue(G):e===s.SOLIDUS?this._leaveAttrValue(Y):e===s.GREATER_THAN_SIGN?(this._leaveAttrValue(u),this._emitCurrentToken()):e===s.EOF?(this._err(o.eofInTag),this._emitEOFToken()):(this._err(o.missingWhitespaceBetweenAttributes),this._reconsumeInState(G))}[Y](e){e===s.GREATER_THAN_SIGN?(this.currentToken.selfClosing=!0,this.state=u,this._emitCurrentToken()):e===s.EOF?(this._err(o.eofInTag),this._emitEOFToken()):(this._err(o.unexpectedSolidusInTag),this._reconsumeInState(G))}[q](e){e===s.GREATER_THAN_SIGN?(this.state=u,this._emitCurrentToken()):e===s.EOF?(this._emitCurrentToken(),this._emitEOFToken()):e===s.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.data+=a.REPLACEMENT_CHARACTER):this.currentToken.data+=ej(e)}[X](e){this._consumeSequenceIfMatch(l.DASH_DASH_STRING,e,!0)?(this._createCommentToken(),this.state=Q):this._consumeSequenceIfMatch(l.DOCTYPE_STRING,e,!1)?this.state=el:this._consumeSequenceIfMatch(l.CDATA_START_STRING,e,!0)?this.allowCDATA?this.state=ek:(this._err(o.cdataInHtmlContent),this._createCommentToken(),this.currentToken.data="[CDATA[",this.state=q):this._ensureHibernation()||(this._err(o.incorrectlyOpenedComment),this._createCommentToken(),this._reconsumeInState(q))}[Q](e){e===s.HYPHEN_MINUS?this.state=J:e===s.GREATER_THAN_SIGN?(this._err(o.abruptClosingOfEmptyComment),this.state=u,this._emitCurrentToken()):this._reconsumeInState(ee)}[J](e){e===s.HYPHEN_MINUS?this.state=eo:e===s.GREATER_THAN_SIGN?(this._err(o.abruptClosingOfEmptyComment),this.state=u,this._emitCurrentToken()):e===s.EOF?(this._err(o.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="-",this._reconsumeInState(ee))}[ee](e){e===s.HYPHEN_MINUS?this.state=ei:e===s.LESS_THAN_SIGN?(this.currentToken.data+="<",this.state=et):e===s.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.data+=a.REPLACEMENT_CHARACTER):e===s.EOF?(this._err(o.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.data+=ej(e)}[et](e){e===s.EXCLAMATION_MARK?(this.currentToken.data+="!",this.state=en):e===s.LESS_THAN_SIGN?this.currentToken.data+="!":this._reconsumeInState(ee)}[en](e){e===s.HYPHEN_MINUS?this.state=er:this._reconsumeInState(ee)}[er](e){e===s.HYPHEN_MINUS?this.state=ea:this._reconsumeInState(ei)}[ea](e){e!==s.GREATER_THAN_SIGN&&e!==s.EOF&&this._err(o.nestedComment),this._reconsumeInState(eo)}[ei](e){e===s.HYPHEN_MINUS?this.state=eo:e===s.EOF?(this._err(o.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="-",this._reconsumeInState(ee))}[eo](e){e===s.GREATER_THAN_SIGN?(this.state=u,this._emitCurrentToken()):e===s.EXCLAMATION_MARK?this.state=es:e===s.HYPHEN_MINUS?this.currentToken.data+="-":e===s.EOF?(this._err(o.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="--",this._reconsumeInState(ee))}[es](e){e===s.HYPHEN_MINUS?(this.currentToken.data+="--!",this.state=ei):e===s.GREATER_THAN_SIGN?(this._err(o.incorrectlyClosedComment),this.state=u,this._emitCurrentToken()):e===s.EOF?(this._err(o.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="--!",this._reconsumeInState(ee))}[el](e){eM(e)?this.state=ec:e===s.GREATER_THAN_SIGN?this._reconsumeInState(ec):e===s.EOF?(this._err(o.eofInDoctype),this._createDoctypeToken(null),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.missingWhitespaceBeforeDoctypeName),this._reconsumeInState(ec))}[ec](e){eM(e)||(eU(e)?(this._createDoctypeToken(eV(e)),this.state=eu):e===s.NULL?(this._err(o.unexpectedNullCharacter),this._createDoctypeToken(a.REPLACEMENT_CHARACTER),this.state=eu):e===s.GREATER_THAN_SIGN?(this._err(o.missingDoctypeName),this._createDoctypeToken(null),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=u):e===s.EOF?(this._err(o.eofInDoctype),this._createDoctypeToken(null),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._createDoctypeToken(ej(e)),this.state=eu))}[eu](e){eM(e)?this.state=ed:e===s.GREATER_THAN_SIGN?(this.state=u,this._emitCurrentToken()):eU(e)?this.currentToken.name+=eV(e):e===s.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.name+=a.REPLACEMENT_CHARACTER):e===s.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.name+=ej(e)}[ed](e){!eM(e)&&(e===s.GREATER_THAN_SIGN?(this.state=u,this._emitCurrentToken()):e===s.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this._consumeSequenceIfMatch(l.PUBLIC_STRING,e,!1)?this.state=ep:this._consumeSequenceIfMatch(l.SYSTEM_STRING,e,!1)?this.state=eE:this._ensureHibernation()||(this._err(o.invalidCharacterSequenceAfterDoctypeName),this.currentToken.forceQuirks=!0,this._reconsumeInState(e_)))}[ep](e){eM(e)?this.state=em:e===s.QUOTATION_MARK?(this._err(o.missingWhitespaceAfterDoctypePublicKeyword),this.currentToken.publicId="",this.state=eg):e===s.APOSTROPHE?(this._err(o.missingWhitespaceAfterDoctypePublicKeyword),this.currentToken.publicId="",this.state=ef):e===s.GREATER_THAN_SIGN?(this._err(o.missingDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this.state=u,this._emitCurrentToken()):e===s.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.missingQuoteBeforeDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(e_))}[em](e){eM(e)||(e===s.QUOTATION_MARK?(this.currentToken.publicId="",this.state=eg):e===s.APOSTROPHE?(this.currentToken.publicId="",this.state=ef):e===s.GREATER_THAN_SIGN?(this._err(o.missingDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this.state=u,this._emitCurrentToken()):e===s.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.missingQuoteBeforeDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(e_)))}[eg](e){e===s.QUOTATION_MARK?this.state=eh:e===s.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.publicId+=a.REPLACEMENT_CHARACTER):e===s.GREATER_THAN_SIGN?(this._err(o.abruptDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=u):e===s.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.publicId+=ej(e)}[ef](e){e===s.APOSTROPHE?this.state=eh:e===s.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.publicId+=a.REPLACEMENT_CHARACTER):e===s.GREATER_THAN_SIGN?(this._err(o.abruptDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=u):e===s.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.publicId+=ej(e)}[eh](e){eM(e)?this.state=eb:e===s.GREATER_THAN_SIGN?(this.state=u,this._emitCurrentToken()):e===s.QUOTATION_MARK?(this._err(o.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),this.currentToken.systemId="",this.state=eS):e===s.APOSTROPHE?(this._err(o.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),this.currentToken.systemId="",this.state=ey):e===s.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(e_))}[eb](e){eM(e)||(e===s.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=u):e===s.QUOTATION_MARK?(this.currentToken.systemId="",this.state=eS):e===s.APOSTROPHE?(this.currentToken.systemId="",this.state=ey):e===s.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(e_)))}[eE](e){eM(e)?this.state=eT:e===s.QUOTATION_MARK?(this._err(o.missingWhitespaceAfterDoctypeSystemKeyword),this.currentToken.systemId="",this.state=eS):e===s.APOSTROPHE?(this._err(o.missingWhitespaceAfterDoctypeSystemKeyword),this.currentToken.systemId="",this.state=ey):e===s.GREATER_THAN_SIGN?(this._err(o.missingDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this.state=u,this._emitCurrentToken()):e===s.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(e_))}[eT](e){eM(e)||(e===s.QUOTATION_MARK?(this.currentToken.systemId="",this.state=eS):e===s.APOSTROPHE?(this.currentToken.systemId="",this.state=ey):e===s.GREATER_THAN_SIGN?(this._err(o.missingDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this.state=u,this._emitCurrentToken()):e===s.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(e_)))}[eS](e){e===s.QUOTATION_MARK?this.state=eA:e===s.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.systemId+=a.REPLACEMENT_CHARACTER):e===s.GREATER_THAN_SIGN?(this._err(o.abruptDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=u):e===s.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.systemId+=ej(e)}[ey](e){e===s.APOSTROPHE?this.state=eA:e===s.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.systemId+=a.REPLACEMENT_CHARACTER):e===s.GREATER_THAN_SIGN?(this._err(o.abruptDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=u):e===s.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.systemId+=ej(e)}[eA](e){eM(e)||(e===s.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=u):e===s.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.unexpectedCharacterAfterDoctypeSystemIdentifier),this._reconsumeInState(e_)))}[e_](e){e===s.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=u):e===s.NULL?this._err(o.unexpectedNullCharacter):e===s.EOF&&(this._emitCurrentToken(),this._emitEOFToken())}[ek](e){e===s.RIGHT_SQUARE_BRACKET?this.state=ev:e===s.EOF?(this._err(o.eofInCdata),this._emitEOFToken()):this._emitCodePoint(e)}[ev](e){e===s.RIGHT_SQUARE_BRACKET?this.state=eN:(this._emitChars("]"),this._reconsumeInState(ek))}[eN](e){e===s.GREATER_THAN_SIGN?this.state=u:e===s.RIGHT_SQUARE_BRACKET?this._emitChars("]"):(this._emitChars("]]"),this._reconsumeInState(ek))}[eC](e){this.tempBuff=[s.AMPERSAND],e===s.NUMBER_SIGN?(this.tempBuff.push(e),this.state=eO):eG(e)?this._reconsumeInState(eR):(this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState))}[eR](e){let t=this._matchNamedCharacterReference(e);if(this._ensureHibernation())this.tempBuff=[s.AMPERSAND];else if(t){let e=this.tempBuff[this.tempBuff.length-1]===s.SEMICOLON;this._isCharacterReferenceAttributeQuirk(e)||(e||this._errOnNextCodePoint(o.missingSemicolonAfterCharacterReference),this.tempBuff=t),this._flushCodePointsConsumedAsCharacterReference(),this.state=this.returnState}else this._flushCodePointsConsumedAsCharacterReference(),this.state=eI}[eI](e){eG(e)?this._isCharacterReferenceInAttribute()?this.currentAttr.value+=ej(e):this._emitCodePoint(e):(e===s.SEMICOLON&&this._err(o.unknownNamedCharacterReference),this._reconsumeInState(this.returnState))}[eO](e){this.charRefCode=0,e===s.LATIN_SMALL_X||e===s.LATIN_CAPITAL_X?(this.tempBuff.push(e),this.state=ew):this._reconsumeInState(ex)}[ew](e){eF(e)||ez(e)||e$(e)?this._reconsumeInState(eL):(this._err(o.absenceOfDigitsInNumericCharacterReference),this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState))}[ex](e){eF(e)?this._reconsumeInState(eD):(this._err(o.absenceOfDigitsInNumericCharacterReference),this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState))}[eL](e){ez(e)?this.charRefCode=16*this.charRefCode+e-55:e$(e)?this.charRefCode=16*this.charRefCode+e-87:eF(e)?this.charRefCode=16*this.charRefCode+e-48:e===s.SEMICOLON?this.state=eP:(this._err(o.missingSemicolonAfterCharacterReference),this._reconsumeInState(eP))}[eD](e){eF(e)?this.charRefCode=10*this.charRefCode+e-48:e===s.SEMICOLON?this.state=eP:(this._err(o.missingSemicolonAfterCharacterReference),this._reconsumeInState(eP))}[eP](){if(this.charRefCode===s.NULL)this._err(o.nullCharacterReference),this.charRefCode=s.REPLACEMENT_CHARACTER;else if(this.charRefCode>1114111)this._err(o.characterReferenceOutsideUnicodeRange),this.charRefCode=s.REPLACEMENT_CHARACTER;else if(a.isSurrogate(this.charRefCode))this._err(o.surrogateCharacterReference),this.charRefCode=s.REPLACEMENT_CHARACTER;else if(a.isUndefinedCodePoint(this.charRefCode))this._err(o.noncharacterCharacterReference);else if(a.isControlCodePoint(this.charRefCode)||this.charRefCode===s.CARRIAGE_RETURN){this._err(o.controlCharacterReference);let e=c[this.charRefCode];e&&(this.charRefCode=e)}this.tempBuff=[this.charRefCode],this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState)}}eK.CHARACTER_TOKEN="CHARACTER_TOKEN",eK.NULL_CHARACTER_TOKEN="NULL_CHARACTER_TOKEN",eK.WHITESPACE_CHARACTER_TOKEN="WHITESPACE_CHARACTER_TOKEN",eK.START_TAG_TOKEN="START_TAG_TOKEN",eK.END_TAG_TOKEN="END_TAG_TOKEN",eK.COMMENT_TOKEN="COMMENT_TOKEN",eK.DOCTYPE_TOKEN="DOCTYPE_TOKEN",eK.EOF_TOKEN="EOF_TOKEN",eK.HIBERNATION_TOKEN="HIBERNATION_TOKEN",eK.MODE={DATA:u,RCDATA:d,RAWTEXT:p,SCRIPT_DATA:m,PLAINTEXT:g},eK.getTokenAttr=function(e,t){for(let n=e.attrs.length-1;n>=0;n--)if(e.attrs[n].name===t)return e.attrs[n].value;return null},e.exports=eK},5482:function(e){"use strict";e.exports=new Uint16Array([4,52,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,106,303,412,810,1432,1701,1796,1987,2114,2360,2420,2484,3170,3251,4140,4393,4575,4610,5106,5512,5728,6117,6274,6315,6345,6427,6516,7002,7910,8733,9323,9870,10170,10631,10893,11318,11386,11467,12773,13092,14474,14922,15448,15542,16419,17666,18166,18611,19004,19095,19298,19397,4,16,69,77,97,98,99,102,103,108,109,110,111,112,114,115,116,117,140,150,158,169,176,194,199,210,216,222,226,242,256,266,283,294,108,105,103,5,198,1,59,148,1,198,80,5,38,1,59,156,1,38,99,117,116,101,5,193,1,59,167,1,193,114,101,118,101,59,1,258,4,2,105,121,182,191,114,99,5,194,1,59,189,1,194,59,1,1040,114,59,3,55349,56580,114,97,118,101,5,192,1,59,208,1,192,112,104,97,59,1,913,97,99,114,59,1,256,100,59,1,10835,4,2,103,112,232,237,111,110,59,1,260,102,59,3,55349,56632,112,108,121,70,117,110,99,116,105,111,110,59,1,8289,105,110,103,5,197,1,59,264,1,197,4,2,99,115,272,277,114,59,3,55349,56476,105,103,110,59,1,8788,105,108,100,101,5,195,1,59,292,1,195,109,108,5,196,1,59,301,1,196,4,8,97,99,101,102,111,114,115,117,321,350,354,383,388,394,400,405,4,2,99,114,327,336,107,115,108,97,115,104,59,1,8726,4,2,118,119,342,345,59,1,10983,101,100,59,1,8966,121,59,1,1041,4,3,99,114,116,362,369,379,97,117,115,101,59,1,8757,110,111,117,108,108,105,115,59,1,8492,97,59,1,914,114,59,3,55349,56581,112,102,59,3,55349,56633,101,118,101,59,1,728,99,114,59,1,8492,109,112,101,113,59,1,8782,4,14,72,79,97,99,100,101,102,104,105,108,111,114,115,117,442,447,456,504,542,547,569,573,577,616,678,784,790,796,99,121,59,1,1063,80,89,5,169,1,59,454,1,169,4,3,99,112,121,464,470,497,117,116,101,59,1,262,4,2,59,105,476,478,1,8914,116,97,108,68,105,102,102,101,114,101,110,116,105,97,108,68,59,1,8517,108,101,121,115,59,1,8493,4,4,97,101,105,111,514,520,530,535,114,111,110,59,1,268,100,105,108,5,199,1,59,528,1,199,114,99,59,1,264,110,105,110,116,59,1,8752,111,116,59,1,266,4,2,100,110,553,560,105,108,108,97,59,1,184,116,101,114,68,111,116,59,1,183,114,59,1,8493,105,59,1,935,114,99,108,101,4,4,68,77,80,84,591,596,603,609,111,116,59,1,8857,105,110,117,115,59,1,8854,108,117,115,59,1,8853,105,109,101,115,59,1,8855,111,4,2,99,115,623,646,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8754,101,67,117,114,108,121,4,2,68,81,658,671,111,117,98,108,101,81,117,111,116,101,59,1,8221,117,111,116,101,59,1,8217,4,4,108,110,112,117,688,701,736,753,111,110,4,2,59,101,696,698,1,8759,59,1,10868,4,3,103,105,116,709,717,722,114,117,101,110,116,59,1,8801,110,116,59,1,8751,111,117,114,73,110,116,101,103,114,97,108,59,1,8750,4,2,102,114,742,745,59,1,8450,111,100,117,99,116,59,1,8720,110,116,101,114,67,108,111,99,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8755,111,115,115,59,1,10799,99,114,59,3,55349,56478,112,4,2,59,67,803,805,1,8915,97,112,59,1,8781,4,11,68,74,83,90,97,99,101,102,105,111,115,834,850,855,860,865,888,903,916,921,1011,1415,4,2,59,111,840,842,1,8517,116,114,97,104,100,59,1,10513,99,121,59,1,1026,99,121,59,1,1029,99,121,59,1,1039,4,3,103,114,115,873,879,883,103,101,114,59,1,8225,114,59,1,8609,104,118,59,1,10980,4,2,97,121,894,900,114,111,110,59,1,270,59,1,1044,108,4,2,59,116,910,912,1,8711,97,59,1,916,114,59,3,55349,56583,4,2,97,102,927,998,4,2,99,109,933,992,114,105,116,105,99,97,108,4,4,65,68,71,84,950,957,978,985,99,117,116,101,59,1,180,111,4,2,116,117,964,967,59,1,729,98,108,101,65,99,117,116,101,59,1,733,114,97,118,101,59,1,96,105,108,100,101,59,1,732,111,110,100,59,1,8900,102,101,114,101,110,116,105,97,108,68,59,1,8518,4,4,112,116,117,119,1021,1026,1048,1249,102,59,3,55349,56635,4,3,59,68,69,1034,1036,1041,1,168,111,116,59,1,8412,113,117,97,108,59,1,8784,98,108,101,4,6,67,68,76,82,85,86,1065,1082,1101,1189,1211,1236,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8751,111,4,2,116,119,1089,1092,59,1,168,110,65,114,114,111,119,59,1,8659,4,2,101,111,1107,1141,102,116,4,3,65,82,84,1117,1124,1136,114,114,111,119,59,1,8656,105,103,104,116,65,114,114,111,119,59,1,8660,101,101,59,1,10980,110,103,4,2,76,82,1149,1177,101,102,116,4,2,65,82,1158,1165,114,114,111,119,59,1,10232,105,103,104,116,65,114,114,111,119,59,1,10234,105,103,104,116,65,114,114,111,119,59,1,10233,105,103,104,116,4,2,65,84,1199,1206,114,114,111,119,59,1,8658,101,101,59,1,8872,112,4,2,65,68,1218,1225,114,114,111,119,59,1,8657,111,119,110,65,114,114,111,119,59,1,8661,101,114,116,105,99,97,108,66,97,114,59,1,8741,110,4,6,65,66,76,82,84,97,1264,1292,1299,1352,1391,1408,114,114,111,119,4,3,59,66,85,1276,1278,1283,1,8595,97,114,59,1,10515,112,65,114,114,111,119,59,1,8693,114,101,118,101,59,1,785,101,102,116,4,3,82,84,86,1310,1323,1334,105,103,104,116,86,101,99,116,111,114,59,1,10576,101,101,86,101,99,116,111,114,59,1,10590,101,99,116,111,114,4,2,59,66,1345,1347,1,8637,97,114,59,1,10582,105,103,104,116,4,2,84,86,1362,1373,101,101,86,101,99,116,111,114,59,1,10591,101,99,116,111,114,4,2,59,66,1384,1386,1,8641,97,114,59,1,10583,101,101,4,2,59,65,1399,1401,1,8868,114,114,111,119,59,1,8615,114,114,111,119,59,1,8659,4,2,99,116,1421,1426,114,59,3,55349,56479,114,111,107,59,1,272,4,16,78,84,97,99,100,102,103,108,109,111,112,113,115,116,117,120,1466,1470,1478,1489,1515,1520,1525,1536,1544,1593,1609,1617,1650,1664,1668,1677,71,59,1,330,72,5,208,1,59,1476,1,208,99,117,116,101,5,201,1,59,1487,1,201,4,3,97,105,121,1497,1503,1512,114,111,110,59,1,282,114,99,5,202,1,59,1510,1,202,59,1,1069,111,116,59,1,278,114,59,3,55349,56584,114,97,118,101,5,200,1,59,1534,1,200,101,109,101,110,116,59,1,8712,4,2,97,112,1550,1555,99,114,59,1,274,116,121,4,2,83,86,1563,1576,109,97,108,108,83,113,117,97,114,101,59,1,9723,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9643,4,2,103,112,1599,1604,111,110,59,1,280,102,59,3,55349,56636,115,105,108,111,110,59,1,917,117,4,2,97,105,1624,1640,108,4,2,59,84,1631,1633,1,10869,105,108,100,101,59,1,8770,108,105,98,114,105,117,109,59,1,8652,4,2,99,105,1656,1660,114,59,1,8496,109,59,1,10867,97,59,1,919,109,108,5,203,1,59,1675,1,203,4,2,105,112,1683,1689,115,116,115,59,1,8707,111,110,101,110,116,105,97,108,69,59,1,8519,4,5,99,102,105,111,115,1713,1717,1722,1762,1791,121,59,1,1060,114,59,3,55349,56585,108,108,101,100,4,2,83,86,1732,1745,109,97,108,108,83,113,117,97,114,101,59,1,9724,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9642,4,3,112,114,117,1770,1775,1781,102,59,3,55349,56637,65,108,108,59,1,8704,114,105,101,114,116,114,102,59,1,8497,99,114,59,1,8497,4,12,74,84,97,98,99,100,102,103,111,114,115,116,1822,1827,1834,1848,1855,1877,1882,1887,1890,1896,1978,1984,99,121,59,1,1027,5,62,1,59,1832,1,62,109,109,97,4,2,59,100,1843,1845,1,915,59,1,988,114,101,118,101,59,1,286,4,3,101,105,121,1863,1869,1874,100,105,108,59,1,290,114,99,59,1,284,59,1,1043,111,116,59,1,288,114,59,3,55349,56586,59,1,8921,112,102,59,3,55349,56638,101,97,116,101,114,4,6,69,70,71,76,83,84,1915,1933,1944,1953,1959,1971,113,117,97,108,4,2,59,76,1925,1927,1,8805,101,115,115,59,1,8923,117,108,108,69,113,117,97,108,59,1,8807,114,101,97,116,101,114,59,1,10914,101,115,115,59,1,8823,108,97,110,116,69,113,117,97,108,59,1,10878,105,108,100,101,59,1,8819,99,114,59,3,55349,56482,59,1,8811,4,8,65,97,99,102,105,111,115,117,2005,2012,2026,2032,2036,2049,2073,2089,82,68,99,121,59,1,1066,4,2,99,116,2018,2023,101,107,59,1,711,59,1,94,105,114,99,59,1,292,114,59,1,8460,108,98,101,114,116,83,112,97,99,101,59,1,8459,4,2,112,114,2055,2059,102,59,1,8461,105,122,111,110,116,97,108,76,105,110,101,59,1,9472,4,2,99,116,2079,2083,114,59,1,8459,114,111,107,59,1,294,109,112,4,2,68,69,2097,2107,111,119,110,72,117,109,112,59,1,8782,113,117,97,108,59,1,8783,4,14,69,74,79,97,99,100,102,103,109,110,111,115,116,117,2144,2149,2155,2160,2171,2189,2194,2198,2209,2245,2307,2329,2334,2341,99,121,59,1,1045,108,105,103,59,1,306,99,121,59,1,1025,99,117,116,101,5,205,1,59,2169,1,205,4,2,105,121,2177,2186,114,99,5,206,1,59,2184,1,206,59,1,1048,111,116,59,1,304,114,59,1,8465,114,97,118,101,5,204,1,59,2207,1,204,4,3,59,97,112,2217,2219,2238,1,8465,4,2,99,103,2225,2229,114,59,1,298,105,110,97,114,121,73,59,1,8520,108,105,101,115,59,1,8658,4,2,116,118,2251,2281,4,2,59,101,2257,2259,1,8748,4,2,103,114,2265,2271,114,97,108,59,1,8747,115,101,99,116,105,111,110,59,1,8898,105,115,105,98,108,101,4,2,67,84,2293,2300,111,109,109,97,59,1,8291,105,109,101,115,59,1,8290,4,3,103,112,116,2315,2320,2325,111,110,59,1,302,102,59,3,55349,56640,97,59,1,921,99,114,59,1,8464,105,108,100,101,59,1,296,4,2,107,109,2347,2352,99,121,59,1,1030,108,5,207,1,59,2358,1,207,4,5,99,102,111,115,117,2372,2386,2391,2397,2414,4,2,105,121,2378,2383,114,99,59,1,308,59,1,1049,114,59,3,55349,56589,112,102,59,3,55349,56641,4,2,99,101,2403,2408,114,59,3,55349,56485,114,99,121,59,1,1032,107,99,121,59,1,1028,4,7,72,74,97,99,102,111,115,2436,2441,2446,2452,2467,2472,2478,99,121,59,1,1061,99,121,59,1,1036,112,112,97,59,1,922,4,2,101,121,2458,2464,100,105,108,59,1,310,59,1,1050,114,59,3,55349,56590,112,102,59,3,55349,56642,99,114,59,3,55349,56486,4,11,74,84,97,99,101,102,108,109,111,115,116,2508,2513,2520,2562,2585,2981,2986,3004,3011,3146,3167,99,121,59,1,1033,5,60,1,59,2518,1,60,4,5,99,109,110,112,114,2532,2538,2544,2548,2558,117,116,101,59,1,313,98,100,97,59,1,923,103,59,1,10218,108,97,99,101,116,114,102,59,1,8466,114,59,1,8606,4,3,97,101,121,2570,2576,2582,114,111,110,59,1,317,100,105,108,59,1,315,59,1,1051,4,2,102,115,2591,2907,116,4,10,65,67,68,70,82,84,85,86,97,114,2614,2663,2672,2728,2735,2760,2820,2870,2888,2895,4,2,110,114,2620,2633,103,108,101,66,114,97,99,107,101,116,59,1,10216,114,111,119,4,3,59,66,82,2644,2646,2651,1,8592,97,114,59,1,8676,105,103,104,116,65,114,114,111,119,59,1,8646,101,105,108,105,110,103,59,1,8968,111,4,2,117,119,2679,2692,98,108,101,66,114,97,99,107,101,116,59,1,10214,110,4,2,84,86,2699,2710,101,101,86,101,99,116,111,114,59,1,10593,101,99,116,111,114,4,2,59,66,2721,2723,1,8643,97,114,59,1,10585,108,111,111,114,59,1,8970,105,103,104,116,4,2,65,86,2745,2752,114,114,111,119,59,1,8596,101,99,116,111,114,59,1,10574,4,2,101,114,2766,2792,101,4,3,59,65,86,2775,2777,2784,1,8867,114,114,111,119,59,1,8612,101,99,116,111,114,59,1,10586,105,97,110,103,108,101,4,3,59,66,69,2806,2808,2813,1,8882,97,114,59,1,10703,113,117,97,108,59,1,8884,112,4,3,68,84,86,2829,2841,2852,111,119,110,86,101,99,116,111,114,59,1,10577,101,101,86,101,99,116,111,114,59,1,10592,101,99,116,111,114,4,2,59,66,2863,2865,1,8639,97,114,59,1,10584,101,99,116,111,114,4,2,59,66,2881,2883,1,8636,97,114,59,1,10578,114,114,111,119,59,1,8656,105,103,104,116,97,114,114,111,119,59,1,8660,115,4,6,69,70,71,76,83,84,2922,2936,2947,2956,2962,2974,113,117,97,108,71,114,101,97,116,101,114,59,1,8922,117,108,108,69,113,117,97,108,59,1,8806,114,101,97,116,101,114,59,1,8822,101,115,115,59,1,10913,108,97,110,116,69,113,117,97,108,59,1,10877,105,108,100,101,59,1,8818,114,59,3,55349,56591,4,2,59,101,2992,2994,1,8920,102,116,97,114,114,111,119,59,1,8666,105,100,111,116,59,1,319,4,3,110,112,119,3019,3110,3115,103,4,4,76,82,108,114,3030,3058,3070,3098,101,102,116,4,2,65,82,3039,3046,114,114,111,119,59,1,10229,105,103,104,116,65,114,114,111,119,59,1,10231,105,103,104,116,65,114,114,111,119,59,1,10230,101,102,116,4,2,97,114,3079,3086,114,114,111,119,59,1,10232,105,103,104,116,97,114,114,111,119,59,1,10234,105,103,104,116,97,114,114,111,119,59,1,10233,102,59,3,55349,56643,101,114,4,2,76,82,3123,3134,101,102,116,65,114,114,111,119,59,1,8601,105,103,104,116,65,114,114,111,119,59,1,8600,4,3,99,104,116,3154,3158,3161,114,59,1,8466,59,1,8624,114,111,107,59,1,321,59,1,8810,4,8,97,99,101,102,105,111,115,117,3188,3192,3196,3222,3227,3237,3243,3248,112,59,1,10501,121,59,1,1052,4,2,100,108,3202,3213,105,117,109,83,112,97,99,101,59,1,8287,108,105,110,116,114,102,59,1,8499,114,59,3,55349,56592,110,117,115,80,108,117,115,59,1,8723,112,102,59,3,55349,56644,99,114,59,1,8499,59,1,924,4,9,74,97,99,101,102,111,115,116,117,3271,3276,3283,3306,3422,3427,4120,4126,4137,99,121,59,1,1034,99,117,116,101,59,1,323,4,3,97,101,121,3291,3297,3303,114,111,110,59,1,327,100,105,108,59,1,325,59,1,1053,4,3,103,115,119,3314,3380,3415,97,116,105,118,101,4,3,77,84,86,3327,3340,3365,101,100,105,117,109,83,112,97,99,101,59,1,8203,104,105,4,2,99,110,3348,3357,107,83,112,97,99,101,59,1,8203,83,112,97,99,101,59,1,8203,101,114,121,84,104,105,110,83,112,97,99,101,59,1,8203,116,101,100,4,2,71,76,3389,3405,114,101,97,116,101,114,71,114,101,97,116,101,114,59,1,8811,101,115,115,76,101,115,115,59,1,8810,76,105,110,101,59,1,10,114,59,3,55349,56593,4,4,66,110,112,116,3437,3444,3460,3464,114,101,97,107,59,1,8288,66,114,101,97,107,105,110,103,83,112,97,99,101,59,1,160,102,59,1,8469,4,13,59,67,68,69,71,72,76,78,80,82,83,84,86,3492,3494,3517,3536,3578,3657,3685,3784,3823,3860,3915,4066,4107,1,10988,4,2,111,117,3500,3510,110,103,114,117,101,110,116,59,1,8802,112,67,97,112,59,1,8813,111,117,98,108,101,86,101,114,116,105,99,97,108,66,97,114,59,1,8742,4,3,108,113,120,3544,3552,3571,101,109,101,110,116,59,1,8713,117,97,108,4,2,59,84,3561,3563,1,8800,105,108,100,101,59,3,8770,824,105,115,116,115,59,1,8708,114,101,97,116,101,114,4,7,59,69,70,71,76,83,84,3600,3602,3609,3621,3631,3637,3650,1,8815,113,117,97,108,59,1,8817,117,108,108,69,113,117,97,108,59,3,8807,824,114,101,97,116,101,114,59,3,8811,824,101,115,115,59,1,8825,108,97,110,116,69,113,117,97,108,59,3,10878,824,105,108,100,101,59,1,8821,117,109,112,4,2,68,69,3666,3677,111,119,110,72,117,109,112,59,3,8782,824,113,117,97,108,59,3,8783,824,101,4,2,102,115,3692,3724,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3709,3711,3717,1,8938,97,114,59,3,10703,824,113,117,97,108,59,1,8940,115,4,6,59,69,71,76,83,84,3739,3741,3748,3757,3764,3777,1,8814,113,117,97,108,59,1,8816,114,101,97,116,101,114,59,1,8824,101,115,115,59,3,8810,824,108,97,110,116,69,113,117,97,108,59,3,10877,824,105,108,100,101,59,1,8820,101,115,116,101,100,4,2,71,76,3795,3812,114,101,97,116,101,114,71,114,101,97,116,101,114,59,3,10914,824,101,115,115,76,101,115,115,59,3,10913,824,114,101,99,101,100,101,115,4,3,59,69,83,3838,3840,3848,1,8832,113,117,97,108,59,3,10927,824,108,97,110,116,69,113,117,97,108,59,1,8928,4,2,101,105,3866,3881,118,101,114,115,101,69,108,101,109,101,110,116,59,1,8716,103,104,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3900,3902,3908,1,8939,97,114,59,3,10704,824,113,117,97,108,59,1,8941,4,2,113,117,3921,3973,117,97,114,101,83,117,4,2,98,112,3933,3952,115,101,116,4,2,59,69,3942,3945,3,8847,824,113,117,97,108,59,1,8930,101,114,115,101,116,4,2,59,69,3963,3966,3,8848,824,113,117,97,108,59,1,8931,4,3,98,99,112,3981,4e3,4045,115,101,116,4,2,59,69,3990,3993,3,8834,8402,113,117,97,108,59,1,8840,99,101,101,100,115,4,4,59,69,83,84,4015,4017,4025,4037,1,8833,113,117,97,108,59,3,10928,824,108,97,110,116,69,113,117,97,108,59,1,8929,105,108,100,101,59,3,8831,824,101,114,115,101,116,4,2,59,69,4056,4059,3,8835,8402,113,117,97,108,59,1,8841,105,108,100,101,4,4,59,69,70,84,4080,4082,4089,4100,1,8769,113,117,97,108,59,1,8772,117,108,108,69,113,117,97,108,59,1,8775,105,108,100,101,59,1,8777,101,114,116,105,99,97,108,66,97,114,59,1,8740,99,114,59,3,55349,56489,105,108,100,101,5,209,1,59,4135,1,209,59,1,925,4,14,69,97,99,100,102,103,109,111,112,114,115,116,117,118,4170,4176,4187,4205,4212,4217,4228,4253,4259,4292,4295,4316,4337,4346,108,105,103,59,1,338,99,117,116,101,5,211,1,59,4185,1,211,4,2,105,121,4193,4202,114,99,5,212,1,59,4200,1,212,59,1,1054,98,108,97,99,59,1,336,114,59,3,55349,56594,114,97,118,101,5,210,1,59,4226,1,210,4,3,97,101,105,4236,4241,4246,99,114,59,1,332,103,97,59,1,937,99,114,111,110,59,1,927,112,102,59,3,55349,56646,101,110,67,117,114,108,121,4,2,68,81,4272,4285,111,117,98,108,101,81,117,111,116,101,59,1,8220,117,111,116,101,59,1,8216,59,1,10836,4,2,99,108,4301,4306,114,59,3,55349,56490,97,115,104,5,216,1,59,4314,1,216,105,4,2,108,109,4323,4332,100,101,5,213,1,59,4330,1,213,101,115,59,1,10807,109,108,5,214,1,59,4344,1,214,101,114,4,2,66,80,4354,4380,4,2,97,114,4360,4364,114,59,1,8254,97,99,4,2,101,107,4372,4375,59,1,9182,101,116,59,1,9140,97,114,101,110,116,104,101,115,105,115,59,1,9180,4,9,97,99,102,104,105,108,111,114,115,4413,4422,4426,4431,4435,4438,4448,4471,4561,114,116,105,97,108,68,59,1,8706,121,59,1,1055,114,59,3,55349,56595,105,59,1,934,59,1,928,117,115,77,105,110,117,115,59,1,177,4,2,105,112,4454,4467,110,99,97,114,101,112,108,97,110,101,59,1,8460,102,59,1,8473,4,4,59,101,105,111,4481,4483,4526,4531,1,10939,99,101,100,101,115,4,4,59,69,83,84,4498,4500,4507,4519,1,8826,113,117,97,108,59,1,10927,108,97,110,116,69,113,117,97,108,59,1,8828,105,108,100,101,59,1,8830,109,101,59,1,8243,4,2,100,112,4537,4543,117,99,116,59,1,8719,111,114,116,105,111,110,4,2,59,97,4555,4557,1,8759,108,59,1,8733,4,2,99,105,4567,4572,114,59,3,55349,56491,59,1,936,4,4,85,102,111,115,4585,4594,4599,4604,79,84,5,34,1,59,4592,1,34,114,59,3,55349,56596,112,102,59,1,8474,99,114,59,3,55349,56492,4,12,66,69,97,99,101,102,104,105,111,114,115,117,4636,4642,4650,4681,4704,4763,4767,4771,5047,5069,5081,5094,97,114,114,59,1,10512,71,5,174,1,59,4648,1,174,4,3,99,110,114,4658,4664,4668,117,116,101,59,1,340,103,59,1,10219,114,4,2,59,116,4675,4677,1,8608,108,59,1,10518,4,3,97,101,121,4689,4695,4701,114,111,110,59,1,344,100,105,108,59,1,342,59,1,1056,4,2,59,118,4710,4712,1,8476,101,114,115,101,4,2,69,85,4722,4748,4,2,108,113,4728,4736,101,109,101,110,116,59,1,8715,117,105,108,105,98,114,105,117,109,59,1,8651,112,69,113,117,105,108,105,98,114,105,117,109,59,1,10607,114,59,1,8476,111,59,1,929,103,104,116,4,8,65,67,68,70,84,85,86,97,4792,4840,4849,4905,4912,4972,5022,5040,4,2,110,114,4798,4811,103,108,101,66,114,97,99,107,101,116,59,1,10217,114,111,119,4,3,59,66,76,4822,4824,4829,1,8594,97,114,59,1,8677,101,102,116,65,114,114,111,119,59,1,8644,101,105,108,105,110,103,59,1,8969,111,4,2,117,119,4856,4869,98,108,101,66,114,97,99,107,101,116,59,1,10215,110,4,2,84,86,4876,4887,101,101,86,101,99,116,111,114,59,1,10589,101,99,116,111,114,4,2,59,66,4898,4900,1,8642,97,114,59,1,10581,108,111,111,114,59,1,8971,4,2,101,114,4918,4944,101,4,3,59,65,86,4927,4929,4936,1,8866,114,114,111,119,59,1,8614,101,99,116,111,114,59,1,10587,105,97,110,103,108,101,4,3,59,66,69,4958,4960,4965,1,8883,97,114,59,1,10704,113,117,97,108,59,1,8885,112,4,3,68,84,86,4981,4993,5004,111,119,110,86,101,99,116,111,114,59,1,10575,101,101,86,101,99,116,111,114,59,1,10588,101,99,116,111,114,4,2,59,66,5015,5017,1,8638,97,114,59,1,10580,101,99,116,111,114,4,2,59,66,5033,5035,1,8640,97,114,59,1,10579,114,114,111,119,59,1,8658,4,2,112,117,5053,5057,102,59,1,8477,110,100,73,109,112,108,105,101,115,59,1,10608,105,103,104,116,97,114,114,111,119,59,1,8667,4,2,99,104,5087,5091,114,59,1,8475,59,1,8625,108,101,68,101,108,97,121,101,100,59,1,10740,4,13,72,79,97,99,102,104,105,109,111,113,115,116,117,5134,5150,5157,5164,5198,5203,5259,5265,5277,5283,5374,5380,5385,4,2,67,99,5140,5146,72,99,121,59,1,1065,121,59,1,1064,70,84,99,121,59,1,1068,99,117,116,101,59,1,346,4,5,59,97,101,105,121,5176,5178,5184,5190,5195,1,10940,114,111,110,59,1,352,100,105,108,59,1,350,114,99,59,1,348,59,1,1057,114,59,3,55349,56598,111,114,116,4,4,68,76,82,85,5216,5227,5238,5250,111,119,110,65,114,114,111,119,59,1,8595,101,102,116,65,114,114,111,119,59,1,8592,105,103,104,116,65,114,114,111,119,59,1,8594,112,65,114,114,111,119,59,1,8593,103,109,97,59,1,931,97,108,108,67,105,114,99,108,101,59,1,8728,112,102,59,3,55349,56650,4,2,114,117,5289,5293,116,59,1,8730,97,114,101,4,4,59,73,83,85,5306,5308,5322,5367,1,9633,110,116,101,114,115,101,99,116,105,111,110,59,1,8851,117,4,2,98,112,5329,5347,115,101,116,4,2,59,69,5338,5340,1,8847,113,117,97,108,59,1,8849,101,114,115,101,116,4,2,59,69,5358,5360,1,8848,113,117,97,108,59,1,8850,110,105,111,110,59,1,8852,99,114,59,3,55349,56494,97,114,59,1,8902,4,4,98,99,109,112,5395,5420,5475,5478,4,2,59,115,5401,5403,1,8912,101,116,4,2,59,69,5411,5413,1,8912,113,117,97,108,59,1,8838,4,2,99,104,5426,5468,101,101,100,115,4,4,59,69,83,84,5440,5442,5449,5461,1,8827,113,117,97,108,59,1,10928,108,97,110,116,69,113,117,97,108,59,1,8829,105,108,100,101,59,1,8831,84,104,97,116,59,1,8715,59,1,8721,4,3,59,101,115,5486,5488,5507,1,8913,114,115,101,116,4,2,59,69,5498,5500,1,8835,113,117,97,108,59,1,8839,101,116,59,1,8913,4,11,72,82,83,97,99,102,104,105,111,114,115,5536,5546,5552,5567,5579,5602,5607,5655,5695,5701,5711,79,82,78,5,222,1,59,5544,1,222,65,68,69,59,1,8482,4,2,72,99,5558,5563,99,121,59,1,1035,121,59,1,1062,4,2,98,117,5573,5576,59,1,9,59,1,932,4,3,97,101,121,5587,5593,5599,114,111,110,59,1,356,100,105,108,59,1,354,59,1,1058,114,59,3,55349,56599,4,2,101,105,5613,5631,4,2,114,116,5619,5627,101,102,111,114,101,59,1,8756,97,59,1,920,4,2,99,110,5637,5647,107,83,112,97,99,101,59,3,8287,8202,83,112,97,99,101,59,1,8201,108,100,101,4,4,59,69,70,84,5668,5670,5677,5688,1,8764,113,117,97,108,59,1,8771,117,108,108,69,113,117,97,108,59,1,8773,105,108,100,101,59,1,8776,112,102,59,3,55349,56651,105,112,108,101,68,111,116,59,1,8411,4,2,99,116,5717,5722,114,59,3,55349,56495,114,111,107,59,1,358,4,14,97,98,99,100,102,103,109,110,111,112,114,115,116,117,5758,5789,5805,5823,5830,5835,5846,5852,5921,5937,6089,6095,6101,6108,4,2,99,114,5764,5774,117,116,101,5,218,1,59,5772,1,218,114,4,2,59,111,5781,5783,1,8607,99,105,114,59,1,10569,114,4,2,99,101,5796,5800,121,59,1,1038,118,101,59,1,364,4,2,105,121,5811,5820,114,99,5,219,1,59,5818,1,219,59,1,1059,98,108,97,99,59,1,368,114,59,3,55349,56600,114,97,118,101,5,217,1,59,5844,1,217,97,99,114,59,1,362,4,2,100,105,5858,5905,101,114,4,2,66,80,5866,5892,4,2,97,114,5872,5876,114,59,1,95,97,99,4,2,101,107,5884,5887,59,1,9183,101,116,59,1,9141,97,114,101,110,116,104,101,115,105,115,59,1,9181,111,110,4,2,59,80,5913,5915,1,8899,108,117,115,59,1,8846,4,2,103,112,5927,5932,111,110,59,1,370,102,59,3,55349,56652,4,8,65,68,69,84,97,100,112,115,5955,5985,5996,6009,6026,6033,6044,6075,114,114,111,119,4,3,59,66,68,5967,5969,5974,1,8593,97,114,59,1,10514,111,119,110,65,114,114,111,119,59,1,8645,111,119,110,65,114,114,111,119,59,1,8597,113,117,105,108,105,98,114,105,117,109,59,1,10606,101,101,4,2,59,65,6017,6019,1,8869,114,114,111,119,59,1,8613,114,114,111,119,59,1,8657,111,119,110,97,114,114,111,119,59,1,8661,101,114,4,2,76,82,6052,6063,101,102,116,65,114,114,111,119,59,1,8598,105,103,104,116,65,114,114,111,119,59,1,8599,105,4,2,59,108,6082,6084,1,978,111,110,59,1,933,105,110,103,59,1,366,99,114,59,3,55349,56496,105,108,100,101,59,1,360,109,108,5,220,1,59,6115,1,220,4,9,68,98,99,100,101,102,111,115,118,6137,6143,6148,6152,6166,6250,6255,6261,6267,97,115,104,59,1,8875,97,114,59,1,10987,121,59,1,1042,97,115,104,4,2,59,108,6161,6163,1,8873,59,1,10982,4,2,101,114,6172,6175,59,1,8897,4,3,98,116,121,6183,6188,6238,97,114,59,1,8214,4,2,59,105,6194,6196,1,8214,99,97,108,4,4,66,76,83,84,6209,6214,6220,6231,97,114,59,1,8739,105,110,101,59,1,124,101,112,97,114,97,116,111,114,59,1,10072,105,108,100,101,59,1,8768,84,104,105,110,83,112,97,99,101,59,1,8202,114,59,3,55349,56601,112,102,59,3,55349,56653,99,114,59,3,55349,56497,100,97,115,104,59,1,8874,4,5,99,101,102,111,115,6286,6292,6298,6303,6309,105,114,99,59,1,372,100,103,101,59,1,8896,114,59,3,55349,56602,112,102,59,3,55349,56654,99,114,59,3,55349,56498,4,4,102,105,111,115,6325,6330,6333,6339,114,59,3,55349,56603,59,1,926,112,102,59,3,55349,56655,99,114,59,3,55349,56499,4,9,65,73,85,97,99,102,111,115,117,6365,6370,6375,6380,6391,6405,6410,6416,6422,99,121,59,1,1071,99,121,59,1,1031,99,121,59,1,1070,99,117,116,101,5,221,1,59,6389,1,221,4,2,105,121,6397,6402,114,99,59,1,374,59,1,1067,114,59,3,55349,56604,112,102,59,3,55349,56656,99,114,59,3,55349,56500,109,108,59,1,376,4,8,72,97,99,100,101,102,111,115,6445,6450,6457,6472,6477,6501,6505,6510,99,121,59,1,1046,99,117,116,101,59,1,377,4,2,97,121,6463,6469,114,111,110,59,1,381,59,1,1047,111,116,59,1,379,4,2,114,116,6483,6497,111,87,105,100,116,104,83,112,97,99,101,59,1,8203,97,59,1,918,114,59,1,8488,112,102,59,1,8484,99,114,59,3,55349,56501,4,16,97,98,99,101,102,103,108,109,110,111,112,114,115,116,117,119,6550,6561,6568,6612,6622,6634,6645,6672,6699,6854,6870,6923,6933,6963,6974,6983,99,117,116,101,5,225,1,59,6559,1,225,114,101,118,101,59,1,259,4,6,59,69,100,105,117,121,6582,6584,6588,6591,6600,6609,1,8766,59,3,8766,819,59,1,8767,114,99,5,226,1,59,6598,1,226,116,101,5,180,1,59,6607,1,180,59,1,1072,108,105,103,5,230,1,59,6620,1,230,4,2,59,114,6628,6630,1,8289,59,3,55349,56606,114,97,118,101,5,224,1,59,6643,1,224,4,2,101,112,6651,6667,4,2,102,112,6657,6663,115,121,109,59,1,8501,104,59,1,8501,104,97,59,1,945,4,2,97,112,6678,6692,4,2,99,108,6684,6688,114,59,1,257,103,59,1,10815,5,38,1,59,6697,1,38,4,2,100,103,6705,6737,4,5,59,97,100,115,118,6717,6719,6724,6727,6734,1,8743,110,100,59,1,10837,59,1,10844,108,111,112,101,59,1,10840,59,1,10842,4,7,59,101,108,109,114,115,122,6753,6755,6758,6762,6814,6835,6848,1,8736,59,1,10660,101,59,1,8736,115,100,4,2,59,97,6770,6772,1,8737,4,8,97,98,99,100,101,102,103,104,6790,6793,6796,6799,6802,6805,6808,6811,59,1,10664,59,1,10665,59,1,10666,59,1,10667,59,1,10668,59,1,10669,59,1,10670,59,1,10671,116,4,2,59,118,6821,6823,1,8735,98,4,2,59,100,6830,6832,1,8894,59,1,10653,4,2,112,116,6841,6845,104,59,1,8738,59,1,197,97,114,114,59,1,9084,4,2,103,112,6860,6865,111,110,59,1,261,102,59,3,55349,56658,4,7,59,69,97,101,105,111,112,6886,6888,6891,6897,6900,6904,6908,1,8776,59,1,10864,99,105,114,59,1,10863,59,1,8778,100,59,1,8779,115,59,1,39,114,111,120,4,2,59,101,6917,6919,1,8776,113,59,1,8778,105,110,103,5,229,1,59,6931,1,229,4,3,99,116,121,6941,6946,6949,114,59,3,55349,56502,59,1,42,109,112,4,2,59,101,6957,6959,1,8776,113,59,1,8781,105,108,100,101,5,227,1,59,6972,1,227,109,108,5,228,1,59,6981,1,228,4,2,99,105,6989,6997,111,110,105,110,116,59,1,8755,110,116,59,1,10769,4,16,78,97,98,99,100,101,102,105,107,108,110,111,112,114,115,117,7036,7041,7119,7135,7149,7155,7219,7224,7347,7354,7463,7489,7786,7793,7814,7866,111,116,59,1,10989,4,2,99,114,7047,7094,107,4,4,99,101,112,115,7058,7064,7073,7080,111,110,103,59,1,8780,112,115,105,108,111,110,59,1,1014,114,105,109,101,59,1,8245,105,109,4,2,59,101,7088,7090,1,8765,113,59,1,8909,4,2,118,119,7100,7105,101,101,59,1,8893,101,100,4,2,59,103,7113,7115,1,8965,101,59,1,8965,114,107,4,2,59,116,7127,7129,1,9141,98,114,107,59,1,9142,4,2,111,121,7141,7146,110,103,59,1,8780,59,1,1073,113,117,111,59,1,8222,4,5,99,109,112,114,116,7167,7181,7188,7193,7199,97,117,115,4,2,59,101,7176,7178,1,8757,59,1,8757,112,116,121,118,59,1,10672,115,105,59,1,1014,110,111,117,59,1,8492,4,3,97,104,119,7207,7210,7213,59,1,946,59,1,8502,101,101,110,59,1,8812,114,59,3,55349,56607,103,4,7,99,111,115,116,117,118,119,7241,7262,7288,7305,7328,7335,7340,4,3,97,105,117,7249,7253,7258,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,4,3,100,112,116,7270,7275,7281,111,116,59,1,10752,108,117,115,59,1,10753,105,109,101,115,59,1,10754,4,2,113,116,7294,7300,99,117,112,59,1,10758,97,114,59,1,9733,114,105,97,110,103,108,101,4,2,100,117,7318,7324,111,119,110,59,1,9661,112,59,1,9651,112,108,117,115,59,1,10756,101,101,59,1,8897,101,100,103,101,59,1,8896,97,114,111,119,59,1,10509,4,3,97,107,111,7362,7436,7458,4,2,99,110,7368,7432,107,4,3,108,115,116,7377,7386,7394,111,122,101,110,103,101,59,1,10731,113,117,97,114,101,59,1,9642,114,105,97,110,103,108,101,4,4,59,100,108,114,7411,7413,7419,7425,1,9652,111,119,110,59,1,9662,101,102,116,59,1,9666,105,103,104,116,59,1,9656,107,59,1,9251,4,2,49,51,7442,7454,4,2,50,52,7448,7451,59,1,9618,59,1,9617,52,59,1,9619,99,107,59,1,9608,4,2,101,111,7469,7485,4,2,59,113,7475,7478,3,61,8421,117,105,118,59,3,8801,8421,116,59,1,8976,4,4,112,116,119,120,7499,7504,7517,7523,102,59,3,55349,56659,4,2,59,116,7510,7512,1,8869,111,109,59,1,8869,116,105,101,59,1,8904,4,12,68,72,85,86,98,100,104,109,112,116,117,118,7549,7571,7597,7619,7655,7660,7682,7708,7715,7721,7728,7750,4,4,76,82,108,114,7559,7562,7565,7568,59,1,9559,59,1,9556,59,1,9558,59,1,9555,4,5,59,68,85,100,117,7583,7585,7588,7591,7594,1,9552,59,1,9574,59,1,9577,59,1,9572,59,1,9575,4,4,76,82,108,114,7607,7610,7613,7616,59,1,9565,59,1,9562,59,1,9564,59,1,9561,4,7,59,72,76,82,104,108,114,7635,7637,7640,7643,7646,7649,7652,1,9553,59,1,9580,59,1,9571,59,1,9568,59,1,9579,59,1,9570,59,1,9567,111,120,59,1,10697,4,4,76,82,108,114,7670,7673,7676,7679,59,1,9557,59,1,9554,59,1,9488,59,1,9484,4,5,59,68,85,100,117,7694,7696,7699,7702,7705,1,9472,59,1,9573,59,1,9576,59,1,9516,59,1,9524,105,110,117,115,59,1,8863,108,117,115,59,1,8862,105,109,101,115,59,1,8864,4,4,76,82,108,114,7738,7741,7744,7747,59,1,9563,59,1,9560,59,1,9496,59,1,9492,4,7,59,72,76,82,104,108,114,7766,7768,7771,7774,7777,7780,7783,1,9474,59,1,9578,59,1,9569,59,1,9566,59,1,9532,59,1,9508,59,1,9500,114,105,109,101,59,1,8245,4,2,101,118,7799,7804,118,101,59,1,728,98,97,114,5,166,1,59,7812,1,166,4,4,99,101,105,111,7824,7829,7834,7846,114,59,3,55349,56503,109,105,59,1,8271,109,4,2,59,101,7841,7843,1,8765,59,1,8909,108,4,3,59,98,104,7855,7857,7860,1,92,59,1,10693,115,117,98,59,1,10184,4,2,108,109,7872,7885,108,4,2,59,101,7879,7881,1,8226,116,59,1,8226,112,4,3,59,69,101,7894,7896,7899,1,8782,59,1,10926,4,2,59,113,7905,7907,1,8783,59,1,8783,4,15,97,99,100,101,102,104,105,108,111,114,115,116,117,119,121,7942,8021,8075,8080,8121,8126,8157,8279,8295,8430,8446,8485,8491,8707,8726,4,3,99,112,114,7950,7956,8007,117,116,101,59,1,263,4,6,59,97,98,99,100,115,7970,7972,7977,7984,7998,8003,1,8745,110,100,59,1,10820,114,99,117,112,59,1,10825,4,2,97,117,7990,7994,112,59,1,10827,112,59,1,10823,111,116,59,1,10816,59,3,8745,65024,4,2,101,111,8013,8017,116,59,1,8257,110,59,1,711,4,4,97,101,105,117,8031,8046,8056,8061,4,2,112,114,8037,8041,115,59,1,10829,111,110,59,1,269,100,105,108,5,231,1,59,8054,1,231,114,99,59,1,265,112,115,4,2,59,115,8069,8071,1,10828,109,59,1,10832,111,116,59,1,267,4,3,100,109,110,8088,8097,8104,105,108,5,184,1,59,8095,1,184,112,116,121,118,59,1,10674,116,5,162,2,59,101,8112,8114,1,162,114,100,111,116,59,1,183,114,59,3,55349,56608,4,3,99,101,105,8134,8138,8154,121,59,1,1095,99,107,4,2,59,109,8146,8148,1,10003,97,114,107,59,1,10003,59,1,967,114,4,7,59,69,99,101,102,109,115,8174,8176,8179,8258,8261,8268,8273,1,9675,59,1,10691,4,3,59,101,108,8187,8189,8193,1,710,113,59,1,8791,101,4,2,97,100,8200,8223,114,114,111,119,4,2,108,114,8210,8216,101,102,116,59,1,8634,105,103,104,116,59,1,8635,4,5,82,83,97,99,100,8235,8238,8241,8246,8252,59,1,174,59,1,9416,115,116,59,1,8859,105,114,99,59,1,8858,97,115,104,59,1,8861,59,1,8791,110,105,110,116,59,1,10768,105,100,59,1,10991,99,105,114,59,1,10690,117,98,115,4,2,59,117,8288,8290,1,9827,105,116,59,1,9827,4,4,108,109,110,112,8305,8326,8376,8400,111,110,4,2,59,101,8313,8315,1,58,4,2,59,113,8321,8323,1,8788,59,1,8788,4,2,109,112,8332,8344,97,4,2,59,116,8339,8341,1,44,59,1,64,4,3,59,102,108,8352,8354,8358,1,8705,110,59,1,8728,101,4,2,109,120,8365,8371,101,110,116,59,1,8705,101,115,59,1,8450,4,2,103,105,8382,8395,4,2,59,100,8388,8390,1,8773,111,116,59,1,10861,110,116,59,1,8750,4,3,102,114,121,8408,8412,8417,59,3,55349,56660,111,100,59,1,8720,5,169,2,59,115,8424,8426,1,169,114,59,1,8471,4,2,97,111,8436,8441,114,114,59,1,8629,115,115,59,1,10007,4,2,99,117,8452,8457,114,59,3,55349,56504,4,2,98,112,8463,8474,4,2,59,101,8469,8471,1,10959,59,1,10961,4,2,59,101,8480,8482,1,10960,59,1,10962,100,111,116,59,1,8943,4,7,100,101,108,112,114,118,119,8507,8522,8536,8550,8600,8697,8702,97,114,114,4,2,108,114,8516,8519,59,1,10552,59,1,10549,4,2,112,115,8528,8532,114,59,1,8926,99,59,1,8927,97,114,114,4,2,59,112,8545,8547,1,8630,59,1,10557,4,6,59,98,99,100,111,115,8564,8566,8573,8587,8592,8596,1,8746,114,99,97,112,59,1,10824,4,2,97,117,8579,8583,112,59,1,10822,112,59,1,10826,111,116,59,1,8845,114,59,1,10821,59,3,8746,65024,4,4,97,108,114,118,8610,8623,8663,8672,114,114,4,2,59,109,8618,8620,1,8631,59,1,10556,121,4,3,101,118,119,8632,8651,8656,113,4,2,112,115,8639,8645,114,101,99,59,1,8926,117,99,99,59,1,8927,101,101,59,1,8910,101,100,103,101,59,1,8911,101,110,5,164,1,59,8670,1,164,101,97,114,114,111,119,4,2,108,114,8684,8690,101,102,116,59,1,8630,105,103,104,116,59,1,8631,101,101,59,1,8910,101,100,59,1,8911,4,2,99,105,8713,8721,111,110,105,110,116,59,1,8754,110,116,59,1,8753,108,99,116,121,59,1,9005,4,19,65,72,97,98,99,100,101,102,104,105,106,108,111,114,115,116,117,119,122,8773,8778,8783,8821,8839,8854,8887,8914,8930,8944,9036,9041,9058,9197,9227,9258,9281,9297,9305,114,114,59,1,8659,97,114,59,1,10597,4,4,103,108,114,115,8793,8799,8805,8809,103,101,114,59,1,8224,101,116,104,59,1,8504,114,59,1,8595,104,4,2,59,118,8816,8818,1,8208,59,1,8867,4,2,107,108,8827,8834,97,114,111,119,59,1,10511,97,99,59,1,733,4,2,97,121,8845,8851,114,111,110,59,1,271,59,1,1076,4,3,59,97,111,8862,8864,8880,1,8518,4,2,103,114,8870,8876,103,101,114,59,1,8225,114,59,1,8650,116,115,101,113,59,1,10871,4,3,103,108,109,8895,8902,8907,5,176,1,59,8900,1,176,116,97,59,1,948,112,116,121,118,59,1,10673,4,2,105,114,8920,8926,115,104,116,59,1,10623,59,3,55349,56609,97,114,4,2,108,114,8938,8941,59,1,8643,59,1,8642,4,5,97,101,103,115,118,8956,8986,8989,8996,9001,109,4,3,59,111,115,8965,8967,8983,1,8900,110,100,4,2,59,115,8975,8977,1,8900,117,105,116,59,1,9830,59,1,9830,59,1,168,97,109,109,97,59,1,989,105,110,59,1,8946,4,3,59,105,111,9009,9011,9031,1,247,100,101,5,247,2,59,111,9020,9022,1,247,110,116,105,109,101,115,59,1,8903,110,120,59,1,8903,99,121,59,1,1106,99,4,2,111,114,9048,9053,114,110,59,1,8990,111,112,59,1,8973,4,5,108,112,116,117,119,9070,9076,9081,9130,9144,108,97,114,59,1,36,102,59,3,55349,56661,4,5,59,101,109,112,115,9093,9095,9109,9116,9122,1,729,113,4,2,59,100,9102,9104,1,8784,111,116,59,1,8785,105,110,117,115,59,1,8760,108,117,115,59,1,8724,113,117,97,114,101,59,1,8865,98,108,101,98,97,114,119,101,100,103,101,59,1,8966,110,4,3,97,100,104,9153,9160,9172,114,114,111,119,59,1,8595,111,119,110,97,114,114,111,119,115,59,1,8650,97,114,112,111,111,110,4,2,108,114,9184,9190,101,102,116,59,1,8643,105,103,104,116,59,1,8642,4,2,98,99,9203,9211,107,97,114,111,119,59,1,10512,4,2,111,114,9217,9222,114,110,59,1,8991,111,112,59,1,8972,4,3,99,111,116,9235,9248,9252,4,2,114,121,9241,9245,59,3,55349,56505,59,1,1109,108,59,1,10742,114,111,107,59,1,273,4,2,100,114,9264,9269,111,116,59,1,8945,105,4,2,59,102,9276,9278,1,9663,59,1,9662,4,2,97,104,9287,9292,114,114,59,1,8693,97,114,59,1,10607,97,110,103,108,101,59,1,10662,4,2,99,105,9311,9315,121,59,1,1119,103,114,97,114,114,59,1,10239,4,18,68,97,99,100,101,102,103,108,109,110,111,112,113,114,115,116,117,120,9361,9376,9398,9439,9444,9447,9462,9495,9531,9585,9598,9614,9659,9755,9771,9792,9808,9826,4,2,68,111,9367,9372,111,116,59,1,10871,116,59,1,8785,4,2,99,115,9382,9392,117,116,101,5,233,1,59,9390,1,233,116,101,114,59,1,10862,4,4,97,105,111,121,9408,9414,9430,9436,114,111,110,59,1,283,114,4,2,59,99,9421,9423,1,8790,5,234,1,59,9428,1,234,108,111,110,59,1,8789,59,1,1101,111,116,59,1,279,59,1,8519,4,2,68,114,9453,9458,111,116,59,1,8786,59,3,55349,56610,4,3,59,114,115,9470,9472,9482,1,10906,97,118,101,5,232,1,59,9480,1,232,4,2,59,100,9488,9490,1,10902,111,116,59,1,10904,4,4,59,105,108,115,9505,9507,9515,9518,1,10905,110,116,101,114,115,59,1,9191,59,1,8467,4,2,59,100,9524,9526,1,10901,111,116,59,1,10903,4,3,97,112,115,9539,9544,9564,99,114,59,1,275,116,121,4,3,59,115,118,9554,9556,9561,1,8709,101,116,59,1,8709,59,1,8709,112,4,2,49,59,9571,9583,4,2,51,52,9577,9580,59,1,8196,59,1,8197,1,8195,4,2,103,115,9591,9594,59,1,331,112,59,1,8194,4,2,103,112,9604,9609,111,110,59,1,281,102,59,3,55349,56662,4,3,97,108,115,9622,9635,9640,114,4,2,59,115,9629,9631,1,8917,108,59,1,10723,117,115,59,1,10865,105,4,3,59,108,118,9649,9651,9656,1,949,111,110,59,1,949,59,1,1013,4,4,99,115,117,118,9669,9686,9716,9747,4,2,105,111,9675,9680,114,99,59,1,8790,108,111,110,59,1,8789,4,2,105,108,9692,9696,109,59,1,8770,97,110,116,4,2,103,108,9705,9710,116,114,59,1,10902,101,115,115,59,1,10901,4,3,97,101,105,9724,9729,9734,108,115,59,1,61,115,116,59,1,8799,118,4,2,59,68,9741,9743,1,8801,68,59,1,10872,112,97,114,115,108,59,1,10725,4,2,68,97,9761,9766,111,116,59,1,8787,114,114,59,1,10609,4,3,99,100,105,9779,9783,9788,114,59,1,8495,111,116,59,1,8784,109,59,1,8770,4,2,97,104,9798,9801,59,1,951,5,240,1,59,9806,1,240,4,2,109,114,9814,9822,108,5,235,1,59,9820,1,235,111,59,1,8364,4,3,99,105,112,9834,9838,9843,108,59,1,33,115,116,59,1,8707,4,2,101,111,9849,9859,99,116,97,116,105,111,110,59,1,8496,110,101,110,116,105,97,108,101,59,1,8519,4,12,97,99,101,102,105,106,108,110,111,112,114,115,9896,9910,9914,9921,9954,9960,9967,9989,9994,10027,10036,10164,108,108,105,110,103,100,111,116,115,101,113,59,1,8786,121,59,1,1092,109,97,108,101,59,1,9792,4,3,105,108,114,9929,9935,9950,108,105,103,59,1,64259,4,2,105,108,9941,9945,103,59,1,64256,105,103,59,1,64260,59,3,55349,56611,108,105,103,59,1,64257,108,105,103,59,3,102,106,4,3,97,108,116,9975,9979,9984,116,59,1,9837,105,103,59,1,64258,110,115,59,1,9649,111,102,59,1,402,4,2,112,114,1e4,10005,102,59,3,55349,56663,4,2,97,107,10011,10016,108,108,59,1,8704,4,2,59,118,10022,10024,1,8916,59,1,10969,97,114,116,105,110,116,59,1,10765,4,2,97,111,10042,10159,4,2,99,115,10048,10155,4,6,49,50,51,52,53,55,10062,10102,10114,10135,10139,10151,4,6,50,51,52,53,54,56,10076,10083,10086,10093,10096,10099,5,189,1,59,10081,1,189,59,1,8531,5,188,1,59,10091,1,188,59,1,8533,59,1,8537,59,1,8539,4,2,51,53,10108,10111,59,1,8532,59,1,8534,4,3,52,53,56,10122,10129,10132,5,190,1,59,10127,1,190,59,1,8535,59,1,8540,53,59,1,8536,4,2,54,56,10145,10148,59,1,8538,59,1,8541,56,59,1,8542,108,59,1,8260,119,110,59,1,8994,99,114,59,3,55349,56507,4,17,69,97,98,99,100,101,102,103,105,106,108,110,111,114,115,116,118,10206,10217,10247,10254,10268,10273,10358,10363,10374,10380,10385,10406,10458,10464,10470,10497,10610,4,2,59,108,10212,10214,1,8807,59,1,10892,4,3,99,109,112,10225,10231,10244,117,116,101,59,1,501,109,97,4,2,59,100,10239,10241,1,947,59,1,989,59,1,10886,114,101,118,101,59,1,287,4,2,105,121,10260,10265,114,99,59,1,285,59,1,1075,111,116,59,1,289,4,4,59,108,113,115,10283,10285,10288,10308,1,8805,59,1,8923,4,3,59,113,115,10296,10298,10301,1,8805,59,1,8807,108,97,110,116,59,1,10878,4,4,59,99,100,108,10318,10320,10324,10345,1,10878,99,59,1,10921,111,116,4,2,59,111,10332,10334,1,10880,4,2,59,108,10340,10342,1,10882,59,1,10884,4,2,59,101,10351,10354,3,8923,65024,115,59,1,10900,114,59,3,55349,56612,4,2,59,103,10369,10371,1,8811,59,1,8921,109,101,108,59,1,8503,99,121,59,1,1107,4,4,59,69,97,106,10395,10397,10400,10403,1,8823,59,1,10898,59,1,10917,59,1,10916,4,4,69,97,101,115,10416,10419,10434,10453,59,1,8809,112,4,2,59,112,10426,10428,1,10890,114,111,120,59,1,10890,4,2,59,113,10440,10442,1,10888,4,2,59,113,10448,10450,1,10888,59,1,8809,105,109,59,1,8935,112,102,59,3,55349,56664,97,118,101,59,1,96,4,2,99,105,10476,10480,114,59,1,8458,109,4,3,59,101,108,10489,10491,10494,1,8819,59,1,10894,59,1,10896,5,62,6,59,99,100,108,113,114,10512,10514,10527,10532,10538,10545,1,62,4,2,99,105,10520,10523,59,1,10919,114,59,1,10874,111,116,59,1,8919,80,97,114,59,1,10645,117,101,115,116,59,1,10876,4,5,97,100,101,108,115,10557,10574,10579,10599,10605,4,2,112,114,10563,10570,112,114,111,120,59,1,10886,114,59,1,10616,111,116,59,1,8919,113,4,2,108,113,10586,10592,101,115,115,59,1,8923,108,101,115,115,59,1,10892,101,115,115,59,1,8823,105,109,59,1,8819,4,2,101,110,10616,10626,114,116,110,101,113,113,59,3,8809,65024,69,59,3,8809,65024,4,10,65,97,98,99,101,102,107,111,115,121,10653,10658,10713,10718,10724,10760,10765,10786,10850,10875,114,114,59,1,8660,4,4,105,108,109,114,10668,10674,10678,10684,114,115,112,59,1,8202,102,59,1,189,105,108,116,59,1,8459,4,2,100,114,10690,10695,99,121,59,1,1098,4,3,59,99,119,10703,10705,10710,1,8596,105,114,59,1,10568,59,1,8621,97,114,59,1,8463,105,114,99,59,1,293,4,3,97,108,114,10732,10748,10754,114,116,115,4,2,59,117,10741,10743,1,9829,105,116,59,1,9829,108,105,112,59,1,8230,99,111,110,59,1,8889,114,59,3,55349,56613,115,4,2,101,119,10772,10779,97,114,111,119,59,1,10533,97,114,111,119,59,1,10534,4,5,97,109,111,112,114,10798,10803,10809,10839,10844,114,114,59,1,8703,116,104,116,59,1,8763,107,4,2,108,114,10816,10827,101,102,116,97,114,114,111,119,59,1,8617,105,103,104,116,97,114,114,111,119,59,1,8618,102,59,3,55349,56665,98,97,114,59,1,8213,4,3,99,108,116,10858,10863,10869,114,59,3,55349,56509,97,115,104,59,1,8463,114,111,107,59,1,295,4,2,98,112,10881,10887,117,108,108,59,1,8259,104,101,110,59,1,8208,4,15,97,99,101,102,103,105,106,109,110,111,112,113,115,116,117,10925,10936,10958,10977,10990,11001,11039,11045,11101,11192,11220,11226,11237,11285,11299,99,117,116,101,5,237,1,59,10934,1,237,4,3,59,105,121,10944,10946,10955,1,8291,114,99,5,238,1,59,10953,1,238,59,1,1080,4,2,99,120,10964,10968,121,59,1,1077,99,108,5,161,1,59,10975,1,161,4,2,102,114,10983,10986,59,1,8660,59,3,55349,56614,114,97,118,101,5,236,1,59,10999,1,236,4,4,59,105,110,111,11011,11013,11028,11034,1,8520,4,2,105,110,11019,11024,110,116,59,1,10764,116,59,1,8749,102,105,110,59,1,10716,116,97,59,1,8489,108,105,103,59,1,307,4,3,97,111,112,11053,11092,11096,4,3,99,103,116,11061,11065,11088,114,59,1,299,4,3,101,108,112,11073,11076,11082,59,1,8465,105,110,101,59,1,8464,97,114,116,59,1,8465,104,59,1,305,102,59,1,8887,101,100,59,1,437,4,5,59,99,102,111,116,11113,11115,11121,11136,11142,1,8712,97,114,101,59,1,8453,105,110,4,2,59,116,11129,11131,1,8734,105,101,59,1,10717,100,111,116,59,1,305,4,5,59,99,101,108,112,11154,11156,11161,11179,11186,1,8747,97,108,59,1,8890,4,2,103,114,11167,11173,101,114,115,59,1,8484,99,97,108,59,1,8890,97,114,104,107,59,1,10775,114,111,100,59,1,10812,4,4,99,103,112,116,11202,11206,11211,11216,121,59,1,1105,111,110,59,1,303,102,59,3,55349,56666,97,59,1,953,114,111,100,59,1,10812,117,101,115,116,5,191,1,59,11235,1,191,4,2,99,105,11243,11248,114,59,3,55349,56510,110,4,5,59,69,100,115,118,11261,11263,11266,11271,11282,1,8712,59,1,8953,111,116,59,1,8949,4,2,59,118,11277,11279,1,8948,59,1,8947,59,1,8712,4,2,59,105,11291,11293,1,8290,108,100,101,59,1,297,4,2,107,109,11305,11310,99,121,59,1,1110,108,5,239,1,59,11316,1,239,4,6,99,102,109,111,115,117,11332,11346,11351,11357,11363,11380,4,2,105,121,11338,11343,114,99,59,1,309,59,1,1081,114,59,3,55349,56615,97,116,104,59,1,567,112,102,59,3,55349,56667,4,2,99,101,11369,11374,114,59,3,55349,56511,114,99,121,59,1,1112,107,99,121,59,1,1108,4,8,97,99,102,103,104,106,111,115,11404,11418,11433,11438,11445,11450,11455,11461,112,112,97,4,2,59,118,11413,11415,1,954,59,1,1008,4,2,101,121,11424,11430,100,105,108,59,1,311,59,1,1082,114,59,3,55349,56616,114,101,101,110,59,1,312,99,121,59,1,1093,99,121,59,1,1116,112,102,59,3,55349,56668,99,114,59,3,55349,56512,4,23,65,66,69,72,97,98,99,100,101,102,103,104,106,108,109,110,111,112,114,115,116,117,118,11515,11538,11544,11555,11560,11721,11780,11818,11868,12136,12160,12171,12203,12208,12246,12275,12327,12509,12523,12569,12641,12732,12752,4,3,97,114,116,11523,11528,11532,114,114,59,1,8666,114,59,1,8656,97,105,108,59,1,10523,97,114,114,59,1,10510,4,2,59,103,11550,11552,1,8806,59,1,10891,97,114,59,1,10594,4,9,99,101,103,109,110,112,113,114,116,11580,11586,11594,11600,11606,11624,11627,11636,11694,117,116,101,59,1,314,109,112,116,121,118,59,1,10676,114,97,110,59,1,8466,98,100,97,59,1,955,103,4,3,59,100,108,11615,11617,11620,1,10216,59,1,10641,101,59,1,10216,59,1,10885,117,111,5,171,1,59,11634,1,171,114,4,8,59,98,102,104,108,112,115,116,11655,11657,11669,11673,11677,11681,11685,11690,1,8592,4,2,59,102,11663,11665,1,8676,115,59,1,10527,115,59,1,10525,107,59,1,8617,112,59,1,8619,108,59,1,10553,105,109,59,1,10611,108,59,1,8610,4,3,59,97,101,11702,11704,11709,1,10923,105,108,59,1,10521,4,2,59,115,11715,11717,1,10925,59,3,10925,65024,4,3,97,98,114,11729,11734,11739,114,114,59,1,10508,114,107,59,1,10098,4,2,97,107,11745,11758,99,4,2,101,107,11752,11755,59,1,123,59,1,91,4,2,101,115,11764,11767,59,1,10635,108,4,2,100,117,11774,11777,59,1,10639,59,1,10637,4,4,97,101,117,121,11790,11796,11811,11815,114,111,110,59,1,318,4,2,100,105,11802,11807,105,108,59,1,316,108,59,1,8968,98,59,1,123,59,1,1083,4,4,99,113,114,115,11828,11832,11845,11864,97,59,1,10550,117,111,4,2,59,114,11840,11842,1,8220,59,1,8222,4,2,100,117,11851,11857,104,97,114,59,1,10599,115,104,97,114,59,1,10571,104,59,1,8626,4,5,59,102,103,113,115,11880,11882,12008,12011,12031,1,8804,116,4,5,97,104,108,114,116,11895,11913,11935,11947,11996,114,114,111,119,4,2,59,116,11905,11907,1,8592,97,105,108,59,1,8610,97,114,112,111,111,110,4,2,100,117,11925,11931,111,119,110,59,1,8637,112,59,1,8636,101,102,116,97,114,114,111,119,115,59,1,8647,105,103,104,116,4,3,97,104,115,11959,11974,11984,114,114,111,119,4,2,59,115,11969,11971,1,8596,59,1,8646,97,114,112,111,111,110,115,59,1,8651,113,117,105,103,97,114,114,111,119,59,1,8621,104,114,101,101,116,105,109,101,115,59,1,8907,59,1,8922,4,3,59,113,115,12019,12021,12024,1,8804,59,1,8806,108,97,110,116,59,1,10877,4,5,59,99,100,103,115,12043,12045,12049,12070,12083,1,10877,99,59,1,10920,111,116,4,2,59,111,12057,12059,1,10879,4,2,59,114,12065,12067,1,10881,59,1,10883,4,2,59,101,12076,12079,3,8922,65024,115,59,1,10899,4,5,97,100,101,103,115,12095,12103,12108,12126,12131,112,112,114,111,120,59,1,10885,111,116,59,1,8918,113,4,2,103,113,12115,12120,116,114,59,1,8922,103,116,114,59,1,10891,116,114,59,1,8822,105,109,59,1,8818,4,3,105,108,114,12144,12150,12156,115,104,116,59,1,10620,111,111,114,59,1,8970,59,3,55349,56617,4,2,59,69,12166,12168,1,8822,59,1,10897,4,2,97,98,12177,12198,114,4,2,100,117,12184,12187,59,1,8637,4,2,59,108,12193,12195,1,8636,59,1,10602,108,107,59,1,9604,99,121,59,1,1113,4,5,59,97,99,104,116,12220,12222,12227,12235,12241,1,8810,114,114,59,1,8647,111,114,110,101,114,59,1,8990,97,114,100,59,1,10603,114,105,59,1,9722,4,2,105,111,12252,12258,100,111,116,59,1,320,117,115,116,4,2,59,97,12267,12269,1,9136,99,104,101,59,1,9136,4,4,69,97,101,115,12285,12288,12303,12322,59,1,8808,112,4,2,59,112,12295,12297,1,10889,114,111,120,59,1,10889,4,2,59,113,12309,12311,1,10887,4,2,59,113,12317,12319,1,10887,59,1,8808,105,109,59,1,8934,4,8,97,98,110,111,112,116,119,122,12345,12359,12364,12421,12446,12467,12474,12490,4,2,110,114,12351,12355,103,59,1,10220,114,59,1,8701,114,107,59,1,10214,103,4,3,108,109,114,12373,12401,12409,101,102,116,4,2,97,114,12382,12389,114,114,111,119,59,1,10229,105,103,104,116,97,114,114,111,119,59,1,10231,97,112,115,116,111,59,1,10236,105,103,104,116,97,114,114,111,119,59,1,10230,112,97,114,114,111,119,4,2,108,114,12433,12439,101,102,116,59,1,8619,105,103,104,116,59,1,8620,4,3,97,102,108,12454,12458,12462,114,59,1,10629,59,3,55349,56669,117,115,59,1,10797,105,109,101,115,59,1,10804,4,2,97,98,12480,12485,115,116,59,1,8727,97,114,59,1,95,4,3,59,101,102,12498,12500,12506,1,9674,110,103,101,59,1,9674,59,1,10731,97,114,4,2,59,108,12517,12519,1,40,116,59,1,10643,4,5,97,99,104,109,116,12535,12540,12548,12561,12564,114,114,59,1,8646,111,114,110,101,114,59,1,8991,97,114,4,2,59,100,12556,12558,1,8651,59,1,10605,59,1,8206,114,105,59,1,8895,4,6,97,99,104,105,113,116,12583,12589,12594,12597,12614,12635,113,117,111,59,1,8249,114,59,3,55349,56513,59,1,8624,109,4,3,59,101,103,12606,12608,12611,1,8818,59,1,10893,59,1,10895,4,2,98,117,12620,12623,59,1,91,111,4,2,59,114,12630,12632,1,8216,59,1,8218,114,111,107,59,1,322,5,60,8,59,99,100,104,105,108,113,114,12660,12662,12675,12680,12686,12692,12698,12705,1,60,4,2,99,105,12668,12671,59,1,10918,114,59,1,10873,111,116,59,1,8918,114,101,101,59,1,8907,109,101,115,59,1,8905,97,114,114,59,1,10614,117,101,115,116,59,1,10875,4,2,80,105,12711,12716,97,114,59,1,10646,4,3,59,101,102,12724,12726,12729,1,9667,59,1,8884,59,1,9666,114,4,2,100,117,12739,12746,115,104,97,114,59,1,10570,104,97,114,59,1,10598,4,2,101,110,12758,12768,114,116,110,101,113,113,59,3,8808,65024,69,59,3,8808,65024,4,14,68,97,99,100,101,102,104,105,108,110,111,112,115,117,12803,12809,12893,12908,12914,12928,12933,12937,13011,13025,13032,13049,13052,13069,68,111,116,59,1,8762,4,4,99,108,112,114,12819,12827,12849,12887,114,5,175,1,59,12825,1,175,4,2,101,116,12833,12836,59,1,9794,4,2,59,101,12842,12844,1,10016,115,101,59,1,10016,4,2,59,115,12855,12857,1,8614,116,111,4,4,59,100,108,117,12869,12871,12877,12883,1,8614,111,119,110,59,1,8615,101,102,116,59,1,8612,112,59,1,8613,107,101,114,59,1,9646,4,2,111,121,12899,12905,109,109,97,59,1,10793,59,1,1084,97,115,104,59,1,8212,97,115,117,114,101,100,97,110,103,108,101,59,1,8737,114,59,3,55349,56618,111,59,1,8487,4,3,99,100,110,12945,12954,12985,114,111,5,181,1,59,12952,1,181,4,4,59,97,99,100,12964,12966,12971,12976,1,8739,115,116,59,1,42,105,114,59,1,10992,111,116,5,183,1,59,12983,1,183,117,115,4,3,59,98,100,12995,12997,13e3,1,8722,59,1,8863,4,2,59,117,13006,13008,1,8760,59,1,10794,4,2,99,100,13017,13021,112,59,1,10971,114,59,1,8230,112,108,117,115,59,1,8723,4,2,100,112,13038,13044,101,108,115,59,1,8871,102,59,3,55349,56670,59,1,8723,4,2,99,116,13058,13063,114,59,3,55349,56514,112,111,115,59,1,8766,4,3,59,108,109,13077,13079,13087,1,956,116,105,109,97,112,59,1,8888,97,112,59,1,8888,4,24,71,76,82,86,97,98,99,100,101,102,103,104,105,106,108,109,111,112,114,115,116,117,118,119,13142,13165,13217,13229,13247,13330,13359,13414,13420,13508,13513,13579,13602,13626,13631,13762,13767,13855,13936,13995,14214,14285,14312,14432,4,2,103,116,13148,13152,59,3,8921,824,4,2,59,118,13158,13161,3,8811,8402,59,3,8811,824,4,3,101,108,116,13173,13200,13204,102,116,4,2,97,114,13181,13188,114,114,111,119,59,1,8653,105,103,104,116,97,114,114,111,119,59,1,8654,59,3,8920,824,4,2,59,118,13210,13213,3,8810,8402,59,3,8810,824,105,103,104,116,97,114,114,111,119,59,1,8655,4,2,68,100,13235,13241,97,115,104,59,1,8879,97,115,104,59,1,8878,4,5,98,99,110,112,116,13259,13264,13270,13275,13308,108,97,59,1,8711,117,116,101,59,1,324,103,59,3,8736,8402,4,5,59,69,105,111,112,13287,13289,13293,13298,13302,1,8777,59,3,10864,824,100,59,3,8779,824,115,59,1,329,114,111,120,59,1,8777,117,114,4,2,59,97,13316,13318,1,9838,108,4,2,59,115,13325,13327,1,9838,59,1,8469,4,2,115,117,13336,13344,112,5,160,1,59,13342,1,160,109,112,4,2,59,101,13352,13355,3,8782,824,59,3,8783,824,4,5,97,101,111,117,121,13371,13385,13391,13407,13411,4,2,112,114,13377,13380,59,1,10819,111,110,59,1,328,100,105,108,59,1,326,110,103,4,2,59,100,13399,13401,1,8775,111,116,59,3,10861,824,112,59,1,10818,59,1,1085,97,115,104,59,1,8211,4,7,59,65,97,100,113,115,120,13436,13438,13443,13466,13472,13478,13494,1,8800,114,114,59,1,8663,114,4,2,104,114,13450,13454,107,59,1,10532,4,2,59,111,13460,13462,1,8599,119,59,1,8599,111,116,59,3,8784,824,117,105,118,59,1,8802,4,2,101,105,13484,13489,97,114,59,1,10536,109,59,3,8770,824,105,115,116,4,2,59,115,13503,13505,1,8708,59,1,8708,114,59,3,55349,56619,4,4,69,101,115,116,13523,13527,13563,13568,59,3,8807,824,4,3,59,113,115,13535,13537,13559,1,8817,4,3,59,113,115,13545,13547,13551,1,8817,59,3,8807,824,108,97,110,116,59,3,10878,824,59,3,10878,824,105,109,59,1,8821,4,2,59,114,13574,13576,1,8815,59,1,8815,4,3,65,97,112,13587,13592,13597,114,114,59,1,8654,114,114,59,1,8622,97,114,59,1,10994,4,3,59,115,118,13610,13612,13623,1,8715,4,2,59,100,13618,13620,1,8956,59,1,8954,59,1,8715,99,121,59,1,1114,4,7,65,69,97,100,101,115,116,13647,13652,13656,13661,13665,13737,13742,114,114,59,1,8653,59,3,8806,824,114,114,59,1,8602,114,59,1,8229,4,4,59,102,113,115,13675,13677,13703,13725,1,8816,116,4,2,97,114,13684,13691,114,114,111,119,59,1,8602,105,103,104,116,97,114,114,111,119,59,1,8622,4,3,59,113,115,13711,13713,13717,1,8816,59,3,8806,824,108,97,110,116,59,3,10877,824,4,2,59,115,13731,13734,3,10877,824,59,1,8814,105,109,59,1,8820,4,2,59,114,13748,13750,1,8814,105,4,2,59,101,13757,13759,1,8938,59,1,8940,105,100,59,1,8740,4,2,112,116,13773,13778,102,59,3,55349,56671,5,172,3,59,105,110,13787,13789,13829,1,172,110,4,4,59,69,100,118,13800,13802,13806,13812,1,8713,59,3,8953,824,111,116,59,3,8949,824,4,3,97,98,99,13820,13823,13826,59,1,8713,59,1,8951,59,1,8950,105,4,2,59,118,13836,13838,1,8716,4,3,97,98,99,13846,13849,13852,59,1,8716,59,1,8958,59,1,8957,4,3,97,111,114,13863,13892,13899,114,4,4,59,97,115,116,13874,13876,13883,13888,1,8742,108,108,101,108,59,1,8742,108,59,3,11005,8421,59,3,8706,824,108,105,110,116,59,1,10772,4,3,59,99,101,13907,13909,13914,1,8832,117,101,59,1,8928,4,2,59,99,13920,13923,3,10927,824,4,2,59,101,13929,13931,1,8832,113,59,3,10927,824,4,4,65,97,105,116,13946,13951,13971,13982,114,114,59,1,8655,114,114,4,3,59,99,119,13961,13963,13967,1,8603,59,3,10547,824,59,3,8605,824,103,104,116,97,114,114,111,119,59,1,8603,114,105,4,2,59,101,13990,13992,1,8939,59,1,8941,4,7,99,104,105,109,112,113,117,14011,14036,14060,14080,14085,14090,14106,4,4,59,99,101,114,14021,14023,14028,14032,1,8833,117,101,59,1,8929,59,3,10928,824,59,3,55349,56515,111,114,116,4,2,109,112,14045,14050,105,100,59,1,8740,97,114,97,108,108,101,108,59,1,8742,109,4,2,59,101,14067,14069,1,8769,4,2,59,113,14075,14077,1,8772,59,1,8772,105,100,59,1,8740,97,114,59,1,8742,115,117,4,2,98,112,14098,14102,101,59,1,8930,101,59,1,8931,4,3,98,99,112,14114,14157,14171,4,4,59,69,101,115,14124,14126,14130,14133,1,8836,59,3,10949,824,59,1,8840,101,116,4,2,59,101,14141,14144,3,8834,8402,113,4,2,59,113,14151,14153,1,8840,59,3,10949,824,99,4,2,59,101,14164,14166,1,8833,113,59,3,10928,824,4,4,59,69,101,115,14181,14183,14187,14190,1,8837,59,3,10950,824,59,1,8841,101,116,4,2,59,101,14198,14201,3,8835,8402,113,4,2,59,113,14208,14210,1,8841,59,3,10950,824,4,4,103,105,108,114,14224,14228,14238,14242,108,59,1,8825,108,100,101,5,241,1,59,14236,1,241,103,59,1,8824,105,97,110,103,108,101,4,2,108,114,14254,14269,101,102,116,4,2,59,101,14263,14265,1,8938,113,59,1,8940,105,103,104,116,4,2,59,101,14279,14281,1,8939,113,59,1,8941,4,2,59,109,14291,14293,1,957,4,3,59,101,115,14301,14303,14308,1,35,114,111,59,1,8470,112,59,1,8199,4,9,68,72,97,100,103,105,108,114,115,14332,14338,14344,14349,14355,14369,14376,14408,14426,97,115,104,59,1,8877,97,114,114,59,1,10500,112,59,3,8781,8402,97,115,104,59,1,8876,4,2,101,116,14361,14365,59,3,8805,8402,59,3,62,8402,110,102,105,110,59,1,10718,4,3,65,101,116,14384,14389,14393,114,114,59,1,10498,59,3,8804,8402,4,2,59,114,14399,14402,3,60,8402,105,101,59,3,8884,8402,4,2,65,116,14414,14419,114,114,59,1,10499,114,105,101,59,3,8885,8402,105,109,59,3,8764,8402,4,3,65,97,110,14440,14445,14468,114,114,59,1,8662,114,4,2,104,114,14452,14456,107,59,1,10531,4,2,59,111,14462,14464,1,8598,119,59,1,8598,101,97,114,59,1,10535,4,18,83,97,99,100,101,102,103,104,105,108,109,111,112,114,115,116,117,118,14512,14515,14535,14560,14597,14603,14618,14643,14657,14662,14701,14741,14747,14769,14851,14877,14907,14916,59,1,9416,4,2,99,115,14521,14531,117,116,101,5,243,1,59,14529,1,243,116,59,1,8859,4,2,105,121,14541,14557,114,4,2,59,99,14548,14550,1,8858,5,244,1,59,14555,1,244,59,1,1086,4,5,97,98,105,111,115,14572,14577,14583,14587,14591,115,104,59,1,8861,108,97,99,59,1,337,118,59,1,10808,116,59,1,8857,111,108,100,59,1,10684,108,105,103,59,1,339,4,2,99,114,14609,14614,105,114,59,1,10687,59,3,55349,56620,4,3,111,114,116,14626,14630,14640,110,59,1,731,97,118,101,5,242,1,59,14638,1,242,59,1,10689,4,2,98,109,14649,14654,97,114,59,1,10677,59,1,937,110,116,59,1,8750,4,4,97,99,105,116,14672,14677,14693,14698,114,114,59,1,8634,4,2,105,114,14683,14687,114,59,1,10686,111,115,115,59,1,10683,110,101,59,1,8254,59,1,10688,4,3,97,101,105,14709,14714,14719,99,114,59,1,333,103,97,59,1,969,4,3,99,100,110,14727,14733,14736,114,111,110,59,1,959,59,1,10678,117,115,59,1,8854,112,102,59,3,55349,56672,4,3,97,101,108,14755,14759,14764,114,59,1,10679,114,112,59,1,10681,117,115,59,1,8853,4,7,59,97,100,105,111,115,118,14785,14787,14792,14831,14837,14841,14848,1,8744,114,114,59,1,8635,4,4,59,101,102,109,14802,14804,14817,14824,1,10845,114,4,2,59,111,14811,14813,1,8500,102,59,1,8500,5,170,1,59,14822,1,170,5,186,1,59,14829,1,186,103,111,102,59,1,8886,114,59,1,10838,108,111,112,101,59,1,10839,59,1,10843,4,3,99,108,111,14859,14863,14873,114,59,1,8500,97,115,104,5,248,1,59,14871,1,248,108,59,1,8856,105,4,2,108,109,14884,14893,100,101,5,245,1,59,14891,1,245,101,115,4,2,59,97,14901,14903,1,8855,115,59,1,10806,109,108,5,246,1,59,14914,1,246,98,97,114,59,1,9021,4,12,97,99,101,102,104,105,108,109,111,114,115,117,14948,14992,14996,15033,15038,15068,15090,15189,15192,15222,15427,15441,114,4,4,59,97,115,116,14959,14961,14976,14989,1,8741,5,182,2,59,108,14968,14970,1,182,108,101,108,59,1,8741,4,2,105,108,14982,14986,109,59,1,10995,59,1,11005,59,1,8706,121,59,1,1087,114,4,5,99,105,109,112,116,15009,15014,15019,15024,15027,110,116,59,1,37,111,100,59,1,46,105,108,59,1,8240,59,1,8869,101,110,107,59,1,8241,114,59,3,55349,56621,4,3,105,109,111,15046,15057,15063,4,2,59,118,15052,15054,1,966,59,1,981,109,97,116,59,1,8499,110,101,59,1,9742,4,3,59,116,118,15076,15078,15087,1,960,99,104,102,111,114,107,59,1,8916,59,1,982,4,2,97,117,15096,15119,110,4,2,99,107,15103,15115,107,4,2,59,104,15110,15112,1,8463,59,1,8462,118,59,1,8463,115,4,9,59,97,98,99,100,101,109,115,116,15140,15142,15148,15151,15156,15168,15171,15179,15184,1,43,99,105,114,59,1,10787,59,1,8862,105,114,59,1,10786,4,2,111,117,15162,15165,59,1,8724,59,1,10789,59,1,10866,110,5,177,1,59,15177,1,177,105,109,59,1,10790,119,111,59,1,10791,59,1,177,4,3,105,112,117,15200,15208,15213,110,116,105,110,116,59,1,10773,102,59,3,55349,56673,110,100,5,163,1,59,15220,1,163,4,10,59,69,97,99,101,105,110,111,115,117,15244,15246,15249,15253,15258,15334,15347,15367,15416,15421,1,8826,59,1,10931,112,59,1,10935,117,101,59,1,8828,4,2,59,99,15264,15266,1,10927,4,6,59,97,99,101,110,115,15280,15282,15290,15299,15303,15329,1,8826,112,112,114,111,120,59,1,10935,117,114,108,121,101,113,59,1,8828,113,59,1,10927,4,3,97,101,115,15311,15319,15324,112,112,114,111,120,59,1,10937,113,113,59,1,10933,105,109,59,1,8936,105,109,59,1,8830,109,101,4,2,59,115,15342,15344,1,8242,59,1,8473,4,3,69,97,115,15355,15358,15362,59,1,10933,112,59,1,10937,105,109,59,1,8936,4,3,100,102,112,15375,15378,15404,59,1,8719,4,3,97,108,115,15386,15392,15398,108,97,114,59,1,9006,105,110,101,59,1,8978,117,114,102,59,1,8979,4,2,59,116,15410,15412,1,8733,111,59,1,8733,105,109,59,1,8830,114,101,108,59,1,8880,4,2,99,105,15433,15438,114,59,3,55349,56517,59,1,968,110,99,115,112,59,1,8200,4,6,102,105,111,112,115,117,15462,15467,15472,15478,15485,15491,114,59,3,55349,56622,110,116,59,1,10764,112,102,59,3,55349,56674,114,105,109,101,59,1,8279,99,114,59,3,55349,56518,4,3,97,101,111,15499,15520,15534,116,4,2,101,105,15506,15515,114,110,105,111,110,115,59,1,8461,110,116,59,1,10774,115,116,4,2,59,101,15528,15530,1,63,113,59,1,8799,116,5,34,1,59,15540,1,34,4,21,65,66,72,97,98,99,100,101,102,104,105,108,109,110,111,112,114,115,116,117,120,15586,15609,15615,15620,15796,15855,15893,15931,15977,16001,16039,16183,16204,16222,16228,16285,16312,16318,16363,16408,16416,4,3,97,114,116,15594,15599,15603,114,114,59,1,8667,114,59,1,8658,97,105,108,59,1,10524,97,114,114,59,1,10511,97,114,59,1,10596,4,7,99,100,101,110,113,114,116,15636,15651,15656,15664,15687,15696,15770,4,2,101,117,15642,15646,59,3,8765,817,116,101,59,1,341,105,99,59,1,8730,109,112,116,121,118,59,1,10675,103,4,4,59,100,101,108,15675,15677,15680,15683,1,10217,59,1,10642,59,1,10661,101,59,1,10217,117,111,5,187,1,59,15694,1,187,114,4,11,59,97,98,99,102,104,108,112,115,116,119,15721,15723,15727,15739,15742,15746,15750,15754,15758,15763,15767,1,8594,112,59,1,10613,4,2,59,102,15733,15735,1,8677,115,59,1,10528,59,1,10547,115,59,1,10526,107,59,1,8618,112,59,1,8620,108,59,1,10565,105,109,59,1,10612,108,59,1,8611,59,1,8605,4,2,97,105,15776,15781,105,108,59,1,10522,111,4,2,59,110,15788,15790,1,8758,97,108,115,59,1,8474,4,3,97,98,114,15804,15809,15814,114,114,59,1,10509,114,107,59,1,10099,4,2,97,107,15820,15833,99,4,2,101,107,15827,15830,59,1,125,59,1,93,4,2,101,115,15839,15842,59,1,10636,108,4,2,100,117,15849,15852,59,1,10638,59,1,10640,4,4,97,101,117,121,15865,15871,15886,15890,114,111,110,59,1,345,4,2,100,105,15877,15882,105,108,59,1,343,108,59,1,8969,98,59,1,125,59,1,1088,4,4,99,108,113,115,15903,15907,15914,15927,97,59,1,10551,100,104,97,114,59,1,10601,117,111,4,2,59,114,15922,15924,1,8221,59,1,8221,104,59,1,8627,4,3,97,99,103,15939,15966,15970,108,4,4,59,105,112,115,15950,15952,15957,15963,1,8476,110,101,59,1,8475,97,114,116,59,1,8476,59,1,8477,116,59,1,9645,5,174,1,59,15975,1,174,4,3,105,108,114,15985,15991,15997,115,104,116,59,1,10621,111,111,114,59,1,8971,59,3,55349,56623,4,2,97,111,16007,16028,114,4,2,100,117,16014,16017,59,1,8641,4,2,59,108,16023,16025,1,8640,59,1,10604,4,2,59,118,16034,16036,1,961,59,1,1009,4,3,103,110,115,16047,16167,16171,104,116,4,6,97,104,108,114,115,116,16063,16081,16103,16130,16143,16155,114,114,111,119,4,2,59,116,16073,16075,1,8594,97,105,108,59,1,8611,97,114,112,111,111,110,4,2,100,117,16093,16099,111,119,110,59,1,8641,112,59,1,8640,101,102,116,4,2,97,104,16112,16120,114,114,111,119,115,59,1,8644,97,114,112,111,111,110,115,59,1,8652,105,103,104,116,97,114,114,111,119,115,59,1,8649,113,117,105,103,97,114,114,111,119,59,1,8605,104,114,101,101,116,105,109,101,115,59,1,8908,103,59,1,730,105,110,103,100,111,116,115,101,113,59,1,8787,4,3,97,104,109,16191,16196,16201,114,114,59,1,8644,97,114,59,1,8652,59,1,8207,111,117,115,116,4,2,59,97,16214,16216,1,9137,99,104,101,59,1,9137,109,105,100,59,1,10990,4,4,97,98,112,116,16238,16252,16257,16278,4,2,110,114,16244,16248,103,59,1,10221,114,59,1,8702,114,107,59,1,10215,4,3,97,102,108,16265,16269,16273,114,59,1,10630,59,3,55349,56675,117,115,59,1,10798,105,109,101,115,59,1,10805,4,2,97,112,16291,16304,114,4,2,59,103,16298,16300,1,41,116,59,1,10644,111,108,105,110,116,59,1,10770,97,114,114,59,1,8649,4,4,97,99,104,113,16328,16334,16339,16342,113,117,111,59,1,8250,114,59,3,55349,56519,59,1,8625,4,2,98,117,16348,16351,59,1,93,111,4,2,59,114,16358,16360,1,8217,59,1,8217,4,3,104,105,114,16371,16377,16383,114,101,101,59,1,8908,109,101,115,59,1,8906,105,4,4,59,101,102,108,16394,16396,16399,16402,1,9657,59,1,8885,59,1,9656,116,114,105,59,1,10702,108,117,104,97,114,59,1,10600,59,1,8478,4,19,97,98,99,100,101,102,104,105,108,109,111,112,113,114,115,116,117,119,122,16459,16466,16472,16572,16590,16672,16687,16746,16844,16850,16924,16963,16988,17115,17121,17154,17206,17614,17656,99,117,116,101,59,1,347,113,117,111,59,1,8218,4,10,59,69,97,99,101,105,110,112,115,121,16494,16496,16499,16513,16518,16531,16536,16556,16564,16569,1,8827,59,1,10932,4,2,112,114,16505,16508,59,1,10936,111,110,59,1,353,117,101,59,1,8829,4,2,59,100,16524,16526,1,10928,105,108,59,1,351,114,99,59,1,349,4,3,69,97,115,16544,16547,16551,59,1,10934,112,59,1,10938,105,109,59,1,8937,111,108,105,110,116,59,1,10771,105,109,59,1,8831,59,1,1089,111,116,4,3,59,98,101,16582,16584,16587,1,8901,59,1,8865,59,1,10854,4,7,65,97,99,109,115,116,120,16606,16611,16634,16642,16646,16652,16668,114,114,59,1,8664,114,4,2,104,114,16618,16622,107,59,1,10533,4,2,59,111,16628,16630,1,8600,119,59,1,8600,116,5,167,1,59,16640,1,167,105,59,1,59,119,97,114,59,1,10537,109,4,2,105,110,16659,16665,110,117,115,59,1,8726,59,1,8726,116,59,1,10038,114,4,2,59,111,16679,16682,3,55349,56624,119,110,59,1,8994,4,4,97,99,111,121,16697,16702,16716,16739,114,112,59,1,9839,4,2,104,121,16708,16713,99,121,59,1,1097,59,1,1096,114,116,4,2,109,112,16724,16729,105,100,59,1,8739,97,114,97,108,108,101,108,59,1,8741,5,173,1,59,16744,1,173,4,2,103,109,16752,16770,109,97,4,3,59,102,118,16762,16764,16767,1,963,59,1,962,59,1,962,4,8,59,100,101,103,108,110,112,114,16788,16790,16795,16806,16817,16828,16832,16838,1,8764,111,116,59,1,10858,4,2,59,113,16801,16803,1,8771,59,1,8771,4,2,59,69,16812,16814,1,10910,59,1,10912,4,2,59,69,16823,16825,1,10909,59,1,10911,101,59,1,8774,108,117,115,59,1,10788,97,114,114,59,1,10610,97,114,114,59,1,8592,4,4,97,101,105,116,16860,16883,16891,16904,4,2,108,115,16866,16878,108,115,101,116,109,105,110,117,115,59,1,8726,104,112,59,1,10803,112,97,114,115,108,59,1,10724,4,2,100,108,16897,16900,59,1,8739,101,59,1,8995,4,2,59,101,16910,16912,1,10922,4,2,59,115,16918,16920,1,10924,59,3,10924,65024,4,3,102,108,112,16932,16938,16958,116,99,121,59,1,1100,4,2,59,98,16944,16946,1,47,4,2,59,97,16952,16954,1,10692,114,59,1,9023,102,59,3,55349,56676,97,4,2,100,114,16970,16985,101,115,4,2,59,117,16978,16980,1,9824,105,116,59,1,9824,59,1,8741,4,3,99,115,117,16996,17028,17089,4,2,97,117,17002,17015,112,4,2,59,115,17009,17011,1,8851,59,3,8851,65024,112,4,2,59,115,17022,17024,1,8852,59,3,8852,65024,117,4,2,98,112,17035,17062,4,3,59,101,115,17043,17045,17048,1,8847,59,1,8849,101,116,4,2,59,101,17056,17058,1,8847,113,59,1,8849,4,3,59,101,115,17070,17072,17075,1,8848,59,1,8850,101,116,4,2,59,101,17083,17085,1,8848,113,59,1,8850,4,3,59,97,102,17097,17099,17112,1,9633,114,4,2,101,102,17106,17109,59,1,9633,59,1,9642,59,1,9642,97,114,114,59,1,8594,4,4,99,101,109,116,17131,17136,17142,17148,114,59,3,55349,56520,116,109,110,59,1,8726,105,108,101,59,1,8995,97,114,102,59,1,8902,4,2,97,114,17160,17172,114,4,2,59,102,17167,17169,1,9734,59,1,9733,4,2,97,110,17178,17202,105,103,104,116,4,2,101,112,17188,17197,112,115,105,108,111,110,59,1,1013,104,105,59,1,981,115,59,1,175,4,5,98,99,109,110,112,17218,17351,17420,17423,17427,4,9,59,69,100,101,109,110,112,114,115,17238,17240,17243,17248,17261,17267,17279,17285,17291,1,8834,59,1,10949,111,116,59,1,10941,4,2,59,100,17254,17256,1,8838,111,116,59,1,10947,117,108,116,59,1,10945,4,2,69,101,17273,17276,59,1,10955,59,1,8842,108,117,115,59,1,10943,97,114,114,59,1,10617,4,3,101,105,117,17299,17335,17339,116,4,3,59,101,110,17308,17310,17322,1,8834,113,4,2,59,113,17317,17319,1,8838,59,1,10949,101,113,4,2,59,113,17330,17332,1,8842,59,1,10955,109,59,1,10951,4,2,98,112,17345,17348,59,1,10965,59,1,10963,99,4,6,59,97,99,101,110,115,17366,17368,17376,17385,17389,17415,1,8827,112,112,114,111,120,59,1,10936,117,114,108,121,101,113,59,1,8829,113,59,1,10928,4,3,97,101,115,17397,17405,17410,112,112,114,111,120,59,1,10938,113,113,59,1,10934,105,109,59,1,8937,105,109,59,1,8831,59,1,8721,103,59,1,9834,4,13,49,50,51,59,69,100,101,104,108,109,110,112,115,17455,17462,17469,17476,17478,17481,17496,17509,17524,17530,17536,17548,17554,5,185,1,59,17460,1,185,5,178,1,59,17467,1,178,5,179,1,59,17474,1,179,1,8835,59,1,10950,4,2,111,115,17487,17491,116,59,1,10942,117,98,59,1,10968,4,2,59,100,17502,17504,1,8839,111,116,59,1,10948,115,4,2,111,117,17516,17520,108,59,1,10185,98,59,1,10967,97,114,114,59,1,10619,117,108,116,59,1,10946,4,2,69,101,17542,17545,59,1,10956,59,1,8843,108,117,115,59,1,10944,4,3,101,105,117,17562,17598,17602,116,4,3,59,101,110,17571,17573,17585,1,8835,113,4,2,59,113,17580,17582,1,8839,59,1,10950,101,113,4,2,59,113,17593,17595,1,8843,59,1,10956,109,59,1,10952,4,2,98,112,17608,17611,59,1,10964,59,1,10966,4,3,65,97,110,17622,17627,17650,114,114,59,1,8665,114,4,2,104,114,17634,17638,107,59,1,10534,4,2,59,111,17644,17646,1,8601,119,59,1,8601,119,97,114,59,1,10538,108,105,103,5,223,1,59,17664,1,223,4,13,97,98,99,100,101,102,104,105,111,112,114,115,119,17694,17709,17714,17737,17742,17749,17754,17860,17905,17957,17964,18090,18122,4,2,114,117,17700,17706,103,101,116,59,1,8982,59,1,964,114,107,59,1,9140,4,3,97,101,121,17722,17728,17734,114,111,110,59,1,357,100,105,108,59,1,355,59,1,1090,111,116,59,1,8411,108,114,101,99,59,1,8981,114,59,3,55349,56625,4,4,101,105,107,111,17764,17805,17836,17851,4,2,114,116,17770,17786,101,4,2,52,102,17777,17780,59,1,8756,111,114,101,59,1,8756,97,4,3,59,115,118,17795,17797,17802,1,952,121,109,59,1,977,59,1,977,4,2,99,110,17811,17831,107,4,2,97,115,17818,17826,112,112,114,111,120,59,1,8776,105,109,59,1,8764,115,112,59,1,8201,4,2,97,115,17842,17846,112,59,1,8776,105,109,59,1,8764,114,110,5,254,1,59,17858,1,254,4,3,108,109,110,17868,17873,17901,100,101,59,1,732,101,115,5,215,3,59,98,100,17884,17886,17898,1,215,4,2,59,97,17892,17894,1,8864,114,59,1,10801,59,1,10800,116,59,1,8749,4,3,101,112,115,17913,17917,17953,97,59,1,10536,4,4,59,98,99,102,17927,17929,17934,17939,1,8868,111,116,59,1,9014,105,114,59,1,10993,4,2,59,111,17945,17948,3,55349,56677,114,107,59,1,10970,97,59,1,10537,114,105,109,101,59,1,8244,4,3,97,105,112,17972,17977,18082,100,101,59,1,8482,4,7,97,100,101,109,112,115,116,17993,18051,18056,18059,18066,18072,18076,110,103,108,101,4,5,59,100,108,113,114,18009,18011,18017,18032,18035,1,9653,111,119,110,59,1,9663,101,102,116,4,2,59,101,18026,18028,1,9667,113,59,1,8884,59,1,8796,105,103,104,116,4,2,59,101,18045,18047,1,9657,113,59,1,8885,111,116,59,1,9708,59,1,8796,105,110,117,115,59,1,10810,108,117,115,59,1,10809,98,59,1,10701,105,109,101,59,1,10811,101,122,105,117,109,59,1,9186,4,3,99,104,116,18098,18111,18116,4,2,114,121,18104,18108,59,3,55349,56521,59,1,1094,99,121,59,1,1115,114,111,107,59,1,359,4,2,105,111,18128,18133,120,116,59,1,8812,104,101,97,100,4,2,108,114,18143,18154,101,102,116,97,114,114,111,119,59,1,8606,105,103,104,116,97,114,114,111,119,59,1,8608,4,18,65,72,97,98,99,100,102,103,104,108,109,111,112,114,115,116,117,119,18204,18209,18214,18234,18250,18268,18292,18308,18319,18343,18379,18397,18413,18504,18547,18553,18584,18603,114,114,59,1,8657,97,114,59,1,10595,4,2,99,114,18220,18230,117,116,101,5,250,1,59,18228,1,250,114,59,1,8593,114,4,2,99,101,18241,18245,121,59,1,1118,118,101,59,1,365,4,2,105,121,18256,18265,114,99,5,251,1,59,18263,1,251,59,1,1091,4,3,97,98,104,18276,18281,18287,114,114,59,1,8645,108,97,99,59,1,369,97,114,59,1,10606,4,2,105,114,18298,18304,115,104,116,59,1,10622,59,3,55349,56626,114,97,118,101,5,249,1,59,18317,1,249,4,2,97,98,18325,18338,114,4,2,108,114,18332,18335,59,1,8639,59,1,8638,108,107,59,1,9600,4,2,99,116,18349,18374,4,2,111,114,18355,18369,114,110,4,2,59,101,18363,18365,1,8988,114,59,1,8988,111,112,59,1,8975,114,105,59,1,9720,4,2,97,108,18385,18390,99,114,59,1,363,5,168,1,59,18395,1,168,4,2,103,112,18403,18408,111,110,59,1,371,102,59,3,55349,56678,4,6,97,100,104,108,115,117,18427,18434,18445,18470,18475,18494,114,114,111,119,59,1,8593,111,119,110,97,114,114,111,119,59,1,8597,97,114,112,111,111,110,4,2,108,114,18457,18463,101,102,116,59,1,8639,105,103,104,116,59,1,8638,117,115,59,1,8846,105,4,3,59,104,108,18484,18486,18489,1,965,59,1,978,111,110,59,1,965,112,97,114,114,111,119,115,59,1,8648,4,3,99,105,116,18512,18537,18542,4,2,111,114,18518,18532,114,110,4,2,59,101,18526,18528,1,8989,114,59,1,8989,111,112,59,1,8974,110,103,59,1,367,114,105,59,1,9721,99,114,59,3,55349,56522,4,3,100,105,114,18561,18566,18572,111,116,59,1,8944,108,100,101,59,1,361,105,4,2,59,102,18579,18581,1,9653,59,1,9652,4,2,97,109,18590,18595,114,114,59,1,8648,108,5,252,1,59,18601,1,252,97,110,103,108,101,59,1,10663,4,15,65,66,68,97,99,100,101,102,108,110,111,112,114,115,122,18643,18648,18661,18667,18847,18851,18857,18904,18909,18915,18931,18937,18943,18949,18996,114,114,59,1,8661,97,114,4,2,59,118,18656,18658,1,10984,59,1,10985,97,115,104,59,1,8872,4,2,110,114,18673,18679,103,114,116,59,1,10652,4,7,101,107,110,112,114,115,116,18695,18704,18711,18720,18742,18754,18810,112,115,105,108,111,110,59,1,1013,97,112,112,97,59,1,1008,111,116,104,105,110,103,59,1,8709,4,3,104,105,114,18728,18732,18735,105,59,1,981,59,1,982,111,112,116,111,59,1,8733,4,2,59,104,18748,18750,1,8597,111,59,1,1009,4,2,105,117,18760,18766,103,109,97,59,1,962,4,2,98,112,18772,18791,115,101,116,110,101,113,4,2,59,113,18784,18787,3,8842,65024,59,3,10955,65024,115,101,116,110,101,113,4,2,59,113,18803,18806,3,8843,65024,59,3,10956,65024,4,2,104,114,18816,18822,101,116,97,59,1,977,105,97,110,103,108,101,4,2,108,114,18834,18840,101,102,116,59,1,8882,105,103,104,116,59,1,8883,121,59,1,1074,97,115,104,59,1,8866,4,3,101,108,114,18865,18884,18890,4,3,59,98,101,18873,18875,18880,1,8744,97,114,59,1,8891,113,59,1,8794,108,105,112,59,1,8942,4,2,98,116,18896,18901,97,114,59,1,124,59,1,124,114,59,3,55349,56627,116,114,105,59,1,8882,115,117,4,2,98,112,18923,18927,59,3,8834,8402,59,3,8835,8402,112,102,59,3,55349,56679,114,111,112,59,1,8733,116,114,105,59,1,8883,4,2,99,117,18955,18960,114,59,3,55349,56523,4,2,98,112,18966,18981,110,4,2,69,101,18973,18977,59,3,10955,65024,59,3,8842,65024,110,4,2,69,101,18988,18992,59,3,10956,65024,59,3,8843,65024,105,103,122,97,103,59,1,10650,4,7,99,101,102,111,112,114,115,19020,19026,19061,19066,19072,19075,19089,105,114,99,59,1,373,4,2,100,105,19032,19055,4,2,98,103,19038,19043,97,114,59,1,10847,101,4,2,59,113,19050,19052,1,8743,59,1,8793,101,114,112,59,1,8472,114,59,3,55349,56628,112,102,59,3,55349,56680,59,1,8472,4,2,59,101,19081,19083,1,8768,97,116,104,59,1,8768,99,114,59,3,55349,56524,4,14,99,100,102,104,105,108,109,110,111,114,115,117,118,119,19125,19146,19152,19157,19173,19176,19192,19197,19202,19236,19252,19269,19286,19291,4,3,97,105,117,19133,19137,19142,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,116,114,105,59,1,9661,114,59,3,55349,56629,4,2,65,97,19163,19168,114,114,59,1,10234,114,114,59,1,10231,59,1,958,4,2,65,97,19182,19187,114,114,59,1,10232,114,114,59,1,10229,97,112,59,1,10236,105,115,59,1,8955,4,3,100,112,116,19210,19215,19230,111,116,59,1,10752,4,2,102,108,19221,19225,59,3,55349,56681,117,115,59,1,10753,105,109,101,59,1,10754,4,2,65,97,19242,19247,114,114,59,1,10233,114,114,59,1,10230,4,2,99,113,19258,19263,114,59,3,55349,56525,99,117,112,59,1,10758,4,2,112,116,19275,19281,108,117,115,59,1,10756,114,105,59,1,9651,101,101,59,1,8897,101,100,103,101,59,1,8896,4,8,97,99,101,102,105,111,115,117,19316,19335,19349,19357,19362,19367,19373,19379,99,4,2,117,121,19323,19332,116,101,5,253,1,59,19330,1,253,59,1,1103,4,2,105,121,19341,19346,114,99,59,1,375,59,1,1099,110,5,165,1,59,19355,1,165,114,59,3,55349,56630,99,121,59,1,1111,112,102,59,3,55349,56682,99,114,59,3,55349,56526,4,2,99,109,19385,19389,121,59,1,1102,108,5,255,1,59,19395,1,255,4,10,97,99,100,101,102,104,105,111,115,119,19419,19426,19441,19446,19462,19467,19472,19480,19486,19492,99,117,116,101,59,1,378,4,2,97,121,19432,19438,114,111,110,59,1,382,59,1,1079,111,116,59,1,380,4,2,101,116,19452,19458,116,114,102,59,1,8488,97,59,1,950,114,59,3,55349,56631,99,121,59,1,1078,103,114,97,114,114,59,1,8669,112,102,59,3,55349,56683,99,114,59,3,55349,56527,4,2,106,110,19498,19501,59,1,8205,106,59,1,8204])},77118:function(e,t,n){"use strict";let r=n(54284),a=n(41734),i=r.CODE_POINTS;e.exports=class{constructor(){this.html=null,this.pos=-1,this.lastGapPos=-1,this.lastCharPos=-1,this.gapStack=[],this.skipNextNewLine=!1,this.lastChunkWritten=!1,this.endOfChunkHit=!1,this.bufferWaterline=65536}_err(){}_addGap(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos}_processSurrogate(e){if(this.pos!==this.lastCharPos){let t=this.html.charCodeAt(this.pos+1);if(r.isSurrogatePair(t))return this.pos++,this._addGap(),r.getSurrogatePairCodePoint(e,t)}else if(!this.lastChunkWritten)return this.endOfChunkHit=!0,i.EOF;return this._err(a.surrogateInInputStream),e}dropParsedChunk(){this.pos>this.bufferWaterline&&(this.lastCharPos-=this.pos,this.html=this.html.substring(this.pos),this.pos=0,this.lastGapPos=-1,this.gapStack=[])}write(e,t){this.html?this.html+=e:this.html=e,this.lastCharPos=this.html.length-1,this.endOfChunkHit=!1,this.lastChunkWritten=t}insertHtmlAtCurrentPos(e){this.html=this.html.substring(0,this.pos+1)+e+this.html.substring(this.pos+1,this.html.length),this.lastCharPos=this.html.length-1,this.endOfChunkHit=!1}advance(){if(this.pos++,this.pos>this.lastCharPos)return this.endOfChunkHit=!this.lastChunkWritten,i.EOF;let e=this.html.charCodeAt(this.pos);if(this.skipNextNewLine&&e===i.LINE_FEED)return this.skipNextNewLine=!1,this._addGap(),this.advance();if(e===i.CARRIAGE_RETURN)return this.skipNextNewLine=!0,i.LINE_FEED;this.skipNextNewLine=!1,r.isSurrogate(e)&&(e=this._processSurrogate(e));let t=e>31&&e<127||e===i.LINE_FEED||e===i.CARRIAGE_RETURN||e>159&&e<64976;return t||this._checkForProblematicCharacters(e),e}_checkForProblematicCharacters(e){r.isControlCodePoint(e)?this._err(a.controlCharacterInInputStream):r.isUndefinedCodePoint(e)&&this._err(a.noncharacterInInputStream)}retreat(){this.pos===this.lastGapPos&&(this.lastGapPos=this.gapStack.pop(),this.pos--),this.pos--}}},17296:function(e,t,n){"use strict";let{DOCUMENT_MODE:r}=n(16152);t.createDocument=function(){return{nodeName:"#document",mode:r.NO_QUIRKS,childNodes:[]}},t.createDocumentFragment=function(){return{nodeName:"#document-fragment",childNodes:[]}},t.createElement=function(e,t,n){return{nodeName:e,tagName:e,attrs:n,namespaceURI:t,childNodes:[],parentNode:null}},t.createCommentNode=function(e){return{nodeName:"#comment",data:e,parentNode:null}};let a=function(e){return{nodeName:"#text",value:e,parentNode:null}},i=t.appendChild=function(e,t){e.childNodes.push(t),t.parentNode=e},o=t.insertBefore=function(e,t,n){let r=e.childNodes.indexOf(n);e.childNodes.splice(r,0,t),t.parentNode=e};t.setTemplateContent=function(e,t){e.content=t},t.getTemplateContent=function(e){return e.content},t.setDocumentType=function(e,t,n,r){let a=null;for(let t=0;t(Object.keys(t).forEach(n=>{e[n]=t[n]}),e),Object.create(null))}},81704:function(e){"use strict";class t{constructor(e){let t={},n=this._getOverriddenMethods(this,t);for(let r of Object.keys(n))"function"==typeof n[r]&&(t[r]=e[r],e[r]=n[r])}_getOverriddenMethods(){throw Error("Not implemented")}}t.install=function(e,t,n){e.__mixins||(e.__mixins=[]);for(let n=0;n4&&g.slice(0,4)===o&&s.test(t)&&("-"===t.charAt(4)?f=o+(n=t.slice(5).replace(l,d)).charAt(0).toUpperCase()+n.slice(1):(m=(p=t).slice(4),t=l.test(m)?p:("-"!==(m=m.replace(c,u)).charAt(0)&&(m="-"+m),o+m)),h=a),new h(f,t))};var s=/^data[-\w.:]+$/i,l=/-[a-z]/g,c=/[A-Z]/g;function u(e){return"-"+e.toLowerCase()}function d(e){return e.charAt(1).toUpperCase()}},97247:function(e,t,n){"use strict";var r=n(19940),a=n(8289),i=n(5812),o=n(94397),s=n(67716),l=n(61805);e.exports=r([i,a,o,s,l])},67716:function(e,t,n){"use strict";var r=n(17e3),a=n(17596),i=r.booleanish,o=r.number,s=r.spaceSeparated;e.exports=a({transform:function(e,t){return"role"===t?t:"aria-"+t.slice(4).toLowerCase()},properties:{ariaActiveDescendant:null,ariaAtomic:i,ariaAutoComplete:null,ariaBusy:i,ariaChecked:i,ariaColCount:o,ariaColIndex:o,ariaColSpan:o,ariaControls:s,ariaCurrent:null,ariaDescribedBy:s,ariaDetails:null,ariaDisabled:i,ariaDropEffect:s,ariaErrorMessage:null,ariaExpanded:i,ariaFlowTo:s,ariaGrabbed:i,ariaHasPopup:null,ariaHidden:i,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:s,ariaLevel:o,ariaLive:null,ariaModal:i,ariaMultiLine:i,ariaMultiSelectable:i,ariaOrientation:null,ariaOwns:s,ariaPlaceholder:null,ariaPosInSet:o,ariaPressed:i,ariaReadOnly:i,ariaRelevant:null,ariaRequired:i,ariaRoleDescription:s,ariaRowCount:o,ariaRowIndex:o,ariaRowSpan:o,ariaSelected:i,ariaSetSize:o,ariaSort:null,ariaValueMax:o,ariaValueMin:o,ariaValueNow:o,ariaValueText:null,role:null}})},61805:function(e,t,n){"use strict";var r=n(17e3),a=n(17596),i=n(10855),o=r.boolean,s=r.overloadedBoolean,l=r.booleanish,c=r.number,u=r.spaceSeparated,d=r.commaSeparated;e.exports=a({space:"html",attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},transform:i,mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:d,acceptCharset:u,accessKey:u,action:null,allow:null,allowFullScreen:o,allowPaymentRequest:o,allowUserMedia:o,alt:null,as:null,async:o,autoCapitalize:null,autoComplete:u,autoFocus:o,autoPlay:o,capture:o,charSet:null,checked:o,cite:null,className:u,cols:c,colSpan:null,content:null,contentEditable:l,controls:o,controlsList:u,coords:c|d,crossOrigin:null,data:null,dateTime:null,decoding:null,default:o,defer:o,dir:null,dirName:null,disabled:o,download:s,draggable:l,encType:null,enterKeyHint:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:o,formTarget:null,headers:u,height:c,hidden:o,high:c,href:null,hrefLang:null,htmlFor:u,httpEquiv:u,id:null,imageSizes:null,imageSrcSet:d,inputMode:null,integrity:null,is:null,isMap:o,itemId:null,itemProp:u,itemRef:u,itemScope:o,itemType:u,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:o,low:c,manifest:null,max:null,maxLength:c,media:null,method:null,min:null,minLength:c,multiple:o,muted:o,name:null,nonce:null,noModule:o,noValidate:o,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforePrint:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextMenu:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:o,optimum:c,pattern:null,ping:u,placeholder:null,playsInline:o,poster:null,preload:null,readOnly:o,referrerPolicy:null,rel:u,required:o,reversed:o,rows:c,rowSpan:c,sandbox:u,scope:null,scoped:o,seamless:o,selected:o,shape:null,size:c,sizes:null,slot:null,span:c,spellCheck:l,src:null,srcDoc:null,srcLang:null,srcSet:d,start:c,step:null,style:null,tabIndex:c,target:null,title:null,translate:null,type:null,typeMustMatch:o,useMap:null,value:l,width:c,wrap:null,align:null,aLink:null,archive:u,axis:null,background:null,bgColor:null,border:c,borderColor:null,bottomMargin:c,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:o,declare:o,event:null,face:null,frame:null,frameBorder:null,hSpace:c,leftMargin:c,link:null,longDesc:null,lowSrc:null,marginHeight:c,marginWidth:c,noResize:o,noHref:o,noShade:o,noWrap:o,object:null,profile:null,prompt:null,rev:null,rightMargin:c,rules:null,scheme:null,scrolling:l,standby:null,summary:null,text:null,topMargin:c,valueType:null,version:null,vAlign:null,vLink:null,vSpace:c,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:o,disableRemotePlayback:o,prefix:null,property:null,results:c,security:null,unselectable:null}})},10855:function(e,t,n){"use strict";var r=n(28740);e.exports=function(e,t){return r(e,t.toLowerCase())}},28740:function(e){"use strict";e.exports=function(e,t){return t in e?e[t]:t}},17596:function(e,t,n){"use strict";var r=n(66632),a=n(99607),i=n(98805);e.exports=function(e){var t,n,o=e.space,s=e.mustUseProperty||[],l=e.attributes||{},c=e.properties,u=e.transform,d={},p={};for(t in c)n=new i(t,u(l,t),c[t],o),-1!==s.indexOf(t)&&(n.mustUseProperty=!0),d[t]=n,p[r(t)]=t,p[r(n.attribute)]=t;return new a(d,p,o)}},98805:function(e,t,n){"use strict";var r=n(57643),a=n(17e3);e.exports=s,s.prototype=new r,s.prototype.defined=!0;var i=["boolean","booleanish","overloadedBoolean","number","commaSeparated","spaceSeparated","commaOrSpaceSeparated"],o=i.length;function s(e,t,n,s){var l,c,u,d=-1;for(s&&(this.space=s),r.call(this,e,t);++de.filter(e=>t.includes(e)),b=(e,t,n)=>{let r=e.keys[0];if(Array.isArray(t))t.forEach((t,r)=>{n((t,n)=>{r<=e.keys.length-1&&(0===r?Object.assign(t,n):t[e.up(e.keys[r])]=n)},t)});else if(t&&"object"==typeof t){let a=Object.keys(t).length>e.keys.length?e.keys:h(e.keys,Object.keys(t));a.forEach(a=>{if(-1!==e.keys.indexOf(a)){let i=t[a];void 0!==i&&n((t,n)=>{r===a?Object.assign(t,n):t[e.up(a)]=n},i)}})}else("number"==typeof t||"string"==typeof t)&&n((e,t)=>{Object.assign(e,t)},t)};function E(e){return e?`Level${e}`:""}function T(e){return e.unstable_level>0&&e.container}function S(e){return function(t){return`var(--Grid-${t}Spacing${E(e.unstable_level)})`}}function y(e){return function(t){return 0===e.unstable_level?`var(--Grid-${t}Spacing)`:`var(--Grid-${t}Spacing${E(e.unstable_level-1)})`}}function A(e){return 0===e.unstable_level?"var(--Grid-columns)":`var(--Grid-columns${E(e.unstable_level-1)})`}let _=({theme:e,ownerState:t})=>{let n=S(t),r={};return b(e.breakpoints,t.gridSize,(e,a)=>{let i={};!0===a&&(i={flexBasis:0,flexGrow:1,maxWidth:"100%"}),"auto"===a&&(i={flexBasis:"auto",flexGrow:0,flexShrink:0,maxWidth:"none",width:"auto"}),"number"==typeof a&&(i={flexGrow:0,flexBasis:"auto",width:`calc(100% * ${a} / ${A(t)}${T(t)?` + ${n("column")}`:""})`}),e(r,i)}),r},k=({theme:e,ownerState:t})=>{let n={};return b(e.breakpoints,t.gridOffset,(e,r)=>{let a={};"auto"===r&&(a={marginLeft:"auto"}),"number"==typeof r&&(a={marginLeft:0===r?"0px":`calc(100% * ${r} / ${A(t)})`}),e(n,a)}),n},v=({theme:e,ownerState:t})=>{if(!t.container)return{};let n=T(t)?{[`--Grid-columns${E(t.unstable_level)}`]:A(t)}:{"--Grid-columns":12};return b(e.breakpoints,t.columns,(e,r)=>{e(n,{[`--Grid-columns${E(t.unstable_level)}`]:r})}),n},N=({theme:e,ownerState:t})=>{if(!t.container)return{};let n=y(t),r=T(t)?{[`--Grid-rowSpacing${E(t.unstable_level)}`]:n("row")}:{};return b(e.breakpoints,t.rowSpacing,(n,a)=>{var i;n(r,{[`--Grid-rowSpacing${E(t.unstable_level)}`]:"string"==typeof a?a:null==(i=e.spacing)?void 0:i.call(e,a)})}),r},C=({theme:e,ownerState:t})=>{if(!t.container)return{};let n=y(t),r=T(t)?{[`--Grid-columnSpacing${E(t.unstable_level)}`]:n("column")}:{};return b(e.breakpoints,t.columnSpacing,(n,a)=>{var i;n(r,{[`--Grid-columnSpacing${E(t.unstable_level)}`]:"string"==typeof a?a:null==(i=e.spacing)?void 0:i.call(e,a)})}),r},R=({theme:e,ownerState:t})=>{if(!t.container)return{};let n={};return b(e.breakpoints,t.direction,(e,t)=>{e(n,{flexDirection:t})}),n},I=({ownerState:e})=>{let t=S(e),n=y(e);return(0,r.Z)({minWidth:0,boxSizing:"border-box"},e.container&&(0,r.Z)({display:"flex",flexWrap:"wrap"},e.wrap&&"wrap"!==e.wrap&&{flexWrap:e.wrap},{margin:`calc(${t("row")} / -2) calc(${t("column")} / -2)`},e.disableEqualOverflow&&{margin:`calc(${t("row")} * -1) 0px 0px calc(${t("column")} * -1)`}),(!e.container||T(e))&&(0,r.Z)({padding:`calc(${n("row")} / 2) calc(${n("column")} / 2)`},(e.disableEqualOverflow||e.parentDisableEqualOverflow)&&{padding:`${n("row")} 0px 0px ${n("column")}`}))},O=e=>{let t=[];return Object.entries(e).forEach(([e,n])=>{!1!==n&&void 0!==n&&t.push(`grid-${e}-${String(n)}`)}),t},w=(e,t="xs")=>{function n(e){return void 0!==e&&("string"==typeof e&&!Number.isNaN(Number(e))||"number"==typeof e&&e>0)}if(n(e))return[`spacing-${t}-${String(e)}`];if("object"==typeof e&&!Array.isArray(e)){let t=[];return Object.entries(e).forEach(([e,r])=>{n(r)&&t.push(`spacing-${e}-${String(r)}`)}),t}return[]},x=e=>void 0===e?[]:"object"==typeof e?Object.entries(e).map(([e,t])=>`direction-${e}-${t}`):[`direction-xs-${String(e)}`];var L=n(85893);let D=["className","children","columns","container","component","direction","wrap","spacing","rowSpacing","columnSpacing","disableEqualOverflow","unstable_level"],P=(0,f.Z)(),M=d("div",{name:"MuiGrid",slot:"Root",overridesResolver:(e,t)=>t.root});function F(e){return(0,p.Z)({props:e,name:"MuiGrid",defaultTheme:P})}var U=n(74312),B=n(20407);let H=function(e={}){let{createStyledComponent:t=M,useThemeProps:n=F,componentName:u="MuiGrid"}=e,d=i.createContext(void 0),p=(e,t)=>{let{container:n,direction:r,spacing:a,wrap:i,gridSize:o}=e,c={root:["root",n&&"container","wrap"!==i&&`wrap-xs-${String(i)}`,...x(r),...O(o),...n?w(a,t.breakpoints.keys[0]):[]]};return(0,s.Z)(c,e=>(0,l.Z)(u,e),{})},f=t(v,C,N,_,R,I,k),h=i.forwardRef(function(e,t){var s,l,u,h,b,E,T,S;let y=(0,m.Z)(),A=n(e),_=(0,g.Z)(A),k=i.useContext(d),{className:v,children:N,columns:C=12,container:R=!1,component:I="div",direction:O="row",wrap:w="wrap",spacing:x=0,rowSpacing:P=x,columnSpacing:M=x,disableEqualOverflow:F,unstable_level:U=0}=_,B=(0,a.Z)(_,D),H=F;U&&void 0!==F&&(H=e.disableEqualOverflow);let G={},z={},$={};Object.entries(B).forEach(([e,t])=>{void 0!==y.breakpoints.values[e]?G[e]=t:void 0!==y.breakpoints.values[e.replace("Offset","")]?z[e.replace("Offset","")]=t:$[e]=t});let j=null!=(s=e.columns)?s:U?void 0:C,V=null!=(l=e.spacing)?l:U?void 0:x,W=null!=(u=null!=(h=e.rowSpacing)?h:e.spacing)?u:U?void 0:P,K=null!=(b=null!=(E=e.columnSpacing)?E:e.spacing)?b:U?void 0:M,Z=(0,r.Z)({},_,{level:U,columns:j,container:R,direction:O,wrap:w,spacing:V,rowSpacing:W,columnSpacing:K,gridSize:G,gridOffset:z,disableEqualOverflow:null!=(T=null!=(S=H)?S:k)&&T,parentDisableEqualOverflow:k}),Y=p(Z,y),q=(0,L.jsx)(f,(0,r.Z)({ref:t,as:I,ownerState:Z,className:(0,o.Z)(Y.root,v)},$,{children:i.Children.map(N,e=>{if(i.isValidElement(e)&&(0,c.Z)(e,["Grid"])){var t;return i.cloneElement(e,{unstable_level:null!=(t=e.props.unstable_level)?t:U+1})}return e})}));return void 0!==H&&H!==(null!=k&&k)&&(q=(0,L.jsx)(d.Provider,{value:H,children:q})),q});return h.muiName="Grid",h}({createStyledComponent:(0,U.Z)("div",{name:"JoyGrid",slot:"Root",overridesResolver:(e,t)=>t.root}),useThemeProps:e=>(0,B.Z)({props:e,name:"JoyGrid"})});var G=H},14553:function(e,t,n){"use strict";n.d(t,{ZP:function(){return _}});var r=n(63366),a=n(87462),i=n(67294),o=n(14142),s=n(33703),l=n(70758),c=n(94780),u=n(74312),d=n(20407),p=n(78653),m=n(30220),g=n(26821);function f(e){return(0,g.d6)("MuiIconButton",e)}(0,g.sI)("MuiIconButton",["root","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","variantPlain","variantOutlined","variantSoft","variantSolid","focusVisible","disabled","sizeSm","sizeMd","sizeLg"]);var h=n(89996),b=n(85893);let E=["children","action","component","color","disabled","variant","size","slots","slotProps"],T=e=>{let{color:t,disabled:n,focusVisible:r,focusVisibleClassName:a,size:i,variant:s}=e,l={root:["root",n&&"disabled",r&&"focusVisible",s&&`variant${(0,o.Z)(s)}`,t&&`color${(0,o.Z)(t)}`,i&&`size${(0,o.Z)(i)}`]},u=(0,c.Z)(l,f,{});return r&&a&&(u.root+=` ${a}`),u},S=(0,u.Z)("button")(({theme:e,ownerState:t})=>{var n,r,i,o;return[(0,a.Z)({"--Icon-margin":"initial","--Icon-color":"neutral"!==t.color||"solid"===t.variant?"currentColor":e.vars.palette.text.icon},t.instanceSize&&{"--IconButton-size":({sm:"2rem",md:"2.5rem",lg:"3rem"})[t.instanceSize]},"sm"===t.size&&{"--Icon-fontSize":"calc(var(--IconButton-size, 2rem) / 1.6)","--CircularProgress-size":"20px","--CircularProgress-thickness":"2px",minWidth:"var(--IconButton-size, 2rem)",minHeight:"var(--IconButton-size, 2rem)",fontSize:e.vars.fontSize.sm,paddingInline:"2px"},"md"===t.size&&{"--Icon-fontSize":"calc(var(--IconButton-size, 2.5rem) / 1.667)","--CircularProgress-size":"24px","--CircularProgress-thickness":"3px",minWidth:"var(--IconButton-size, 2.5rem)",minHeight:"var(--IconButton-size, 2.5rem)",fontSize:e.vars.fontSize.md,paddingInline:"0.25rem"},"lg"===t.size&&{"--Icon-fontSize":"calc(var(--IconButton-size, 3rem) / 1.714)","--CircularProgress-size":"28px","--CircularProgress-thickness":"4px",minWidth:"var(--IconButton-size, 3rem)",minHeight:"var(--IconButton-size, 3rem)",fontSize:e.vars.fontSize.lg,paddingInline:"0.375rem"},{WebkitTapHighlightColor:"transparent",paddingBlock:0,fontFamily:e.vars.fontFamily.body,fontWeight:e.vars.fontWeight.md,margin:"var(--IconButton-margin)",borderRadius:`var(--IconButton-radius, ${e.vars.radius.sm})`,border:"none",boxSizing:"border-box",backgroundColor:"transparent",cursor:"pointer",display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",[e.focus.selector]:(0,a.Z)({"--Icon-color":"currentColor"},e.focus.default)}),(0,a.Z)({},null==(n=e.variants[t.variant])?void 0:n[t.color],{"&:hover":{"@media (hover: hover)":(0,a.Z)({"--Icon-color":"currentColor"},null==(r=e.variants[`${t.variant}Hover`])?void 0:r[t.color])},'&:active, &[aria-pressed="true"]':(0,a.Z)({"--Icon-color":"currentColor"},null==(i=e.variants[`${t.variant}Active`])?void 0:i[t.color]),"&:disabled":null==(o=e.variants[`${t.variant}Disabled`])?void 0:o[t.color]})]}),y=(0,u.Z)(S,{name:"JoyIconButton",slot:"Root",overridesResolver:(e,t)=>t.root})({}),A=i.forwardRef(function(e,t){var n;let o=(0,d.Z)({props:e,name:"JoyIconButton"}),{children:c,action:u,component:g="button",color:f="neutral",disabled:S,variant:A="plain",size:_="md",slots:k={},slotProps:v={}}=o,N=(0,r.Z)(o,E),C=i.useContext(h.Z),R=e.variant||C.variant||A,I=e.size||C.size||_,{getColor:O}=(0,p.VT)(R),w=O(e.color,C.color||f),x=null!=(n=e.disabled)?n:C.disabled||S,L=i.useRef(null),D=(0,s.Z)(L,t),{focusVisible:P,setFocusVisible:M,getRootProps:F}=(0,l.U)((0,a.Z)({},o,{disabled:x,rootRef:D}));i.useImperativeHandle(u,()=>({focusVisible:()=>{var e;M(!0),null==(e=L.current)||e.focus()}}),[M]);let U=(0,a.Z)({},o,{component:g,color:w,disabled:x,variant:R,size:I,focusVisible:P,instanceSize:e.size}),B=T(U),H=(0,a.Z)({},N,{component:g,slots:k,slotProps:v}),[G,z]=(0,m.Z)("root",{ref:t,className:B.root,elementType:y,getSlotProps:F,externalForwardedProps:H,ownerState:U});return(0,b.jsx)(G,(0,a.Z)({},z,{children:c}))});A.muiName="IconButton";var _=A},25359:function(e,t,n){"use strict";n.d(t,{Z:function(){return U}});var r=n(63366),a=n(87462),i=n(67294),o=n(14142),s=n(94780),l=n(33703),c=n(92996),u=n(73546),d=n(22644),p=n(7333);function m(e,t){if(t.type===d.F.itemHover)return e;let n=(0,p.R$)(e,t);if(null===n.highlightedValue&&t.context.items.length>0)return(0,a.Z)({},n,{highlightedValue:t.context.items[0]});if(t.type===d.F.keyDown&&"Escape"===t.event.key)return(0,a.Z)({},n,{open:!1});if(t.type===d.F.blur){var r,i,o;if(!(null!=(r=t.context.listboxRef.current)&&r.contains(t.event.relatedTarget))){let e=null==(i=t.context.listboxRef.current)?void 0:i.getAttribute("id"),r=null==(o=t.event.relatedTarget)?void 0:o.getAttribute("aria-controls");return e&&r&&e===r?n:(0,a.Z)({},n,{open:!1,highlightedValue:t.context.items[0]})}}return n}var g=n(85241),f=n(96592),h=n(51633),b=n(12247),E=n(2900);let T={dispatch:()=>{},popupId:"",registerPopup:()=>{},registerTrigger:()=>{},state:{open:!0},triggerElement:null};var S=n(26558),y=n(85893);function A(e){let{value:t,children:n}=e,{dispatch:r,getItemIndex:a,getItemState:o,registerHighlightChangeHandler:s,registerSelectionChangeHandler:l,registerItem:c,totalSubitemCount:u}=t,d=i.useMemo(()=>({dispatch:r,getItemState:o,getItemIndex:a,registerHighlightChangeHandler:s,registerSelectionChangeHandler:l}),[r,a,o,s,l]),p=i.useMemo(()=>({getItemIndex:a,registerItem:c,totalSubitemCount:u}),[c,a,u]);return(0,y.jsx)(b.s.Provider,{value:p,children:(0,y.jsx)(S.Z.Provider,{value:d,children:n})})}var _=n(53406),k=n(7293),v=n(50984),N=n(3419),C=n(43614),R=n(74312),I=n(20407),O=n(55907),w=n(78653),x=n(26821);function L(e){return(0,x.d6)("MuiMenu",e)}(0,x.sI)("MuiMenu",["root","listbox","expanded","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","variantPlain","variantOutlined","variantSoft","variantSolid","sizeSm","sizeMd","sizeLg"]);let D=["actions","children","color","component","disablePortal","keepMounted","id","invertedColors","onItemsChange","modifiers","variant","size","slots","slotProps"],P=e=>{let{open:t,variant:n,color:r,size:a}=e,i={root:["root",t&&"expanded",n&&`variant${(0,o.Z)(n)}`,r&&`color${(0,o.Z)(r)}`,a&&`size${(0,o.Z)(a)}`],listbox:["listbox"]};return(0,s.Z)(i,L,{})},M=(0,R.Z)(v.C,{name:"JoyMenu",slot:"Root",overridesResolver:(e,t)=>t.root})(({theme:e,ownerState:t})=>{var n,r;let i=null==(n=e.variants[t.variant])?void 0:n[t.color];return[(0,a.Z)({"--focus-outline-offset":`calc(${e.vars.focus.thickness} * -1)`,"--ListItem-stickyBackground":(null==i?void 0:i.backgroundColor)||(null==i?void 0:i.background)||e.vars.palette.background.popup,"--ListItem-stickyTop":"calc(var(--List-padding, var(--ListDivider-gap)) * -1)"},N.M,{borderRadius:`var(--List-radius, ${e.vars.radius.sm})`,boxShadow:e.shadow.md,overflow:"auto",zIndex:`var(--unstable_popup-zIndex, ${e.vars.zIndex.popup})`},!(null!=i&&i.backgroundColor)&&{backgroundColor:e.vars.palette.background.popup}),"context"!==t.color&&t.invertedColors&&(null==(r=e.colorInversion[t.variant])?void 0:r[t.color])]}),F=i.forwardRef(function(e,t){var n;let o=(0,I.Z)({props:e,name:"JoyMenu"}),{actions:s,children:p,color:S="neutral",component:v,disablePortal:R=!1,keepMounted:x=!1,id:L,invertedColors:F=!1,onItemsChange:U,modifiers:B,variant:H="outlined",size:G="md",slots:z={},slotProps:$={}}=o,j=(0,r.Z)(o,D),{getColor:V}=(0,w.VT)(H),W=R?V(e.color,S):S,{contextValue:K,getListboxProps:Z,dispatch:Y,open:q,triggerElement:X}=function(e={}){var t,n;let{listboxRef:r,onItemsChange:o,id:s}=e,d=i.useRef(null),p=(0,l.Z)(d,r),S=null!=(t=(0,c.Z)(s))?t:"",{state:{open:y},dispatch:A,triggerElement:_,registerPopup:k}=null!=(n=i.useContext(g.D))?n:T,v=i.useRef(y),{subitems:N,contextValue:C}=(0,b.Y)(),R=i.useMemo(()=>Array.from(N.keys()),[N]),I=i.useCallback(e=>{var t,n;return null==e?null:null!=(t=null==(n=N.get(e))?void 0:n.ref.current)?t:null},[N]),{dispatch:O,getRootProps:w,contextValue:x,state:{highlightedValue:L},rootRef:D}=(0,f.s)({disabledItemsFocusable:!0,focusManagement:"DOM",getItemDomElement:I,getInitialState:()=>({selectedValues:[],highlightedValue:null}),isItemDisabled:e=>{var t;return(null==N||null==(t=N.get(e))?void 0:t.disabled)||!1},items:R,getItemAsString:e=>{var t,n;return(null==(t=N.get(e))?void 0:t.label)||(null==(n=N.get(e))||null==(n=n.ref.current)?void 0:n.innerText)},rootRef:p,onItemsChange:o,reducerActionContext:{listboxRef:d},selectionMode:"none",stateReducer:m});(0,u.Z)(()=>{k(S)},[S,k]),i.useEffect(()=>{if(y&&L===R[0]&&!v.current){var e;null==(e=N.get(R[0]))||null==(e=e.ref)||null==(e=e.current)||e.focus()}},[y,L,N,R]),i.useEffect(()=>{var e,t;null!=(e=d.current)&&e.contains(document.activeElement)&&null!==L&&(null==N||null==(t=N.get(L))||null==(t=t.ref.current)||t.focus())},[L,N]);let P=e=>t=>{var n,r;null==(n=e.onBlur)||n.call(e,t),t.defaultMuiPrevented||null!=(r=d.current)&&r.contains(t.relatedTarget)||t.relatedTarget===_||A({type:h.Q.blur,event:t})},M=e=>t=>{var n;null==(n=e.onKeyDown)||n.call(e,t),t.defaultMuiPrevented||"Escape"!==t.key||A({type:h.Q.escapeKeyDown,event:t})},F=(e={})=>({onBlur:P(e),onKeyDown:M(e)});return i.useDebugValue({subitems:N,highlightedValue:L}),{contextValue:(0,a.Z)({},C,x),dispatch:O,getListboxProps:(e={})=>{let t=(0,E.f)(F,w);return(0,a.Z)({},t(e),{id:S,role:"menu"})},highlightedValue:L,listboxRef:D,menuItems:N,open:y,triggerElement:_}}({onItemsChange:U,id:L,listboxRef:t});i.useImperativeHandle(s,()=>({dispatch:Y,resetHighlight:()=>Y({type:d.F.resetHighlight,event:null})}),[Y]);let Q=(0,a.Z)({},o,{disablePortal:R,invertedColors:F,color:W,variant:H,size:G,open:q,nesting:!1,row:!1}),J=P(Q),ee=(0,a.Z)({},j,{component:v,slots:z,slotProps:$}),et=i.useMemo(()=>[{name:"offset",options:{offset:[0,4]}},...B||[]],[B]),en=(0,k.y)({elementType:M,getSlotProps:Z,externalForwardedProps:ee,externalSlotProps:{},ownerState:Q,additionalProps:{anchorEl:X,open:q&&null!==X,disablePortal:R,keepMounted:x,modifiers:et},className:J.root}),er=(0,y.jsx)(A,{value:K,children:(0,y.jsx)(O.Yb,{variant:F?void 0:H,color:S,children:(0,y.jsx)(C.Z.Provider,{value:"menu",children:(0,y.jsx)(N.Z,{nested:!0,children:p})})})});return F&&(er=(0,y.jsx)(w.do,{variant:H,children:er})),er=(0,y.jsx)(M,(0,a.Z)({},en,!(null!=(n=o.slots)&&n.root)&&{as:_.r,slots:{root:v||"ul"}},{children:er})),R?er:(0,y.jsx)(w.ZP.Provider,{value:void 0,children:er})});var U=F},59562:function(e,t,n){"use strict";n.d(t,{Z:function(){return O}});var r=n(63366),a=n(87462),i=n(67294),o=n(33703),s=n(85241),l=n(51633),c=n(70758),u=n(2900),d=n(94780),p=n(14142),m=n(26821);function g(e){return(0,m.d6)("MuiMenuButton",e)}(0,m.sI)("MuiMenuButton",["root","colorPrimary","colorNeutral","colorDanger","colorInfo","colorSuccess","colorWarning","colorContext","variantPlain","variantOutlined","variantSoft","variantSolid","disabled","sizeSm","sizeMd","sizeLg","fullWidth","startDecorator","endDecorator","loading","loadingIndicatorCenter"]);var f=n(20407),h=n(30220),b=n(48699),E=n(66478),T=n(74312),S=n(78653),y=n(89996),A=n(85893);let _=["children","color","component","disabled","endDecorator","loading","loadingPosition","loadingIndicator","size","slotProps","slots","startDecorator","variant"],k=e=>{let{color:t,disabled:n,fullWidth:r,size:a,variant:i,loading:o}=e,s={root:["root",n&&"disabled",r&&"fullWidth",i&&`variant${(0,p.Z)(i)}`,t&&`color${(0,p.Z)(t)}`,a&&`size${(0,p.Z)(a)}`,o&&"loading"],startDecorator:["startDecorator"],endDecorator:["endDecorator"],loadingIndicatorCenter:["loadingIndicatorCenter"]};return(0,d.Z)(s,g,{})},v=(0,T.Z)("button",{name:"JoyMenuButton",slot:"Root",overridesResolver:(e,t)=>t.root})(E.f),N=(0,T.Z)("span",{name:"JoyMenuButton",slot:"StartDecorator",overridesResolver:(e,t)=>t.startDecorator})({"--Icon-margin":"0 0 0 calc(var(--Button-gap) / -2)","--CircularProgress-margin":"0 0 0 calc(var(--Button-gap) / -2)",display:"inherit",marginRight:"var(--Button-gap)"}),C=(0,T.Z)("span",{name:"JoyMenuButton",slot:"EndDecorator",overridesResolver:(e,t)=>t.endDecorator})({"--Icon-margin":"0 calc(var(--Button-gap) / -2) 0 0","--CircularProgress-margin":"0 calc(var(--Button-gap) / -2) 0 0",display:"inherit",marginLeft:"var(--Button-gap)"}),R=(0,T.Z)("span",{name:"JoyMenuButton",slot:"LoadingCenter",overridesResolver:(e,t)=>t.loadingIndicatorCenter})(({theme:e,ownerState:t})=>{var n,r;return(0,a.Z)({display:"inherit",position:"absolute",left:"50%",transform:"translateX(-50%)",color:null==(n=e.variants[t.variant])||null==(n=n[t.color])?void 0:n.color},t.disabled&&{color:null==(r=e.variants[`${t.variant}Disabled`])||null==(r=r[t.color])?void 0:r.color})}),I=i.forwardRef(function(e,t){var n;let d=(0,f.Z)({props:e,name:"JoyMenuButton"}),{children:p,color:m="neutral",component:g,disabled:E=!1,endDecorator:T,loading:I=!1,loadingPosition:O="center",loadingIndicator:w,size:x="md",slotProps:L={},slots:D={},startDecorator:P,variant:M="outlined"}=d,F=(0,r.Z)(d,_),U=i.useContext(y.Z),B=e.variant||U.variant||M,H=e.size||U.size||x,{getColor:G}=(0,S.VT)(B),z=G(e.color,U.color||m),$=null!=(n=e.disabled)?n:U.disabled||E||I,{getRootProps:j,open:V,active:W}=function(e={}){let{disabled:t=!1,focusableWhenDisabled:n,rootRef:r}=e,d=i.useContext(s.D);if(null===d)throw Error("useMenuButton: no menu context available.");let{state:p,dispatch:m,registerTrigger:g,popupId:f}=d,{getRootProps:h,rootRef:b,active:E}=(0,c.U)({disabled:t,focusableWhenDisabled:n,rootRef:r}),T=(0,o.Z)(b,g),S=e=>t=>{var n;null==(n=e.onClick)||n.call(e,t),t.defaultMuiPrevented||m({type:l.Q.toggle,event:t})},y=e=>t=>{var n;null==(n=e.onKeyDown)||n.call(e,t),t.defaultMuiPrevented||"ArrowDown"!==t.key&&"ArrowUp"!==t.key||(t.preventDefault(),m({type:l.Q.open,event:t}))},A=(e={})=>({onClick:S(e),onKeyDown:y(e)});return{active:E,getRootProps:(e={})=>{let t=(0,u.f)(h,A);return(0,a.Z)({},t(e),{"aria-haspopup":"menu","aria-expanded":p.open,"aria-controls":f,ref:T})},open:p.open,rootRef:T}}({rootRef:t,disabled:$}),K=null!=w?w:(0,A.jsx)(b.Z,(0,a.Z)({},"context"!==z&&{color:z},{thickness:{sm:2,md:3,lg:4}[H]||3})),Z=(0,a.Z)({},d,{active:W,color:z,disabled:$,open:V,size:H,variant:B}),Y=k(Z),q=(0,a.Z)({},F,{component:g,slots:D,slotProps:L}),[X,Q]=(0,h.Z)("root",{elementType:v,getSlotProps:j,externalForwardedProps:q,ref:t,ownerState:Z,className:Y.root}),[J,ee]=(0,h.Z)("startDecorator",{className:Y.startDecorator,elementType:N,externalForwardedProps:q,ownerState:Z}),[et,en]=(0,h.Z)("endDecorator",{className:Y.endDecorator,elementType:C,externalForwardedProps:q,ownerState:Z}),[er,ea]=(0,h.Z)("loadingIndicatorCenter",{className:Y.loadingIndicatorCenter,elementType:R,externalForwardedProps:q,ownerState:Z});return(0,A.jsxs)(X,(0,a.Z)({},Q,{children:[(P||I&&"start"===O)&&(0,A.jsx)(J,(0,a.Z)({},ee,{children:I&&"start"===O?K:P})),p,I&&"center"===O&&(0,A.jsx)(er,(0,a.Z)({},ea,{children:K})),(T||I&&"end"===O)&&(0,A.jsx)(et,(0,a.Z)({},en,{children:I&&"end"===O?K:T}))]}))});var O=I},7203:function(e,t,n){"use strict";n.d(t,{Z:function(){return L}});var r=n(87462),a=n(63366),i=n(67294),o=n(14142),s=n(94780),l=n(92996),c=n(33703),u=n(70758),d=n(43069),p=n(51633),m=n(85241),g=n(2900),f=n(14072);function h(e){return`menu-item-${e.size}`}let b={dispatch:()=>{},popupId:"",registerPopup:()=>{},registerTrigger:()=>{},state:{open:!0},triggerElement:null};var E=n(39984),T=n(74312),S=n(20407),y=n(78653),A=n(55907),_=n(26821);function k(e){return(0,_.d6)("MuiMenuItem",e)}(0,_.sI)("MuiMenuItem",["root","focusVisible","disabled","selected","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","variantPlain","variantSoft","variantOutlined","variantSolid"]);var v=n(40780);let N=i.createContext("horizontal");var C=n(30220),R=n(85893);let I=["children","disabled","component","selected","color","orientation","variant","slots","slotProps"],O=e=>{let{focusVisible:t,disabled:n,selected:r,color:a,variant:i}=e,l={root:["root",t&&"focusVisible",n&&"disabled",r&&"selected",a&&`color${(0,o.Z)(a)}`,i&&`variant${(0,o.Z)(i)}`]},c=(0,s.Z)(l,k,{});return c},w=(0,T.Z)(E.r,{name:"JoyMenuItem",slot:"Root",overridesResolver:(e,t)=>t.root})({}),x=i.forwardRef(function(e,t){let n=(0,S.Z)({props:e,name:"JoyMenuItem"}),o=i.useContext(v.Z),{children:s,disabled:E=!1,component:T="li",selected:_=!1,color:k="neutral",orientation:x="horizontal",variant:L="plain",slots:D={},slotProps:P={}}=n,M=(0,a.Z)(n,I),{variant:F=L,color:U=k}=(0,A.yP)(e.variant,e.color),{getColor:B}=(0,y.VT)(F),H=B(e.color,U),{getRootProps:G,disabled:z,focusVisible:$}=function(e){var t;let{disabled:n=!1,id:a,rootRef:o,label:s}=e,E=(0,l.Z)(a),T=i.useRef(null),S=i.useMemo(()=>({disabled:n,id:null!=E?E:"",label:s,ref:T}),[n,E,s]),{dispatch:y}=null!=(t=i.useContext(m.D))?t:b,{getRootProps:A,highlighted:_,rootRef:k}=(0,d.J)({item:E}),{index:v,totalItemCount:N}=(0,f.B)(null!=E?E:h,S),{getRootProps:C,focusVisible:R,rootRef:I}=(0,u.U)({disabled:n,focusableWhenDisabled:!0}),O=(0,c.Z)(k,I,o,T);i.useDebugValue({id:E,highlighted:_,disabled:n,label:s});let w=e=>t=>{var n;null==(n=e.onClick)||n.call(e,t),t.defaultMuiPrevented||y({type:p.Q.close,event:t})},x=(e={})=>(0,r.Z)({},e,{onClick:w(e)});function L(e={}){let t=(0,g.f)(x,(0,g.f)(C,A));return(0,r.Z)({},t(e),{ref:O,role:"menuitem"})}return void 0===E?{getRootProps:L,disabled:!1,focusVisible:R,highlighted:!1,index:-1,totalItemCount:0,rootRef:O}:{getRootProps:L,disabled:n,focusVisible:R,highlighted:_,index:v,totalItemCount:N,rootRef:O}}({disabled:E,rootRef:t}),j=(0,r.Z)({},n,{component:T,color:H,disabled:z,focusVisible:$,orientation:x,selected:_,row:o,variant:F}),V=O(j),W=(0,r.Z)({},M,{component:T,slots:D,slotProps:P}),[K,Z]=(0,C.Z)("root",{ref:t,elementType:w,getSlotProps:G,externalForwardedProps:W,className:V.root,ownerState:j});return(0,R.jsx)(N.Provider,{value:x,children:(0,R.jsx)(K,(0,r.Z)({},Z,{children:s}))})});var L=x},3414:function(e,t,n){"use strict";n.d(t,{Z:function(){return A}});var r=n(63366),a=n(87462),i=n(67294),o=n(90512),s=n(94780),l=n(14142),c=n(54844),u=n(20407),d=n(74312),p=n(58859),m=n(26821);function g(e){return(0,m.d6)("MuiSheet",e)}(0,m.sI)("MuiSheet",["root","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","variantPlain","variantOutlined","variantSoft","variantSolid"]);var f=n(78653),h=n(30220),b=n(85893);let E=["className","color","component","variant","invertedColors","slots","slotProps"],T=e=>{let{variant:t,color:n}=e,r={root:["root",t&&`variant${(0,l.Z)(t)}`,n&&`color${(0,l.Z)(n)}`]};return(0,s.Z)(r,g,{})},S=(0,d.Z)("div",{name:"JoySheet",slot:"Root",overridesResolver:(e,t)=>t.root})(({theme:e,ownerState:t})=>{var n,r;let i=null==(n=e.variants[t.variant])?void 0:n[t.color],{borderRadius:o,bgcolor:s,backgroundColor:l,background:u}=(0,p.V)({theme:e,ownerState:t},["borderRadius","bgcolor","backgroundColor","background"]),d=(0,c.DW)(e,`palette.${s}`)||s||(0,c.DW)(e,`palette.${l}`)||l||u||(null==i?void 0:i.backgroundColor)||(null==i?void 0:i.background)||e.vars.palette.background.surface;return[(0,a.Z)({"--Icon-color":"neutral"!==t.color||"solid"===t.variant?"currentColor":e.vars.palette.text.icon,"--ListItem-stickyBackground":"transparent"===d?"initial":d,"--Sheet-background":"transparent"===d?"initial":d},void 0!==o&&{"--List-radius":`calc(${o} - var(--variant-borderWidth, 0px))`,"--unstable_actionRadius":`calc(${o} - var(--variant-borderWidth, 0px))`},{backgroundColor:e.vars.palette.background.surface,position:"relative"}),(0,a.Z)({},e.typography["body-md"],i),"context"!==t.color&&t.invertedColors&&(null==(r=e.colorInversion[t.variant])?void 0:r[t.color])]}),y=i.forwardRef(function(e,t){let n=(0,u.Z)({props:e,name:"JoySheet"}),{className:i,color:s="neutral",component:l="div",variant:c="plain",invertedColors:d=!1,slots:p={},slotProps:m={}}=n,g=(0,r.Z)(n,E),{getColor:y}=(0,f.VT)(c),A=y(e.color,s),_=(0,a.Z)({},n,{color:A,component:l,invertedColors:d,variant:c}),k=T(_),v=(0,a.Z)({},g,{component:l,slots:p,slotProps:m}),[N,C]=(0,h.Z)("root",{ref:t,className:(0,o.Z)(k.root,i),elementType:S,externalForwardedProps:v,ownerState:_}),R=(0,b.jsx)(N,(0,a.Z)({},C));return d?(0,b.jsx)(f.do,{variant:c,children:R}):R});var A=y},63955:function(e,t,n){"use strict";let r;n.d(t,{Z:function(){return q}});var a=n(63366),i=n(87462),o=n(67294),s=n(90512),l=n(14142),c=n(94780),u=n(82690),d=n(19032),p=n(99962),m=n(33703),g=n(73546),f=n(59948),h={border:0,clip:"rect(0 0 0 0)",height:"1px",margin:-1,overflow:"hidden",padding:0,position:"absolute",whiteSpace:"nowrap",width:"1px"},b=n(6414);function E(e,t){return e-t}function T(e,t,n){return null==e?t:Math.min(Math.max(t,e),n)}function S(e,t){var n;let{index:r}=null!=(n=e.reduce((e,n,r)=>{let a=Math.abs(t-n);return null===e||a({left:`${e}%`}),leap:e=>({width:`${e}%`})},"horizontal-reverse":{offset:e=>({right:`${e}%`}),leap:e=>({width:`${e}%`})},vertical:{offset:e=>({bottom:`${e}%`}),leap:e=>({height:`${e}%`})}},N=e=>e;function C(){return void 0===r&&(r="undefined"==typeof CSS||"function"!=typeof CSS.supports||CSS.supports("touch-action","none")),r}var R=n(28442),I=n(74312),O=n(20407),w=n(78653),x=n(30220),L=n(26821);function D(e){return(0,L.d6)("MuiSlider",e)}let P=(0,L.sI)("MuiSlider",["root","disabled","dragging","focusVisible","marked","vertical","trackInverted","trackFalse","rail","track","mark","markActive","markLabel","thumb","thumbStart","thumbEnd","valueLabel","valueLabelOpen","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","variantPlain","variantOutlined","variantSoft","variantSolid","disabled","sizeSm","sizeMd","sizeLg","input"]);var M=n(85893);let F=["aria-label","aria-valuetext","className","classes","disableSwap","disabled","defaultValue","getAriaLabel","getAriaValueText","marks","max","min","name","onChange","onChangeCommitted","onMouseDown","orientation","scale","step","tabIndex","track","value","valueLabelDisplay","valueLabelFormat","isRtl","color","size","variant","component","slots","slotProps"];function U(e){return e}let B=e=>{let{disabled:t,dragging:n,marked:r,orientation:a,track:i,variant:o,color:s,size:u}=e,d={root:["root",t&&"disabled",n&&"dragging",r&&"marked","vertical"===a&&"vertical","inverted"===i&&"trackInverted",!1===i&&"trackFalse",o&&`variant${(0,l.Z)(o)}`,s&&`color${(0,l.Z)(s)}`,u&&`size${(0,l.Z)(u)}`],rail:["rail"],track:["track"],thumb:["thumb",t&&"disabled"],input:["input"],mark:["mark"],markActive:["markActive"],markLabel:["markLabel"],markLabelActive:["markLabelActive"],valueLabel:["valueLabel"],valueLabelOpen:["valueLabelOpen"],active:["active"],focusVisible:["focusVisible"]};return(0,c.Z)(d,D,{})},H=({theme:e,ownerState:t})=>(n={})=>{var r,a;let o=(null==(r=e.variants[`${t.variant}${n.state||""}`])?void 0:r[t.color])||{};return(0,i.Z)({},!n.state&&{"--variant-borderWidth":null!=(a=o["--variant-borderWidth"])?a:"0px"},{"--Slider-trackColor":o.color,"--Slider-thumbBackground":o.color,"--Slider-thumbColor":o.backgroundColor||e.vars.palette.background.surface,"--Slider-trackBackground":o.backgroundColor||e.vars.palette.background.surface,"--Slider-trackBorderColor":o.borderColor,"--Slider-railBackground":e.vars.palette.background.level2})},G=(0,I.Z)("span",{name:"JoySlider",slot:"Root",overridesResolver:(e,t)=>t.root})(({theme:e,ownerState:t})=>{let n=H({theme:e,ownerState:t});return[(0,i.Z)({"--Slider-size":"max(42px, max(var(--Slider-thumbSize), var(--Slider-trackSize)))","--Slider-trackRadius":"var(--Slider-size)","--Slider-markBackground":e.vars.palette.text.tertiary,[`& .${P.markActive}`]:{"--Slider-markBackground":"var(--Slider-trackColor)"}},"sm"===t.size&&{"--Slider-markSize":"2px","--Slider-trackSize":"4px","--Slider-thumbSize":"14px","--Slider-valueLabelArrowSize":"6px"},"md"===t.size&&{"--Slider-markSize":"2px","--Slider-trackSize":"6px","--Slider-thumbSize":"18px","--Slider-valueLabelArrowSize":"8px"},"lg"===t.size&&{"--Slider-markSize":"3px","--Slider-trackSize":"8px","--Slider-thumbSize":"24px","--Slider-valueLabelArrowSize":"10px"},{"--Slider-thumbRadius":"calc(var(--Slider-thumbSize) / 2)","--Slider-thumbWidth":"var(--Slider-thumbSize)"},n(),{"&:hover":(0,i.Z)({},n({state:"Hover"})),"&:active":(0,i.Z)({},n({state:"Active"})),[`&.${P.disabled}`]:(0,i.Z)({pointerEvents:"none",color:e.vars.palette.text.tertiary},n({state:"Disabled"})),boxSizing:"border-box",display:"inline-block",position:"relative",cursor:"pointer",touchAction:"none",WebkitTapHighlightColor:"transparent"},"horizontal"===t.orientation&&{padding:"calc(var(--Slider-size) / 2) 0",width:"100%"},"vertical"===t.orientation&&{padding:"0 calc(var(--Slider-size) / 2)",height:"100%"},{"@media print":{colorAdjust:"exact"}})]}),z=(0,I.Z)("span",{name:"JoySlider",slot:"Rail",overridesResolver:(e,t)=>t.rail})(({ownerState:e})=>[(0,i.Z)({display:"block",position:"absolute",backgroundColor:"inverted"===e.track?"var(--Slider-trackBackground)":"var(--Slider-railBackground)",border:"inverted"===e.track?"var(--variant-borderWidth, 0px) solid var(--Slider-trackBorderColor)":"initial",borderRadius:"var(--Slider-trackRadius)"},"horizontal"===e.orientation&&{height:"var(--Slider-trackSize)",top:"50%",left:0,right:0,transform:"translateY(-50%)"},"vertical"===e.orientation&&{width:"var(--Slider-trackSize)",top:0,bottom:0,left:"50%",transform:"translateX(-50%)"},"inverted"===e.track&&{opacity:1})]),$=(0,I.Z)("span",{name:"JoySlider",slot:"Track",overridesResolver:(e,t)=>t.track})(({ownerState:e})=>[(0,i.Z)({display:"block",position:"absolute",color:"var(--Slider-trackColor)",border:"inverted"===e.track?"initial":"var(--variant-borderWidth, 0px) solid var(--Slider-trackBorderColor)",backgroundColor:"inverted"===e.track?"var(--Slider-railBackground)":"var(--Slider-trackBackground)"},"horizontal"===e.orientation&&{height:"var(--Slider-trackSize)",top:"50%",transform:"translateY(-50%)",borderRadius:"var(--Slider-trackRadius) 0 0 var(--Slider-trackRadius)"},"vertical"===e.orientation&&{width:"var(--Slider-trackSize)",left:"50%",transform:"translateX(-50%)",borderRadius:"0 0 var(--Slider-trackRadius) var(--Slider-trackRadius)"},!1===e.track&&{display:"none"})]),j=(0,I.Z)("span",{name:"JoySlider",slot:"Thumb",overridesResolver:(e,t)=>t.thumb})(({ownerState:e,theme:t})=>{var n;return(0,i.Z)({position:"absolute",boxSizing:"border-box",outline:0,display:"flex",alignItems:"center",justifyContent:"center",width:"var(--Slider-thumbWidth)",height:"var(--Slider-thumbSize)",border:"var(--variant-borderWidth, 0px) solid var(--Slider-trackBorderColor)",borderRadius:"var(--Slider-thumbRadius)",boxShadow:"var(--Slider-thumbShadow)",color:"var(--Slider-thumbColor)",backgroundColor:"var(--Slider-thumbBackground)",[t.focus.selector]:(0,i.Z)({},t.focus.default,{outlineOffset:0,outlineWidth:"max(4px, var(--Slider-thumbSize) / 3.6)"},"context"!==e.color&&{outlineColor:`rgba(${null==(n=t.vars.palette)||null==(n=n[e.color])?void 0:n.mainChannel} / 0.32)`})},"horizontal"===e.orientation&&{top:"50%",transform:"translate(-50%, -50%)"},"vertical"===e.orientation&&{left:"50%",transform:"translate(-50%, 50%)"},{"&::before":{boxSizing:"border-box",content:'""',display:"block",position:"absolute",background:"transparent",top:0,left:0,width:"100%",height:"100%",border:"2px solid",borderColor:"var(--Slider-thumbColor)",borderRadius:"inherit"}})}),V=(0,I.Z)("span",{name:"JoySlider",slot:"Mark",overridesResolver:(e,t)=>t.mark})(({ownerState:e})=>(0,i.Z)({position:"absolute",width:"var(--Slider-markSize)",height:"var(--Slider-markSize)",borderRadius:"var(--Slider-markSize)",backgroundColor:"var(--Slider-markBackground)"},"horizontal"===e.orientation&&(0,i.Z)({top:"50%",transform:"translate(calc(var(--Slider-markSize) / -2), -50%)"},0===e.percent&&{transform:"translate(min(var(--Slider-markSize), 3px), -50%)"},100===e.percent&&{transform:"translate(calc(var(--Slider-markSize) * -1 - min(var(--Slider-markSize), 3px)), -50%)"}),"vertical"===e.orientation&&(0,i.Z)({left:"50%",transform:"translate(-50%, calc(var(--Slider-markSize) / 2))"},0===e.percent&&{transform:"translate(-50%, calc(min(var(--Slider-markSize), 3px) * -1))"},100===e.percent&&{transform:"translate(-50%, calc(var(--Slider-markSize) * 1 + min(var(--Slider-markSize), 3px)))"}))),W=(0,I.Z)("span",{name:"JoySlider",slot:"ValueLabel",overridesResolver:(e,t)=>t.valueLabel})(({theme:e,ownerState:t})=>(0,i.Z)({},"sm"===t.size&&{fontSize:e.fontSize.xs,lineHeight:e.lineHeight.md,paddingInline:"0.25rem",minWidth:"20px"},"md"===t.size&&{fontSize:e.fontSize.sm,lineHeight:e.lineHeight.md,paddingInline:"0.375rem",minWidth:"24px"},"lg"===t.size&&{fontSize:e.fontSize.md,lineHeight:e.lineHeight.md,paddingInline:"0.5rem",minWidth:"28px"},{zIndex:1,display:"flex",alignItems:"center",justifyContent:"center",whiteSpace:"nowrap",fontFamily:e.vars.fontFamily.body,fontWeight:e.vars.fontWeight.md,bottom:0,transformOrigin:"bottom center",transform:"translateY(calc((var(--Slider-thumbSize) + var(--Slider-valueLabelArrowSize)) * -1)) scale(0)",position:"absolute",backgroundColor:e.vars.palette.background.tooltip,boxShadow:e.shadow.sm,borderRadius:e.vars.radius.xs,color:"#fff","&::before":{display:"var(--Slider-valueLabelArrowDisplay)",position:"absolute",content:'""',color:e.vars.palette.background.tooltip,bottom:0,border:"calc(var(--Slider-valueLabelArrowSize) / 2) solid",borderColor:"currentColor",borderRightColor:"transparent",borderBottomColor:"transparent",borderLeftColor:"transparent",left:"50%",transform:"translate(-50%, 100%)",backgroundColor:"transparent"},[`&.${P.valueLabelOpen}`]:{transform:"translateY(calc((var(--Slider-thumbSize) + var(--Slider-valueLabelArrowSize)) * -1)) scale(1)"}})),K=(0,I.Z)("span",{name:"JoySlider",slot:"MarkLabel",overridesResolver:(e,t)=>t.markLabel})(({theme:e,ownerState:t})=>(0,i.Z)({fontFamily:e.vars.fontFamily.body},"sm"===t.size&&{fontSize:e.vars.fontSize.xs},"md"===t.size&&{fontSize:e.vars.fontSize.sm},"lg"===t.size&&{fontSize:e.vars.fontSize.md},{color:e.palette.text.tertiary,position:"absolute",whiteSpace:"nowrap"},"horizontal"===t.orientation&&{top:"calc(50% + 4px + (max(var(--Slider-trackSize), var(--Slider-thumbSize)) / 2))",transform:"translateX(-50%)"},"vertical"===t.orientation&&{left:"calc(50% + 8px + (max(var(--Slider-trackSize), var(--Slider-thumbSize)) / 2))",transform:"translateY(50%)"})),Z=(0,I.Z)("input",{name:"JoySlider",slot:"Input",overridesResolver:(e,t)=>t.input})({}),Y=o.forwardRef(function(e,t){let n=(0,O.Z)({props:e,name:"JoySlider"}),{"aria-label":r,"aria-valuetext":l,className:c,classes:b,disableSwap:I=!1,disabled:L=!1,defaultValue:D,getAriaLabel:P,getAriaValueText:H,marks:Y=!1,max:q=100,min:X=0,orientation:Q="horizontal",scale:J=U,step:ee=1,track:et="normal",valueLabelDisplay:en="off",valueLabelFormat:er=U,isRtl:ea=!1,color:ei="primary",size:eo="md",variant:es="solid",component:el,slots:ec={},slotProps:eu={}}=n,ed=(0,a.Z)(n,F),{getColor:ep}=(0,w.VT)("solid"),em=ep(e.color,ei),eg=(0,i.Z)({},n,{marks:Y,classes:b,disabled:L,defaultValue:D,disableSwap:I,isRtl:ea,max:q,min:X,orientation:Q,scale:J,step:ee,track:et,valueLabelDisplay:en,valueLabelFormat:er,color:em,size:eo,variant:es}),{axisProps:ef,getRootProps:eh,getHiddenInputProps:eb,getThumbProps:eE,open:eT,active:eS,axis:ey,focusedThumbIndex:eA,range:e_,dragging:ek,marks:ev,values:eN,trackOffset:eC,trackLeap:eR,getThumbStyle:eI}=function(e){let{"aria-labelledby":t,defaultValue:n,disabled:r=!1,disableSwap:a=!1,isRtl:s=!1,marks:l=!1,max:c=100,min:b=0,name:R,onChange:I,onChangeCommitted:O,orientation:w="horizontal",rootRef:x,scale:L=N,step:D=1,tabIndex:P,value:M}=e,F=o.useRef(),[U,B]=o.useState(-1),[H,G]=o.useState(-1),[z,$]=o.useState(!1),j=o.useRef(0),[V,W]=(0,d.Z)({controlled:M,default:null!=n?n:b,name:"Slider"}),K=I&&((e,t,n)=>{let r=e.nativeEvent||e,a=new r.constructor(r.type,r);Object.defineProperty(a,"target",{writable:!0,value:{value:t,name:R}}),I(a,t,n)}),Z=Array.isArray(V),Y=Z?V.slice().sort(E):[V];Y=Y.map(e=>T(e,b,c));let q=!0===l&&null!==D?[...Array(Math.floor((c-b)/D)+1)].map((e,t)=>({value:b+D*t})):l||[],X=q.map(e=>e.value),{isFocusVisibleRef:Q,onBlur:J,onFocus:ee,ref:et}=(0,p.Z)(),[en,er]=o.useState(-1),ea=o.useRef(),ei=(0,m.Z)(et,ea),eo=(0,m.Z)(x,ei),es=e=>t=>{var n;let r=Number(t.currentTarget.getAttribute("data-index"));ee(t),!0===Q.current&&er(r),G(r),null==e||null==(n=e.onFocus)||n.call(e,t)},el=e=>t=>{var n;J(t),!1===Q.current&&er(-1),G(-1),null==e||null==(n=e.onBlur)||n.call(e,t)};(0,g.Z)(()=>{if(r&&ea.current.contains(document.activeElement)){var e;null==(e=document.activeElement)||e.blur()}},[r]),r&&-1!==U&&B(-1),r&&-1!==en&&er(-1);let ec=e=>t=>{var n;null==(n=e.onChange)||n.call(e,t);let r=Number(t.currentTarget.getAttribute("data-index")),i=Y[r],o=X.indexOf(i),s=t.target.valueAsNumber;if(q&&null==D){let e=X[X.length-1];s=s>e?e:s{let n,r;let{current:i}=ea,{width:o,height:s,bottom:l,left:u}=i.getBoundingClientRect();if(n=0===ed.indexOf("vertical")?(l-e.y)/s:(e.x-u)/o,-1!==ed.indexOf("-reverse")&&(n=1-n),r=(c-b)*n+b,D)r=function(e,t,n){let r=Math.round((e-n)/t)*t+n;return Number(r.toFixed(function(e){if(1>Math.abs(e)){let t=e.toExponential().split("e-"),n=t[0].split(".")[1];return(n?n.length:0)+parseInt(t[1],10)}let t=e.toString().split(".")[1];return t?t.length:0}(t)))}(r,D,b);else{let e=S(X,r);r=X[e]}r=T(r,b,c);let d=0;if(Z){d=t?eu.current:S(Y,r),a&&(r=T(r,Y[d-1]||-1/0,Y[d+1]||1/0));let e=r;r=A({values:Y,newValue:r,index:d}),a&&t||(d=r.indexOf(e),eu.current=d)}return{newValue:r,activeIndex:d}},em=(0,f.Z)(e=>{let t=y(e,F);if(!t)return;if(j.current+=1,"mousemove"===e.type&&0===e.buttons){eg(e);return}let{newValue:n,activeIndex:r}=ep({finger:t,move:!0});_({sliderRef:ea,activeIndex:r,setActive:B}),W(n),!z&&j.current>2&&$(!0),K&&!k(n,V)&&K(e,n,r)}),eg=(0,f.Z)(e=>{let t=y(e,F);if($(!1),!t)return;let{newValue:n}=ep({finger:t,move:!0});B(-1),"touchend"===e.type&&G(-1),O&&O(e,n),F.current=void 0,eh()}),ef=(0,f.Z)(e=>{if(r)return;C()||e.preventDefault();let t=e.changedTouches[0];null!=t&&(F.current=t.identifier);let n=y(e,F);if(!1!==n){let{newValue:t,activeIndex:r}=ep({finger:n});_({sliderRef:ea,activeIndex:r,setActive:B}),W(t),K&&!k(t,V)&&K(e,t,r)}j.current=0;let a=(0,u.Z)(ea.current);a.addEventListener("touchmove",em),a.addEventListener("touchend",eg)}),eh=o.useCallback(()=>{let e=(0,u.Z)(ea.current);e.removeEventListener("mousemove",em),e.removeEventListener("mouseup",eg),e.removeEventListener("touchmove",em),e.removeEventListener("touchend",eg)},[eg,em]);o.useEffect(()=>{let{current:e}=ea;return e.addEventListener("touchstart",ef,{passive:C()}),()=>{e.removeEventListener("touchstart",ef,{passive:C()}),eh()}},[eh,ef]),o.useEffect(()=>{r&&eh()},[r,eh]);let eb=e=>t=>{var n;if(null==(n=e.onMouseDown)||n.call(e,t),r||t.defaultPrevented||0!==t.button)return;t.preventDefault();let a=y(t,F);if(!1!==a){let{newValue:e,activeIndex:n}=ep({finger:a});_({sliderRef:ea,activeIndex:n,setActive:B}),W(e),K&&!k(e,V)&&K(t,e,n)}j.current=0;let i=(0,u.Z)(ea.current);i.addEventListener("mousemove",em),i.addEventListener("mouseup",eg)},eE=((Z?Y[0]:b)-b)*100/(c-b),eT=(Y[Y.length-1]-b)*100/(c-b)-eE,eS=e=>t=>{var n;null==(n=e.onMouseOver)||n.call(e,t);let r=Number(t.currentTarget.getAttribute("data-index"));G(r)},ey=e=>t=>{var n;null==(n=e.onMouseLeave)||n.call(e,t),G(-1)};return{active:U,axis:ed,axisProps:v,dragging:z,focusedThumbIndex:en,getHiddenInputProps:(n={})=>{var a;let o={onChange:ec(n||{}),onFocus:es(n||{}),onBlur:el(n||{})},l=(0,i.Z)({},n,o);return(0,i.Z)({tabIndex:P,"aria-labelledby":t,"aria-orientation":w,"aria-valuemax":L(c),"aria-valuemin":L(b),name:R,type:"range",min:e.min,max:e.max,step:null===e.step&&e.marks?"any":null!=(a=e.step)?a:void 0,disabled:r},l,{style:(0,i.Z)({},h,{direction:s?"rtl":"ltr",width:"100%",height:"100%"})})},getRootProps:(e={})=>{let t={onMouseDown:eb(e||{})},n=(0,i.Z)({},e,t);return(0,i.Z)({ref:eo},n)},getThumbProps:(e={})=>{let t={onMouseOver:eS(e||{}),onMouseLeave:ey(e||{})};return(0,i.Z)({},e,t)},marks:q,open:H,range:Z,rootRef:eo,trackLeap:eT,trackOffset:eE,values:Y,getThumbStyle:e=>({pointerEvents:-1!==U&&U!==e?"none":void 0})}}((0,i.Z)({},eg,{rootRef:t}));eg.marked=ev.length>0&&ev.some(e=>e.label),eg.dragging=ek;let eO=(0,i.Z)({},ef[ey].offset(eC),ef[ey].leap(eR)),ew=B(eg),ex=(0,i.Z)({},ed,{component:el,slots:ec,slotProps:eu}),[eL,eD]=(0,x.Z)("root",{ref:t,className:(0,s.Z)(ew.root,c),elementType:G,externalForwardedProps:ex,getSlotProps:eh,ownerState:eg}),[eP,eM]=(0,x.Z)("rail",{className:ew.rail,elementType:z,externalForwardedProps:ex,ownerState:eg}),[eF,eU]=(0,x.Z)("track",{additionalProps:{style:eO},className:ew.track,elementType:$,externalForwardedProps:ex,ownerState:eg}),[eB,eH]=(0,x.Z)("mark",{className:ew.mark,elementType:V,externalForwardedProps:ex,ownerState:eg}),[eG,ez]=(0,x.Z)("markLabel",{className:ew.markLabel,elementType:K,externalForwardedProps:ex,ownerState:eg,additionalProps:{"aria-hidden":!0}}),[e$,ej]=(0,x.Z)("thumb",{className:ew.thumb,elementType:j,externalForwardedProps:ex,getSlotProps:eE,ownerState:eg}),[eV,eW]=(0,x.Z)("input",{className:ew.input,elementType:Z,externalForwardedProps:ex,getSlotProps:eb,ownerState:eg}),[eK,eZ]=(0,x.Z)("valueLabel",{className:ew.valueLabel,elementType:W,externalForwardedProps:ex,ownerState:eg});return(0,M.jsxs)(eL,(0,i.Z)({},eD,{children:[(0,M.jsx)(eP,(0,i.Z)({},eM)),(0,M.jsx)(eF,(0,i.Z)({},eU)),ev.filter(e=>e.value>=X&&e.value<=q).map((e,t)=>{let n;let r=(e.value-X)*100/(q-X),a=ef[ey].offset(r);return n=!1===et?-1!==eN.indexOf(e.value):"normal"===et&&(e_?e.value>=eN[0]&&e.value<=eN[eN.length-1]:e.value<=eN[0])||"inverted"===et&&(e_?e.value<=eN[0]||e.value>=eN[eN.length-1]:e.value>=eN[0]),(0,M.jsxs)(o.Fragment,{children:[(0,M.jsx)(eB,(0,i.Z)({"data-index":t},eH,!(0,R.X)(eB)&&{ownerState:(0,i.Z)({},eH.ownerState,{percent:r})},{style:(0,i.Z)({},a,eH.style),className:(0,s.Z)(eH.className,n&&ew.markActive)})),null!=e.label?(0,M.jsx)(eG,(0,i.Z)({"data-index":t},ez,{style:(0,i.Z)({},a,ez.style),className:(0,s.Z)(ew.markLabel,ez.className,n&&ew.markLabelActive),children:e.label})):null]},e.value)}),eN.map((e,t)=>{let n=(e-X)*100/(q-X),a=ef[ey].offset(n);return(0,M.jsxs)(e$,(0,i.Z)({"data-index":t},ej,{className:(0,s.Z)(ej.className,eS===t&&ew.active,eA===t&&ew.focusVisible),style:(0,i.Z)({},a,eI(t),ej.style),children:[(0,M.jsx)(eV,(0,i.Z)({"data-index":t,"aria-label":P?P(t):r,"aria-valuenow":J(e),"aria-valuetext":H?H(J(e),t):l,value:eN[t]},eW)),"off"!==en?(0,M.jsx)(eK,(0,i.Z)({},eZ,{className:(0,s.Z)(eZ.className,(eT===t||eS===t||"on"===en)&&ew.valueLabelOpen),children:"function"==typeof er?er(J(e),t):er})):null]}),t)})]}))});var q=Y},33028:function(e,t,n){"use strict";n.d(t,{Z:function(){return U}});var r=n(63366),a=n(87462),i=n(67294),o=n(14142),s=n(94780),l=n(73935),c=n(33703),u=n(74161),d=n(39336),p=n(73546),m=n(85893);let g=["onChange","maxRows","minRows","style","value"];function f(e){return parseInt(e,10)||0}let h={shadow:{visibility:"hidden",position:"absolute",overflow:"hidden",height:0,top:0,left:0,transform:"translateZ(0)"}};function b(e){return null==e||0===Object.keys(e).length||0===e.outerHeightStyle&&!e.overflow}let E=i.forwardRef(function(e,t){let{onChange:n,maxRows:o,minRows:s=1,style:E,value:T}=e,S=(0,r.Z)(e,g),{current:y}=i.useRef(null!=T),A=i.useRef(null),_=(0,c.Z)(t,A),k=i.useRef(null),v=i.useRef(0),[N,C]=i.useState({outerHeightStyle:0}),R=i.useCallback(()=>{let t=A.current,n=(0,u.Z)(t),r=n.getComputedStyle(t);if("0px"===r.width)return{outerHeightStyle:0};let a=k.current;a.style.width=r.width,a.value=t.value||e.placeholder||"x","\n"===a.value.slice(-1)&&(a.value+=" ");let i=r.boxSizing,l=f(r.paddingBottom)+f(r.paddingTop),c=f(r.borderBottomWidth)+f(r.borderTopWidth),d=a.scrollHeight;a.value="x";let p=a.scrollHeight,m=d;s&&(m=Math.max(Number(s)*p,m)),o&&(m=Math.min(Number(o)*p,m)),m=Math.max(m,p);let g=m+("border-box"===i?l+c:0),h=1>=Math.abs(m-d);return{outerHeightStyle:g,overflow:h}},[o,s,e.placeholder]),I=(e,t)=>{let{outerHeightStyle:n,overflow:r}=t;return v.current<20&&(n>0&&Math.abs((e.outerHeightStyle||0)-n)>1||e.overflow!==r)?(v.current+=1,{overflow:r,outerHeightStyle:n}):e},O=i.useCallback(()=>{let e=R();b(e)||C(t=>I(t,e))},[R]),w=()=>{let e=R();b(e)||l.flushSync(()=>{C(t=>I(t,e))})};return i.useEffect(()=>{let e;let t=(0,d.Z)(()=>{v.current=0,A.current&&w()}),n=A.current,r=(0,u.Z)(n);return r.addEventListener("resize",t),"undefined"!=typeof ResizeObserver&&(e=new ResizeObserver(()=>{v.current=0,A.current&&w()})).observe(n),()=>{t.clear(),r.removeEventListener("resize",t),e&&e.disconnect()}}),(0,p.Z)(()=>{O()}),i.useEffect(()=>{v.current=0},[T]),(0,m.jsxs)(i.Fragment,{children:[(0,m.jsx)("textarea",(0,a.Z)({value:T,onChange:e=>{v.current=0,y||O(),n&&n(e)},ref:_,rows:s,style:(0,a.Z)({height:N.outerHeightStyle,overflow:N.overflow?"hidden":void 0},E)},S)),(0,m.jsx)("textarea",{"aria-hidden":!0,className:e.className,readOnly:!0,ref:k,tabIndex:-1,style:(0,a.Z)({},h.shadow,E,{paddingTop:0,paddingBottom:0})})]})});var T=n(74312),S=n(20407),y=n(78653),A=n(30220),_=n(26821);function k(e){return(0,_.d6)("MuiTextarea",e)}let v=(0,_.sI)("MuiTextarea",["root","textarea","startDecorator","endDecorator","formControl","disabled","error","focused","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","sizeSm","sizeMd","sizeLg","variantPlain","variantOutlined","variantSoft"]);var N=n(71387);let C=i.createContext(void 0);var R=n(30437),I=n(76043);let O=["aria-describedby","aria-label","aria-labelledby","autoComplete","autoFocus","className","defaultValue","disabled","error","id","name","onClick","onChange","onKeyDown","onKeyUp","onFocus","onBlur","placeholder","readOnly","required","type","value"],w=["propsToForward","rootStateClasses","inputStateClasses","getRootProps","getInputProps","formControl","focused","error","disabled","size","color","variant","startDecorator","endDecorator","minRows","maxRows","component","slots","slotProps"],x=e=>{let{disabled:t,variant:n,color:r,size:a}=e,i={root:["root",t&&"disabled",n&&`variant${(0,o.Z)(n)}`,r&&`color${(0,o.Z)(r)}`,a&&`size${(0,o.Z)(a)}`],textarea:["textarea"],startDecorator:["startDecorator"],endDecorator:["endDecorator"]};return(0,s.Z)(i,k,{})},L=(0,T.Z)("div",{name:"JoyTextarea",slot:"Root",overridesResolver:(e,t)=>t.root})(({theme:e,ownerState:t})=>{var n,r,i,o,s;let l=null==(n=e.variants[`${t.variant}`])?void 0:n[t.color];return[(0,a.Z)({"--Textarea-radius":e.vars.radius.sm,"--Textarea-gap":"0.5rem","--Textarea-placeholderColor":"inherit","--Textarea-placeholderOpacity":.64,"--Textarea-decoratorColor":e.vars.palette.text.icon,"--Textarea-focused":"0","--Textarea-focusedThickness":e.vars.focus.thickness},"context"===t.color?{"--Textarea-focusedHighlight":e.vars.palette.focusVisible}:{"--Textarea-focusedHighlight":null==(r=e.vars.palette["neutral"===t.color?"primary":t.color])?void 0:r[500]},"sm"===t.size&&{"--Textarea-minHeight":"2rem","--Textarea-paddingBlock":"calc(0.5rem - var(--variant-borderWidth, 0px))","--Textarea-paddingInline":"0.5rem","--Textarea-decoratorChildHeight":"min(1.5rem, var(--Textarea-minHeight))","--Icon-fontSize":e.vars.fontSize.xl},"md"===t.size&&{"--Textarea-minHeight":"2.5rem","--Textarea-paddingBlock":"calc(0.5rem - var(--variant-borderWidth, 0px))","--Textarea-paddingInline":"0.75rem","--Textarea-decoratorChildHeight":"min(2rem, var(--Textarea-minHeight))","--Icon-fontSize":e.vars.fontSize.xl2},"lg"===t.size&&{"--Textarea-minHeight":"3rem","--Textarea-paddingBlock":"calc(0.75rem - var(--variant-borderWidth, 0px))","--Textarea-paddingInline":"1rem","--Textarea-gap":"0.75rem","--Textarea-decoratorChildHeight":"min(2.375rem, var(--Textarea-minHeight))","--Icon-fontSize":e.vars.fontSize.xl2},{"--_Textarea-paddingBlock":"max((var(--Textarea-minHeight) - 2 * var(--variant-borderWidth, 0px) - var(--Textarea-decoratorChildHeight)) / 2, 0px)","--Textarea-decoratorChildRadius":"max(var(--Textarea-radius) - var(--variant-borderWidth, 0px) - var(--_Textarea-paddingBlock), min(var(--_Textarea-paddingBlock) + var(--variant-borderWidth, 0px), var(--Textarea-radius) / 2))","--Button-minHeight":"var(--Textarea-decoratorChildHeight)","--IconButton-size":"var(--Textarea-decoratorChildHeight)","--Button-radius":"var(--Textarea-decoratorChildRadius)","--IconButton-radius":"var(--Textarea-decoratorChildRadius)",boxSizing:"border-box"},"plain"!==t.variant&&{boxShadow:e.shadow.xs},{minWidth:0,minHeight:"var(--Textarea-minHeight)",cursor:"text",position:"relative",display:"flex",flexDirection:"column",paddingInlineStart:"var(--Textarea-paddingInline)",paddingBlock:"var(--Textarea-paddingBlock)",borderRadius:"var(--Textarea-radius)"},e.typography[`body-${t.size}`],l,{backgroundColor:null!=(i=null==l?void 0:l.backgroundColor)?i:e.vars.palette.background.surface,"&:before":{boxSizing:"border-box",content:'""',display:"block",position:"absolute",pointerEvents:"none",top:0,left:0,right:0,bottom:0,zIndex:1,borderRadius:"inherit",margin:"calc(var(--variant-borderWidth, 0px) * -1)",boxShadow:"var(--Textarea-focusedInset, inset) 0 0 0 calc(var(--Textarea-focused) * var(--Textarea-focusedThickness)) var(--Textarea-focusedHighlight)"}}),{"&:hover":(0,a.Z)({},null==(o=e.variants[`${t.variant}Hover`])?void 0:o[t.color],{backgroundColor:null,cursor:"text"}),[`&.${v.disabled}`]:null==(s=e.variants[`${t.variant}Disabled`])?void 0:s[t.color],"&:focus-within::before":{"--Textarea-focused":"1"}}]}),D=(0,T.Z)(E,{name:"JoyTextarea",slot:"Textarea",overridesResolver:(e,t)=>t.textarea})({resize:"none",border:"none",minWidth:0,outline:0,padding:0,paddingInlineEnd:"var(--Textarea-paddingInline)",flex:"auto",alignSelf:"stretch",color:"inherit",backgroundColor:"transparent",fontFamily:"inherit",fontSize:"inherit",fontStyle:"inherit",fontWeight:"inherit",lineHeight:"inherit","&::-webkit-input-placeholder":{color:"var(--Textarea-placeholderColor)",opacity:"var(--Textarea-placeholderOpacity)"},"&::-moz-placeholder":{color:"var(--Textarea-placeholderColor)",opacity:"var(--Textarea-placeholderOpacity)"},"&:-ms-input-placeholder":{color:"var(--Textarea-placeholderColor)",opacity:"var(--Textarea-placeholderOpacity)"},"&::-ms-input-placeholder":{color:"var(--Textarea-placeholderColor)",opacity:"var(--Textarea-placeholderOpacity)"}}),P=(0,T.Z)("div",{name:"JoyTextarea",slot:"StartDecorator",overridesResolver:(e,t)=>t.startDecorator})({display:"flex",marginInlineStart:"calc(var(--Textarea-paddingBlock) - var(--Textarea-paddingInline))",marginInlineEnd:"var(--Textarea-paddingBlock)",marginBlockEnd:"var(--Textarea-gap)",color:"var(--Textarea-decoratorColor)",cursor:"initial"}),M=(0,T.Z)("div",{name:"JoyTextarea",slot:"EndDecorator",overridesResolver:(e,t)=>t.endDecorator})({display:"flex",marginInlineStart:"calc(var(--Textarea-paddingBlock) - var(--Textarea-paddingInline))",marginInlineEnd:"var(--Textarea-paddingBlock)",marginBlockStart:"var(--Textarea-gap)",color:"var(--Textarea-decoratorColor)",cursor:"initial"}),F=i.forwardRef(function(e,t){var n,o,s,l,u,d,p;let g=(0,S.Z)({props:e,name:"JoyTextarea"}),f=function(e,t){let n=i.useContext(I.Z),{"aria-describedby":o,"aria-label":s,"aria-labelledby":l,autoComplete:u,autoFocus:d,className:p,defaultValue:m,disabled:g,error:f,id:h,name:b,onClick:E,onChange:T,onKeyDown:S,onKeyUp:y,onFocus:A,onBlur:_,placeholder:k,readOnly:v,required:w,type:x,value:L}=e,D=(0,r.Z)(e,O),{getRootProps:P,getInputProps:M,focused:F,error:U,disabled:B}=function(e){let t,n,r,o,s;let{defaultValue:l,disabled:u=!1,error:d=!1,onBlur:p,onChange:m,onFocus:g,required:f=!1,value:h,inputRef:b}=e,E=i.useContext(C);if(E){var T,S,y;t=void 0,n=null!=(T=E.disabled)&&T,r=null!=(S=E.error)&&S,o=null!=(y=E.required)&&y,s=E.value}else t=l,n=u,r=d,o=f,s=h;let{current:A}=i.useRef(null!=s),_=i.useCallback(e=>{},[]),k=i.useRef(null),v=(0,c.Z)(k,b,_),[I,O]=i.useState(!1);i.useEffect(()=>{!E&&n&&I&&(O(!1),null==p||p())},[E,n,I,p]);let w=e=>t=>{var n,r;if(null!=E&&E.disabled){t.stopPropagation();return}null==(n=e.onFocus)||n.call(e,t),E&&E.onFocus?null==E||null==(r=E.onFocus)||r.call(E):O(!0)},x=e=>t=>{var n;null==(n=e.onBlur)||n.call(e,t),E&&E.onBlur?E.onBlur():O(!1)},L=e=>(t,...n)=>{var r,a;if(!A){let e=t.target||k.current;if(null==e)throw Error((0,N.Z)(17))}null==E||null==(r=E.onChange)||r.call(E,t),null==(a=e.onChange)||a.call(e,t,...n)},D=e=>t=>{var n;k.current&&t.currentTarget===t.target&&k.current.focus(),null==(n=e.onClick)||n.call(e,t)};return{disabled:n,error:r,focused:I,formControlContext:E,getInputProps:(e={})=>{let i=(0,a.Z)({},{onBlur:p,onChange:m,onFocus:g},(0,R._)(e)),l=(0,a.Z)({},e,i,{onBlur:x(i),onChange:L(i),onFocus:w(i)});return(0,a.Z)({},l,{"aria-invalid":r||void 0,defaultValue:t,ref:v,value:s,required:o,disabled:n})},getRootProps:(t={})=>{let n=(0,R._)(e,["onBlur","onChange","onFocus"]),r=(0,a.Z)({},n,(0,R._)(t));return(0,a.Z)({},t,r,{onClick:D(r)})},inputRef:v,required:o,value:s}}({disabled:null!=g?g:null==n?void 0:n.disabled,defaultValue:m,error:f,onBlur:_,onClick:E,onChange:T,onFocus:A,required:null!=w?w:null==n?void 0:n.required,value:L}),H={[t.disabled]:B,[t.error]:U,[t.focused]:F,[t.formControl]:!!n,[p]:p},G={[t.disabled]:B};return(0,a.Z)({formControl:n,propsToForward:{"aria-describedby":o,"aria-label":s,"aria-labelledby":l,autoComplete:u,autoFocus:d,disabled:B,id:h,onKeyDown:S,onKeyUp:y,name:b,placeholder:k,readOnly:v,type:x},rootStateClasses:H,inputStateClasses:G,getRootProps:P,getInputProps:M,focused:F,error:U,disabled:B},D)}(g,v),{propsToForward:h,rootStateClasses:b,inputStateClasses:E,getRootProps:T,getInputProps:_,formControl:k,focused:F,error:U=!1,disabled:B=!1,size:H="md",color:G="neutral",variant:z="outlined",startDecorator:$,endDecorator:j,minRows:V,maxRows:W,component:K,slots:Z={},slotProps:Y={}}=f,q=(0,r.Z)(f,w),X=null!=(n=null!=(o=e.disabled)?o:null==k?void 0:k.disabled)?n:B,Q=null!=(s=null!=(l=e.error)?l:null==k?void 0:k.error)?s:U,J=null!=(u=null!=(d=e.size)?d:null==k?void 0:k.size)?u:H,{getColor:ee}=(0,y.VT)(z),et=ee(e.color,Q?"danger":null!=(p=null==k?void 0:k.color)?p:G),en=(0,a.Z)({},g,{color:et,disabled:X,error:Q,focused:F,size:J,variant:z}),er=x(en),ea=(0,a.Z)({},q,{component:K,slots:Z,slotProps:Y}),[ei,eo]=(0,A.Z)("root",{ref:t,className:[er.root,b],elementType:L,externalForwardedProps:ea,getSlotProps:T,ownerState:en}),[es,el]=(0,A.Z)("textarea",{additionalProps:{id:null==k?void 0:k.htmlFor,"aria-describedby":null==k?void 0:k["aria-describedby"]},className:[er.textarea,E],elementType:D,internalForwardedProps:(0,a.Z)({},h,{minRows:V,maxRows:W}),externalForwardedProps:ea,getSlotProps:_,ownerState:en}),[ec,eu]=(0,A.Z)("startDecorator",{className:er.startDecorator,elementType:P,externalForwardedProps:ea,ownerState:en}),[ed,ep]=(0,A.Z)("endDecorator",{className:er.endDecorator,elementType:M,externalForwardedProps:ea,ownerState:en});return(0,m.jsxs)(ei,(0,a.Z)({},eo,{children:[$&&(0,m.jsx)(ec,(0,a.Z)({},eu,{children:$})),(0,m.jsx)(es,(0,a.Z)({},el)),j&&(0,m.jsx)(ed,(0,a.Z)({},ep,{children:j}))]}))});var U=F},38426:function(e,t,n){"use strict";n.d(t,{Z:function(){return eA}});var r=n(67294),a=n(99611),i=n(94184),o=n.n(i),s=n(87462),l=n(1413),c=n(4942),u=n(97685),d=n(71002),p=n(45987),m=n(27678),g=n(21770),f=["crossOrigin","decoding","draggable","loading","referrerPolicy","sizes","srcSet","useMap","alt"],h=r.createContext(null),b=0;function E(e){var t=e.src,n=e.isCustomPlaceholder,a=e.fallback,i=(0,r.useState)(n?"loading":"normal"),o=(0,u.Z)(i,2),s=o[0],l=o[1],c=(0,r.useRef)(!1),d="error"===s;(0,r.useEffect)(function(){new Promise(function(e){var n=document.createElement("img");n.onerror=function(){return e(!1)},n.onload=function(){return e(!0)},n.src=t}).then(function(e){e||l("error")})},[t]),(0,r.useEffect)(function(){n&&!c.current?l("loading"):d&&l("normal")},[t]);var p=function(){l("normal")};return[function(e){c.current=!1,"loading"===s&&null!=e&&e.complete&&(e.naturalWidth||e.naturalHeight)&&(c.current=!0,p())},d&&a?{src:a}:{onLoad:p,src:t},s]}var T=n(13328),S=n(64019),y=n(15105),A=n(80334);function _(e,t,n,r){var a=t+n,i=(n-r)/2;if(n>r){if(t>0)return(0,c.Z)({},e,i);if(t<0&&ar)return(0,c.Z)({},e,t<0?i:-i);return{}}var k=n(91881),v=n(75164),N={x:0,y:0,rotate:0,scale:1,flipX:!1,flipY:!1},C=n(2788),R=n(82225),I=function(e){var t=e.visible,n=e.maskTransitionName,a=e.getContainer,i=e.prefixCls,s=e.rootClassName,u=e.icons,d=e.countRender,p=e.showSwitch,m=e.showProgress,g=e.current,f=e.transform,b=e.count,E=e.scale,T=e.minScale,S=e.maxScale,A=e.closeIcon,_=e.onSwitchLeft,k=e.onSwitchRight,v=e.onClose,N=e.onZoomIn,I=e.onZoomOut,O=e.onRotateRight,w=e.onRotateLeft,x=e.onFlipX,L=e.onFlipY,D=e.toolbarRender,P=(0,r.useContext)(h),M=u.rotateLeft,F=u.rotateRight,U=u.zoomIn,B=u.zoomOut,H=u.close,G=u.left,z=u.right,$=u.flipX,j=u.flipY,V="".concat(i,"-operations-operation");r.useEffect(function(){var e=function(e){e.keyCode===y.Z.ESC&&v()};return t&&window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}},[t]);var W=[{icon:j,onClick:L,type:"flipY"},{icon:$,onClick:x,type:"flipX"},{icon:M,onClick:w,type:"rotateLeft"},{icon:F,onClick:O,type:"rotateRight"},{icon:B,onClick:I,type:"zoomOut",disabled:E===T},{icon:U,onClick:N,type:"zoomIn",disabled:E===S}].map(function(e){var t,n=e.icon,a=e.onClick,s=e.type,l=e.disabled;return r.createElement("div",{className:o()(V,(t={},(0,c.Z)(t,"".concat(i,"-operations-operation-").concat(s),!0),(0,c.Z)(t,"".concat(i,"-operations-operation-disabled"),!!l),t)),onClick:a,key:s},n)}),K=r.createElement("div",{className:"".concat(i,"-operations")},W);return r.createElement(R.ZP,{visible:t,motionName:n},function(e){var t=e.className,n=e.style;return r.createElement(C.Z,{open:!0,getContainer:null!=a?a:document.body},r.createElement("div",{className:o()("".concat(i,"-operations-wrapper"),t,s),style:n},null===A?null:r.createElement("button",{className:"".concat(i,"-close"),onClick:v},A||H),p&&r.createElement(r.Fragment,null,r.createElement("div",{className:o()("".concat(i,"-switch-left"),(0,c.Z)({},"".concat(i,"-switch-left-disabled"),0===g)),onClick:_},G),r.createElement("div",{className:o()("".concat(i,"-switch-right"),(0,c.Z)({},"".concat(i,"-switch-right-disabled"),g===b-1)),onClick:k},z)),r.createElement("div",{className:"".concat(i,"-footer")},m&&r.createElement("div",{className:"".concat(i,"-progress")},d?d(g+1,b):"".concat(g+1," / ").concat(b)),D?D(K,(0,l.Z)({icons:{flipYIcon:W[0],flipXIcon:W[1],rotateLeftIcon:W[2],rotateRightIcon:W[3],zoomOutIcon:W[4],zoomInIcon:W[5]},actions:{onFlipY:L,onFlipX:x,onRotateLeft:w,onRotateRight:O,onZoomOut:I,onZoomIn:N},transform:f},P?{current:g,total:b}:{})):K)))})},O=["fallback","src","imgRef"],w=["prefixCls","src","alt","fallback","movable","onClose","visible","icons","rootClassName","closeIcon","getContainer","current","count","countRender","scaleStep","minScale","maxScale","transitionName","maskTransitionName","imageRender","imgCommonProps","toolbarRender","onTransform","onChange"],x=function(e){var t=e.fallback,n=e.src,a=e.imgRef,i=(0,p.Z)(e,O),o=E({src:n,fallback:t}),l=(0,u.Z)(o,2),c=l[0],d=l[1];return r.createElement("img",(0,s.Z)({ref:function(e){a.current=e,c(e)}},i,d))},L=function(e){var t,n,a,i,d,g,f,b=e.prefixCls,E=e.src,C=e.alt,R=e.fallback,O=e.movable,L=void 0===O||O,D=e.onClose,P=e.visible,M=e.icons,F=e.rootClassName,U=e.closeIcon,B=e.getContainer,H=e.current,G=void 0===H?0:H,z=e.count,$=void 0===z?1:z,j=e.countRender,V=e.scaleStep,W=void 0===V?.5:V,K=e.minScale,Z=void 0===K?1:K,Y=e.maxScale,q=void 0===Y?50:Y,X=e.transitionName,Q=e.maskTransitionName,J=void 0===Q?"fade":Q,ee=e.imageRender,et=e.imgCommonProps,en=e.toolbarRender,er=e.onTransform,ea=e.onChange,ei=(0,p.Z)(e,w),eo=(0,r.useRef)(),es=(0,r.useRef)({deltaX:0,deltaY:0,transformX:0,transformY:0}),el=(0,r.useState)(!1),ec=(0,u.Z)(el,2),eu=ec[0],ed=ec[1],ep=(0,r.useContext)(h),em=ep&&$>1,eg=ep&&$>=1,ef=(t=(0,r.useRef)(null),n=(0,r.useRef)([]),a=(0,r.useState)(N),d=(i=(0,u.Z)(a,2))[0],g=i[1],f=function(e,r){null===t.current&&(n.current=[],t.current=(0,v.Z)(function(){g(function(e){var a=e;return n.current.forEach(function(e){a=(0,l.Z)((0,l.Z)({},a),e)}),t.current=null,null==er||er({transform:a,action:r}),a})})),n.current.push((0,l.Z)((0,l.Z)({},d),e))},{transform:d,resetTransform:function(e){g(N),er&&!(0,k.Z)(N,d)&&er({transform:N,action:e})},updateTransform:f,dispatchZoomChange:function(e,t,n,r){var a=eo.current,i=a.width,o=a.height,s=a.offsetWidth,l=a.offsetHeight,c=a.offsetLeft,u=a.offsetTop,p=e,g=d.scale*e;g>q?(p=q/d.scale,g=q):g0&&(e_(!1),eb("prev"),null==ea||ea(G-1,G))},eO=function(e){null==e||e.preventDefault(),null==e||e.stopPropagation(),G<$-1&&(e_(!1),eb("next"),null==ea||ea(G+1,G))},ew=function(){if(P&&eu){ed(!1);var e,t,n,r,a,i,o=es.current,s=o.transformX,c=o.transformY;if(eN!==s&&eC!==c){var u=eo.current.offsetWidth*ev,d=eo.current.offsetHeight*ev,p=eo.current.getBoundingClientRect(),g=p.left,f=p.top,h=ek%180!=0,b=(e=h?d:u,t=h?u:d,r=(n=(0,m.g1)()).width,a=n.height,i=null,e<=r&&t<=a?i={x:0,y:0}:(e>r||t>a)&&(i=(0,l.Z)((0,l.Z)({},_("x",g,e,r)),_("y",f,t,a))),i);b&&eE((0,l.Z)({},b),"dragRebound")}}},ex=function(e){P&&eu&&eE({x:e.pageX-es.current.deltaX,y:e.pageY-es.current.deltaY},"move")},eL=function(e){P&&em&&(e.keyCode===y.Z.LEFT?eI():e.keyCode===y.Z.RIGHT&&eO())};(0,r.useEffect)(function(){var e,t,n,r;if(L){n=(0,S.Z)(window,"mouseup",ew,!1),r=(0,S.Z)(window,"mousemove",ex,!1);try{window.top!==window.self&&(e=(0,S.Z)(window.top,"mouseup",ew,!1),t=(0,S.Z)(window.top,"mousemove",ex,!1))}catch(e){(0,A.Kp)(!1,"[rc-image] ".concat(e))}}return function(){var a,i,o,s;null===(a=n)||void 0===a||a.remove(),null===(i=r)||void 0===i||i.remove(),null===(o=e)||void 0===o||o.remove(),null===(s=t)||void 0===s||s.remove()}},[P,eu,eN,eC,ek,L]),(0,r.useEffect)(function(){var e=(0,S.Z)(window,"keydown",eL,!1);return function(){e.remove()}},[P,em,G]);var eD=r.createElement(x,(0,s.Z)({},et,{width:e.width,height:e.height,imgRef:eo,className:"".concat(b,"-img"),alt:C,style:{transform:"translate3d(".concat(eh.x,"px, ").concat(eh.y,"px, 0) scale3d(").concat(eh.flipX?"-":"").concat(ev,", ").concat(eh.flipY?"-":"").concat(ev,", 1) rotate(").concat(ek,"deg)"),transitionDuration:!eA&&"0s"},fallback:R,src:E,onWheel:function(e){if(P&&0!=e.deltaY){var t=1+Math.min(Math.abs(e.deltaY/100),1)*W;e.deltaY>0&&(t=1/t),eT(t,"wheel",e.clientX,e.clientY)}},onMouseDown:function(e){L&&0===e.button&&(e.preventDefault(),e.stopPropagation(),es.current={deltaX:e.pageX-eh.x,deltaY:e.pageY-eh.y,transformX:eh.x,transformY:eh.y},ed(!0))},onDoubleClick:function(e){P&&(1!==ev?eE({x:0,y:0,scale:1},"doubleClick"):eT(1+W,"doubleClick",e.clientX,e.clientY))}}));return r.createElement(r.Fragment,null,r.createElement(T.Z,(0,s.Z)({transitionName:void 0===X?"zoom":X,maskTransitionName:J,closable:!1,keyboard:!0,prefixCls:b,onClose:D,visible:P,wrapClassName:eR,rootClassName:F,getContainer:B},ei,{afterClose:function(){eb("close")}}),r.createElement("div",{className:"".concat(b,"-img-wrapper")},ee?ee(eD,(0,l.Z)({transform:eh},ep?{current:G}:{})):eD)),r.createElement(I,{visible:P,transform:eh,maskTransitionName:J,closeIcon:U,getContainer:B,prefixCls:b,rootClassName:F,icons:void 0===M?{}:M,countRender:j,showSwitch:em,showProgress:eg,current:G,count:$,scale:ev,minScale:Z,maxScale:q,toolbarRender:en,onSwitchLeft:eI,onSwitchRight:eO,onZoomIn:function(){eT(1+W,"zoomIn")},onZoomOut:function(){eT(1/(1+W),"zoomOut")},onRotateRight:function(){eE({rotate:ek+90},"rotateRight")},onRotateLeft:function(){eE({rotate:ek-90},"rotateLeft")},onFlipX:function(){eE({flipX:!eh.flipX},"flipX")},onFlipY:function(){eE({flipY:!eh.flipY},"flipY")},onClose:D}))},D=n(74902),P=["visible","onVisibleChange","getContainer","current","movable","minScale","maxScale","countRender","closeIcon","onChange","onTransform","toolbarRender","imageRender"],M=["src"],F=["src","alt","onPreviewClose","prefixCls","previewPrefixCls","placeholder","fallback","width","height","style","preview","className","onClick","onError","wrapperClassName","wrapperStyle","rootClassName"],U=["src","visible","onVisibleChange","getContainer","mask","maskClassName","movable","icons","scaleStep","minScale","maxScale","imageRender","toolbarRender"],B=function(e){var t,n,a,i,T=e.src,S=e.alt,y=e.onPreviewClose,A=e.prefixCls,_=void 0===A?"rc-image":A,k=e.previewPrefixCls,v=void 0===k?"".concat(_,"-preview"):k,N=e.placeholder,C=e.fallback,R=e.width,I=e.height,O=e.style,w=e.preview,x=void 0===w||w,D=e.className,P=e.onClick,M=e.onError,B=e.wrapperClassName,H=e.wrapperStyle,G=e.rootClassName,z=(0,p.Z)(e,F),$=N&&!0!==N,j="object"===(0,d.Z)(x)?x:{},V=j.src,W=j.visible,K=void 0===W?void 0:W,Z=j.onVisibleChange,Y=j.getContainer,q=j.mask,X=j.maskClassName,Q=j.movable,J=j.icons,ee=j.scaleStep,et=j.minScale,en=j.maxScale,er=j.imageRender,ea=j.toolbarRender,ei=(0,p.Z)(j,U),eo=null!=V?V:T,es=(0,g.Z)(!!K,{value:K,onChange:void 0===Z?y:Z}),el=(0,u.Z)(es,2),ec=el[0],eu=el[1],ed=E({src:T,isCustomPlaceholder:$,fallback:C}),ep=(0,u.Z)(ed,3),em=ep[0],eg=ep[1],ef=ep[2],eh=(0,r.useState)(null),eb=(0,u.Z)(eh,2),eE=eb[0],eT=eb[1],eS=(0,r.useContext)(h),ey=!!x,eA=o()(_,B,G,(0,c.Z)({},"".concat(_,"-error"),"error"===ef)),e_=(0,r.useMemo)(function(){var t={};return f.forEach(function(n){void 0!==e[n]&&(t[n]=e[n])}),t},f.map(function(t){return e[t]})),ek=(0,r.useMemo)(function(){return(0,l.Z)((0,l.Z)({},e_),{},{src:eo})},[eo,e_]),ev=(t=r.useState(function(){return String(b+=1)}),n=(0,u.Z)(t,1)[0],a=r.useContext(h),i={data:ek,canPreview:ey},r.useEffect(function(){if(a)return a.register(n,i)},[]),r.useEffect(function(){a&&a.register(n,i)},[ey,ek]),n);return r.createElement(r.Fragment,null,r.createElement("div",(0,s.Z)({},z,{className:eA,onClick:ey?function(e){var t=(0,m.os)(e.target),n=t.left,r=t.top;eS?eS.onPreview(ev,n,r):(eT({x:n,y:r}),eu(!0)),null==P||P(e)}:P,style:(0,l.Z)({width:R,height:I},H)}),r.createElement("img",(0,s.Z)({},e_,{className:o()("".concat(_,"-img"),(0,c.Z)({},"".concat(_,"-img-placeholder"),!0===N),D),style:(0,l.Z)({height:I},O),ref:em},eg,{width:R,height:I,onError:M})),"loading"===ef&&r.createElement("div",{"aria-hidden":"true",className:"".concat(_,"-placeholder")},N),q&&ey&&r.createElement("div",{className:o()("".concat(_,"-mask"),X),style:{display:(null==O?void 0:O.display)==="none"?"none":void 0}},q)),!eS&&ey&&r.createElement(L,(0,s.Z)({"aria-hidden":!ec,visible:ec,prefixCls:v,onClose:function(){eu(!1),eT(null)},mousePosition:eE,src:eo,alt:S,fallback:C,getContainer:void 0===Y?void 0:Y,icons:J,movable:Q,scaleStep:ee,minScale:et,maxScale:en,rootClassName:G,imageRender:er,imgCommonProps:e_,toolbarRender:ea},ei)))};B.PreviewGroup=function(e){var t,n,a,i,o,m,b=e.previewPrefixCls,E=e.children,T=e.icons,S=e.items,y=e.preview,A=e.fallback,_="object"===(0,d.Z)(y)?y:{},k=_.visible,v=_.onVisibleChange,N=_.getContainer,C=_.current,R=_.movable,I=_.minScale,O=_.maxScale,w=_.countRender,x=_.closeIcon,F=_.onChange,U=_.onTransform,B=_.toolbarRender,H=_.imageRender,G=(0,p.Z)(_,P),z=(t=r.useState({}),a=(n=(0,u.Z)(t,2))[0],i=n[1],o=r.useCallback(function(e,t){return i(function(n){return(0,l.Z)((0,l.Z)({},n),{},(0,c.Z)({},e,t))}),function(){i(function(t){var n=(0,l.Z)({},t);return delete n[e],n})}},[]),[r.useMemo(function(){return S?S.map(function(e){if("string"==typeof e)return{data:{src:e}};var t={};return Object.keys(e).forEach(function(n){["src"].concat((0,D.Z)(f)).includes(n)&&(t[n]=e[n])}),{data:t}}):Object.keys(a).reduce(function(e,t){var n=a[t],r=n.canPreview,i=n.data;return r&&e.push({data:i,id:t}),e},[])},[S,a]),o]),$=(0,u.Z)(z,2),j=$[0],V=$[1],W=(0,g.Z)(0,{value:C}),K=(0,u.Z)(W,2),Z=K[0],Y=K[1],q=(0,r.useState)(!1),X=(0,u.Z)(q,2),Q=X[0],J=X[1],ee=(null===(m=j[Z])||void 0===m?void 0:m.data)||{},et=ee.src,en=(0,p.Z)(ee,M),er=(0,g.Z)(!!k,{value:k,onChange:function(e,t){null==v||v(e,t,Z)}}),ea=(0,u.Z)(er,2),ei=ea[0],eo=ea[1],es=(0,r.useState)(null),el=(0,u.Z)(es,2),ec=el[0],eu=el[1],ed=r.useCallback(function(e,t,n){var r=j.findIndex(function(t){return t.id===e});eo(!0),eu({x:t,y:n}),Y(r<0?0:r),J(!0)},[j]);r.useEffect(function(){ei?Q||Y(0):J(!1)},[ei]);var ep=r.useMemo(function(){return{register:V,onPreview:ed}},[V,ed]);return r.createElement(h.Provider,{value:ep},E,r.createElement(L,(0,s.Z)({"aria-hidden":!ei,movable:R,visible:ei,prefixCls:void 0===b?"rc-image-preview":b,closeIcon:x,onClose:function(){eo(!1),eu(null)},mousePosition:ec,imgCommonProps:en,src:et,fallback:A,icons:void 0===T?{}:T,minScale:I,maxScale:O,getContainer:N,current:Z,count:j.length,countRender:w,onTransform:U,toolbarRender:B,imageRender:H,onChange:function(e,t){Y(e),null==F||F(e,t)}},G)))},B.displayName="Image";var H=n(33603),G=n(53124),z=n(88526),$=n(97937),j=n(6171),V=n(18073),W={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M672 418H144c-17.7 0-32 14.3-32 32v414c0 17.7 14.3 32 32 32h528c17.7 0 32-14.3 32-32V450c0-17.7-14.3-32-32-32zm-44 402H188V494h440v326z"}},{tag:"path",attrs:{d:"M819.3 328.5c-78.8-100.7-196-153.6-314.6-154.2l-.2-64c0-6.5-7.6-10.1-12.6-6.1l-128 101c-4 3.1-3.9 9.1 0 12.3L492 318.6c5.1 4 12.7.4 12.6-6.1v-63.9c12.9.1 25.9.9 38.8 2.5 42.1 5.2 82.1 18.2 119 38.7 38.1 21.2 71.2 49.7 98.4 84.3 27.1 34.7 46.7 73.7 58.1 115.8a325.95 325.95 0 016.5 140.9h74.9c14.8-103.6-11.3-213-81-302.3z"}}]},name:"rotate-left",theme:"outlined"},K=n(84089),Z=r.forwardRef(function(e,t){return r.createElement(K.Z,(0,s.Z)({},e,{ref:t,icon:W}))}),Y={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M480.5 251.2c13-1.6 25.9-2.4 38.8-2.5v63.9c0 6.5 7.5 10.1 12.6 6.1L660 217.6c4-3.2 4-9.2 0-12.3l-128-101c-5.1-4-12.6-.4-12.6 6.1l-.2 64c-118.6.5-235.8 53.4-314.6 154.2A399.75 399.75 0 00123.5 631h74.9c-.9-5.3-1.7-10.7-2.4-16.1-5.1-42.1-2.1-84.1 8.9-124.8 11.4-42.2 31-81.1 58.1-115.8 27.2-34.7 60.3-63.2 98.4-84.3 37-20.6 76.9-33.6 119.1-38.8z"}},{tag:"path",attrs:{d:"M880 418H352c-17.7 0-32 14.3-32 32v414c0 17.7 14.3 32 32 32h528c17.7 0 32-14.3 32-32V450c0-17.7-14.3-32-32-32zm-44 402H396V494h440v326z"}}]},name:"rotate-right",theme:"outlined"},q=r.forwardRef(function(e,t){return r.createElement(K.Z,(0,s.Z)({},e,{ref:t,icon:Y}))}),X={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M847.9 592H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h605.2L612.9 851c-4.1 5.2-.4 13 6.3 13h72.5c4.9 0 9.5-2.2 12.6-6.1l168.8-214.1c16.5-21 1.6-51.8-25.2-51.8zM872 356H266.8l144.3-183c4.1-5.2.4-13-6.3-13h-72.5c-4.9 0-9.5 2.2-12.6 6.1L150.9 380.2c-16.5 21-1.6 51.8 25.1 51.8h696c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z"}}]},name:"swap",theme:"outlined"},Q=r.forwardRef(function(e,t){return r.createElement(K.Z,(0,s.Z)({},e,{ref:t,icon:X}))}),J={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M637 443H519V309c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v134H325c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h118v134c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V519h118c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm284 424L775 721c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z"}}]},name:"zoom-in",theme:"outlined"},ee=r.forwardRef(function(e,t){return r.createElement(K.Z,(0,s.Z)({},e,{ref:t,icon:J}))}),et={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M637 443H325c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h312c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm284 424L775 721c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z"}}]},name:"zoom-out",theme:"outlined"},en=r.forwardRef(function(e,t){return r.createElement(K.Z,(0,s.Z)({},e,{ref:t,icon:et}))}),er=n(10274),ea=n(71194),ei=n(14747),eo=n(50438),es=n(16932),el=n(67968),ec=n(45503);let eu=e=>({position:e||"absolute",inset:0}),ed=e=>{let{iconCls:t,motionDurationSlow:n,paddingXXS:r,marginXXS:a,prefixCls:i,colorTextLightSolid:o}=e;return{position:"absolute",inset:0,display:"flex",alignItems:"center",justifyContent:"center",color:o,background:new er.C("#000").setAlpha(.5).toRgbString(),cursor:"pointer",opacity:0,transition:`opacity ${n}`,[`.${i}-mask-info`]:Object.assign(Object.assign({},ei.vS),{padding:`0 ${r}px`,[t]:{marginInlineEnd:a,svg:{verticalAlign:"baseline"}}})}},ep=e=>{let{previewCls:t,modalMaskBg:n,paddingSM:r,marginXL:a,margin:i,paddingLG:o,previewOperationColorDisabled:s,previewOperationHoverColor:l,motionDurationSlow:c,iconCls:u,colorTextLightSolid:d}=e,p=new er.C(n).setAlpha(.1),m=p.clone().setAlpha(.2);return{[`${t}-footer`]:{position:"fixed",bottom:a,left:{_skip_check_:!0,value:0},width:"100%",display:"flex",flexDirection:"column",alignItems:"center",color:e.previewOperationColor},[`${t}-progress`]:{marginBottom:i},[`${t}-close`]:{position:"fixed",top:a,right:{_skip_check_:!0,value:a},display:"flex",color:d,backgroundColor:p.toRgbString(),borderRadius:"50%",padding:r,outline:0,border:0,cursor:"pointer",transition:`all ${c}`,"&:hover":{backgroundColor:m.toRgbString()},[`& > ${u}`]:{fontSize:e.previewOperationSize}},[`${t}-operations`]:{display:"flex",alignItems:"center",padding:`0 ${o}px`,backgroundColor:p.toRgbString(),borderRadius:100,"&-operation":{marginInlineStart:r,padding:r,cursor:"pointer",transition:`all ${c}`,userSelect:"none",[`&:not(${t}-operations-operation-disabled):hover > ${u}`]:{color:l},"&-disabled":{color:s,cursor:"not-allowed"},"&:first-of-type":{marginInlineStart:0},[`& > ${u}`]:{fontSize:e.previewOperationSize}}}}},em=e=>{let{modalMaskBg:t,iconCls:n,previewOperationColorDisabled:r,previewCls:a,zIndexPopup:i,motionDurationSlow:o}=e,s=new er.C(t).setAlpha(.1),l=s.clone().setAlpha(.2);return{[`${a}-switch-left, ${a}-switch-right`]:{position:"fixed",insetBlockStart:"50%",zIndex:i+1,display:"flex",alignItems:"center",justifyContent:"center",width:e.imagePreviewSwitchSize,height:e.imagePreviewSwitchSize,marginTop:-e.imagePreviewSwitchSize/2,color:e.previewOperationColor,background:s.toRgbString(),borderRadius:"50%",transform:"translateY(-50%)",cursor:"pointer",transition:`all ${o}`,userSelect:"none","&:hover":{background:l.toRgbString()},"&-disabled":{"&, &:hover":{color:r,background:"transparent",cursor:"not-allowed",[`> ${n}`]:{cursor:"not-allowed"}}},[`> ${n}`]:{fontSize:e.previewOperationSize}},[`${a}-switch-left`]:{insetInlineStart:e.marginSM},[`${a}-switch-right`]:{insetInlineEnd:e.marginSM}}},eg=e=>{let{motionEaseOut:t,previewCls:n,motionDurationSlow:r,componentCls:a}=e;return[{[`${a}-preview-root`]:{[n]:{height:"100%",textAlign:"center",pointerEvents:"none"},[`${n}-body`]:Object.assign(Object.assign({},eu()),{overflow:"hidden"}),[`${n}-img`]:{maxWidth:"100%",maxHeight:"70%",verticalAlign:"middle",transform:"scale3d(1, 1, 1)",cursor:"grab",transition:`transform ${r} ${t} 0s`,userSelect:"none","&-wrapper":Object.assign(Object.assign({},eu()),{transition:`transform ${r} ${t} 0s`,display:"flex",justifyContent:"center",alignItems:"center","& > *":{pointerEvents:"auto"},"&::before":{display:"inline-block",width:1,height:"50%",marginInlineEnd:-1,content:'""'}})},[`${n}-moving`]:{[`${n}-preview-img`]:{cursor:"grabbing","&-wrapper":{transitionDuration:"0s"}}}}},{[`${a}-preview-root`]:{[`${n}-wrap`]:{zIndex:e.zIndexPopup}}},{[`${a}-preview-operations-wrapper`]:{position:"fixed",zIndex:e.zIndexPopup+1},"&":[ep(e),em(e)]}]},ef=e=>{let{componentCls:t}=e;return{[t]:{position:"relative",display:"inline-block",[`${t}-img`]:{width:"100%",height:"auto",verticalAlign:"middle"},[`${t}-img-placeholder`]:{backgroundColor:e.colorBgContainerDisabled,backgroundImage:"url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTQuNSAyLjVoLTEzQS41LjUgMCAwIDAgMSAzdjEwYS41LjUgMCAwIDAgLjUuNWgxM2EuNS41IDAgMCAwIC41LS41VjNhLjUuNSAwIDAgMC0uNS0uNXpNNS4yODEgNC43NWExIDEgMCAwIDEgMCAyIDEgMSAwIDAgMSAwLTJ6bTguMDMgNi44M2EuMTI3LjEyNyAwIDAgMS0uMDgxLjAzSDIuNzY5YS4xMjUuMTI1IDAgMCAxLS4wOTYtLjIwN2wyLjY2MS0zLjE1NmEuMTI2LjEyNiAwIDAgMSAuMTc3LS4wMTZsLjAxNi4wMTZMNy4wOCAxMC4wOWwyLjQ3LTIuOTNhLjEyNi4xMjYgMCAwIDEgLjE3Ny0uMDE2bC4wMTUuMDE2IDMuNTg4IDQuMjQ0YS4xMjcuMTI3IDAgMCAxLS4wMi4xNzV6IiBmaWxsPSIjOEM4QzhDIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4=')",backgroundRepeat:"no-repeat",backgroundPosition:"center center",backgroundSize:"30%"},[`${t}-mask`]:Object.assign({},ed(e)),[`${t}-mask:hover`]:{opacity:1},[`${t}-placeholder`]:Object.assign({},eu())}}},eh=e=>{let{previewCls:t}=e;return{[`${t}-root`]:(0,eo._y)(e,"zoom"),"&":(0,es.J$)(e,!0)}};var eb=(0,el.Z)("Image",e=>{let t=`${e.componentCls}-preview`,n=(0,ec.TS)(e,{previewCls:t,modalMaskBg:new er.C("#000").setAlpha(.45).toRgbString(),imagePreviewSwitchSize:e.controlHeightLG});return[ef(n),eg(n),(0,ea.Q)((0,ec.TS)(n,{componentCls:t})),eh(n)]},e=>({zIndexPopup:e.zIndexPopupBase+80,previewOperationColor:new er.C(e.colorTextLightSolid).setAlpha(.65).toRgbString(),previewOperationHoverColor:new er.C(e.colorTextLightSolid).setAlpha(.85).toRgbString(),previewOperationColorDisabled:new er.C(e.colorTextLightSolid).setAlpha(.25).toRgbString(),previewOperationSize:1.5*e.fontSizeIcon})),eE=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var a=0,r=Object.getOwnPropertySymbols(e);at.indexOf(r[a])&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]]);return n};let eT={rotateLeft:r.createElement(Z,null),rotateRight:r.createElement(q,null),zoomIn:r.createElement(ee,null),zoomOut:r.createElement(en,null),close:r.createElement($.Z,null),left:r.createElement(j.Z,null),right:r.createElement(V.Z,null),flipX:r.createElement(Q,null),flipY:r.createElement(Q,{rotate:90})};var eS=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var a=0,r=Object.getOwnPropertySymbols(e);at.indexOf(r[a])&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]]);return n};let ey=e=>{let{prefixCls:t,preview:n,className:i,rootClassName:s,style:l}=e,c=eS(e,["prefixCls","preview","className","rootClassName","style"]),{getPrefixCls:u,locale:d=z.Z,getPopupContainer:p,image:m}=r.useContext(G.E_),g=u("image",t),f=u(),h=d.Image||z.Z.Image,[b,E]=eb(g),T=o()(s,E),S=o()(i,E,null==m?void 0:m.className),y=r.useMemo(()=>{if(!1===n)return n;let e="object"==typeof n?n:{},{getContainer:t}=e,i=eS(e,["getContainer"]);return Object.assign(Object.assign({mask:r.createElement("div",{className:`${g}-mask-info`},r.createElement(a.Z,null),null==h?void 0:h.preview),icons:eT},i),{getContainer:t||p,transitionName:(0,H.m)(f,"zoom",e.transitionName),maskTransitionName:(0,H.m)(f,"fade",e.maskTransitionName)})},[n,h]),A=Object.assign(Object.assign({},null==m?void 0:m.style),l);return b(r.createElement(B,Object.assign({prefixCls:g,preview:y,rootClassName:T,className:S,style:A},c)))};ey.PreviewGroup=e=>{var{previewPrefixCls:t,preview:n}=e,a=eE(e,["previewPrefixCls","preview"]);let{getPrefixCls:i}=r.useContext(G.E_),s=i("image",t),l=`${s}-preview`,c=i(),[u,d]=eb(s),p=r.useMemo(()=>{var e;if(!1===n)return n;let t="object"==typeof n?n:{},r=o()(d,null!==(e=t.rootClassName)&&void 0!==e?e:"");return Object.assign(Object.assign({},t),{transitionName:(0,H.m)(c,"zoom",t.transitionName),maskTransitionName:(0,H.m)(c,"fade",t.maskTransitionName),rootClassName:r})},[n]);return u(r.createElement(B.PreviewGroup,Object.assign({preview:p,previewPrefixCls:l,icons:eT},a)))};var eA=ey},56851:function(e,t){"use strict";t.Q=function(e){for(var t,n=[],r=String(e||""),a=r.indexOf(","),i=0,o=!1;!o;)-1===a&&(a=r.length,o=!0),((t=r.slice(i,a).trim())||!o)&&n.push(t),i=a+1,a=r.indexOf(",",i);return n}},94470:function(e){"use strict";var t=Object.prototype.hasOwnProperty,n=Object.prototype.toString,r=Object.defineProperty,a=Object.getOwnPropertyDescriptor,i=function(e){return"function"==typeof Array.isArray?Array.isArray(e):"[object Array]"===n.call(e)},o=function(e){if(!e||"[object Object]"!==n.call(e))return!1;var r,a=t.call(e,"constructor"),i=e.constructor&&e.constructor.prototype&&t.call(e.constructor.prototype,"isPrototypeOf");if(e.constructor&&!a&&!i)return!1;for(r in e);return void 0===r||t.call(e,r)},s=function(e,t){r&&"__proto__"===t.name?r(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},l=function(e,n){if("__proto__"===n){if(!t.call(e,n))return;if(a)return a(e,n).value}return e[n]};e.exports=function e(){var t,n,r,a,c,u,d=arguments[0],p=1,m=arguments.length,g=!1;for("boolean"==typeof d&&(g=d,d=arguments[1]||{},p=2),(null==d||"object"!=typeof d&&"function"!=typeof d)&&(d={});p=97&&t<=122||t>=65&&t<=90}},7961:function(e,t,n){"use strict";var r=n(46260),a=n(46195);e.exports=function(e){return r(e)||a(e)}},46195:function(e){"use strict";e.exports=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=48&&t<=57}},79480:function(e){"use strict";e.exports=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=97&&t<=102||t>=65&&t<=70||t>=48&&t<=57}},89435:function(e){"use strict";var t;e.exports=function(e){var n,r="&"+e+";";return(t=t||document.createElement("i")).innerHTML=r,(59!==(n=t.textContent).charCodeAt(n.length-1)||"semi"===e)&&n!==r&&n}},57574:function(e,t,n){"use strict";var r=n(37452),a=n(93580),i=n(46195),o=n(79480),s=n(7961),l=n(89435);e.exports=function(e,t){var n,i,o={};for(i in t||(t={}),p)n=t[i],o[i]=null==n?p[i]:n;return(o.position.indent||o.position.start)&&(o.indent=o.position.indent||[],o.position=o.position.start),function(e,t){var n,i,o,p,T,S,y,A,_,k,v,N,C,R,I,O,w,x,L,D,P,M=t.additional,F=t.nonTerminated,U=t.text,B=t.reference,H=t.warning,G=t.textContext,z=t.referenceContext,$=t.warningContext,j=t.position,V=t.indent||[],W=e.length,K=0,Z=-1,Y=j.column||1,q=j.line||1,X="",Q=[];for("string"==typeof M&&(M=M.charCodeAt(0)),x=J(),k=H?function(e,t){var n=J();n.column+=t,n.offset+=t,H.call($,E[e],n,e)}:d,K--,W++;++K=55296&&n<=57343||n>1114111?(k(7,D),A=u(65533)):A in a?(k(6,D),A=a[A]):(N="",((i=A)>=1&&i<=8||11===i||i>=13&&i<=31||i>=127&&i<=159||i>=64976&&i<=65007||(65535&i)==65535||(65535&i)==65534)&&k(6,D),A>65535&&(A-=65536,N+=u(A>>>10|55296),A=56320|1023&A),A=N+u(A))):O!==m&&k(4,D)),A?(ee(),x=J(),K=P-1,Y+=P-I+1,Q.push(A),L=J(),L.offset++,B&&B.call(z,A,{start:x,end:L},e.slice(I-1,P)),x=L):(X+=S=e.slice(I-1,P),Y+=S.length,K=P-1)}else 10===y&&(q++,Z++,Y=0),y==y?(X+=u(y),Y++):ee();return Q.join("");function J(){return{line:q,column:Y,offset:K+(j.offset||0)}}function ee(){X&&(Q.push(X),U&&U.call(G,X,{start:x,end:J()}),X="")}}(e,o)};var c={}.hasOwnProperty,u=String.fromCharCode,d=Function.prototype,p={warning:null,reference:null,text:null,warningContext:null,referenceContext:null,textContext:null,position:{},additional:null,attribute:!1,nonTerminated:!0},m="named",g="hexadecimal",f="decimal",h={};h[g]=16,h[f]=10;var b={};b[m]=s,b[f]=i,b[g]=o;var E={};E[1]="Named character references must be terminated by a semicolon",E[2]="Numeric character references must be terminated by a semicolon",E[3]="Named character references cannot be empty",E[4]="Numeric character references cannot be empty",E[5]="Named character references must be known",E[6]="Numeric character references cannot be disallowed",E[7]="Numeric character references cannot be outside the permissible Unicode range"},31515:function(e,t,n){"use strict";let{DOCUMENT_MODE:r}=n(16152),a="html",i=["+//silmaril//dtd html pro v0r11 19970101//","-//as//dtd html 3.0 aswedit + extensions//","-//advasoft ltd//dtd html 3.0 aswedit + extensions//","-//ietf//dtd html 2.0 level 1//","-//ietf//dtd html 2.0 level 2//","-//ietf//dtd html 2.0 strict level 1//","-//ietf//dtd html 2.0 strict level 2//","-//ietf//dtd html 2.0 strict//","-//ietf//dtd html 2.0//","-//ietf//dtd html 2.1e//","-//ietf//dtd html 3.0//","-//ietf//dtd html 3.2 final//","-//ietf//dtd html 3.2//","-//ietf//dtd html 3//","-//ietf//dtd html level 0//","-//ietf//dtd html level 1//","-//ietf//dtd html level 2//","-//ietf//dtd html level 3//","-//ietf//dtd html strict level 0//","-//ietf//dtd html strict level 1//","-//ietf//dtd html strict level 2//","-//ietf//dtd html strict level 3//","-//ietf//dtd html strict//","-//ietf//dtd html//","-//metrius//dtd metrius presentational//","-//microsoft//dtd internet explorer 2.0 html strict//","-//microsoft//dtd internet explorer 2.0 html//","-//microsoft//dtd internet explorer 2.0 tables//","-//microsoft//dtd internet explorer 3.0 html strict//","-//microsoft//dtd internet explorer 3.0 html//","-//microsoft//dtd internet explorer 3.0 tables//","-//netscape comm. corp.//dtd html//","-//netscape comm. corp.//dtd strict html//","-//o'reilly and associates//dtd html 2.0//","-//o'reilly and associates//dtd html extended 1.0//","-//o'reilly and associates//dtd html extended relaxed 1.0//","-//sq//dtd html 2.0 hotmetal + extensions//","-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//","-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//","-//spyglass//dtd html 2.0 extended//","-//sun microsystems corp.//dtd hotjava html//","-//sun microsystems corp.//dtd hotjava strict html//","-//w3c//dtd html 3 1995-03-24//","-//w3c//dtd html 3.2 draft//","-//w3c//dtd html 3.2 final//","-//w3c//dtd html 3.2//","-//w3c//dtd html 3.2s draft//","-//w3c//dtd html 4.0 frameset//","-//w3c//dtd html 4.0 transitional//","-//w3c//dtd html experimental 19960712//","-//w3c//dtd html experimental 970421//","-//w3c//dtd w3 html//","-//w3o//dtd w3 html 3.0//","-//webtechs//dtd mozilla html 2.0//","-//webtechs//dtd mozilla html//"],o=i.concat(["-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"]),s=["-//w3o//dtd w3 html strict 3.0//en//","-/w3c/dtd html 4.0 transitional/en","html"],l=["-//w3c//dtd xhtml 1.0 frameset//","-//w3c//dtd xhtml 1.0 transitional//"],c=l.concat(["-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"]);function u(e){let t=-1!==e.indexOf('"')?"'":'"';return t+e+t}function d(e,t){for(let n=0;n-1)return r.QUIRKS;let e=null===t?o:i;if(d(n,e))return r.QUIRKS;if(d(n,e=null===t?l:c))return r.LIMITED_QUIRKS}return r.NO_QUIRKS},t.serializeContent=function(e,t,n){let r="!DOCTYPE ";return e&&(r+=e),t?r+=" PUBLIC "+u(t):n&&(r+=" SYSTEM"),null!==n&&(r+=" "+u(n)),r}},41734:function(e){"use strict";e.exports={controlCharacterInInputStream:"control-character-in-input-stream",noncharacterInInputStream:"noncharacter-in-input-stream",surrogateInInputStream:"surrogate-in-input-stream",nonVoidHtmlElementStartTagWithTrailingSolidus:"non-void-html-element-start-tag-with-trailing-solidus",endTagWithAttributes:"end-tag-with-attributes",endTagWithTrailingSolidus:"end-tag-with-trailing-solidus",unexpectedSolidusInTag:"unexpected-solidus-in-tag",unexpectedNullCharacter:"unexpected-null-character",unexpectedQuestionMarkInsteadOfTagName:"unexpected-question-mark-instead-of-tag-name",invalidFirstCharacterOfTagName:"invalid-first-character-of-tag-name",unexpectedEqualsSignBeforeAttributeName:"unexpected-equals-sign-before-attribute-name",missingEndTagName:"missing-end-tag-name",unexpectedCharacterInAttributeName:"unexpected-character-in-attribute-name",unknownNamedCharacterReference:"unknown-named-character-reference",missingSemicolonAfterCharacterReference:"missing-semicolon-after-character-reference",unexpectedCharacterAfterDoctypeSystemIdentifier:"unexpected-character-after-doctype-system-identifier",unexpectedCharacterInUnquotedAttributeValue:"unexpected-character-in-unquoted-attribute-value",eofBeforeTagName:"eof-before-tag-name",eofInTag:"eof-in-tag",missingAttributeValue:"missing-attribute-value",missingWhitespaceBetweenAttributes:"missing-whitespace-between-attributes",missingWhitespaceAfterDoctypePublicKeyword:"missing-whitespace-after-doctype-public-keyword",missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers:"missing-whitespace-between-doctype-public-and-system-identifiers",missingWhitespaceAfterDoctypeSystemKeyword:"missing-whitespace-after-doctype-system-keyword",missingQuoteBeforeDoctypePublicIdentifier:"missing-quote-before-doctype-public-identifier",missingQuoteBeforeDoctypeSystemIdentifier:"missing-quote-before-doctype-system-identifier",missingDoctypePublicIdentifier:"missing-doctype-public-identifier",missingDoctypeSystemIdentifier:"missing-doctype-system-identifier",abruptDoctypePublicIdentifier:"abrupt-doctype-public-identifier",abruptDoctypeSystemIdentifier:"abrupt-doctype-system-identifier",cdataInHtmlContent:"cdata-in-html-content",incorrectlyOpenedComment:"incorrectly-opened-comment",eofInScriptHtmlCommentLikeText:"eof-in-script-html-comment-like-text",eofInDoctype:"eof-in-doctype",nestedComment:"nested-comment",abruptClosingOfEmptyComment:"abrupt-closing-of-empty-comment",eofInComment:"eof-in-comment",incorrectlyClosedComment:"incorrectly-closed-comment",eofInCdata:"eof-in-cdata",absenceOfDigitsInNumericCharacterReference:"absence-of-digits-in-numeric-character-reference",nullCharacterReference:"null-character-reference",surrogateCharacterReference:"surrogate-character-reference",characterReferenceOutsideUnicodeRange:"character-reference-outside-unicode-range",controlCharacterReference:"control-character-reference",noncharacterCharacterReference:"noncharacter-character-reference",missingWhitespaceBeforeDoctypeName:"missing-whitespace-before-doctype-name",missingDoctypeName:"missing-doctype-name",invalidCharacterSequenceAfterDoctypeName:"invalid-character-sequence-after-doctype-name",duplicateAttribute:"duplicate-attribute",nonConformingDoctype:"non-conforming-doctype",missingDoctype:"missing-doctype",misplacedDoctype:"misplaced-doctype",endTagWithoutMatchingOpenElement:"end-tag-without-matching-open-element",closingOfElementWithOpenChildElements:"closing-of-element-with-open-child-elements",disallowedContentInNoscriptInHead:"disallowed-content-in-noscript-in-head",openElementsLeftAfterEof:"open-elements-left-after-eof",abandonedHeadElementChild:"abandoned-head-element-child",misplacedStartTagForHeadElement:"misplaced-start-tag-for-head-element",nestedNoscriptInHead:"nested-noscript-in-head",eofInElementThatCanContainOnlyText:"eof-in-element-that-can-contain-only-text"}},88779:function(e,t,n){"use strict";let r=n(55763),a=n(16152),i=a.TAG_NAMES,o=a.NAMESPACES,s=a.ATTRS,l={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},c={attributename:"attributeName",attributetype:"attributeType",basefrequency:"baseFrequency",baseprofile:"baseProfile",calcmode:"calcMode",clippathunits:"clipPathUnits",diffuseconstant:"diffuseConstant",edgemode:"edgeMode",filterunits:"filterUnits",glyphref:"glyphRef",gradienttransform:"gradientTransform",gradientunits:"gradientUnits",kernelmatrix:"kernelMatrix",kernelunitlength:"kernelUnitLength",keypoints:"keyPoints",keysplines:"keySplines",keytimes:"keyTimes",lengthadjust:"lengthAdjust",limitingconeangle:"limitingConeAngle",markerheight:"markerHeight",markerunits:"markerUnits",markerwidth:"markerWidth",maskcontentunits:"maskContentUnits",maskunits:"maskUnits",numoctaves:"numOctaves",pathlength:"pathLength",patterncontentunits:"patternContentUnits",patterntransform:"patternTransform",patternunits:"patternUnits",pointsatx:"pointsAtX",pointsaty:"pointsAtY",pointsatz:"pointsAtZ",preservealpha:"preserveAlpha",preserveaspectratio:"preserveAspectRatio",primitiveunits:"primitiveUnits",refx:"refX",refy:"refY",repeatcount:"repeatCount",repeatdur:"repeatDur",requiredextensions:"requiredExtensions",requiredfeatures:"requiredFeatures",specularconstant:"specularConstant",specularexponent:"specularExponent",spreadmethod:"spreadMethod",startoffset:"startOffset",stddeviation:"stdDeviation",stitchtiles:"stitchTiles",surfacescale:"surfaceScale",systemlanguage:"systemLanguage",tablevalues:"tableValues",targetx:"targetX",targety:"targetY",textlength:"textLength",viewbox:"viewBox",viewtarget:"viewTarget",xchannelselector:"xChannelSelector",ychannelselector:"yChannelSelector",zoomandpan:"zoomAndPan"},u={"xlink:actuate":{prefix:"xlink",name:"actuate",namespace:o.XLINK},"xlink:arcrole":{prefix:"xlink",name:"arcrole",namespace:o.XLINK},"xlink:href":{prefix:"xlink",name:"href",namespace:o.XLINK},"xlink:role":{prefix:"xlink",name:"role",namespace:o.XLINK},"xlink:show":{prefix:"xlink",name:"show",namespace:o.XLINK},"xlink:title":{prefix:"xlink",name:"title",namespace:o.XLINK},"xlink:type":{prefix:"xlink",name:"type",namespace:o.XLINK},"xml:base":{prefix:"xml",name:"base",namespace:o.XML},"xml:lang":{prefix:"xml",name:"lang",namespace:o.XML},"xml:space":{prefix:"xml",name:"space",namespace:o.XML},xmlns:{prefix:"",name:"xmlns",namespace:o.XMLNS},"xmlns:xlink":{prefix:"xmlns",name:"xlink",namespace:o.XMLNS}},d=t.SVG_TAG_NAMES_ADJUSTMENT_MAP={altglyph:"altGlyph",altglyphdef:"altGlyphDef",altglyphitem:"altGlyphItem",animatecolor:"animateColor",animatemotion:"animateMotion",animatetransform:"animateTransform",clippath:"clipPath",feblend:"feBlend",fecolormatrix:"feColorMatrix",fecomponenttransfer:"feComponentTransfer",fecomposite:"feComposite",feconvolvematrix:"feConvolveMatrix",fediffuselighting:"feDiffuseLighting",fedisplacementmap:"feDisplacementMap",fedistantlight:"feDistantLight",feflood:"feFlood",fefunca:"feFuncA",fefuncb:"feFuncB",fefuncg:"feFuncG",fefuncr:"feFuncR",fegaussianblur:"feGaussianBlur",feimage:"feImage",femerge:"feMerge",femergenode:"feMergeNode",femorphology:"feMorphology",feoffset:"feOffset",fepointlight:"fePointLight",fespecularlighting:"feSpecularLighting",fespotlight:"feSpotLight",fetile:"feTile",feturbulence:"feTurbulence",foreignobject:"foreignObject",glyphref:"glyphRef",lineargradient:"linearGradient",radialgradient:"radialGradient",textpath:"textPath"},p={[i.B]:!0,[i.BIG]:!0,[i.BLOCKQUOTE]:!0,[i.BODY]:!0,[i.BR]:!0,[i.CENTER]:!0,[i.CODE]:!0,[i.DD]:!0,[i.DIV]:!0,[i.DL]:!0,[i.DT]:!0,[i.EM]:!0,[i.EMBED]:!0,[i.H1]:!0,[i.H2]:!0,[i.H3]:!0,[i.H4]:!0,[i.H5]:!0,[i.H6]:!0,[i.HEAD]:!0,[i.HR]:!0,[i.I]:!0,[i.IMG]:!0,[i.LI]:!0,[i.LISTING]:!0,[i.MENU]:!0,[i.META]:!0,[i.NOBR]:!0,[i.OL]:!0,[i.P]:!0,[i.PRE]:!0,[i.RUBY]:!0,[i.S]:!0,[i.SMALL]:!0,[i.SPAN]:!0,[i.STRONG]:!0,[i.STRIKE]:!0,[i.SUB]:!0,[i.SUP]:!0,[i.TABLE]:!0,[i.TT]:!0,[i.U]:!0,[i.UL]:!0,[i.VAR]:!0};t.causesExit=function(e){let t=e.tagName,n=t===i.FONT&&(null!==r.getTokenAttr(e,s.COLOR)||null!==r.getTokenAttr(e,s.SIZE)||null!==r.getTokenAttr(e,s.FACE));return!!n||p[t]},t.adjustTokenMathMLAttrs=function(e){for(let t=0;t=55296&&e<=57343},t.isSurrogatePair=function(e){return e>=56320&&e<=57343},t.getSurrogatePairCodePoint=function(e,t){return(e-55296)*1024+9216+t},t.isControlCodePoint=function(e){return 32!==e&&10!==e&&13!==e&&9!==e&&12!==e&&e>=1&&e<=31||e>=127&&e<=159},t.isUndefinedCodePoint=function(e){return e>=64976&&e<=65007||n.indexOf(e)>-1}},23843:function(e,t,n){"use strict";let r=n(81704);e.exports=class extends r{constructor(e,t){super(e),this.posTracker=null,this.onParseError=t.onParseError}_setErrorLocation(e){e.startLine=e.endLine=this.posTracker.line,e.startCol=e.endCol=this.posTracker.col,e.startOffset=e.endOffset=this.posTracker.offset}_reportError(e){let t={code:e,startLine:-1,startCol:-1,startOffset:-1,endLine:-1,endCol:-1,endOffset:-1};this._setErrorLocation(t),this.onParseError(t)}_getOverriddenMethods(e){return{_err(t){e._reportError(t)}}}}},22232:function(e,t,n){"use strict";let r=n(23843),a=n(70050),i=n(46110),o=n(81704);e.exports=class extends r{constructor(e,t){super(e,t),this.opts=t,this.ctLoc=null,this.locBeforeToken=!1}_setErrorLocation(e){this.ctLoc&&(e.startLine=this.ctLoc.startLine,e.startCol=this.ctLoc.startCol,e.startOffset=this.ctLoc.startOffset,e.endLine=this.locBeforeToken?this.ctLoc.startLine:this.ctLoc.endLine,e.endCol=this.locBeforeToken?this.ctLoc.startCol:this.ctLoc.endCol,e.endOffset=this.locBeforeToken?this.ctLoc.startOffset:this.ctLoc.endOffset)}_getOverriddenMethods(e,t){return{_bootstrap(n,r){t._bootstrap.call(this,n,r),o.install(this.tokenizer,a,e.opts),o.install(this.tokenizer,i)},_processInputToken(n){e.ctLoc=n.location,t._processInputToken.call(this,n)},_err(t,n){e.locBeforeToken=n&&n.beforeToken,e._reportError(t)}}}}},23288:function(e,t,n){"use strict";let r=n(23843),a=n(57930),i=n(81704);e.exports=class extends r{constructor(e,t){super(e,t),this.posTracker=i.install(e,a),this.lastErrOffset=-1}_reportError(e){this.lastErrOffset!==this.posTracker.offset&&(this.lastErrOffset=this.posTracker.offset,super._reportError(e))}}},70050:function(e,t,n){"use strict";let r=n(23843),a=n(23288),i=n(81704);e.exports=class extends r{constructor(e,t){super(e,t);let n=i.install(e.preprocessor,a,t);this.posTracker=n.posTracker}}},11077:function(e,t,n){"use strict";let r=n(81704);e.exports=class extends r{constructor(e,t){super(e),this.onItemPop=t.onItemPop}_getOverriddenMethods(e,t){return{pop(){e.onItemPop(this.current),t.pop.call(this)},popAllUpToHtmlElement(){for(let t=this.stackTop;t>0;t--)e.onItemPop(this.items[t]);t.popAllUpToHtmlElement.call(this)},remove(n){e.onItemPop(this.current),t.remove.call(this,n)}}}}},452:function(e,t,n){"use strict";let r=n(81704),a=n(55763),i=n(46110),o=n(11077),s=n(16152),l=s.TAG_NAMES;e.exports=class extends r{constructor(e){super(e),this.parser=e,this.treeAdapter=this.parser.treeAdapter,this.posTracker=null,this.lastStartTagToken=null,this.lastFosterParentingLocation=null,this.currentToken=null}_setStartLocation(e){let t=null;this.lastStartTagToken&&((t=Object.assign({},this.lastStartTagToken.location)).startTag=this.lastStartTagToken.location),this.treeAdapter.setNodeSourceCodeLocation(e,t)}_setEndLocation(e,t){let n=this.treeAdapter.getNodeSourceCodeLocation(e);if(n&&t.location){let n=t.location,r=this.treeAdapter.getTagName(e),i=t.type===a.END_TAG_TOKEN&&r===t.tagName,o={};i?(o.endTag=Object.assign({},n),o.endLine=n.endLine,o.endCol=n.endCol,o.endOffset=n.endOffset):(o.endLine=n.startLine,o.endCol=n.startCol,o.endOffset=n.startOffset),this.treeAdapter.updateNodeSourceCodeLocation(e,o)}}_getOverriddenMethods(e,t){return{_bootstrap(n,a){t._bootstrap.call(this,n,a),e.lastStartTagToken=null,e.lastFosterParentingLocation=null,e.currentToken=null;let s=r.install(this.tokenizer,i);e.posTracker=s.posTracker,r.install(this.openElements,o,{onItemPop:function(t){e._setEndLocation(t,e.currentToken)}})},_runParsingLoop(n){t._runParsingLoop.call(this,n);for(let t=this.openElements.stackTop;t>=0;t--)e._setEndLocation(this.openElements.items[t],e.currentToken)},_processTokenInForeignContent(n){e.currentToken=n,t._processTokenInForeignContent.call(this,n)},_processToken(n){e.currentToken=n,t._processToken.call(this,n);let r=n.type===a.END_TAG_TOKEN&&(n.tagName===l.HTML||n.tagName===l.BODY&&this.openElements.hasInScope(l.BODY));if(r)for(let t=this.openElements.stackTop;t>=0;t--){let r=this.openElements.items[t];if(this.treeAdapter.getTagName(r)===n.tagName){e._setEndLocation(r,n);break}}},_setDocumentType(e){t._setDocumentType.call(this,e);let n=this.treeAdapter.getChildNodes(this.document),r=n.length;for(let t=0;t{let i=a.MODE[r];n[i]=function(n){e.ctLoc=e._getCurrentLocation(),t[i].call(this,n)}}),n}}},57930:function(e,t,n){"use strict";let r=n(81704);e.exports=class extends r{constructor(e){super(e),this.preprocessor=e,this.isEol=!1,this.lineStartPos=0,this.droppedBufferSize=0,this.offset=0,this.col=0,this.line=1}_getOverriddenMethods(e,t){return{advance(){let n=this.pos+1,r=this.html[n];return e.isEol&&(e.isEol=!1,e.line++,e.lineStartPos=n),("\n"===r||"\r"===r&&"\n"!==this.html[n+1])&&(e.isEol=!0),e.col=n-e.lineStartPos+1,e.offset=e.droppedBufferSize+n,t.advance.call(this)},retreat(){t.retreat.call(this),e.isEol=!1,e.col=this.pos-e.lineStartPos+1},dropParsedChunk(){let n=this.pos;t.dropParsedChunk.call(this);let r=n-this.pos;e.lineStartPos-=r,e.droppedBufferSize+=r,e.offset=e.droppedBufferSize+this.pos}}}}},12484:function(e){"use strict";class t{constructor(e){this.length=0,this.entries=[],this.treeAdapter=e,this.bookmark=null}_getNoahArkConditionCandidates(e){let n=[];if(this.length>=3){let r=this.treeAdapter.getAttrList(e).length,a=this.treeAdapter.getTagName(e),i=this.treeAdapter.getNamespaceURI(e);for(let e=this.length-1;e>=0;e--){let o=this.entries[e];if(o.type===t.MARKER_ENTRY)break;let s=o.element,l=this.treeAdapter.getAttrList(s),c=this.treeAdapter.getTagName(s)===a&&this.treeAdapter.getNamespaceURI(s)===i&&l.length===r;c&&n.push({idx:e,attrs:l})}}return n.length<3?[]:n}_ensureNoahArkCondition(e){let t=this._getNoahArkConditionCandidates(e),n=t.length;if(n){let r=this.treeAdapter.getAttrList(e),a=r.length,i=Object.create(null);for(let e=0;e=2;e--)this.entries.splice(t[e].idx,1),this.length--}}insertMarker(){this.entries.push({type:t.MARKER_ENTRY}),this.length++}pushElement(e,n){this._ensureNoahArkCondition(e),this.entries.push({type:t.ELEMENT_ENTRY,element:e,token:n}),this.length++}insertElementAfterBookmark(e,n){let r=this.length-1;for(;r>=0&&this.entries[r]!==this.bookmark;r--);this.entries.splice(r+1,0,{type:t.ELEMENT_ENTRY,element:e,token:n}),this.length++}removeEntry(e){for(let t=this.length-1;t>=0;t--)if(this.entries[t]===e){this.entries.splice(t,1),this.length--;break}}clearToLastMarker(){for(;this.length;){let e=this.entries.pop();if(this.length--,e.type===t.MARKER_ENTRY)break}}getElementEntryInScopeWithTagName(e){for(let n=this.length-1;n>=0;n--){let r=this.entries[n];if(r.type===t.MARKER_ENTRY)break;if(this.treeAdapter.getTagName(r.element)===e)return r}return null}getElementEntry(e){for(let n=this.length-1;n>=0;n--){let r=this.entries[n];if(r.type===t.ELEMENT_ENTRY&&r.element===e)return r}return null}}t.MARKER_ENTRY="MARKER_ENTRY",t.ELEMENT_ENTRY="ELEMENT_ENTRY",e.exports=t},7045:function(e,t,n){"use strict";let r=n(55763),a=n(46519),i=n(12484),o=n(452),s=n(22232),l=n(81704),c=n(17296),u=n(8904),d=n(31515),p=n(88779),m=n(41734),g=n(54284),f=n(16152),h=f.TAG_NAMES,b=f.NAMESPACES,E=f.ATTRS,T={scriptingEnabled:!0,sourceCodeLocationInfo:!1,onParseError:null,treeAdapter:c},S="hidden",y="INITIAL_MODE",A="BEFORE_HTML_MODE",_="BEFORE_HEAD_MODE",k="IN_HEAD_MODE",v="IN_HEAD_NO_SCRIPT_MODE",N="AFTER_HEAD_MODE",C="IN_BODY_MODE",R="TEXT_MODE",I="IN_TABLE_MODE",O="IN_TABLE_TEXT_MODE",w="IN_CAPTION_MODE",x="IN_COLUMN_GROUP_MODE",L="IN_TABLE_BODY_MODE",D="IN_ROW_MODE",P="IN_CELL_MODE",M="IN_SELECT_MODE",F="IN_SELECT_IN_TABLE_MODE",U="IN_TEMPLATE_MODE",B="AFTER_BODY_MODE",H="IN_FRAMESET_MODE",G="AFTER_FRAMESET_MODE",z="AFTER_AFTER_BODY_MODE",$="AFTER_AFTER_FRAMESET_MODE",j={[h.TR]:D,[h.TBODY]:L,[h.THEAD]:L,[h.TFOOT]:L,[h.CAPTION]:w,[h.COLGROUP]:x,[h.TABLE]:I,[h.BODY]:C,[h.FRAMESET]:H},V={[h.CAPTION]:I,[h.COLGROUP]:I,[h.TBODY]:I,[h.TFOOT]:I,[h.THEAD]:I,[h.COL]:x,[h.TR]:L,[h.TD]:D,[h.TH]:D},W={[y]:{[r.CHARACTER_TOKEN]:ee,[r.NULL_CHARACTER_TOKEN]:ee,[r.WHITESPACE_CHARACTER_TOKEN]:Z,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:function(e,t){e._setDocumentType(t);let n=t.forceQuirks?f.DOCUMENT_MODE.QUIRKS:d.getDocumentMode(t);d.isConforming(t)||e._err(m.nonConformingDoctype),e.treeAdapter.setDocumentMode(e.document,n),e.insertionMode=A},[r.START_TAG_TOKEN]:ee,[r.END_TAG_TOKEN]:ee,[r.EOF_TOKEN]:ee},[A]:{[r.CHARACTER_TOKEN]:et,[r.NULL_CHARACTER_TOKEN]:et,[r.WHITESPACE_CHARACTER_TOKEN]:Z,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:function(e,t){t.tagName===h.HTML?(e._insertElement(t,b.HTML),e.insertionMode=_):et(e,t)},[r.END_TAG_TOKEN]:function(e,t){let n=t.tagName;(n===h.HTML||n===h.HEAD||n===h.BODY||n===h.BR)&&et(e,t)},[r.EOF_TOKEN]:et},[_]:{[r.CHARACTER_TOKEN]:en,[r.NULL_CHARACTER_TOKEN]:en,[r.WHITESPACE_CHARACTER_TOKEN]:Z,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Y,[r.START_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.HTML?eS(e,t):n===h.HEAD?(e._insertElement(t,b.HTML),e.headElement=e.openElements.current,e.insertionMode=k):en(e,t)},[r.END_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.HEAD||n===h.BODY||n===h.HTML||n===h.BR?en(e,t):e._err(m.endTagWithoutMatchingOpenElement)},[r.EOF_TOKEN]:en},[k]:{[r.CHARACTER_TOKEN]:ei,[r.NULL_CHARACTER_TOKEN]:ei,[r.WHITESPACE_CHARACTER_TOKEN]:Q,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Y,[r.START_TAG_TOKEN]:er,[r.END_TAG_TOKEN]:ea,[r.EOF_TOKEN]:ei},[v]:{[r.CHARACTER_TOKEN]:eo,[r.NULL_CHARACTER_TOKEN]:eo,[r.WHITESPACE_CHARACTER_TOKEN]:Q,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Y,[r.START_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.HTML?eS(e,t):n===h.BASEFONT||n===h.BGSOUND||n===h.HEAD||n===h.LINK||n===h.META||n===h.NOFRAMES||n===h.STYLE?er(e,t):n===h.NOSCRIPT?e._err(m.nestedNoscriptInHead):eo(e,t)},[r.END_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.NOSCRIPT?(e.openElements.pop(),e.insertionMode=k):n===h.BR?eo(e,t):e._err(m.endTagWithoutMatchingOpenElement)},[r.EOF_TOKEN]:eo},[N]:{[r.CHARACTER_TOKEN]:es,[r.NULL_CHARACTER_TOKEN]:es,[r.WHITESPACE_CHARACTER_TOKEN]:Q,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Y,[r.START_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.HTML?eS(e,t):n===h.BODY?(e._insertElement(t,b.HTML),e.framesetOk=!1,e.insertionMode=C):n===h.FRAMESET?(e._insertElement(t,b.HTML),e.insertionMode=H):n===h.BASE||n===h.BASEFONT||n===h.BGSOUND||n===h.LINK||n===h.META||n===h.NOFRAMES||n===h.SCRIPT||n===h.STYLE||n===h.TEMPLATE||n===h.TITLE?(e._err(m.abandonedHeadElementChild),e.openElements.push(e.headElement),er(e,t),e.openElements.remove(e.headElement)):n===h.HEAD?e._err(m.misplacedStartTagForHeadElement):es(e,t)},[r.END_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.BODY||n===h.HTML||n===h.BR?es(e,t):n===h.TEMPLATE?ea(e,t):e._err(m.endTagWithoutMatchingOpenElement)},[r.EOF_TOKEN]:es},[C]:{[r.CHARACTER_TOKEN]:ec,[r.NULL_CHARACTER_TOKEN]:Z,[r.WHITESPACE_CHARACTER_TOKEN]:el,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:eS,[r.END_TAG_TOKEN]:ek,[r.EOF_TOKEN]:ev},[R]:{[r.CHARACTER_TOKEN]:Q,[r.NULL_CHARACTER_TOKEN]:Q,[r.WHITESPACE_CHARACTER_TOKEN]:Q,[r.COMMENT_TOKEN]:Z,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:Z,[r.END_TAG_TOKEN]:function(e,t){t.tagName===h.SCRIPT&&(e.pendingScript=e.openElements.current),e.openElements.pop(),e.insertionMode=e.originalInsertionMode},[r.EOF_TOKEN]:function(e,t){e._err(m.eofInElementThatCanContainOnlyText),e.openElements.pop(),e.insertionMode=e.originalInsertionMode,e._processToken(t)}},[I]:{[r.CHARACTER_TOKEN]:eN,[r.NULL_CHARACTER_TOKEN]:eN,[r.WHITESPACE_CHARACTER_TOKEN]:eN,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:eC,[r.END_TAG_TOKEN]:eR,[r.EOF_TOKEN]:ev},[O]:{[r.CHARACTER_TOKEN]:function(e,t){e.pendingCharacterTokens.push(t),e.hasNonWhitespacePendingCharacterToken=!0},[r.NULL_CHARACTER_TOKEN]:Z,[r.WHITESPACE_CHARACTER_TOKEN]:function(e,t){e.pendingCharacterTokens.push(t)},[r.COMMENT_TOKEN]:eO,[r.DOCTYPE_TOKEN]:eO,[r.START_TAG_TOKEN]:eO,[r.END_TAG_TOKEN]:eO,[r.EOF_TOKEN]:eO},[w]:{[r.CHARACTER_TOKEN]:ec,[r.NULL_CHARACTER_TOKEN]:Z,[r.WHITESPACE_CHARACTER_TOKEN]:el,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.CAPTION||n===h.COL||n===h.COLGROUP||n===h.TBODY||n===h.TD||n===h.TFOOT||n===h.TH||n===h.THEAD||n===h.TR?e.openElements.hasInTableScope(h.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(h.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=I,e._processToken(t)):eS(e,t)},[r.END_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.CAPTION||n===h.TABLE?e.openElements.hasInTableScope(h.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(h.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=I,n===h.TABLE&&e._processToken(t)):n!==h.BODY&&n!==h.COL&&n!==h.COLGROUP&&n!==h.HTML&&n!==h.TBODY&&n!==h.TD&&n!==h.TFOOT&&n!==h.TH&&n!==h.THEAD&&n!==h.TR&&ek(e,t)},[r.EOF_TOKEN]:ev},[x]:{[r.CHARACTER_TOKEN]:ew,[r.NULL_CHARACTER_TOKEN]:ew,[r.WHITESPACE_CHARACTER_TOKEN]:Q,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.HTML?eS(e,t):n===h.COL?(e._appendElement(t,b.HTML),t.ackSelfClosing=!0):n===h.TEMPLATE?er(e,t):ew(e,t)},[r.END_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.COLGROUP?e.openElements.currentTagName===h.COLGROUP&&(e.openElements.pop(),e.insertionMode=I):n===h.TEMPLATE?ea(e,t):n!==h.COL&&ew(e,t)},[r.EOF_TOKEN]:ev},[L]:{[r.CHARACTER_TOKEN]:eN,[r.NULL_CHARACTER_TOKEN]:eN,[r.WHITESPACE_CHARACTER_TOKEN]:eN,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.TR?(e.openElements.clearBackToTableBodyContext(),e._insertElement(t,b.HTML),e.insertionMode=D):n===h.TH||n===h.TD?(e.openElements.clearBackToTableBodyContext(),e._insertFakeElement(h.TR),e.insertionMode=D,e._processToken(t)):n===h.CAPTION||n===h.COL||n===h.COLGROUP||n===h.TBODY||n===h.TFOOT||n===h.THEAD?e.openElements.hasTableBodyContextInTableScope()&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=I,e._processToken(t)):eC(e,t)},[r.END_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.TBODY||n===h.TFOOT||n===h.THEAD?e.openElements.hasInTableScope(n)&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=I):n===h.TABLE?e.openElements.hasTableBodyContextInTableScope()&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=I,e._processToken(t)):(n!==h.BODY&&n!==h.CAPTION&&n!==h.COL&&n!==h.COLGROUP||n!==h.HTML&&n!==h.TD&&n!==h.TH&&n!==h.TR)&&eR(e,t)},[r.EOF_TOKEN]:ev},[D]:{[r.CHARACTER_TOKEN]:eN,[r.NULL_CHARACTER_TOKEN]:eN,[r.WHITESPACE_CHARACTER_TOKEN]:eN,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.TH||n===h.TD?(e.openElements.clearBackToTableRowContext(),e._insertElement(t,b.HTML),e.insertionMode=P,e.activeFormattingElements.insertMarker()):n===h.CAPTION||n===h.COL||n===h.COLGROUP||n===h.TBODY||n===h.TFOOT||n===h.THEAD||n===h.TR?e.openElements.hasInTableScope(h.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=L,e._processToken(t)):eC(e,t)},[r.END_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.TR?e.openElements.hasInTableScope(h.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=L):n===h.TABLE?e.openElements.hasInTableScope(h.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=L,e._processToken(t)):n===h.TBODY||n===h.TFOOT||n===h.THEAD?(e.openElements.hasInTableScope(n)||e.openElements.hasInTableScope(h.TR))&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=L,e._processToken(t)):(n!==h.BODY&&n!==h.CAPTION&&n!==h.COL&&n!==h.COLGROUP||n!==h.HTML&&n!==h.TD&&n!==h.TH)&&eR(e,t)},[r.EOF_TOKEN]:ev},[P]:{[r.CHARACTER_TOKEN]:ec,[r.NULL_CHARACTER_TOKEN]:Z,[r.WHITESPACE_CHARACTER_TOKEN]:el,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.CAPTION||n===h.COL||n===h.COLGROUP||n===h.TBODY||n===h.TD||n===h.TFOOT||n===h.TH||n===h.THEAD||n===h.TR?(e.openElements.hasInTableScope(h.TD)||e.openElements.hasInTableScope(h.TH))&&(e._closeTableCell(),e._processToken(t)):eS(e,t)},[r.END_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.TD||n===h.TH?e.openElements.hasInTableScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=D):n===h.TABLE||n===h.TBODY||n===h.TFOOT||n===h.THEAD||n===h.TR?e.openElements.hasInTableScope(n)&&(e._closeTableCell(),e._processToken(t)):n!==h.BODY&&n!==h.CAPTION&&n!==h.COL&&n!==h.COLGROUP&&n!==h.HTML&&ek(e,t)},[r.EOF_TOKEN]:ev},[M]:{[r.CHARACTER_TOKEN]:Q,[r.NULL_CHARACTER_TOKEN]:Z,[r.WHITESPACE_CHARACTER_TOKEN]:Q,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:ex,[r.END_TAG_TOKEN]:eL,[r.EOF_TOKEN]:ev},[F]:{[r.CHARACTER_TOKEN]:Q,[r.NULL_CHARACTER_TOKEN]:Z,[r.WHITESPACE_CHARACTER_TOKEN]:Q,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.CAPTION||n===h.TABLE||n===h.TBODY||n===h.TFOOT||n===h.THEAD||n===h.TR||n===h.TD||n===h.TH?(e.openElements.popUntilTagNamePopped(h.SELECT),e._resetInsertionMode(),e._processToken(t)):ex(e,t)},[r.END_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.CAPTION||n===h.TABLE||n===h.TBODY||n===h.TFOOT||n===h.THEAD||n===h.TR||n===h.TD||n===h.TH?e.openElements.hasInTableScope(n)&&(e.openElements.popUntilTagNamePopped(h.SELECT),e._resetInsertionMode(),e._processToken(t)):eL(e,t)},[r.EOF_TOKEN]:ev},[U]:{[r.CHARACTER_TOKEN]:ec,[r.NULL_CHARACTER_TOKEN]:Z,[r.WHITESPACE_CHARACTER_TOKEN]:el,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:function(e,t){let n=t.tagName;if(n===h.BASE||n===h.BASEFONT||n===h.BGSOUND||n===h.LINK||n===h.META||n===h.NOFRAMES||n===h.SCRIPT||n===h.STYLE||n===h.TEMPLATE||n===h.TITLE)er(e,t);else{let r=V[n]||C;e._popTmplInsertionMode(),e._pushTmplInsertionMode(r),e.insertionMode=r,e._processToken(t)}},[r.END_TAG_TOKEN]:function(e,t){t.tagName===h.TEMPLATE&&ea(e,t)},[r.EOF_TOKEN]:eD},[B]:{[r.CHARACTER_TOKEN]:eP,[r.NULL_CHARACTER_TOKEN]:eP,[r.WHITESPACE_CHARACTER_TOKEN]:el,[r.COMMENT_TOKEN]:function(e,t){e._appendCommentNode(t,e.openElements.items[0])},[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:function(e,t){t.tagName===h.HTML?eS(e,t):eP(e,t)},[r.END_TAG_TOKEN]:function(e,t){t.tagName===h.HTML?e.fragmentContext||(e.insertionMode=z):eP(e,t)},[r.EOF_TOKEN]:J},[H]:{[r.CHARACTER_TOKEN]:Z,[r.NULL_CHARACTER_TOKEN]:Z,[r.WHITESPACE_CHARACTER_TOKEN]:Q,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.HTML?eS(e,t):n===h.FRAMESET?e._insertElement(t,b.HTML):n===h.FRAME?(e._appendElement(t,b.HTML),t.ackSelfClosing=!0):n===h.NOFRAMES&&er(e,t)},[r.END_TAG_TOKEN]:function(e,t){t.tagName!==h.FRAMESET||e.openElements.isRootHtmlElementCurrent()||(e.openElements.pop(),e.fragmentContext||e.openElements.currentTagName===h.FRAMESET||(e.insertionMode=G))},[r.EOF_TOKEN]:J},[G]:{[r.CHARACTER_TOKEN]:Z,[r.NULL_CHARACTER_TOKEN]:Z,[r.WHITESPACE_CHARACTER_TOKEN]:Q,[r.COMMENT_TOKEN]:q,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.HTML?eS(e,t):n===h.NOFRAMES&&er(e,t)},[r.END_TAG_TOKEN]:function(e,t){t.tagName===h.HTML&&(e.insertionMode=$)},[r.EOF_TOKEN]:J},[z]:{[r.CHARACTER_TOKEN]:eM,[r.NULL_CHARACTER_TOKEN]:eM,[r.WHITESPACE_CHARACTER_TOKEN]:el,[r.COMMENT_TOKEN]:X,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:function(e,t){t.tagName===h.HTML?eS(e,t):eM(e,t)},[r.END_TAG_TOKEN]:eM,[r.EOF_TOKEN]:J},[$]:{[r.CHARACTER_TOKEN]:Z,[r.NULL_CHARACTER_TOKEN]:Z,[r.WHITESPACE_CHARACTER_TOKEN]:el,[r.COMMENT_TOKEN]:X,[r.DOCTYPE_TOKEN]:Z,[r.START_TAG_TOKEN]:function(e,t){let n=t.tagName;n===h.HTML?eS(e,t):n===h.NOFRAMES&&er(e,t)},[r.END_TAG_TOKEN]:Z,[r.EOF_TOKEN]:J}};function K(e,t){let n,r;for(let a=0;a<8&&((r=e.activeFormattingElements.getElementEntryInScopeWithTagName(t.tagName))?e.openElements.contains(r.element)?e.openElements.hasInScope(t.tagName)||(r=null):(e.activeFormattingElements.removeEntry(r),r=null):e_(e,t),n=r);a++){let t=function(e,t){let n=null;for(let r=e.openElements.stackTop;r>=0;r--){let a=e.openElements.items[r];if(a===t.element)break;e._isSpecialElement(a)&&(n=a)}return n||(e.openElements.popUntilElementPopped(t.element),e.activeFormattingElements.removeEntry(t)),n}(e,n);if(!t)break;e.activeFormattingElements.bookmark=n;let r=function(e,t,n){let r=t,a=e.openElements.getCommonAncestor(t);for(let i=0,o=a;o!==n;i++,o=a){a=e.openElements.getCommonAncestor(o);let n=e.activeFormattingElements.getElementEntry(o),s=n&&i>=3,l=!n||s;l?(s&&e.activeFormattingElements.removeEntry(n),e.openElements.remove(o)):(o=function(e,t){let n=e.treeAdapter.getNamespaceURI(t.element),r=e.treeAdapter.createElement(t.token.tagName,n,t.token.attrs);return e.openElements.replace(t.element,r),t.element=r,r}(e,n),r===t&&(e.activeFormattingElements.bookmark=n),e.treeAdapter.detachNode(r),e.treeAdapter.appendChild(o,r),r=o)}return r}(e,t,n.element),a=e.openElements.getCommonAncestor(n.element);e.treeAdapter.detachNode(r),function(e,t,n){if(e._isElementCausesFosterParenting(t))e._fosterParentElement(n);else{let r=e.treeAdapter.getTagName(t),a=e.treeAdapter.getNamespaceURI(t);r===h.TEMPLATE&&a===b.HTML&&(t=e.treeAdapter.getTemplateContent(t)),e.treeAdapter.appendChild(t,n)}}(e,a,r),function(e,t,n){let r=e.treeAdapter.getNamespaceURI(n.element),a=n.token,i=e.treeAdapter.createElement(a.tagName,r,a.attrs);e._adoptNodes(t,i),e.treeAdapter.appendChild(t,i),e.activeFormattingElements.insertElementAfterBookmark(i,n.token),e.activeFormattingElements.removeEntry(n),e.openElements.remove(n.element),e.openElements.insertAfter(t,i)}(e,t,n)}}function Z(){}function Y(e){e._err(m.misplacedDoctype)}function q(e,t){e._appendCommentNode(t,e.openElements.currentTmplContent||e.openElements.current)}function X(e,t){e._appendCommentNode(t,e.document)}function Q(e,t){e._insertCharacters(t)}function J(e){e.stopped=!0}function ee(e,t){e._err(m.missingDoctype,{beforeToken:!0}),e.treeAdapter.setDocumentMode(e.document,f.DOCUMENT_MODE.QUIRKS),e.insertionMode=A,e._processToken(t)}function et(e,t){e._insertFakeRootElement(),e.insertionMode=_,e._processToken(t)}function en(e,t){e._insertFakeElement(h.HEAD),e.headElement=e.openElements.current,e.insertionMode=k,e._processToken(t)}function er(e,t){let n=t.tagName;n===h.HTML?eS(e,t):n===h.BASE||n===h.BASEFONT||n===h.BGSOUND||n===h.LINK||n===h.META?(e._appendElement(t,b.HTML),t.ackSelfClosing=!0):n===h.TITLE?e._switchToTextParsing(t,r.MODE.RCDATA):n===h.NOSCRIPT?e.options.scriptingEnabled?e._switchToTextParsing(t,r.MODE.RAWTEXT):(e._insertElement(t,b.HTML),e.insertionMode=v):n===h.NOFRAMES||n===h.STYLE?e._switchToTextParsing(t,r.MODE.RAWTEXT):n===h.SCRIPT?e._switchToTextParsing(t,r.MODE.SCRIPT_DATA):n===h.TEMPLATE?(e._insertTemplate(t,b.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=!1,e.insertionMode=U,e._pushTmplInsertionMode(U)):n===h.HEAD?e._err(m.misplacedStartTagForHeadElement):ei(e,t)}function ea(e,t){let n=t.tagName;n===h.HEAD?(e.openElements.pop(),e.insertionMode=N):n===h.BODY||n===h.BR||n===h.HTML?ei(e,t):n===h.TEMPLATE&&e.openElements.tmplCount>0?(e.openElements.generateImpliedEndTagsThoroughly(),e.openElements.currentTagName!==h.TEMPLATE&&e._err(m.closingOfElementWithOpenChildElements),e.openElements.popUntilTagNamePopped(h.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e._popTmplInsertionMode(),e._resetInsertionMode()):e._err(m.endTagWithoutMatchingOpenElement)}function ei(e,t){e.openElements.pop(),e.insertionMode=N,e._processToken(t)}function eo(e,t){let n=t.type===r.EOF_TOKEN?m.openElementsLeftAfterEof:m.disallowedContentInNoscriptInHead;e._err(n),e.openElements.pop(),e.insertionMode=k,e._processToken(t)}function es(e,t){e._insertFakeElement(h.BODY),e.insertionMode=C,e._processToken(t)}function el(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t)}function ec(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t),e.framesetOk=!1}function eu(e,t){e.openElements.hasInButtonScope(h.P)&&e._closePElement(),e._insertElement(t,b.HTML)}function ed(e,t){e.openElements.hasInButtonScope(h.P)&&e._closePElement(),e._insertElement(t,b.HTML),e.skipNextNewLine=!0,e.framesetOk=!1}function ep(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,b.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function em(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,b.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=!1}function eg(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,b.HTML),e.framesetOk=!1,t.ackSelfClosing=!0}function ef(e,t){e._appendElement(t,b.HTML),t.ackSelfClosing=!0}function eh(e,t){e._switchToTextParsing(t,r.MODE.RAWTEXT)}function eb(e,t){e.openElements.currentTagName===h.OPTION&&e.openElements.pop(),e._reconstructActiveFormattingElements(),e._insertElement(t,b.HTML)}function eE(e,t){e.openElements.hasInScope(h.RUBY)&&e.openElements.generateImpliedEndTags(),e._insertElement(t,b.HTML)}function eT(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,b.HTML)}function eS(e,t){let n=t.tagName;switch(n.length){case 1:n===h.I||n===h.S||n===h.B||n===h.U?ep(e,t):n===h.P?eu(e,t):n===h.A?function(e,t){let n=e.activeFormattingElements.getElementEntryInScopeWithTagName(h.A);n&&(K(e,t),e.openElements.remove(n.element),e.activeFormattingElements.removeEntry(n)),e._reconstructActiveFormattingElements(),e._insertElement(t,b.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}(e,t):eT(e,t);break;case 2:n===h.DL||n===h.OL||n===h.UL?eu(e,t):n===h.H1||n===h.H2||n===h.H3||n===h.H4||n===h.H5||n===h.H6?function(e,t){e.openElements.hasInButtonScope(h.P)&&e._closePElement();let n=e.openElements.currentTagName;(n===h.H1||n===h.H2||n===h.H3||n===h.H4||n===h.H5||n===h.H6)&&e.openElements.pop(),e._insertElement(t,b.HTML)}(e,t):n===h.LI||n===h.DD||n===h.DT?function(e,t){e.framesetOk=!1;let n=t.tagName;for(let t=e.openElements.stackTop;t>=0;t--){let r=e.openElements.items[t],a=e.treeAdapter.getTagName(r),i=null;if(n===h.LI&&a===h.LI?i=h.LI:(n===h.DD||n===h.DT)&&(a===h.DD||a===h.DT)&&(i=a),i){e.openElements.generateImpliedEndTagsWithExclusion(i),e.openElements.popUntilTagNamePopped(i);break}if(a!==h.ADDRESS&&a!==h.DIV&&a!==h.P&&e._isSpecialElement(r))break}e.openElements.hasInButtonScope(h.P)&&e._closePElement(),e._insertElement(t,b.HTML)}(e,t):n===h.EM||n===h.TT?ep(e,t):n===h.BR?eg(e,t):n===h.HR?(e.openElements.hasInButtonScope(h.P)&&e._closePElement(),e._appendElement(t,b.HTML),e.framesetOk=!1,t.ackSelfClosing=!0):n===h.RB?eE(e,t):n===h.RT||n===h.RP?(e.openElements.hasInScope(h.RUBY)&&e.openElements.generateImpliedEndTagsWithExclusion(h.RTC),e._insertElement(t,b.HTML)):n!==h.TH&&n!==h.TD&&n!==h.TR&&eT(e,t);break;case 3:n===h.DIV||n===h.DIR||n===h.NAV?eu(e,t):n===h.PRE?ed(e,t):n===h.BIG?ep(e,t):n===h.IMG||n===h.WBR?eg(e,t):n===h.XMP?(e.openElements.hasInButtonScope(h.P)&&e._closePElement(),e._reconstructActiveFormattingElements(),e.framesetOk=!1,e._switchToTextParsing(t,r.MODE.RAWTEXT)):n===h.SVG?(e._reconstructActiveFormattingElements(),p.adjustTokenSVGAttrs(t),p.adjustTokenXMLAttrs(t),t.selfClosing?e._appendElement(t,b.SVG):e._insertElement(t,b.SVG),t.ackSelfClosing=!0):n===h.RTC?eE(e,t):n!==h.COL&&eT(e,t);break;case 4:n===h.HTML?0===e.openElements.tmplCount&&e.treeAdapter.adoptAttributes(e.openElements.items[0],t.attrs):n===h.BASE||n===h.LINK||n===h.META?er(e,t):n===h.BODY?function(e,t){let n=e.openElements.tryPeekProperlyNestedBodyElement();n&&0===e.openElements.tmplCount&&(e.framesetOk=!1,e.treeAdapter.adoptAttributes(n,t.attrs))}(e,t):n===h.MAIN||n===h.MENU?eu(e,t):n===h.FORM?function(e,t){let n=e.openElements.tmplCount>0;e.formElement&&!n||(e.openElements.hasInButtonScope(h.P)&&e._closePElement(),e._insertElement(t,b.HTML),n||(e.formElement=e.openElements.current))}(e,t):n===h.CODE||n===h.FONT?ep(e,t):n===h.NOBR?(e._reconstructActiveFormattingElements(),e.openElements.hasInScope(h.NOBR)&&(K(e,t),e._reconstructActiveFormattingElements()),e._insertElement(t,b.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)):n===h.AREA?eg(e,t):n===h.MATH?(e._reconstructActiveFormattingElements(),p.adjustTokenMathMLAttrs(t),p.adjustTokenXMLAttrs(t),t.selfClosing?e._appendElement(t,b.MATHML):e._insertElement(t,b.MATHML),t.ackSelfClosing=!0):n===h.MENU?(e.openElements.hasInButtonScope(h.P)&&e._closePElement(),e._insertElement(t,b.HTML)):n!==h.HEAD&&eT(e,t);break;case 5:n===h.STYLE||n===h.TITLE?er(e,t):n===h.ASIDE?eu(e,t):n===h.SMALL?ep(e,t):n===h.TABLE?(e.treeAdapter.getDocumentMode(e.document)!==f.DOCUMENT_MODE.QUIRKS&&e.openElements.hasInButtonScope(h.P)&&e._closePElement(),e._insertElement(t,b.HTML),e.framesetOk=!1,e.insertionMode=I):n===h.EMBED?eg(e,t):n===h.INPUT?function(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,b.HTML);let n=r.getTokenAttr(t,E.TYPE);n&&n.toLowerCase()===S||(e.framesetOk=!1),t.ackSelfClosing=!0}(e,t):n===h.PARAM||n===h.TRACK?ef(e,t):n===h.IMAGE?(t.tagName=h.IMG,eg(e,t)):n!==h.FRAME&&n!==h.TBODY&&n!==h.TFOOT&&n!==h.THEAD&&eT(e,t);break;case 6:n===h.SCRIPT?er(e,t):n===h.CENTER||n===h.FIGURE||n===h.FOOTER||n===h.HEADER||n===h.HGROUP||n===h.DIALOG?eu(e,t):n===h.BUTTON?(e.openElements.hasInScope(h.BUTTON)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(h.BUTTON)),e._reconstructActiveFormattingElements(),e._insertElement(t,b.HTML),e.framesetOk=!1):n===h.STRIKE||n===h.STRONG?ep(e,t):n===h.APPLET||n===h.OBJECT?em(e,t):n===h.KEYGEN?eg(e,t):n===h.SOURCE?ef(e,t):n===h.IFRAME?(e.framesetOk=!1,e._switchToTextParsing(t,r.MODE.RAWTEXT)):n===h.SELECT?(e._reconstructActiveFormattingElements(),e._insertElement(t,b.HTML),e.framesetOk=!1,e.insertionMode===I||e.insertionMode===w||e.insertionMode===L||e.insertionMode===D||e.insertionMode===P?e.insertionMode=F:e.insertionMode=M):n===h.OPTION?eb(e,t):eT(e,t);break;case 7:n===h.BGSOUND?er(e,t):n===h.DETAILS||n===h.ADDRESS||n===h.ARTICLE||n===h.SECTION||n===h.SUMMARY?eu(e,t):n===h.LISTING?ed(e,t):n===h.MARQUEE?em(e,t):n===h.NOEMBED?eh(e,t):n!==h.CAPTION&&eT(e,t);break;case 8:n===h.BASEFONT?er(e,t):n===h.FRAMESET?function(e,t){let n=e.openElements.tryPeekProperlyNestedBodyElement();e.framesetOk&&n&&(e.treeAdapter.detachNode(n),e.openElements.popAllUpToHtmlElement(),e._insertElement(t,b.HTML),e.insertionMode=H)}(e,t):n===h.FIELDSET?eu(e,t):n===h.TEXTAREA?(e._insertElement(t,b.HTML),e.skipNextNewLine=!0,e.tokenizer.state=r.MODE.RCDATA,e.originalInsertionMode=e.insertionMode,e.framesetOk=!1,e.insertionMode=R):n===h.TEMPLATE?er(e,t):n===h.NOSCRIPT?e.options.scriptingEnabled?eh(e,t):eT(e,t):n===h.OPTGROUP?eb(e,t):n!==h.COLGROUP&&eT(e,t);break;case 9:n===h.PLAINTEXT?(e.openElements.hasInButtonScope(h.P)&&e._closePElement(),e._insertElement(t,b.HTML),e.tokenizer.state=r.MODE.PLAINTEXT):eT(e,t);break;case 10:n===h.BLOCKQUOTE||n===h.FIGCAPTION?eu(e,t):eT(e,t);break;default:eT(e,t)}}function ey(e,t){let n=t.tagName;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n))}function eA(e,t){let n=t.tagName;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker())}function e_(e,t){let n=t.tagName;for(let t=e.openElements.stackTop;t>0;t--){let r=e.openElements.items[t];if(e.treeAdapter.getTagName(r)===n){e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.popUntilElementPopped(r);break}if(e._isSpecialElement(r))break}}function ek(e,t){let n=t.tagName;switch(n.length){case 1:n===h.A||n===h.B||n===h.I||n===h.S||n===h.U?K(e,t):n===h.P?(e.openElements.hasInButtonScope(h.P)||e._insertFakeElement(h.P),e._closePElement()):e_(e,t);break;case 2:n===h.DL||n===h.UL||n===h.OL?ey(e,t):n===h.LI?e.openElements.hasInListItemScope(h.LI)&&(e.openElements.generateImpliedEndTagsWithExclusion(h.LI),e.openElements.popUntilTagNamePopped(h.LI)):n===h.DD||n===h.DT?function(e,t){let n=t.tagName;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.popUntilTagNamePopped(n))}(e,t):n===h.H1||n===h.H2||n===h.H3||n===h.H4||n===h.H5||n===h.H6?e.openElements.hasNumberedHeaderInScope()&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilNumberedHeaderPopped()):n===h.BR?(e._reconstructActiveFormattingElements(),e._insertFakeElement(h.BR),e.openElements.pop(),e.framesetOk=!1):n===h.EM||n===h.TT?K(e,t):e_(e,t);break;case 3:n===h.BIG?K(e,t):n===h.DIR||n===h.DIV||n===h.NAV||n===h.PRE?ey(e,t):e_(e,t);break;case 4:n===h.BODY?e.openElements.hasInScope(h.BODY)&&(e.insertionMode=B):n===h.HTML?e.openElements.hasInScope(h.BODY)&&(e.insertionMode=B,e._processToken(t)):n===h.FORM?function(e){let t=e.openElements.tmplCount>0,n=e.formElement;t||(e.formElement=null),(n||t)&&e.openElements.hasInScope(h.FORM)&&(e.openElements.generateImpliedEndTags(),t?e.openElements.popUntilTagNamePopped(h.FORM):e.openElements.remove(n))}(e,t):n===h.CODE||n===h.FONT||n===h.NOBR?K(e,t):n===h.MAIN||n===h.MENU?ey(e,t):e_(e,t);break;case 5:n===h.ASIDE?ey(e,t):n===h.SMALL?K(e,t):e_(e,t);break;case 6:n===h.CENTER||n===h.FIGURE||n===h.FOOTER||n===h.HEADER||n===h.HGROUP||n===h.DIALOG?ey(e,t):n===h.APPLET||n===h.OBJECT?eA(e,t):n===h.STRIKE||n===h.STRONG?K(e,t):e_(e,t);break;case 7:n===h.ADDRESS||n===h.ARTICLE||n===h.DETAILS||n===h.SECTION||n===h.SUMMARY||n===h.LISTING?ey(e,t):n===h.MARQUEE?eA(e,t):e_(e,t);break;case 8:n===h.FIELDSET?ey(e,t):n===h.TEMPLATE?ea(e,t):e_(e,t);break;case 10:n===h.BLOCKQUOTE||n===h.FIGCAPTION?ey(e,t):e_(e,t);break;default:e_(e,t)}}function ev(e,t){e.tmplInsertionModeStackTop>-1?eD(e,t):e.stopped=!0}function eN(e,t){let n=e.openElements.currentTagName;n===h.TABLE||n===h.TBODY||n===h.TFOOT||n===h.THEAD||n===h.TR?(e.pendingCharacterTokens=[],e.hasNonWhitespacePendingCharacterToken=!1,e.originalInsertionMode=e.insertionMode,e.insertionMode=O,e._processToken(t)):eI(e,t)}function eC(e,t){let n=t.tagName;switch(n.length){case 2:n===h.TD||n===h.TH||n===h.TR?(e.openElements.clearBackToTableContext(),e._insertFakeElement(h.TBODY),e.insertionMode=L,e._processToken(t)):eI(e,t);break;case 3:n===h.COL?(e.openElements.clearBackToTableContext(),e._insertFakeElement(h.COLGROUP),e.insertionMode=x,e._processToken(t)):eI(e,t);break;case 4:n===h.FORM?e.formElement||0!==e.openElements.tmplCount||(e._insertElement(t,b.HTML),e.formElement=e.openElements.current,e.openElements.pop()):eI(e,t);break;case 5:n===h.TABLE?e.openElements.hasInTableScope(h.TABLE)&&(e.openElements.popUntilTagNamePopped(h.TABLE),e._resetInsertionMode(),e._processToken(t)):n===h.STYLE?er(e,t):n===h.TBODY||n===h.TFOOT||n===h.THEAD?(e.openElements.clearBackToTableContext(),e._insertElement(t,b.HTML),e.insertionMode=L):n===h.INPUT?function(e,t){let n=r.getTokenAttr(t,E.TYPE);n&&n.toLowerCase()===S?e._appendElement(t,b.HTML):eI(e,t),t.ackSelfClosing=!0}(e,t):eI(e,t);break;case 6:n===h.SCRIPT?er(e,t):eI(e,t);break;case 7:n===h.CAPTION?(e.openElements.clearBackToTableContext(),e.activeFormattingElements.insertMarker(),e._insertElement(t,b.HTML),e.insertionMode=w):eI(e,t);break;case 8:n===h.COLGROUP?(e.openElements.clearBackToTableContext(),e._insertElement(t,b.HTML),e.insertionMode=x):n===h.TEMPLATE?er(e,t):eI(e,t);break;default:eI(e,t)}}function eR(e,t){let n=t.tagName;n===h.TABLE?e.openElements.hasInTableScope(h.TABLE)&&(e.openElements.popUntilTagNamePopped(h.TABLE),e._resetInsertionMode()):n===h.TEMPLATE?ea(e,t):n!==h.BODY&&n!==h.CAPTION&&n!==h.COL&&n!==h.COLGROUP&&n!==h.HTML&&n!==h.TBODY&&n!==h.TD&&n!==h.TFOOT&&n!==h.TH&&n!==h.THEAD&&n!==h.TR&&eI(e,t)}function eI(e,t){let n=e.fosterParentingEnabled;e.fosterParentingEnabled=!0,e._processTokenInBodyMode(t),e.fosterParentingEnabled=n}function eO(e,t){let n=0;if(e.hasNonWhitespacePendingCharacterToken)for(;n0?(e.openElements.popUntilTagNamePopped(h.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e._popTmplInsertionMode(),e._resetInsertionMode(),e._processToken(t)):e.stopped=!0}function eP(e,t){e.insertionMode=C,e._processToken(t)}function eM(e,t){e.insertionMode=C,e._processToken(t)}e.exports=class{constructor(e){this.options=u(T,e),this.treeAdapter=this.options.treeAdapter,this.pendingScript=null,this.options.sourceCodeLocationInfo&&l.install(this,o),this.options.onParseError&&l.install(this,s,{onParseError:this.options.onParseError})}parse(e){let t=this.treeAdapter.createDocument();return this._bootstrap(t,null),this.tokenizer.write(e,!0),this._runParsingLoop(null),t}parseFragment(e,t){t||(t=this.treeAdapter.createElement(h.TEMPLATE,b.HTML,[]));let n=this.treeAdapter.createElement("documentmock",b.HTML,[]);this._bootstrap(n,t),this.treeAdapter.getTagName(t)===h.TEMPLATE&&this._pushTmplInsertionMode(U),this._initTokenizerForFragmentParsing(),this._insertFakeRootElement(),this._resetInsertionMode(),this._findFormInFragmentContext(),this.tokenizer.write(e,!0),this._runParsingLoop(null);let r=this.treeAdapter.getFirstChild(n),a=this.treeAdapter.createDocumentFragment();return this._adoptNodes(r,a),a}_bootstrap(e,t){this.tokenizer=new r(this.options),this.stopped=!1,this.insertionMode=y,this.originalInsertionMode="",this.document=e,this.fragmentContext=t,this.headElement=null,this.formElement=null,this.openElements=new a(this.document,this.treeAdapter),this.activeFormattingElements=new i(this.treeAdapter),this.tmplInsertionModeStack=[],this.tmplInsertionModeStackTop=-1,this.currentTmplInsertionMode=null,this.pendingCharacterTokens=[],this.hasNonWhitespacePendingCharacterToken=!1,this.framesetOk=!0,this.skipNextNewLine=!1,this.fosterParentingEnabled=!1}_err(){}_runParsingLoop(e){for(;!this.stopped;){this._setupTokenizerCDATAMode();let t=this.tokenizer.getNextToken();if(t.type===r.HIBERNATION_TOKEN)break;if(this.skipNextNewLine&&(this.skipNextNewLine=!1,t.type===r.WHITESPACE_CHARACTER_TOKEN&&"\n"===t.chars[0])){if(1===t.chars.length)continue;t.chars=t.chars.substr(1)}if(this._processInputToken(t),e&&this.pendingScript)break}}runParsingLoopForCurrentChunk(e,t){if(this._runParsingLoop(t),t&&this.pendingScript){let e=this.pendingScript;this.pendingScript=null,t(e);return}e&&e()}_setupTokenizerCDATAMode(){let e=this._getAdjustedCurrentElement();this.tokenizer.allowCDATA=e&&e!==this.document&&this.treeAdapter.getNamespaceURI(e)!==b.HTML&&!this._isIntegrationPoint(e)}_switchToTextParsing(e,t){this._insertElement(e,b.HTML),this.tokenizer.state=t,this.originalInsertionMode=this.insertionMode,this.insertionMode=R}switchToPlaintextParsing(){this.insertionMode=R,this.originalInsertionMode=C,this.tokenizer.state=r.MODE.PLAINTEXT}_getAdjustedCurrentElement(){return 0===this.openElements.stackTop&&this.fragmentContext?this.fragmentContext:this.openElements.current}_findFormInFragmentContext(){let e=this.fragmentContext;do{if(this.treeAdapter.getTagName(e)===h.FORM){this.formElement=e;break}e=this.treeAdapter.getParentNode(e)}while(e)}_initTokenizerForFragmentParsing(){if(this.treeAdapter.getNamespaceURI(this.fragmentContext)===b.HTML){let e=this.treeAdapter.getTagName(this.fragmentContext);e===h.TITLE||e===h.TEXTAREA?this.tokenizer.state=r.MODE.RCDATA:e===h.STYLE||e===h.XMP||e===h.IFRAME||e===h.NOEMBED||e===h.NOFRAMES||e===h.NOSCRIPT?this.tokenizer.state=r.MODE.RAWTEXT:e===h.SCRIPT?this.tokenizer.state=r.MODE.SCRIPT_DATA:e===h.PLAINTEXT&&(this.tokenizer.state=r.MODE.PLAINTEXT)}}_setDocumentType(e){let t=e.name||"",n=e.publicId||"",r=e.systemId||"";this.treeAdapter.setDocumentType(this.document,t,n,r)}_attachElementToTree(e){if(this._shouldFosterParentOnInsertion())this._fosterParentElement(e);else{let t=this.openElements.currentTmplContent||this.openElements.current;this.treeAdapter.appendChild(t,e)}}_appendElement(e,t){let n=this.treeAdapter.createElement(e.tagName,t,e.attrs);this._attachElementToTree(n)}_insertElement(e,t){let n=this.treeAdapter.createElement(e.tagName,t,e.attrs);this._attachElementToTree(n),this.openElements.push(n)}_insertFakeElement(e){let t=this.treeAdapter.createElement(e,b.HTML,[]);this._attachElementToTree(t),this.openElements.push(t)}_insertTemplate(e){let t=this.treeAdapter.createElement(e.tagName,b.HTML,e.attrs),n=this.treeAdapter.createDocumentFragment();this.treeAdapter.setTemplateContent(t,n),this._attachElementToTree(t),this.openElements.push(t)}_insertFakeRootElement(){let e=this.treeAdapter.createElement(h.HTML,b.HTML,[]);this.treeAdapter.appendChild(this.openElements.current,e),this.openElements.push(e)}_appendCommentNode(e,t){let n=this.treeAdapter.createCommentNode(e.data);this.treeAdapter.appendChild(t,n)}_insertCharacters(e){if(this._shouldFosterParentOnInsertion())this._fosterParentText(e.chars);else{let t=this.openElements.currentTmplContent||this.openElements.current;this.treeAdapter.insertText(t,e.chars)}}_adoptNodes(e,t){for(let n=this.treeAdapter.getFirstChild(e);n;n=this.treeAdapter.getFirstChild(e))this.treeAdapter.detachNode(n),this.treeAdapter.appendChild(t,n)}_shouldProcessTokenInForeignContent(e){let t=this._getAdjustedCurrentElement();if(!t||t===this.document)return!1;let n=this.treeAdapter.getNamespaceURI(t);if(n===b.HTML||this.treeAdapter.getTagName(t)===h.ANNOTATION_XML&&n===b.MATHML&&e.type===r.START_TAG_TOKEN&&e.tagName===h.SVG)return!1;let a=e.type===r.CHARACTER_TOKEN||e.type===r.NULL_CHARACTER_TOKEN||e.type===r.WHITESPACE_CHARACTER_TOKEN,i=e.type===r.START_TAG_TOKEN&&e.tagName!==h.MGLYPH&&e.tagName!==h.MALIGNMARK;return!((i||a)&&this._isIntegrationPoint(t,b.MATHML)||(e.type===r.START_TAG_TOKEN||a)&&this._isIntegrationPoint(t,b.HTML))&&e.type!==r.EOF_TOKEN}_processToken(e){W[this.insertionMode][e.type](this,e)}_processTokenInBodyMode(e){W[C][e.type](this,e)}_processTokenInForeignContent(e){e.type===r.CHARACTER_TOKEN?(this._insertCharacters(e),this.framesetOk=!1):e.type===r.NULL_CHARACTER_TOKEN?(e.chars=g.REPLACEMENT_CHARACTER,this._insertCharacters(e)):e.type===r.WHITESPACE_CHARACTER_TOKEN?Q(this,e):e.type===r.COMMENT_TOKEN?q(this,e):e.type===r.START_TAG_TOKEN?function(e,t){if(p.causesExit(t)&&!e.fragmentContext){for(;e.treeAdapter.getNamespaceURI(e.openElements.current)!==b.HTML&&!e._isIntegrationPoint(e.openElements.current);)e.openElements.pop();e._processToken(t)}else{let n=e._getAdjustedCurrentElement(),r=e.treeAdapter.getNamespaceURI(n);r===b.MATHML?p.adjustTokenMathMLAttrs(t):r===b.SVG&&(p.adjustTokenSVGTagName(t),p.adjustTokenSVGAttrs(t)),p.adjustTokenXMLAttrs(t),t.selfClosing?e._appendElement(t,r):e._insertElement(t,r),t.ackSelfClosing=!0}}(this,e):e.type===r.END_TAG_TOKEN&&function(e,t){for(let n=e.openElements.stackTop;n>0;n--){let r=e.openElements.items[n];if(e.treeAdapter.getNamespaceURI(r)===b.HTML){e._processToken(t);break}if(e.treeAdapter.getTagName(r).toLowerCase()===t.tagName){e.openElements.popUntilElementPopped(r);break}}}(this,e)}_processInputToken(e){this._shouldProcessTokenInForeignContent(e)?this._processTokenInForeignContent(e):this._processToken(e),e.type===r.START_TAG_TOKEN&&e.selfClosing&&!e.ackSelfClosing&&this._err(m.nonVoidHtmlElementStartTagWithTrailingSolidus)}_isIntegrationPoint(e,t){let n=this.treeAdapter.getTagName(e),r=this.treeAdapter.getNamespaceURI(e),a=this.treeAdapter.getAttrList(e);return p.isIntegrationPoint(n,r,a,t)}_reconstructActiveFormattingElements(){let e=this.activeFormattingElements.length;if(e){let t=e,n=null;do if(t--,(n=this.activeFormattingElements.entries[t]).type===i.MARKER_ENTRY||this.openElements.contains(n.element)){t++;break}while(t>0);for(let r=t;r=0;e--){let n=this.openElements.items[e];0===e&&(t=!0,this.fragmentContext&&(n=this.fragmentContext));let r=this.treeAdapter.getTagName(n),a=j[r];if(a){this.insertionMode=a;break}if(t||r!==h.TD&&r!==h.TH){if(t||r!==h.HEAD){if(r===h.SELECT){this._resetInsertionModeForSelect(e);break}if(r===h.TEMPLATE){this.insertionMode=this.currentTmplInsertionMode;break}if(r===h.HTML){this.insertionMode=this.headElement?N:_;break}else if(t){this.insertionMode=C;break}}else{this.insertionMode=k;break}}else{this.insertionMode=P;break}}}_resetInsertionModeForSelect(e){if(e>0)for(let t=e-1;t>0;t--){let e=this.openElements.items[t],n=this.treeAdapter.getTagName(e);if(n===h.TEMPLATE)break;if(n===h.TABLE){this.insertionMode=F;return}}this.insertionMode=M}_pushTmplInsertionMode(e){this.tmplInsertionModeStack.push(e),this.tmplInsertionModeStackTop++,this.currentTmplInsertionMode=e}_popTmplInsertionMode(){this.tmplInsertionModeStack.pop(),this.tmplInsertionModeStackTop--,this.currentTmplInsertionMode=this.tmplInsertionModeStack[this.tmplInsertionModeStackTop]}_isElementCausesFosterParenting(e){let t=this.treeAdapter.getTagName(e);return t===h.TABLE||t===h.TBODY||t===h.TFOOT||t===h.THEAD||t===h.TR}_shouldFosterParentOnInsertion(){return this.fosterParentingEnabled&&this._isElementCausesFosterParenting(this.openElements.current)}_findFosterParentingLocation(){let e={parent:null,beforeElement:null};for(let t=this.openElements.stackTop;t>=0;t--){let n=this.openElements.items[t],r=this.treeAdapter.getTagName(n),a=this.treeAdapter.getNamespaceURI(n);if(r===h.TEMPLATE&&a===b.HTML){e.parent=this.treeAdapter.getTemplateContent(n);break}if(r===h.TABLE){e.parent=this.treeAdapter.getParentNode(n),e.parent?e.beforeElement=n:e.parent=this.openElements.items[t-1];break}}return e.parent||(e.parent=this.openElements.items[0]),e}_fosterParentElement(e){let t=this._findFosterParentingLocation();t.beforeElement?this.treeAdapter.insertBefore(t.parent,e,t.beforeElement):this.treeAdapter.appendChild(t.parent,e)}_fosterParentText(e){let t=this._findFosterParentingLocation();t.beforeElement?this.treeAdapter.insertTextBefore(t.parent,e,t.beforeElement):this.treeAdapter.insertText(t.parent,e)}_isSpecialElement(e){let t=this.treeAdapter.getTagName(e),n=this.treeAdapter.getNamespaceURI(e);return f.SPECIAL_ELEMENTS[n][t]}}},46519:function(e,t,n){"use strict";let r=n(16152),a=r.TAG_NAMES,i=r.NAMESPACES;function o(e){switch(e.length){case 1:return e===a.P;case 2:return e===a.RB||e===a.RP||e===a.RT||e===a.DD||e===a.DT||e===a.LI;case 3:return e===a.RTC;case 6:return e===a.OPTION;case 8:return e===a.OPTGROUP}return!1}function s(e,t){switch(e.length){case 2:if(e===a.TD||e===a.TH)return t===i.HTML;if(e===a.MI||e===a.MO||e===a.MN||e===a.MS)return t===i.MATHML;break;case 4:if(e===a.HTML)return t===i.HTML;if(e===a.DESC)return t===i.SVG;break;case 5:if(e===a.TABLE)return t===i.HTML;if(e===a.MTEXT)return t===i.MATHML;if(e===a.TITLE)return t===i.SVG;break;case 6:return(e===a.APPLET||e===a.OBJECT)&&t===i.HTML;case 7:return(e===a.CAPTION||e===a.MARQUEE)&&t===i.HTML;case 8:return e===a.TEMPLATE&&t===i.HTML;case 13:return e===a.FOREIGN_OBJECT&&t===i.SVG;case 14:return e===a.ANNOTATION_XML&&t===i.MATHML}return!1}e.exports=class{constructor(e,t){this.stackTop=-1,this.items=[],this.current=e,this.currentTagName=null,this.currentTmplContent=null,this.tmplCount=0,this.treeAdapter=t}_indexOf(e){let t=-1;for(let n=this.stackTop;n>=0;n--)if(this.items[n]===e){t=n;break}return t}_isInTemplate(){return this.currentTagName===a.TEMPLATE&&this.treeAdapter.getNamespaceURI(this.current)===i.HTML}_updateCurrentElement(){this.current=this.items[this.stackTop],this.currentTagName=this.current&&this.treeAdapter.getTagName(this.current),this.currentTmplContent=this._isInTemplate()?this.treeAdapter.getTemplateContent(this.current):null}push(e){this.items[++this.stackTop]=e,this._updateCurrentElement(),this._isInTemplate()&&this.tmplCount++}pop(){this.stackTop--,this.tmplCount>0&&this._isInTemplate()&&this.tmplCount--,this._updateCurrentElement()}replace(e,t){let n=this._indexOf(e);this.items[n]=t,n===this.stackTop&&this._updateCurrentElement()}insertAfter(e,t){let n=this._indexOf(e)+1;this.items.splice(n,0,t),n===++this.stackTop&&this._updateCurrentElement()}popUntilTagNamePopped(e){for(;this.stackTop>-1;){let t=this.currentTagName,n=this.treeAdapter.getNamespaceURI(this.current);if(this.pop(),t===e&&n===i.HTML)break}}popUntilElementPopped(e){for(;this.stackTop>-1;){let t=this.current;if(this.pop(),t===e)break}}popUntilNumberedHeaderPopped(){for(;this.stackTop>-1;){let e=this.currentTagName,t=this.treeAdapter.getNamespaceURI(this.current);if(this.pop(),e===a.H1||e===a.H2||e===a.H3||e===a.H4||e===a.H5||e===a.H6&&t===i.HTML)break}}popUntilTableCellPopped(){for(;this.stackTop>-1;){let e=this.currentTagName,t=this.treeAdapter.getNamespaceURI(this.current);if(this.pop(),e===a.TD||e===a.TH&&t===i.HTML)break}}popAllUpToHtmlElement(){this.stackTop=0,this._updateCurrentElement()}clearBackToTableContext(){for(;this.currentTagName!==a.TABLE&&this.currentTagName!==a.TEMPLATE&&this.currentTagName!==a.HTML||this.treeAdapter.getNamespaceURI(this.current)!==i.HTML;)this.pop()}clearBackToTableBodyContext(){for(;this.currentTagName!==a.TBODY&&this.currentTagName!==a.TFOOT&&this.currentTagName!==a.THEAD&&this.currentTagName!==a.TEMPLATE&&this.currentTagName!==a.HTML||this.treeAdapter.getNamespaceURI(this.current)!==i.HTML;)this.pop()}clearBackToTableRowContext(){for(;this.currentTagName!==a.TR&&this.currentTagName!==a.TEMPLATE&&this.currentTagName!==a.HTML||this.treeAdapter.getNamespaceURI(this.current)!==i.HTML;)this.pop()}remove(e){for(let t=this.stackTop;t>=0;t--)if(this.items[t]===e){this.items.splice(t,1),this.stackTop--,this._updateCurrentElement();break}}tryPeekProperlyNestedBodyElement(){let e=this.items[1];return e&&this.treeAdapter.getTagName(e)===a.BODY?e:null}contains(e){return this._indexOf(e)>-1}getCommonAncestor(e){let t=this._indexOf(e);return--t>=0?this.items[t]:null}isRootHtmlElementCurrent(){return 0===this.stackTop&&this.currentTagName===a.HTML}hasInScope(e){for(let t=this.stackTop;t>=0;t--){let n=this.treeAdapter.getTagName(this.items[t]),r=this.treeAdapter.getNamespaceURI(this.items[t]);if(n===e&&r===i.HTML)break;if(s(n,r))return!1}return!0}hasNumberedHeaderInScope(){for(let e=this.stackTop;e>=0;e--){let t=this.treeAdapter.getTagName(this.items[e]),n=this.treeAdapter.getNamespaceURI(this.items[e]);if((t===a.H1||t===a.H2||t===a.H3||t===a.H4||t===a.H5||t===a.H6)&&n===i.HTML)break;if(s(t,n))return!1}return!0}hasInListItemScope(e){for(let t=this.stackTop;t>=0;t--){let n=this.treeAdapter.getTagName(this.items[t]),r=this.treeAdapter.getNamespaceURI(this.items[t]);if(n===e&&r===i.HTML)break;if((n===a.UL||n===a.OL)&&r===i.HTML||s(n,r))return!1}return!0}hasInButtonScope(e){for(let t=this.stackTop;t>=0;t--){let n=this.treeAdapter.getTagName(this.items[t]),r=this.treeAdapter.getNamespaceURI(this.items[t]);if(n===e&&r===i.HTML)break;if(n===a.BUTTON&&r===i.HTML||s(n,r))return!1}return!0}hasInTableScope(e){for(let t=this.stackTop;t>=0;t--){let n=this.treeAdapter.getTagName(this.items[t]),r=this.treeAdapter.getNamespaceURI(this.items[t]);if(r===i.HTML){if(n===e)break;if(n===a.TABLE||n===a.TEMPLATE||n===a.HTML)return!1}}return!0}hasTableBodyContextInTableScope(){for(let e=this.stackTop;e>=0;e--){let t=this.treeAdapter.getTagName(this.items[e]),n=this.treeAdapter.getNamespaceURI(this.items[e]);if(n===i.HTML){if(t===a.TBODY||t===a.THEAD||t===a.TFOOT)break;if(t===a.TABLE||t===a.HTML)return!1}}return!0}hasInSelectScope(e){for(let t=this.stackTop;t>=0;t--){let n=this.treeAdapter.getTagName(this.items[t]),r=this.treeAdapter.getNamespaceURI(this.items[t]);if(r===i.HTML){if(n===e)break;if(n!==a.OPTION&&n!==a.OPTGROUP)return!1}}return!0}generateImpliedEndTags(){for(;o(this.currentTagName);)this.pop()}generateImpliedEndTagsThoroughly(){for(;function(e){switch(e.length){case 1:return e===a.P;case 2:return e===a.RB||e===a.RP||e===a.RT||e===a.DD||e===a.DT||e===a.LI||e===a.TD||e===a.TH||e===a.TR;case 3:return e===a.RTC;case 5:return e===a.TBODY||e===a.TFOOT||e===a.THEAD;case 6:return e===a.OPTION;case 7:return e===a.CAPTION;case 8:return e===a.OPTGROUP||e===a.COLGROUP}return!1}(this.currentTagName);)this.pop()}generateImpliedEndTagsWithExclusion(e){for(;o(this.currentTagName)&&this.currentTagName!==e;)this.pop()}}},55763:function(e,t,n){"use strict";let r=n(77118),a=n(54284),i=n(5482),o=n(41734),s=a.CODE_POINTS,l=a.CODE_POINT_SEQUENCES,c={128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376},u="DATA_STATE",d="RCDATA_STATE",p="RAWTEXT_STATE",m="SCRIPT_DATA_STATE",g="PLAINTEXT_STATE",f="TAG_OPEN_STATE",h="END_TAG_OPEN_STATE",b="TAG_NAME_STATE",E="RCDATA_LESS_THAN_SIGN_STATE",T="RCDATA_END_TAG_OPEN_STATE",S="RCDATA_END_TAG_NAME_STATE",y="RAWTEXT_LESS_THAN_SIGN_STATE",A="RAWTEXT_END_TAG_OPEN_STATE",_="RAWTEXT_END_TAG_NAME_STATE",k="SCRIPT_DATA_LESS_THAN_SIGN_STATE",v="SCRIPT_DATA_END_TAG_OPEN_STATE",N="SCRIPT_DATA_END_TAG_NAME_STATE",C="SCRIPT_DATA_ESCAPE_START_STATE",R="SCRIPT_DATA_ESCAPE_START_DASH_STATE",I="SCRIPT_DATA_ESCAPED_STATE",O="SCRIPT_DATA_ESCAPED_DASH_STATE",w="SCRIPT_DATA_ESCAPED_DASH_DASH_STATE",x="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE",L="SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE",D="SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE",P="SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE",M="SCRIPT_DATA_DOUBLE_ESCAPED_STATE",F="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE",U="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE",B="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE",H="SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE",G="BEFORE_ATTRIBUTE_NAME_STATE",z="ATTRIBUTE_NAME_STATE",$="AFTER_ATTRIBUTE_NAME_STATE",j="BEFORE_ATTRIBUTE_VALUE_STATE",V="ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE",W="ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE",K="ATTRIBUTE_VALUE_UNQUOTED_STATE",Z="AFTER_ATTRIBUTE_VALUE_QUOTED_STATE",Y="SELF_CLOSING_START_TAG_STATE",q="BOGUS_COMMENT_STATE",X="MARKUP_DECLARATION_OPEN_STATE",Q="COMMENT_START_STATE",J="COMMENT_START_DASH_STATE",ee="COMMENT_STATE",et="COMMENT_LESS_THAN_SIGN_STATE",en="COMMENT_LESS_THAN_SIGN_BANG_STATE",er="COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE",ea="COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE",ei="COMMENT_END_DASH_STATE",eo="COMMENT_END_STATE",es="COMMENT_END_BANG_STATE",el="DOCTYPE_STATE",ec="BEFORE_DOCTYPE_NAME_STATE",eu="DOCTYPE_NAME_STATE",ed="AFTER_DOCTYPE_NAME_STATE",ep="AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE",em="BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE",eg="DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE",ef="DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE",eh="AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE",eb="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE",eE="AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE",eT="BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE",eS="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE",ey="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE",eA="AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE",e_="BOGUS_DOCTYPE_STATE",ek="CDATA_SECTION_STATE",ev="CDATA_SECTION_BRACKET_STATE",eN="CDATA_SECTION_END_STATE",eC="CHARACTER_REFERENCE_STATE",eR="NAMED_CHARACTER_REFERENCE_STATE",eI="AMBIGUOS_AMPERSAND_STATE",eO="NUMERIC_CHARACTER_REFERENCE_STATE",ew="HEXADEMICAL_CHARACTER_REFERENCE_START_STATE",ex="DECIMAL_CHARACTER_REFERENCE_START_STATE",eL="HEXADEMICAL_CHARACTER_REFERENCE_STATE",eD="DECIMAL_CHARACTER_REFERENCE_STATE",eP="NUMERIC_CHARACTER_REFERENCE_END_STATE";function eM(e){return e===s.SPACE||e===s.LINE_FEED||e===s.TABULATION||e===s.FORM_FEED}function eF(e){return e>=s.DIGIT_0&&e<=s.DIGIT_9}function eU(e){return e>=s.LATIN_CAPITAL_A&&e<=s.LATIN_CAPITAL_Z}function eB(e){return e>=s.LATIN_SMALL_A&&e<=s.LATIN_SMALL_Z}function eH(e){return eB(e)||eU(e)}function eG(e){return eH(e)||eF(e)}function ez(e){return e>=s.LATIN_CAPITAL_A&&e<=s.LATIN_CAPITAL_F}function e$(e){return e>=s.LATIN_SMALL_A&&e<=s.LATIN_SMALL_F}function ej(e){return e<=65535?String.fromCharCode(e):String.fromCharCode((e-=65536)>>>10&1023|55296)+String.fromCharCode(56320|1023&e)}function eV(e){return String.fromCharCode(e+32)}function eW(e,t){let n=i[++e],r=++e,a=r+n-1;for(;r<=a;){let e=r+a>>>1,o=i[e];if(ot))return i[e+n];a=e-1}}return -1}class eK{constructor(){this.preprocessor=new r,this.tokenQueue=[],this.allowCDATA=!1,this.state=u,this.returnState="",this.charRefCode=-1,this.tempBuff=[],this.lastStartTagName="",this.consumedAfterSnapshot=-1,this.active=!1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr=null}_err(){}_errOnNextCodePoint(e){this._consume(),this._err(e),this._unconsume()}getNextToken(){for(;!this.tokenQueue.length&&this.active;){this.consumedAfterSnapshot=0;let e=this._consume();this._ensureHibernation()||this[this.state](e)}return this.tokenQueue.shift()}write(e,t){this.active=!0,this.preprocessor.write(e,t)}insertHtmlAtCurrentPos(e){this.active=!0,this.preprocessor.insertHtmlAtCurrentPos(e)}_ensureHibernation(){if(this.preprocessor.endOfChunkHit){for(;this.consumedAfterSnapshot>0;this.consumedAfterSnapshot--)this.preprocessor.retreat();return this.active=!1,this.tokenQueue.push({type:eK.HIBERNATION_TOKEN}),!0}return!1}_consume(){return this.consumedAfterSnapshot++,this.preprocessor.advance()}_unconsume(){this.consumedAfterSnapshot--,this.preprocessor.retreat()}_reconsumeInState(e){this.state=e,this._unconsume()}_consumeSequenceIfMatch(e,t,n){let r,a=0,i=!0,o=e.length,l=0,c=t;for(;l0&&(c=this._consume(),a++),c===s.EOF||c!==(r=e[l])&&(n||c!==r+32)){i=!1;break}if(!i)for(;a--;)this._unconsume();return i}_isTempBufferEqualToScriptString(){if(this.tempBuff.length!==l.SCRIPT_STRING.length)return!1;for(let e=0;e0&&this._err(o.endTagWithAttributes),e.selfClosing&&this._err(o.endTagWithTrailingSolidus)),this.tokenQueue.push(e)}_emitCurrentCharacterToken(){this.currentCharacterToken&&(this.tokenQueue.push(this.currentCharacterToken),this.currentCharacterToken=null)}_emitEOFToken(){this._createEOFToken(),this._emitCurrentToken()}_appendCharToCurrentCharacterToken(e,t){this.currentCharacterToken&&this.currentCharacterToken.type!==e&&this._emitCurrentCharacterToken(),this.currentCharacterToken?this.currentCharacterToken.chars+=t:this._createCharacterToken(e,t)}_emitCodePoint(e){let t=eK.CHARACTER_TOKEN;eM(e)?t=eK.WHITESPACE_CHARACTER_TOKEN:e===s.NULL&&(t=eK.NULL_CHARACTER_TOKEN),this._appendCharToCurrentCharacterToken(t,ej(e))}_emitSeveralCodePoints(e){for(let t=0;t-1;){let e=i[r],a=e<7,o=a&&1&e;o&&(t=2&e?[i[++r],i[++r]]:[i[++r]],n=0);let l=this._consume();if(this.tempBuff.push(l),n++,l===s.EOF)break;r=a?4&e?eW(r,l):-1:l===e?++r:-1}for(;n--;)this.tempBuff.pop(),this._unconsume();return t}_isCharacterReferenceInAttribute(){return this.returnState===V||this.returnState===W||this.returnState===K}_isCharacterReferenceAttributeQuirk(e){if(!e&&this._isCharacterReferenceInAttribute()){let e=this._consume();return this._unconsume(),e===s.EQUALS_SIGN||eG(e)}return!1}_flushCodePointsConsumedAsCharacterReference(){if(this._isCharacterReferenceInAttribute())for(let e=0;e")):e===s.NULL?(this._err(o.unexpectedNullCharacter),this.state=I,this._emitChars(a.REPLACEMENT_CHARACTER)):e===s.EOF?(this._err(o.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):(this.state=I,this._emitCodePoint(e))}[x](e){e===s.SOLIDUS?(this.tempBuff=[],this.state=L):eH(e)?(this.tempBuff=[],this._emitChars("<"),this._reconsumeInState(P)):(this._emitChars("<"),this._reconsumeInState(I))}[L](e){eH(e)?(this._createEndTagToken(),this._reconsumeInState(D)):(this._emitChars("")):e===s.NULL?(this._err(o.unexpectedNullCharacter),this.state=M,this._emitChars(a.REPLACEMENT_CHARACTER)):e===s.EOF?(this._err(o.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):(this.state=M,this._emitCodePoint(e))}[B](e){e===s.SOLIDUS?(this.tempBuff=[],this.state=H,this._emitChars("/")):this._reconsumeInState(M)}[H](e){eM(e)||e===s.SOLIDUS||e===s.GREATER_THAN_SIGN?(this.state=this._isTempBufferEqualToScriptString()?I:M,this._emitCodePoint(e)):eU(e)?(this.tempBuff.push(e+32),this._emitCodePoint(e)):eB(e)?(this.tempBuff.push(e),this._emitCodePoint(e)):this._reconsumeInState(M)}[G](e){eM(e)||(e===s.SOLIDUS||e===s.GREATER_THAN_SIGN||e===s.EOF?this._reconsumeInState($):e===s.EQUALS_SIGN?(this._err(o.unexpectedEqualsSignBeforeAttributeName),this._createAttr("="),this.state=z):(this._createAttr(""),this._reconsumeInState(z)))}[z](e){eM(e)||e===s.SOLIDUS||e===s.GREATER_THAN_SIGN||e===s.EOF?(this._leaveAttrName($),this._unconsume()):e===s.EQUALS_SIGN?this._leaveAttrName(j):eU(e)?this.currentAttr.name+=eV(e):e===s.QUOTATION_MARK||e===s.APOSTROPHE||e===s.LESS_THAN_SIGN?(this._err(o.unexpectedCharacterInAttributeName),this.currentAttr.name+=ej(e)):e===s.NULL?(this._err(o.unexpectedNullCharacter),this.currentAttr.name+=a.REPLACEMENT_CHARACTER):this.currentAttr.name+=ej(e)}[$](e){eM(e)||(e===s.SOLIDUS?this.state=Y:e===s.EQUALS_SIGN?this.state=j:e===s.GREATER_THAN_SIGN?(this.state=u,this._emitCurrentToken()):e===s.EOF?(this._err(o.eofInTag),this._emitEOFToken()):(this._createAttr(""),this._reconsumeInState(z)))}[j](e){eM(e)||(e===s.QUOTATION_MARK?this.state=V:e===s.APOSTROPHE?this.state=W:e===s.GREATER_THAN_SIGN?(this._err(o.missingAttributeValue),this.state=u,this._emitCurrentToken()):this._reconsumeInState(K))}[V](e){e===s.QUOTATION_MARK?this.state=Z:e===s.AMPERSAND?(this.returnState=V,this.state=eC):e===s.NULL?(this._err(o.unexpectedNullCharacter),this.currentAttr.value+=a.REPLACEMENT_CHARACTER):e===s.EOF?(this._err(o.eofInTag),this._emitEOFToken()):this.currentAttr.value+=ej(e)}[W](e){e===s.APOSTROPHE?this.state=Z:e===s.AMPERSAND?(this.returnState=W,this.state=eC):e===s.NULL?(this._err(o.unexpectedNullCharacter),this.currentAttr.value+=a.REPLACEMENT_CHARACTER):e===s.EOF?(this._err(o.eofInTag),this._emitEOFToken()):this.currentAttr.value+=ej(e)}[K](e){eM(e)?this._leaveAttrValue(G):e===s.AMPERSAND?(this.returnState=K,this.state=eC):e===s.GREATER_THAN_SIGN?(this._leaveAttrValue(u),this._emitCurrentToken()):e===s.NULL?(this._err(o.unexpectedNullCharacter),this.currentAttr.value+=a.REPLACEMENT_CHARACTER):e===s.QUOTATION_MARK||e===s.APOSTROPHE||e===s.LESS_THAN_SIGN||e===s.EQUALS_SIGN||e===s.GRAVE_ACCENT?(this._err(o.unexpectedCharacterInUnquotedAttributeValue),this.currentAttr.value+=ej(e)):e===s.EOF?(this._err(o.eofInTag),this._emitEOFToken()):this.currentAttr.value+=ej(e)}[Z](e){eM(e)?this._leaveAttrValue(G):e===s.SOLIDUS?this._leaveAttrValue(Y):e===s.GREATER_THAN_SIGN?(this._leaveAttrValue(u),this._emitCurrentToken()):e===s.EOF?(this._err(o.eofInTag),this._emitEOFToken()):(this._err(o.missingWhitespaceBetweenAttributes),this._reconsumeInState(G))}[Y](e){e===s.GREATER_THAN_SIGN?(this.currentToken.selfClosing=!0,this.state=u,this._emitCurrentToken()):e===s.EOF?(this._err(o.eofInTag),this._emitEOFToken()):(this._err(o.unexpectedSolidusInTag),this._reconsumeInState(G))}[q](e){e===s.GREATER_THAN_SIGN?(this.state=u,this._emitCurrentToken()):e===s.EOF?(this._emitCurrentToken(),this._emitEOFToken()):e===s.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.data+=a.REPLACEMENT_CHARACTER):this.currentToken.data+=ej(e)}[X](e){this._consumeSequenceIfMatch(l.DASH_DASH_STRING,e,!0)?(this._createCommentToken(),this.state=Q):this._consumeSequenceIfMatch(l.DOCTYPE_STRING,e,!1)?this.state=el:this._consumeSequenceIfMatch(l.CDATA_START_STRING,e,!0)?this.allowCDATA?this.state=ek:(this._err(o.cdataInHtmlContent),this._createCommentToken(),this.currentToken.data="[CDATA[",this.state=q):this._ensureHibernation()||(this._err(o.incorrectlyOpenedComment),this._createCommentToken(),this._reconsumeInState(q))}[Q](e){e===s.HYPHEN_MINUS?this.state=J:e===s.GREATER_THAN_SIGN?(this._err(o.abruptClosingOfEmptyComment),this.state=u,this._emitCurrentToken()):this._reconsumeInState(ee)}[J](e){e===s.HYPHEN_MINUS?this.state=eo:e===s.GREATER_THAN_SIGN?(this._err(o.abruptClosingOfEmptyComment),this.state=u,this._emitCurrentToken()):e===s.EOF?(this._err(o.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="-",this._reconsumeInState(ee))}[ee](e){e===s.HYPHEN_MINUS?this.state=ei:e===s.LESS_THAN_SIGN?(this.currentToken.data+="<",this.state=et):e===s.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.data+=a.REPLACEMENT_CHARACTER):e===s.EOF?(this._err(o.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.data+=ej(e)}[et](e){e===s.EXCLAMATION_MARK?(this.currentToken.data+="!",this.state=en):e===s.LESS_THAN_SIGN?this.currentToken.data+="!":this._reconsumeInState(ee)}[en](e){e===s.HYPHEN_MINUS?this.state=er:this._reconsumeInState(ee)}[er](e){e===s.HYPHEN_MINUS?this.state=ea:this._reconsumeInState(ei)}[ea](e){e!==s.GREATER_THAN_SIGN&&e!==s.EOF&&this._err(o.nestedComment),this._reconsumeInState(eo)}[ei](e){e===s.HYPHEN_MINUS?this.state=eo:e===s.EOF?(this._err(o.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="-",this._reconsumeInState(ee))}[eo](e){e===s.GREATER_THAN_SIGN?(this.state=u,this._emitCurrentToken()):e===s.EXCLAMATION_MARK?this.state=es:e===s.HYPHEN_MINUS?this.currentToken.data+="-":e===s.EOF?(this._err(o.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="--",this._reconsumeInState(ee))}[es](e){e===s.HYPHEN_MINUS?(this.currentToken.data+="--!",this.state=ei):e===s.GREATER_THAN_SIGN?(this._err(o.incorrectlyClosedComment),this.state=u,this._emitCurrentToken()):e===s.EOF?(this._err(o.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="--!",this._reconsumeInState(ee))}[el](e){eM(e)?this.state=ec:e===s.GREATER_THAN_SIGN?this._reconsumeInState(ec):e===s.EOF?(this._err(o.eofInDoctype),this._createDoctypeToken(null),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.missingWhitespaceBeforeDoctypeName),this._reconsumeInState(ec))}[ec](e){eM(e)||(eU(e)?(this._createDoctypeToken(eV(e)),this.state=eu):e===s.NULL?(this._err(o.unexpectedNullCharacter),this._createDoctypeToken(a.REPLACEMENT_CHARACTER),this.state=eu):e===s.GREATER_THAN_SIGN?(this._err(o.missingDoctypeName),this._createDoctypeToken(null),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=u):e===s.EOF?(this._err(o.eofInDoctype),this._createDoctypeToken(null),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._createDoctypeToken(ej(e)),this.state=eu))}[eu](e){eM(e)?this.state=ed:e===s.GREATER_THAN_SIGN?(this.state=u,this._emitCurrentToken()):eU(e)?this.currentToken.name+=eV(e):e===s.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.name+=a.REPLACEMENT_CHARACTER):e===s.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.name+=ej(e)}[ed](e){!eM(e)&&(e===s.GREATER_THAN_SIGN?(this.state=u,this._emitCurrentToken()):e===s.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this._consumeSequenceIfMatch(l.PUBLIC_STRING,e,!1)?this.state=ep:this._consumeSequenceIfMatch(l.SYSTEM_STRING,e,!1)?this.state=eE:this._ensureHibernation()||(this._err(o.invalidCharacterSequenceAfterDoctypeName),this.currentToken.forceQuirks=!0,this._reconsumeInState(e_)))}[ep](e){eM(e)?this.state=em:e===s.QUOTATION_MARK?(this._err(o.missingWhitespaceAfterDoctypePublicKeyword),this.currentToken.publicId="",this.state=eg):e===s.APOSTROPHE?(this._err(o.missingWhitespaceAfterDoctypePublicKeyword),this.currentToken.publicId="",this.state=ef):e===s.GREATER_THAN_SIGN?(this._err(o.missingDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this.state=u,this._emitCurrentToken()):e===s.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.missingQuoteBeforeDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(e_))}[em](e){eM(e)||(e===s.QUOTATION_MARK?(this.currentToken.publicId="",this.state=eg):e===s.APOSTROPHE?(this.currentToken.publicId="",this.state=ef):e===s.GREATER_THAN_SIGN?(this._err(o.missingDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this.state=u,this._emitCurrentToken()):e===s.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.missingQuoteBeforeDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(e_)))}[eg](e){e===s.QUOTATION_MARK?this.state=eh:e===s.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.publicId+=a.REPLACEMENT_CHARACTER):e===s.GREATER_THAN_SIGN?(this._err(o.abruptDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=u):e===s.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.publicId+=ej(e)}[ef](e){e===s.APOSTROPHE?this.state=eh:e===s.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.publicId+=a.REPLACEMENT_CHARACTER):e===s.GREATER_THAN_SIGN?(this._err(o.abruptDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=u):e===s.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.publicId+=ej(e)}[eh](e){eM(e)?this.state=eb:e===s.GREATER_THAN_SIGN?(this.state=u,this._emitCurrentToken()):e===s.QUOTATION_MARK?(this._err(o.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),this.currentToken.systemId="",this.state=eS):e===s.APOSTROPHE?(this._err(o.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),this.currentToken.systemId="",this.state=ey):e===s.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(e_))}[eb](e){eM(e)||(e===s.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=u):e===s.QUOTATION_MARK?(this.currentToken.systemId="",this.state=eS):e===s.APOSTROPHE?(this.currentToken.systemId="",this.state=ey):e===s.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(e_)))}[eE](e){eM(e)?this.state=eT:e===s.QUOTATION_MARK?(this._err(o.missingWhitespaceAfterDoctypeSystemKeyword),this.currentToken.systemId="",this.state=eS):e===s.APOSTROPHE?(this._err(o.missingWhitespaceAfterDoctypeSystemKeyword),this.currentToken.systemId="",this.state=ey):e===s.GREATER_THAN_SIGN?(this._err(o.missingDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this.state=u,this._emitCurrentToken()):e===s.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(e_))}[eT](e){eM(e)||(e===s.QUOTATION_MARK?(this.currentToken.systemId="",this.state=eS):e===s.APOSTROPHE?(this.currentToken.systemId="",this.state=ey):e===s.GREATER_THAN_SIGN?(this._err(o.missingDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this.state=u,this._emitCurrentToken()):e===s.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(e_)))}[eS](e){e===s.QUOTATION_MARK?this.state=eA:e===s.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.systemId+=a.REPLACEMENT_CHARACTER):e===s.GREATER_THAN_SIGN?(this._err(o.abruptDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=u):e===s.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.systemId+=ej(e)}[ey](e){e===s.APOSTROPHE?this.state=eA:e===s.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.systemId+=a.REPLACEMENT_CHARACTER):e===s.GREATER_THAN_SIGN?(this._err(o.abruptDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=u):e===s.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.systemId+=ej(e)}[eA](e){eM(e)||(e===s.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=u):e===s.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.unexpectedCharacterAfterDoctypeSystemIdentifier),this._reconsumeInState(e_)))}[e_](e){e===s.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=u):e===s.NULL?this._err(o.unexpectedNullCharacter):e===s.EOF&&(this._emitCurrentToken(),this._emitEOFToken())}[ek](e){e===s.RIGHT_SQUARE_BRACKET?this.state=ev:e===s.EOF?(this._err(o.eofInCdata),this._emitEOFToken()):this._emitCodePoint(e)}[ev](e){e===s.RIGHT_SQUARE_BRACKET?this.state=eN:(this._emitChars("]"),this._reconsumeInState(ek))}[eN](e){e===s.GREATER_THAN_SIGN?this.state=u:e===s.RIGHT_SQUARE_BRACKET?this._emitChars("]"):(this._emitChars("]]"),this._reconsumeInState(ek))}[eC](e){this.tempBuff=[s.AMPERSAND],e===s.NUMBER_SIGN?(this.tempBuff.push(e),this.state=eO):eG(e)?this._reconsumeInState(eR):(this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState))}[eR](e){let t=this._matchNamedCharacterReference(e);if(this._ensureHibernation())this.tempBuff=[s.AMPERSAND];else if(t){let e=this.tempBuff[this.tempBuff.length-1]===s.SEMICOLON;this._isCharacterReferenceAttributeQuirk(e)||(e||this._errOnNextCodePoint(o.missingSemicolonAfterCharacterReference),this.tempBuff=t),this._flushCodePointsConsumedAsCharacterReference(),this.state=this.returnState}else this._flushCodePointsConsumedAsCharacterReference(),this.state=eI}[eI](e){eG(e)?this._isCharacterReferenceInAttribute()?this.currentAttr.value+=ej(e):this._emitCodePoint(e):(e===s.SEMICOLON&&this._err(o.unknownNamedCharacterReference),this._reconsumeInState(this.returnState))}[eO](e){this.charRefCode=0,e===s.LATIN_SMALL_X||e===s.LATIN_CAPITAL_X?(this.tempBuff.push(e),this.state=ew):this._reconsumeInState(ex)}[ew](e){eF(e)||ez(e)||e$(e)?this._reconsumeInState(eL):(this._err(o.absenceOfDigitsInNumericCharacterReference),this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState))}[ex](e){eF(e)?this._reconsumeInState(eD):(this._err(o.absenceOfDigitsInNumericCharacterReference),this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState))}[eL](e){ez(e)?this.charRefCode=16*this.charRefCode+e-55:e$(e)?this.charRefCode=16*this.charRefCode+e-87:eF(e)?this.charRefCode=16*this.charRefCode+e-48:e===s.SEMICOLON?this.state=eP:(this._err(o.missingSemicolonAfterCharacterReference),this._reconsumeInState(eP))}[eD](e){eF(e)?this.charRefCode=10*this.charRefCode+e-48:e===s.SEMICOLON?this.state=eP:(this._err(o.missingSemicolonAfterCharacterReference),this._reconsumeInState(eP))}[eP](){if(this.charRefCode===s.NULL)this._err(o.nullCharacterReference),this.charRefCode=s.REPLACEMENT_CHARACTER;else if(this.charRefCode>1114111)this._err(o.characterReferenceOutsideUnicodeRange),this.charRefCode=s.REPLACEMENT_CHARACTER;else if(a.isSurrogate(this.charRefCode))this._err(o.surrogateCharacterReference),this.charRefCode=s.REPLACEMENT_CHARACTER;else if(a.isUndefinedCodePoint(this.charRefCode))this._err(o.noncharacterCharacterReference);else if(a.isControlCodePoint(this.charRefCode)||this.charRefCode===s.CARRIAGE_RETURN){this._err(o.controlCharacterReference);let e=c[this.charRefCode];e&&(this.charRefCode=e)}this.tempBuff=[this.charRefCode],this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState)}}eK.CHARACTER_TOKEN="CHARACTER_TOKEN",eK.NULL_CHARACTER_TOKEN="NULL_CHARACTER_TOKEN",eK.WHITESPACE_CHARACTER_TOKEN="WHITESPACE_CHARACTER_TOKEN",eK.START_TAG_TOKEN="START_TAG_TOKEN",eK.END_TAG_TOKEN="END_TAG_TOKEN",eK.COMMENT_TOKEN="COMMENT_TOKEN",eK.DOCTYPE_TOKEN="DOCTYPE_TOKEN",eK.EOF_TOKEN="EOF_TOKEN",eK.HIBERNATION_TOKEN="HIBERNATION_TOKEN",eK.MODE={DATA:u,RCDATA:d,RAWTEXT:p,SCRIPT_DATA:m,PLAINTEXT:g},eK.getTokenAttr=function(e,t){for(let n=e.attrs.length-1;n>=0;n--)if(e.attrs[n].name===t)return e.attrs[n].value;return null},e.exports=eK},5482:function(e){"use strict";e.exports=new Uint16Array([4,52,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,106,303,412,810,1432,1701,1796,1987,2114,2360,2420,2484,3170,3251,4140,4393,4575,4610,5106,5512,5728,6117,6274,6315,6345,6427,6516,7002,7910,8733,9323,9870,10170,10631,10893,11318,11386,11467,12773,13092,14474,14922,15448,15542,16419,17666,18166,18611,19004,19095,19298,19397,4,16,69,77,97,98,99,102,103,108,109,110,111,112,114,115,116,117,140,150,158,169,176,194,199,210,216,222,226,242,256,266,283,294,108,105,103,5,198,1,59,148,1,198,80,5,38,1,59,156,1,38,99,117,116,101,5,193,1,59,167,1,193,114,101,118,101,59,1,258,4,2,105,121,182,191,114,99,5,194,1,59,189,1,194,59,1,1040,114,59,3,55349,56580,114,97,118,101,5,192,1,59,208,1,192,112,104,97,59,1,913,97,99,114,59,1,256,100,59,1,10835,4,2,103,112,232,237,111,110,59,1,260,102,59,3,55349,56632,112,108,121,70,117,110,99,116,105,111,110,59,1,8289,105,110,103,5,197,1,59,264,1,197,4,2,99,115,272,277,114,59,3,55349,56476,105,103,110,59,1,8788,105,108,100,101,5,195,1,59,292,1,195,109,108,5,196,1,59,301,1,196,4,8,97,99,101,102,111,114,115,117,321,350,354,383,388,394,400,405,4,2,99,114,327,336,107,115,108,97,115,104,59,1,8726,4,2,118,119,342,345,59,1,10983,101,100,59,1,8966,121,59,1,1041,4,3,99,114,116,362,369,379,97,117,115,101,59,1,8757,110,111,117,108,108,105,115,59,1,8492,97,59,1,914,114,59,3,55349,56581,112,102,59,3,55349,56633,101,118,101,59,1,728,99,114,59,1,8492,109,112,101,113,59,1,8782,4,14,72,79,97,99,100,101,102,104,105,108,111,114,115,117,442,447,456,504,542,547,569,573,577,616,678,784,790,796,99,121,59,1,1063,80,89,5,169,1,59,454,1,169,4,3,99,112,121,464,470,497,117,116,101,59,1,262,4,2,59,105,476,478,1,8914,116,97,108,68,105,102,102,101,114,101,110,116,105,97,108,68,59,1,8517,108,101,121,115,59,1,8493,4,4,97,101,105,111,514,520,530,535,114,111,110,59,1,268,100,105,108,5,199,1,59,528,1,199,114,99,59,1,264,110,105,110,116,59,1,8752,111,116,59,1,266,4,2,100,110,553,560,105,108,108,97,59,1,184,116,101,114,68,111,116,59,1,183,114,59,1,8493,105,59,1,935,114,99,108,101,4,4,68,77,80,84,591,596,603,609,111,116,59,1,8857,105,110,117,115,59,1,8854,108,117,115,59,1,8853,105,109,101,115,59,1,8855,111,4,2,99,115,623,646,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8754,101,67,117,114,108,121,4,2,68,81,658,671,111,117,98,108,101,81,117,111,116,101,59,1,8221,117,111,116,101,59,1,8217,4,4,108,110,112,117,688,701,736,753,111,110,4,2,59,101,696,698,1,8759,59,1,10868,4,3,103,105,116,709,717,722,114,117,101,110,116,59,1,8801,110,116,59,1,8751,111,117,114,73,110,116,101,103,114,97,108,59,1,8750,4,2,102,114,742,745,59,1,8450,111,100,117,99,116,59,1,8720,110,116,101,114,67,108,111,99,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8755,111,115,115,59,1,10799,99,114,59,3,55349,56478,112,4,2,59,67,803,805,1,8915,97,112,59,1,8781,4,11,68,74,83,90,97,99,101,102,105,111,115,834,850,855,860,865,888,903,916,921,1011,1415,4,2,59,111,840,842,1,8517,116,114,97,104,100,59,1,10513,99,121,59,1,1026,99,121,59,1,1029,99,121,59,1,1039,4,3,103,114,115,873,879,883,103,101,114,59,1,8225,114,59,1,8609,104,118,59,1,10980,4,2,97,121,894,900,114,111,110,59,1,270,59,1,1044,108,4,2,59,116,910,912,1,8711,97,59,1,916,114,59,3,55349,56583,4,2,97,102,927,998,4,2,99,109,933,992,114,105,116,105,99,97,108,4,4,65,68,71,84,950,957,978,985,99,117,116,101,59,1,180,111,4,2,116,117,964,967,59,1,729,98,108,101,65,99,117,116,101,59,1,733,114,97,118,101,59,1,96,105,108,100,101,59,1,732,111,110,100,59,1,8900,102,101,114,101,110,116,105,97,108,68,59,1,8518,4,4,112,116,117,119,1021,1026,1048,1249,102,59,3,55349,56635,4,3,59,68,69,1034,1036,1041,1,168,111,116,59,1,8412,113,117,97,108,59,1,8784,98,108,101,4,6,67,68,76,82,85,86,1065,1082,1101,1189,1211,1236,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8751,111,4,2,116,119,1089,1092,59,1,168,110,65,114,114,111,119,59,1,8659,4,2,101,111,1107,1141,102,116,4,3,65,82,84,1117,1124,1136,114,114,111,119,59,1,8656,105,103,104,116,65,114,114,111,119,59,1,8660,101,101,59,1,10980,110,103,4,2,76,82,1149,1177,101,102,116,4,2,65,82,1158,1165,114,114,111,119,59,1,10232,105,103,104,116,65,114,114,111,119,59,1,10234,105,103,104,116,65,114,114,111,119,59,1,10233,105,103,104,116,4,2,65,84,1199,1206,114,114,111,119,59,1,8658,101,101,59,1,8872,112,4,2,65,68,1218,1225,114,114,111,119,59,1,8657,111,119,110,65,114,114,111,119,59,1,8661,101,114,116,105,99,97,108,66,97,114,59,1,8741,110,4,6,65,66,76,82,84,97,1264,1292,1299,1352,1391,1408,114,114,111,119,4,3,59,66,85,1276,1278,1283,1,8595,97,114,59,1,10515,112,65,114,114,111,119,59,1,8693,114,101,118,101,59,1,785,101,102,116,4,3,82,84,86,1310,1323,1334,105,103,104,116,86,101,99,116,111,114,59,1,10576,101,101,86,101,99,116,111,114,59,1,10590,101,99,116,111,114,4,2,59,66,1345,1347,1,8637,97,114,59,1,10582,105,103,104,116,4,2,84,86,1362,1373,101,101,86,101,99,116,111,114,59,1,10591,101,99,116,111,114,4,2,59,66,1384,1386,1,8641,97,114,59,1,10583,101,101,4,2,59,65,1399,1401,1,8868,114,114,111,119,59,1,8615,114,114,111,119,59,1,8659,4,2,99,116,1421,1426,114,59,3,55349,56479,114,111,107,59,1,272,4,16,78,84,97,99,100,102,103,108,109,111,112,113,115,116,117,120,1466,1470,1478,1489,1515,1520,1525,1536,1544,1593,1609,1617,1650,1664,1668,1677,71,59,1,330,72,5,208,1,59,1476,1,208,99,117,116,101,5,201,1,59,1487,1,201,4,3,97,105,121,1497,1503,1512,114,111,110,59,1,282,114,99,5,202,1,59,1510,1,202,59,1,1069,111,116,59,1,278,114,59,3,55349,56584,114,97,118,101,5,200,1,59,1534,1,200,101,109,101,110,116,59,1,8712,4,2,97,112,1550,1555,99,114,59,1,274,116,121,4,2,83,86,1563,1576,109,97,108,108,83,113,117,97,114,101,59,1,9723,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9643,4,2,103,112,1599,1604,111,110,59,1,280,102,59,3,55349,56636,115,105,108,111,110,59,1,917,117,4,2,97,105,1624,1640,108,4,2,59,84,1631,1633,1,10869,105,108,100,101,59,1,8770,108,105,98,114,105,117,109,59,1,8652,4,2,99,105,1656,1660,114,59,1,8496,109,59,1,10867,97,59,1,919,109,108,5,203,1,59,1675,1,203,4,2,105,112,1683,1689,115,116,115,59,1,8707,111,110,101,110,116,105,97,108,69,59,1,8519,4,5,99,102,105,111,115,1713,1717,1722,1762,1791,121,59,1,1060,114,59,3,55349,56585,108,108,101,100,4,2,83,86,1732,1745,109,97,108,108,83,113,117,97,114,101,59,1,9724,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9642,4,3,112,114,117,1770,1775,1781,102,59,3,55349,56637,65,108,108,59,1,8704,114,105,101,114,116,114,102,59,1,8497,99,114,59,1,8497,4,12,74,84,97,98,99,100,102,103,111,114,115,116,1822,1827,1834,1848,1855,1877,1882,1887,1890,1896,1978,1984,99,121,59,1,1027,5,62,1,59,1832,1,62,109,109,97,4,2,59,100,1843,1845,1,915,59,1,988,114,101,118,101,59,1,286,4,3,101,105,121,1863,1869,1874,100,105,108,59,1,290,114,99,59,1,284,59,1,1043,111,116,59,1,288,114,59,3,55349,56586,59,1,8921,112,102,59,3,55349,56638,101,97,116,101,114,4,6,69,70,71,76,83,84,1915,1933,1944,1953,1959,1971,113,117,97,108,4,2,59,76,1925,1927,1,8805,101,115,115,59,1,8923,117,108,108,69,113,117,97,108,59,1,8807,114,101,97,116,101,114,59,1,10914,101,115,115,59,1,8823,108,97,110,116,69,113,117,97,108,59,1,10878,105,108,100,101,59,1,8819,99,114,59,3,55349,56482,59,1,8811,4,8,65,97,99,102,105,111,115,117,2005,2012,2026,2032,2036,2049,2073,2089,82,68,99,121,59,1,1066,4,2,99,116,2018,2023,101,107,59,1,711,59,1,94,105,114,99,59,1,292,114,59,1,8460,108,98,101,114,116,83,112,97,99,101,59,1,8459,4,2,112,114,2055,2059,102,59,1,8461,105,122,111,110,116,97,108,76,105,110,101,59,1,9472,4,2,99,116,2079,2083,114,59,1,8459,114,111,107,59,1,294,109,112,4,2,68,69,2097,2107,111,119,110,72,117,109,112,59,1,8782,113,117,97,108,59,1,8783,4,14,69,74,79,97,99,100,102,103,109,110,111,115,116,117,2144,2149,2155,2160,2171,2189,2194,2198,2209,2245,2307,2329,2334,2341,99,121,59,1,1045,108,105,103,59,1,306,99,121,59,1,1025,99,117,116,101,5,205,1,59,2169,1,205,4,2,105,121,2177,2186,114,99,5,206,1,59,2184,1,206,59,1,1048,111,116,59,1,304,114,59,1,8465,114,97,118,101,5,204,1,59,2207,1,204,4,3,59,97,112,2217,2219,2238,1,8465,4,2,99,103,2225,2229,114,59,1,298,105,110,97,114,121,73,59,1,8520,108,105,101,115,59,1,8658,4,2,116,118,2251,2281,4,2,59,101,2257,2259,1,8748,4,2,103,114,2265,2271,114,97,108,59,1,8747,115,101,99,116,105,111,110,59,1,8898,105,115,105,98,108,101,4,2,67,84,2293,2300,111,109,109,97,59,1,8291,105,109,101,115,59,1,8290,4,3,103,112,116,2315,2320,2325,111,110,59,1,302,102,59,3,55349,56640,97,59,1,921,99,114,59,1,8464,105,108,100,101,59,1,296,4,2,107,109,2347,2352,99,121,59,1,1030,108,5,207,1,59,2358,1,207,4,5,99,102,111,115,117,2372,2386,2391,2397,2414,4,2,105,121,2378,2383,114,99,59,1,308,59,1,1049,114,59,3,55349,56589,112,102,59,3,55349,56641,4,2,99,101,2403,2408,114,59,3,55349,56485,114,99,121,59,1,1032,107,99,121,59,1,1028,4,7,72,74,97,99,102,111,115,2436,2441,2446,2452,2467,2472,2478,99,121,59,1,1061,99,121,59,1,1036,112,112,97,59,1,922,4,2,101,121,2458,2464,100,105,108,59,1,310,59,1,1050,114,59,3,55349,56590,112,102,59,3,55349,56642,99,114,59,3,55349,56486,4,11,74,84,97,99,101,102,108,109,111,115,116,2508,2513,2520,2562,2585,2981,2986,3004,3011,3146,3167,99,121,59,1,1033,5,60,1,59,2518,1,60,4,5,99,109,110,112,114,2532,2538,2544,2548,2558,117,116,101,59,1,313,98,100,97,59,1,923,103,59,1,10218,108,97,99,101,116,114,102,59,1,8466,114,59,1,8606,4,3,97,101,121,2570,2576,2582,114,111,110,59,1,317,100,105,108,59,1,315,59,1,1051,4,2,102,115,2591,2907,116,4,10,65,67,68,70,82,84,85,86,97,114,2614,2663,2672,2728,2735,2760,2820,2870,2888,2895,4,2,110,114,2620,2633,103,108,101,66,114,97,99,107,101,116,59,1,10216,114,111,119,4,3,59,66,82,2644,2646,2651,1,8592,97,114,59,1,8676,105,103,104,116,65,114,114,111,119,59,1,8646,101,105,108,105,110,103,59,1,8968,111,4,2,117,119,2679,2692,98,108,101,66,114,97,99,107,101,116,59,1,10214,110,4,2,84,86,2699,2710,101,101,86,101,99,116,111,114,59,1,10593,101,99,116,111,114,4,2,59,66,2721,2723,1,8643,97,114,59,1,10585,108,111,111,114,59,1,8970,105,103,104,116,4,2,65,86,2745,2752,114,114,111,119,59,1,8596,101,99,116,111,114,59,1,10574,4,2,101,114,2766,2792,101,4,3,59,65,86,2775,2777,2784,1,8867,114,114,111,119,59,1,8612,101,99,116,111,114,59,1,10586,105,97,110,103,108,101,4,3,59,66,69,2806,2808,2813,1,8882,97,114,59,1,10703,113,117,97,108,59,1,8884,112,4,3,68,84,86,2829,2841,2852,111,119,110,86,101,99,116,111,114,59,1,10577,101,101,86,101,99,116,111,114,59,1,10592,101,99,116,111,114,4,2,59,66,2863,2865,1,8639,97,114,59,1,10584,101,99,116,111,114,4,2,59,66,2881,2883,1,8636,97,114,59,1,10578,114,114,111,119,59,1,8656,105,103,104,116,97,114,114,111,119,59,1,8660,115,4,6,69,70,71,76,83,84,2922,2936,2947,2956,2962,2974,113,117,97,108,71,114,101,97,116,101,114,59,1,8922,117,108,108,69,113,117,97,108,59,1,8806,114,101,97,116,101,114,59,1,8822,101,115,115,59,1,10913,108,97,110,116,69,113,117,97,108,59,1,10877,105,108,100,101,59,1,8818,114,59,3,55349,56591,4,2,59,101,2992,2994,1,8920,102,116,97,114,114,111,119,59,1,8666,105,100,111,116,59,1,319,4,3,110,112,119,3019,3110,3115,103,4,4,76,82,108,114,3030,3058,3070,3098,101,102,116,4,2,65,82,3039,3046,114,114,111,119,59,1,10229,105,103,104,116,65,114,114,111,119,59,1,10231,105,103,104,116,65,114,114,111,119,59,1,10230,101,102,116,4,2,97,114,3079,3086,114,114,111,119,59,1,10232,105,103,104,116,97,114,114,111,119,59,1,10234,105,103,104,116,97,114,114,111,119,59,1,10233,102,59,3,55349,56643,101,114,4,2,76,82,3123,3134,101,102,116,65,114,114,111,119,59,1,8601,105,103,104,116,65,114,114,111,119,59,1,8600,4,3,99,104,116,3154,3158,3161,114,59,1,8466,59,1,8624,114,111,107,59,1,321,59,1,8810,4,8,97,99,101,102,105,111,115,117,3188,3192,3196,3222,3227,3237,3243,3248,112,59,1,10501,121,59,1,1052,4,2,100,108,3202,3213,105,117,109,83,112,97,99,101,59,1,8287,108,105,110,116,114,102,59,1,8499,114,59,3,55349,56592,110,117,115,80,108,117,115,59,1,8723,112,102,59,3,55349,56644,99,114,59,1,8499,59,1,924,4,9,74,97,99,101,102,111,115,116,117,3271,3276,3283,3306,3422,3427,4120,4126,4137,99,121,59,1,1034,99,117,116,101,59,1,323,4,3,97,101,121,3291,3297,3303,114,111,110,59,1,327,100,105,108,59,1,325,59,1,1053,4,3,103,115,119,3314,3380,3415,97,116,105,118,101,4,3,77,84,86,3327,3340,3365,101,100,105,117,109,83,112,97,99,101,59,1,8203,104,105,4,2,99,110,3348,3357,107,83,112,97,99,101,59,1,8203,83,112,97,99,101,59,1,8203,101,114,121,84,104,105,110,83,112,97,99,101,59,1,8203,116,101,100,4,2,71,76,3389,3405,114,101,97,116,101,114,71,114,101,97,116,101,114,59,1,8811,101,115,115,76,101,115,115,59,1,8810,76,105,110,101,59,1,10,114,59,3,55349,56593,4,4,66,110,112,116,3437,3444,3460,3464,114,101,97,107,59,1,8288,66,114,101,97,107,105,110,103,83,112,97,99,101,59,1,160,102,59,1,8469,4,13,59,67,68,69,71,72,76,78,80,82,83,84,86,3492,3494,3517,3536,3578,3657,3685,3784,3823,3860,3915,4066,4107,1,10988,4,2,111,117,3500,3510,110,103,114,117,101,110,116,59,1,8802,112,67,97,112,59,1,8813,111,117,98,108,101,86,101,114,116,105,99,97,108,66,97,114,59,1,8742,4,3,108,113,120,3544,3552,3571,101,109,101,110,116,59,1,8713,117,97,108,4,2,59,84,3561,3563,1,8800,105,108,100,101,59,3,8770,824,105,115,116,115,59,1,8708,114,101,97,116,101,114,4,7,59,69,70,71,76,83,84,3600,3602,3609,3621,3631,3637,3650,1,8815,113,117,97,108,59,1,8817,117,108,108,69,113,117,97,108,59,3,8807,824,114,101,97,116,101,114,59,3,8811,824,101,115,115,59,1,8825,108,97,110,116,69,113,117,97,108,59,3,10878,824,105,108,100,101,59,1,8821,117,109,112,4,2,68,69,3666,3677,111,119,110,72,117,109,112,59,3,8782,824,113,117,97,108,59,3,8783,824,101,4,2,102,115,3692,3724,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3709,3711,3717,1,8938,97,114,59,3,10703,824,113,117,97,108,59,1,8940,115,4,6,59,69,71,76,83,84,3739,3741,3748,3757,3764,3777,1,8814,113,117,97,108,59,1,8816,114,101,97,116,101,114,59,1,8824,101,115,115,59,3,8810,824,108,97,110,116,69,113,117,97,108,59,3,10877,824,105,108,100,101,59,1,8820,101,115,116,101,100,4,2,71,76,3795,3812,114,101,97,116,101,114,71,114,101,97,116,101,114,59,3,10914,824,101,115,115,76,101,115,115,59,3,10913,824,114,101,99,101,100,101,115,4,3,59,69,83,3838,3840,3848,1,8832,113,117,97,108,59,3,10927,824,108,97,110,116,69,113,117,97,108,59,1,8928,4,2,101,105,3866,3881,118,101,114,115,101,69,108,101,109,101,110,116,59,1,8716,103,104,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3900,3902,3908,1,8939,97,114,59,3,10704,824,113,117,97,108,59,1,8941,4,2,113,117,3921,3973,117,97,114,101,83,117,4,2,98,112,3933,3952,115,101,116,4,2,59,69,3942,3945,3,8847,824,113,117,97,108,59,1,8930,101,114,115,101,116,4,2,59,69,3963,3966,3,8848,824,113,117,97,108,59,1,8931,4,3,98,99,112,3981,4e3,4045,115,101,116,4,2,59,69,3990,3993,3,8834,8402,113,117,97,108,59,1,8840,99,101,101,100,115,4,4,59,69,83,84,4015,4017,4025,4037,1,8833,113,117,97,108,59,3,10928,824,108,97,110,116,69,113,117,97,108,59,1,8929,105,108,100,101,59,3,8831,824,101,114,115,101,116,4,2,59,69,4056,4059,3,8835,8402,113,117,97,108,59,1,8841,105,108,100,101,4,4,59,69,70,84,4080,4082,4089,4100,1,8769,113,117,97,108,59,1,8772,117,108,108,69,113,117,97,108,59,1,8775,105,108,100,101,59,1,8777,101,114,116,105,99,97,108,66,97,114,59,1,8740,99,114,59,3,55349,56489,105,108,100,101,5,209,1,59,4135,1,209,59,1,925,4,14,69,97,99,100,102,103,109,111,112,114,115,116,117,118,4170,4176,4187,4205,4212,4217,4228,4253,4259,4292,4295,4316,4337,4346,108,105,103,59,1,338,99,117,116,101,5,211,1,59,4185,1,211,4,2,105,121,4193,4202,114,99,5,212,1,59,4200,1,212,59,1,1054,98,108,97,99,59,1,336,114,59,3,55349,56594,114,97,118,101,5,210,1,59,4226,1,210,4,3,97,101,105,4236,4241,4246,99,114,59,1,332,103,97,59,1,937,99,114,111,110,59,1,927,112,102,59,3,55349,56646,101,110,67,117,114,108,121,4,2,68,81,4272,4285,111,117,98,108,101,81,117,111,116,101,59,1,8220,117,111,116,101,59,1,8216,59,1,10836,4,2,99,108,4301,4306,114,59,3,55349,56490,97,115,104,5,216,1,59,4314,1,216,105,4,2,108,109,4323,4332,100,101,5,213,1,59,4330,1,213,101,115,59,1,10807,109,108,5,214,1,59,4344,1,214,101,114,4,2,66,80,4354,4380,4,2,97,114,4360,4364,114,59,1,8254,97,99,4,2,101,107,4372,4375,59,1,9182,101,116,59,1,9140,97,114,101,110,116,104,101,115,105,115,59,1,9180,4,9,97,99,102,104,105,108,111,114,115,4413,4422,4426,4431,4435,4438,4448,4471,4561,114,116,105,97,108,68,59,1,8706,121,59,1,1055,114,59,3,55349,56595,105,59,1,934,59,1,928,117,115,77,105,110,117,115,59,1,177,4,2,105,112,4454,4467,110,99,97,114,101,112,108,97,110,101,59,1,8460,102,59,1,8473,4,4,59,101,105,111,4481,4483,4526,4531,1,10939,99,101,100,101,115,4,4,59,69,83,84,4498,4500,4507,4519,1,8826,113,117,97,108,59,1,10927,108,97,110,116,69,113,117,97,108,59,1,8828,105,108,100,101,59,1,8830,109,101,59,1,8243,4,2,100,112,4537,4543,117,99,116,59,1,8719,111,114,116,105,111,110,4,2,59,97,4555,4557,1,8759,108,59,1,8733,4,2,99,105,4567,4572,114,59,3,55349,56491,59,1,936,4,4,85,102,111,115,4585,4594,4599,4604,79,84,5,34,1,59,4592,1,34,114,59,3,55349,56596,112,102,59,1,8474,99,114,59,3,55349,56492,4,12,66,69,97,99,101,102,104,105,111,114,115,117,4636,4642,4650,4681,4704,4763,4767,4771,5047,5069,5081,5094,97,114,114,59,1,10512,71,5,174,1,59,4648,1,174,4,3,99,110,114,4658,4664,4668,117,116,101,59,1,340,103,59,1,10219,114,4,2,59,116,4675,4677,1,8608,108,59,1,10518,4,3,97,101,121,4689,4695,4701,114,111,110,59,1,344,100,105,108,59,1,342,59,1,1056,4,2,59,118,4710,4712,1,8476,101,114,115,101,4,2,69,85,4722,4748,4,2,108,113,4728,4736,101,109,101,110,116,59,1,8715,117,105,108,105,98,114,105,117,109,59,1,8651,112,69,113,117,105,108,105,98,114,105,117,109,59,1,10607,114,59,1,8476,111,59,1,929,103,104,116,4,8,65,67,68,70,84,85,86,97,4792,4840,4849,4905,4912,4972,5022,5040,4,2,110,114,4798,4811,103,108,101,66,114,97,99,107,101,116,59,1,10217,114,111,119,4,3,59,66,76,4822,4824,4829,1,8594,97,114,59,1,8677,101,102,116,65,114,114,111,119,59,1,8644,101,105,108,105,110,103,59,1,8969,111,4,2,117,119,4856,4869,98,108,101,66,114,97,99,107,101,116,59,1,10215,110,4,2,84,86,4876,4887,101,101,86,101,99,116,111,114,59,1,10589,101,99,116,111,114,4,2,59,66,4898,4900,1,8642,97,114,59,1,10581,108,111,111,114,59,1,8971,4,2,101,114,4918,4944,101,4,3,59,65,86,4927,4929,4936,1,8866,114,114,111,119,59,1,8614,101,99,116,111,114,59,1,10587,105,97,110,103,108,101,4,3,59,66,69,4958,4960,4965,1,8883,97,114,59,1,10704,113,117,97,108,59,1,8885,112,4,3,68,84,86,4981,4993,5004,111,119,110,86,101,99,116,111,114,59,1,10575,101,101,86,101,99,116,111,114,59,1,10588,101,99,116,111,114,4,2,59,66,5015,5017,1,8638,97,114,59,1,10580,101,99,116,111,114,4,2,59,66,5033,5035,1,8640,97,114,59,1,10579,114,114,111,119,59,1,8658,4,2,112,117,5053,5057,102,59,1,8477,110,100,73,109,112,108,105,101,115,59,1,10608,105,103,104,116,97,114,114,111,119,59,1,8667,4,2,99,104,5087,5091,114,59,1,8475,59,1,8625,108,101,68,101,108,97,121,101,100,59,1,10740,4,13,72,79,97,99,102,104,105,109,111,113,115,116,117,5134,5150,5157,5164,5198,5203,5259,5265,5277,5283,5374,5380,5385,4,2,67,99,5140,5146,72,99,121,59,1,1065,121,59,1,1064,70,84,99,121,59,1,1068,99,117,116,101,59,1,346,4,5,59,97,101,105,121,5176,5178,5184,5190,5195,1,10940,114,111,110,59,1,352,100,105,108,59,1,350,114,99,59,1,348,59,1,1057,114,59,3,55349,56598,111,114,116,4,4,68,76,82,85,5216,5227,5238,5250,111,119,110,65,114,114,111,119,59,1,8595,101,102,116,65,114,114,111,119,59,1,8592,105,103,104,116,65,114,114,111,119,59,1,8594,112,65,114,114,111,119,59,1,8593,103,109,97,59,1,931,97,108,108,67,105,114,99,108,101,59,1,8728,112,102,59,3,55349,56650,4,2,114,117,5289,5293,116,59,1,8730,97,114,101,4,4,59,73,83,85,5306,5308,5322,5367,1,9633,110,116,101,114,115,101,99,116,105,111,110,59,1,8851,117,4,2,98,112,5329,5347,115,101,116,4,2,59,69,5338,5340,1,8847,113,117,97,108,59,1,8849,101,114,115,101,116,4,2,59,69,5358,5360,1,8848,113,117,97,108,59,1,8850,110,105,111,110,59,1,8852,99,114,59,3,55349,56494,97,114,59,1,8902,4,4,98,99,109,112,5395,5420,5475,5478,4,2,59,115,5401,5403,1,8912,101,116,4,2,59,69,5411,5413,1,8912,113,117,97,108,59,1,8838,4,2,99,104,5426,5468,101,101,100,115,4,4,59,69,83,84,5440,5442,5449,5461,1,8827,113,117,97,108,59,1,10928,108,97,110,116,69,113,117,97,108,59,1,8829,105,108,100,101,59,1,8831,84,104,97,116,59,1,8715,59,1,8721,4,3,59,101,115,5486,5488,5507,1,8913,114,115,101,116,4,2,59,69,5498,5500,1,8835,113,117,97,108,59,1,8839,101,116,59,1,8913,4,11,72,82,83,97,99,102,104,105,111,114,115,5536,5546,5552,5567,5579,5602,5607,5655,5695,5701,5711,79,82,78,5,222,1,59,5544,1,222,65,68,69,59,1,8482,4,2,72,99,5558,5563,99,121,59,1,1035,121,59,1,1062,4,2,98,117,5573,5576,59,1,9,59,1,932,4,3,97,101,121,5587,5593,5599,114,111,110,59,1,356,100,105,108,59,1,354,59,1,1058,114,59,3,55349,56599,4,2,101,105,5613,5631,4,2,114,116,5619,5627,101,102,111,114,101,59,1,8756,97,59,1,920,4,2,99,110,5637,5647,107,83,112,97,99,101,59,3,8287,8202,83,112,97,99,101,59,1,8201,108,100,101,4,4,59,69,70,84,5668,5670,5677,5688,1,8764,113,117,97,108,59,1,8771,117,108,108,69,113,117,97,108,59,1,8773,105,108,100,101,59,1,8776,112,102,59,3,55349,56651,105,112,108,101,68,111,116,59,1,8411,4,2,99,116,5717,5722,114,59,3,55349,56495,114,111,107,59,1,358,4,14,97,98,99,100,102,103,109,110,111,112,114,115,116,117,5758,5789,5805,5823,5830,5835,5846,5852,5921,5937,6089,6095,6101,6108,4,2,99,114,5764,5774,117,116,101,5,218,1,59,5772,1,218,114,4,2,59,111,5781,5783,1,8607,99,105,114,59,1,10569,114,4,2,99,101,5796,5800,121,59,1,1038,118,101,59,1,364,4,2,105,121,5811,5820,114,99,5,219,1,59,5818,1,219,59,1,1059,98,108,97,99,59,1,368,114,59,3,55349,56600,114,97,118,101,5,217,1,59,5844,1,217,97,99,114,59,1,362,4,2,100,105,5858,5905,101,114,4,2,66,80,5866,5892,4,2,97,114,5872,5876,114,59,1,95,97,99,4,2,101,107,5884,5887,59,1,9183,101,116,59,1,9141,97,114,101,110,116,104,101,115,105,115,59,1,9181,111,110,4,2,59,80,5913,5915,1,8899,108,117,115,59,1,8846,4,2,103,112,5927,5932,111,110,59,1,370,102,59,3,55349,56652,4,8,65,68,69,84,97,100,112,115,5955,5985,5996,6009,6026,6033,6044,6075,114,114,111,119,4,3,59,66,68,5967,5969,5974,1,8593,97,114,59,1,10514,111,119,110,65,114,114,111,119,59,1,8645,111,119,110,65,114,114,111,119,59,1,8597,113,117,105,108,105,98,114,105,117,109,59,1,10606,101,101,4,2,59,65,6017,6019,1,8869,114,114,111,119,59,1,8613,114,114,111,119,59,1,8657,111,119,110,97,114,114,111,119,59,1,8661,101,114,4,2,76,82,6052,6063,101,102,116,65,114,114,111,119,59,1,8598,105,103,104,116,65,114,114,111,119,59,1,8599,105,4,2,59,108,6082,6084,1,978,111,110,59,1,933,105,110,103,59,1,366,99,114,59,3,55349,56496,105,108,100,101,59,1,360,109,108,5,220,1,59,6115,1,220,4,9,68,98,99,100,101,102,111,115,118,6137,6143,6148,6152,6166,6250,6255,6261,6267,97,115,104,59,1,8875,97,114,59,1,10987,121,59,1,1042,97,115,104,4,2,59,108,6161,6163,1,8873,59,1,10982,4,2,101,114,6172,6175,59,1,8897,4,3,98,116,121,6183,6188,6238,97,114,59,1,8214,4,2,59,105,6194,6196,1,8214,99,97,108,4,4,66,76,83,84,6209,6214,6220,6231,97,114,59,1,8739,105,110,101,59,1,124,101,112,97,114,97,116,111,114,59,1,10072,105,108,100,101,59,1,8768,84,104,105,110,83,112,97,99,101,59,1,8202,114,59,3,55349,56601,112,102,59,3,55349,56653,99,114,59,3,55349,56497,100,97,115,104,59,1,8874,4,5,99,101,102,111,115,6286,6292,6298,6303,6309,105,114,99,59,1,372,100,103,101,59,1,8896,114,59,3,55349,56602,112,102,59,3,55349,56654,99,114,59,3,55349,56498,4,4,102,105,111,115,6325,6330,6333,6339,114,59,3,55349,56603,59,1,926,112,102,59,3,55349,56655,99,114,59,3,55349,56499,4,9,65,73,85,97,99,102,111,115,117,6365,6370,6375,6380,6391,6405,6410,6416,6422,99,121,59,1,1071,99,121,59,1,1031,99,121,59,1,1070,99,117,116,101,5,221,1,59,6389,1,221,4,2,105,121,6397,6402,114,99,59,1,374,59,1,1067,114,59,3,55349,56604,112,102,59,3,55349,56656,99,114,59,3,55349,56500,109,108,59,1,376,4,8,72,97,99,100,101,102,111,115,6445,6450,6457,6472,6477,6501,6505,6510,99,121,59,1,1046,99,117,116,101,59,1,377,4,2,97,121,6463,6469,114,111,110,59,1,381,59,1,1047,111,116,59,1,379,4,2,114,116,6483,6497,111,87,105,100,116,104,83,112,97,99,101,59,1,8203,97,59,1,918,114,59,1,8488,112,102,59,1,8484,99,114,59,3,55349,56501,4,16,97,98,99,101,102,103,108,109,110,111,112,114,115,116,117,119,6550,6561,6568,6612,6622,6634,6645,6672,6699,6854,6870,6923,6933,6963,6974,6983,99,117,116,101,5,225,1,59,6559,1,225,114,101,118,101,59,1,259,4,6,59,69,100,105,117,121,6582,6584,6588,6591,6600,6609,1,8766,59,3,8766,819,59,1,8767,114,99,5,226,1,59,6598,1,226,116,101,5,180,1,59,6607,1,180,59,1,1072,108,105,103,5,230,1,59,6620,1,230,4,2,59,114,6628,6630,1,8289,59,3,55349,56606,114,97,118,101,5,224,1,59,6643,1,224,4,2,101,112,6651,6667,4,2,102,112,6657,6663,115,121,109,59,1,8501,104,59,1,8501,104,97,59,1,945,4,2,97,112,6678,6692,4,2,99,108,6684,6688,114,59,1,257,103,59,1,10815,5,38,1,59,6697,1,38,4,2,100,103,6705,6737,4,5,59,97,100,115,118,6717,6719,6724,6727,6734,1,8743,110,100,59,1,10837,59,1,10844,108,111,112,101,59,1,10840,59,1,10842,4,7,59,101,108,109,114,115,122,6753,6755,6758,6762,6814,6835,6848,1,8736,59,1,10660,101,59,1,8736,115,100,4,2,59,97,6770,6772,1,8737,4,8,97,98,99,100,101,102,103,104,6790,6793,6796,6799,6802,6805,6808,6811,59,1,10664,59,1,10665,59,1,10666,59,1,10667,59,1,10668,59,1,10669,59,1,10670,59,1,10671,116,4,2,59,118,6821,6823,1,8735,98,4,2,59,100,6830,6832,1,8894,59,1,10653,4,2,112,116,6841,6845,104,59,1,8738,59,1,197,97,114,114,59,1,9084,4,2,103,112,6860,6865,111,110,59,1,261,102,59,3,55349,56658,4,7,59,69,97,101,105,111,112,6886,6888,6891,6897,6900,6904,6908,1,8776,59,1,10864,99,105,114,59,1,10863,59,1,8778,100,59,1,8779,115,59,1,39,114,111,120,4,2,59,101,6917,6919,1,8776,113,59,1,8778,105,110,103,5,229,1,59,6931,1,229,4,3,99,116,121,6941,6946,6949,114,59,3,55349,56502,59,1,42,109,112,4,2,59,101,6957,6959,1,8776,113,59,1,8781,105,108,100,101,5,227,1,59,6972,1,227,109,108,5,228,1,59,6981,1,228,4,2,99,105,6989,6997,111,110,105,110,116,59,1,8755,110,116,59,1,10769,4,16,78,97,98,99,100,101,102,105,107,108,110,111,112,114,115,117,7036,7041,7119,7135,7149,7155,7219,7224,7347,7354,7463,7489,7786,7793,7814,7866,111,116,59,1,10989,4,2,99,114,7047,7094,107,4,4,99,101,112,115,7058,7064,7073,7080,111,110,103,59,1,8780,112,115,105,108,111,110,59,1,1014,114,105,109,101,59,1,8245,105,109,4,2,59,101,7088,7090,1,8765,113,59,1,8909,4,2,118,119,7100,7105,101,101,59,1,8893,101,100,4,2,59,103,7113,7115,1,8965,101,59,1,8965,114,107,4,2,59,116,7127,7129,1,9141,98,114,107,59,1,9142,4,2,111,121,7141,7146,110,103,59,1,8780,59,1,1073,113,117,111,59,1,8222,4,5,99,109,112,114,116,7167,7181,7188,7193,7199,97,117,115,4,2,59,101,7176,7178,1,8757,59,1,8757,112,116,121,118,59,1,10672,115,105,59,1,1014,110,111,117,59,1,8492,4,3,97,104,119,7207,7210,7213,59,1,946,59,1,8502,101,101,110,59,1,8812,114,59,3,55349,56607,103,4,7,99,111,115,116,117,118,119,7241,7262,7288,7305,7328,7335,7340,4,3,97,105,117,7249,7253,7258,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,4,3,100,112,116,7270,7275,7281,111,116,59,1,10752,108,117,115,59,1,10753,105,109,101,115,59,1,10754,4,2,113,116,7294,7300,99,117,112,59,1,10758,97,114,59,1,9733,114,105,97,110,103,108,101,4,2,100,117,7318,7324,111,119,110,59,1,9661,112,59,1,9651,112,108,117,115,59,1,10756,101,101,59,1,8897,101,100,103,101,59,1,8896,97,114,111,119,59,1,10509,4,3,97,107,111,7362,7436,7458,4,2,99,110,7368,7432,107,4,3,108,115,116,7377,7386,7394,111,122,101,110,103,101,59,1,10731,113,117,97,114,101,59,1,9642,114,105,97,110,103,108,101,4,4,59,100,108,114,7411,7413,7419,7425,1,9652,111,119,110,59,1,9662,101,102,116,59,1,9666,105,103,104,116,59,1,9656,107,59,1,9251,4,2,49,51,7442,7454,4,2,50,52,7448,7451,59,1,9618,59,1,9617,52,59,1,9619,99,107,59,1,9608,4,2,101,111,7469,7485,4,2,59,113,7475,7478,3,61,8421,117,105,118,59,3,8801,8421,116,59,1,8976,4,4,112,116,119,120,7499,7504,7517,7523,102,59,3,55349,56659,4,2,59,116,7510,7512,1,8869,111,109,59,1,8869,116,105,101,59,1,8904,4,12,68,72,85,86,98,100,104,109,112,116,117,118,7549,7571,7597,7619,7655,7660,7682,7708,7715,7721,7728,7750,4,4,76,82,108,114,7559,7562,7565,7568,59,1,9559,59,1,9556,59,1,9558,59,1,9555,4,5,59,68,85,100,117,7583,7585,7588,7591,7594,1,9552,59,1,9574,59,1,9577,59,1,9572,59,1,9575,4,4,76,82,108,114,7607,7610,7613,7616,59,1,9565,59,1,9562,59,1,9564,59,1,9561,4,7,59,72,76,82,104,108,114,7635,7637,7640,7643,7646,7649,7652,1,9553,59,1,9580,59,1,9571,59,1,9568,59,1,9579,59,1,9570,59,1,9567,111,120,59,1,10697,4,4,76,82,108,114,7670,7673,7676,7679,59,1,9557,59,1,9554,59,1,9488,59,1,9484,4,5,59,68,85,100,117,7694,7696,7699,7702,7705,1,9472,59,1,9573,59,1,9576,59,1,9516,59,1,9524,105,110,117,115,59,1,8863,108,117,115,59,1,8862,105,109,101,115,59,1,8864,4,4,76,82,108,114,7738,7741,7744,7747,59,1,9563,59,1,9560,59,1,9496,59,1,9492,4,7,59,72,76,82,104,108,114,7766,7768,7771,7774,7777,7780,7783,1,9474,59,1,9578,59,1,9569,59,1,9566,59,1,9532,59,1,9508,59,1,9500,114,105,109,101,59,1,8245,4,2,101,118,7799,7804,118,101,59,1,728,98,97,114,5,166,1,59,7812,1,166,4,4,99,101,105,111,7824,7829,7834,7846,114,59,3,55349,56503,109,105,59,1,8271,109,4,2,59,101,7841,7843,1,8765,59,1,8909,108,4,3,59,98,104,7855,7857,7860,1,92,59,1,10693,115,117,98,59,1,10184,4,2,108,109,7872,7885,108,4,2,59,101,7879,7881,1,8226,116,59,1,8226,112,4,3,59,69,101,7894,7896,7899,1,8782,59,1,10926,4,2,59,113,7905,7907,1,8783,59,1,8783,4,15,97,99,100,101,102,104,105,108,111,114,115,116,117,119,121,7942,8021,8075,8080,8121,8126,8157,8279,8295,8430,8446,8485,8491,8707,8726,4,3,99,112,114,7950,7956,8007,117,116,101,59,1,263,4,6,59,97,98,99,100,115,7970,7972,7977,7984,7998,8003,1,8745,110,100,59,1,10820,114,99,117,112,59,1,10825,4,2,97,117,7990,7994,112,59,1,10827,112,59,1,10823,111,116,59,1,10816,59,3,8745,65024,4,2,101,111,8013,8017,116,59,1,8257,110,59,1,711,4,4,97,101,105,117,8031,8046,8056,8061,4,2,112,114,8037,8041,115,59,1,10829,111,110,59,1,269,100,105,108,5,231,1,59,8054,1,231,114,99,59,1,265,112,115,4,2,59,115,8069,8071,1,10828,109,59,1,10832,111,116,59,1,267,4,3,100,109,110,8088,8097,8104,105,108,5,184,1,59,8095,1,184,112,116,121,118,59,1,10674,116,5,162,2,59,101,8112,8114,1,162,114,100,111,116,59,1,183,114,59,3,55349,56608,4,3,99,101,105,8134,8138,8154,121,59,1,1095,99,107,4,2,59,109,8146,8148,1,10003,97,114,107,59,1,10003,59,1,967,114,4,7,59,69,99,101,102,109,115,8174,8176,8179,8258,8261,8268,8273,1,9675,59,1,10691,4,3,59,101,108,8187,8189,8193,1,710,113,59,1,8791,101,4,2,97,100,8200,8223,114,114,111,119,4,2,108,114,8210,8216,101,102,116,59,1,8634,105,103,104,116,59,1,8635,4,5,82,83,97,99,100,8235,8238,8241,8246,8252,59,1,174,59,1,9416,115,116,59,1,8859,105,114,99,59,1,8858,97,115,104,59,1,8861,59,1,8791,110,105,110,116,59,1,10768,105,100,59,1,10991,99,105,114,59,1,10690,117,98,115,4,2,59,117,8288,8290,1,9827,105,116,59,1,9827,4,4,108,109,110,112,8305,8326,8376,8400,111,110,4,2,59,101,8313,8315,1,58,4,2,59,113,8321,8323,1,8788,59,1,8788,4,2,109,112,8332,8344,97,4,2,59,116,8339,8341,1,44,59,1,64,4,3,59,102,108,8352,8354,8358,1,8705,110,59,1,8728,101,4,2,109,120,8365,8371,101,110,116,59,1,8705,101,115,59,1,8450,4,2,103,105,8382,8395,4,2,59,100,8388,8390,1,8773,111,116,59,1,10861,110,116,59,1,8750,4,3,102,114,121,8408,8412,8417,59,3,55349,56660,111,100,59,1,8720,5,169,2,59,115,8424,8426,1,169,114,59,1,8471,4,2,97,111,8436,8441,114,114,59,1,8629,115,115,59,1,10007,4,2,99,117,8452,8457,114,59,3,55349,56504,4,2,98,112,8463,8474,4,2,59,101,8469,8471,1,10959,59,1,10961,4,2,59,101,8480,8482,1,10960,59,1,10962,100,111,116,59,1,8943,4,7,100,101,108,112,114,118,119,8507,8522,8536,8550,8600,8697,8702,97,114,114,4,2,108,114,8516,8519,59,1,10552,59,1,10549,4,2,112,115,8528,8532,114,59,1,8926,99,59,1,8927,97,114,114,4,2,59,112,8545,8547,1,8630,59,1,10557,4,6,59,98,99,100,111,115,8564,8566,8573,8587,8592,8596,1,8746,114,99,97,112,59,1,10824,4,2,97,117,8579,8583,112,59,1,10822,112,59,1,10826,111,116,59,1,8845,114,59,1,10821,59,3,8746,65024,4,4,97,108,114,118,8610,8623,8663,8672,114,114,4,2,59,109,8618,8620,1,8631,59,1,10556,121,4,3,101,118,119,8632,8651,8656,113,4,2,112,115,8639,8645,114,101,99,59,1,8926,117,99,99,59,1,8927,101,101,59,1,8910,101,100,103,101,59,1,8911,101,110,5,164,1,59,8670,1,164,101,97,114,114,111,119,4,2,108,114,8684,8690,101,102,116,59,1,8630,105,103,104,116,59,1,8631,101,101,59,1,8910,101,100,59,1,8911,4,2,99,105,8713,8721,111,110,105,110,116,59,1,8754,110,116,59,1,8753,108,99,116,121,59,1,9005,4,19,65,72,97,98,99,100,101,102,104,105,106,108,111,114,115,116,117,119,122,8773,8778,8783,8821,8839,8854,8887,8914,8930,8944,9036,9041,9058,9197,9227,9258,9281,9297,9305,114,114,59,1,8659,97,114,59,1,10597,4,4,103,108,114,115,8793,8799,8805,8809,103,101,114,59,1,8224,101,116,104,59,1,8504,114,59,1,8595,104,4,2,59,118,8816,8818,1,8208,59,1,8867,4,2,107,108,8827,8834,97,114,111,119,59,1,10511,97,99,59,1,733,4,2,97,121,8845,8851,114,111,110,59,1,271,59,1,1076,4,3,59,97,111,8862,8864,8880,1,8518,4,2,103,114,8870,8876,103,101,114,59,1,8225,114,59,1,8650,116,115,101,113,59,1,10871,4,3,103,108,109,8895,8902,8907,5,176,1,59,8900,1,176,116,97,59,1,948,112,116,121,118,59,1,10673,4,2,105,114,8920,8926,115,104,116,59,1,10623,59,3,55349,56609,97,114,4,2,108,114,8938,8941,59,1,8643,59,1,8642,4,5,97,101,103,115,118,8956,8986,8989,8996,9001,109,4,3,59,111,115,8965,8967,8983,1,8900,110,100,4,2,59,115,8975,8977,1,8900,117,105,116,59,1,9830,59,1,9830,59,1,168,97,109,109,97,59,1,989,105,110,59,1,8946,4,3,59,105,111,9009,9011,9031,1,247,100,101,5,247,2,59,111,9020,9022,1,247,110,116,105,109,101,115,59,1,8903,110,120,59,1,8903,99,121,59,1,1106,99,4,2,111,114,9048,9053,114,110,59,1,8990,111,112,59,1,8973,4,5,108,112,116,117,119,9070,9076,9081,9130,9144,108,97,114,59,1,36,102,59,3,55349,56661,4,5,59,101,109,112,115,9093,9095,9109,9116,9122,1,729,113,4,2,59,100,9102,9104,1,8784,111,116,59,1,8785,105,110,117,115,59,1,8760,108,117,115,59,1,8724,113,117,97,114,101,59,1,8865,98,108,101,98,97,114,119,101,100,103,101,59,1,8966,110,4,3,97,100,104,9153,9160,9172,114,114,111,119,59,1,8595,111,119,110,97,114,114,111,119,115,59,1,8650,97,114,112,111,111,110,4,2,108,114,9184,9190,101,102,116,59,1,8643,105,103,104,116,59,1,8642,4,2,98,99,9203,9211,107,97,114,111,119,59,1,10512,4,2,111,114,9217,9222,114,110,59,1,8991,111,112,59,1,8972,4,3,99,111,116,9235,9248,9252,4,2,114,121,9241,9245,59,3,55349,56505,59,1,1109,108,59,1,10742,114,111,107,59,1,273,4,2,100,114,9264,9269,111,116,59,1,8945,105,4,2,59,102,9276,9278,1,9663,59,1,9662,4,2,97,104,9287,9292,114,114,59,1,8693,97,114,59,1,10607,97,110,103,108,101,59,1,10662,4,2,99,105,9311,9315,121,59,1,1119,103,114,97,114,114,59,1,10239,4,18,68,97,99,100,101,102,103,108,109,110,111,112,113,114,115,116,117,120,9361,9376,9398,9439,9444,9447,9462,9495,9531,9585,9598,9614,9659,9755,9771,9792,9808,9826,4,2,68,111,9367,9372,111,116,59,1,10871,116,59,1,8785,4,2,99,115,9382,9392,117,116,101,5,233,1,59,9390,1,233,116,101,114,59,1,10862,4,4,97,105,111,121,9408,9414,9430,9436,114,111,110,59,1,283,114,4,2,59,99,9421,9423,1,8790,5,234,1,59,9428,1,234,108,111,110,59,1,8789,59,1,1101,111,116,59,1,279,59,1,8519,4,2,68,114,9453,9458,111,116,59,1,8786,59,3,55349,56610,4,3,59,114,115,9470,9472,9482,1,10906,97,118,101,5,232,1,59,9480,1,232,4,2,59,100,9488,9490,1,10902,111,116,59,1,10904,4,4,59,105,108,115,9505,9507,9515,9518,1,10905,110,116,101,114,115,59,1,9191,59,1,8467,4,2,59,100,9524,9526,1,10901,111,116,59,1,10903,4,3,97,112,115,9539,9544,9564,99,114,59,1,275,116,121,4,3,59,115,118,9554,9556,9561,1,8709,101,116,59,1,8709,59,1,8709,112,4,2,49,59,9571,9583,4,2,51,52,9577,9580,59,1,8196,59,1,8197,1,8195,4,2,103,115,9591,9594,59,1,331,112,59,1,8194,4,2,103,112,9604,9609,111,110,59,1,281,102,59,3,55349,56662,4,3,97,108,115,9622,9635,9640,114,4,2,59,115,9629,9631,1,8917,108,59,1,10723,117,115,59,1,10865,105,4,3,59,108,118,9649,9651,9656,1,949,111,110,59,1,949,59,1,1013,4,4,99,115,117,118,9669,9686,9716,9747,4,2,105,111,9675,9680,114,99,59,1,8790,108,111,110,59,1,8789,4,2,105,108,9692,9696,109,59,1,8770,97,110,116,4,2,103,108,9705,9710,116,114,59,1,10902,101,115,115,59,1,10901,4,3,97,101,105,9724,9729,9734,108,115,59,1,61,115,116,59,1,8799,118,4,2,59,68,9741,9743,1,8801,68,59,1,10872,112,97,114,115,108,59,1,10725,4,2,68,97,9761,9766,111,116,59,1,8787,114,114,59,1,10609,4,3,99,100,105,9779,9783,9788,114,59,1,8495,111,116,59,1,8784,109,59,1,8770,4,2,97,104,9798,9801,59,1,951,5,240,1,59,9806,1,240,4,2,109,114,9814,9822,108,5,235,1,59,9820,1,235,111,59,1,8364,4,3,99,105,112,9834,9838,9843,108,59,1,33,115,116,59,1,8707,4,2,101,111,9849,9859,99,116,97,116,105,111,110,59,1,8496,110,101,110,116,105,97,108,101,59,1,8519,4,12,97,99,101,102,105,106,108,110,111,112,114,115,9896,9910,9914,9921,9954,9960,9967,9989,9994,10027,10036,10164,108,108,105,110,103,100,111,116,115,101,113,59,1,8786,121,59,1,1092,109,97,108,101,59,1,9792,4,3,105,108,114,9929,9935,9950,108,105,103,59,1,64259,4,2,105,108,9941,9945,103,59,1,64256,105,103,59,1,64260,59,3,55349,56611,108,105,103,59,1,64257,108,105,103,59,3,102,106,4,3,97,108,116,9975,9979,9984,116,59,1,9837,105,103,59,1,64258,110,115,59,1,9649,111,102,59,1,402,4,2,112,114,1e4,10005,102,59,3,55349,56663,4,2,97,107,10011,10016,108,108,59,1,8704,4,2,59,118,10022,10024,1,8916,59,1,10969,97,114,116,105,110,116,59,1,10765,4,2,97,111,10042,10159,4,2,99,115,10048,10155,4,6,49,50,51,52,53,55,10062,10102,10114,10135,10139,10151,4,6,50,51,52,53,54,56,10076,10083,10086,10093,10096,10099,5,189,1,59,10081,1,189,59,1,8531,5,188,1,59,10091,1,188,59,1,8533,59,1,8537,59,1,8539,4,2,51,53,10108,10111,59,1,8532,59,1,8534,4,3,52,53,56,10122,10129,10132,5,190,1,59,10127,1,190,59,1,8535,59,1,8540,53,59,1,8536,4,2,54,56,10145,10148,59,1,8538,59,1,8541,56,59,1,8542,108,59,1,8260,119,110,59,1,8994,99,114,59,3,55349,56507,4,17,69,97,98,99,100,101,102,103,105,106,108,110,111,114,115,116,118,10206,10217,10247,10254,10268,10273,10358,10363,10374,10380,10385,10406,10458,10464,10470,10497,10610,4,2,59,108,10212,10214,1,8807,59,1,10892,4,3,99,109,112,10225,10231,10244,117,116,101,59,1,501,109,97,4,2,59,100,10239,10241,1,947,59,1,989,59,1,10886,114,101,118,101,59,1,287,4,2,105,121,10260,10265,114,99,59,1,285,59,1,1075,111,116,59,1,289,4,4,59,108,113,115,10283,10285,10288,10308,1,8805,59,1,8923,4,3,59,113,115,10296,10298,10301,1,8805,59,1,8807,108,97,110,116,59,1,10878,4,4,59,99,100,108,10318,10320,10324,10345,1,10878,99,59,1,10921,111,116,4,2,59,111,10332,10334,1,10880,4,2,59,108,10340,10342,1,10882,59,1,10884,4,2,59,101,10351,10354,3,8923,65024,115,59,1,10900,114,59,3,55349,56612,4,2,59,103,10369,10371,1,8811,59,1,8921,109,101,108,59,1,8503,99,121,59,1,1107,4,4,59,69,97,106,10395,10397,10400,10403,1,8823,59,1,10898,59,1,10917,59,1,10916,4,4,69,97,101,115,10416,10419,10434,10453,59,1,8809,112,4,2,59,112,10426,10428,1,10890,114,111,120,59,1,10890,4,2,59,113,10440,10442,1,10888,4,2,59,113,10448,10450,1,10888,59,1,8809,105,109,59,1,8935,112,102,59,3,55349,56664,97,118,101,59,1,96,4,2,99,105,10476,10480,114,59,1,8458,109,4,3,59,101,108,10489,10491,10494,1,8819,59,1,10894,59,1,10896,5,62,6,59,99,100,108,113,114,10512,10514,10527,10532,10538,10545,1,62,4,2,99,105,10520,10523,59,1,10919,114,59,1,10874,111,116,59,1,8919,80,97,114,59,1,10645,117,101,115,116,59,1,10876,4,5,97,100,101,108,115,10557,10574,10579,10599,10605,4,2,112,114,10563,10570,112,114,111,120,59,1,10886,114,59,1,10616,111,116,59,1,8919,113,4,2,108,113,10586,10592,101,115,115,59,1,8923,108,101,115,115,59,1,10892,101,115,115,59,1,8823,105,109,59,1,8819,4,2,101,110,10616,10626,114,116,110,101,113,113,59,3,8809,65024,69,59,3,8809,65024,4,10,65,97,98,99,101,102,107,111,115,121,10653,10658,10713,10718,10724,10760,10765,10786,10850,10875,114,114,59,1,8660,4,4,105,108,109,114,10668,10674,10678,10684,114,115,112,59,1,8202,102,59,1,189,105,108,116,59,1,8459,4,2,100,114,10690,10695,99,121,59,1,1098,4,3,59,99,119,10703,10705,10710,1,8596,105,114,59,1,10568,59,1,8621,97,114,59,1,8463,105,114,99,59,1,293,4,3,97,108,114,10732,10748,10754,114,116,115,4,2,59,117,10741,10743,1,9829,105,116,59,1,9829,108,105,112,59,1,8230,99,111,110,59,1,8889,114,59,3,55349,56613,115,4,2,101,119,10772,10779,97,114,111,119,59,1,10533,97,114,111,119,59,1,10534,4,5,97,109,111,112,114,10798,10803,10809,10839,10844,114,114,59,1,8703,116,104,116,59,1,8763,107,4,2,108,114,10816,10827,101,102,116,97,114,114,111,119,59,1,8617,105,103,104,116,97,114,114,111,119,59,1,8618,102,59,3,55349,56665,98,97,114,59,1,8213,4,3,99,108,116,10858,10863,10869,114,59,3,55349,56509,97,115,104,59,1,8463,114,111,107,59,1,295,4,2,98,112,10881,10887,117,108,108,59,1,8259,104,101,110,59,1,8208,4,15,97,99,101,102,103,105,106,109,110,111,112,113,115,116,117,10925,10936,10958,10977,10990,11001,11039,11045,11101,11192,11220,11226,11237,11285,11299,99,117,116,101,5,237,1,59,10934,1,237,4,3,59,105,121,10944,10946,10955,1,8291,114,99,5,238,1,59,10953,1,238,59,1,1080,4,2,99,120,10964,10968,121,59,1,1077,99,108,5,161,1,59,10975,1,161,4,2,102,114,10983,10986,59,1,8660,59,3,55349,56614,114,97,118,101,5,236,1,59,10999,1,236,4,4,59,105,110,111,11011,11013,11028,11034,1,8520,4,2,105,110,11019,11024,110,116,59,1,10764,116,59,1,8749,102,105,110,59,1,10716,116,97,59,1,8489,108,105,103,59,1,307,4,3,97,111,112,11053,11092,11096,4,3,99,103,116,11061,11065,11088,114,59,1,299,4,3,101,108,112,11073,11076,11082,59,1,8465,105,110,101,59,1,8464,97,114,116,59,1,8465,104,59,1,305,102,59,1,8887,101,100,59,1,437,4,5,59,99,102,111,116,11113,11115,11121,11136,11142,1,8712,97,114,101,59,1,8453,105,110,4,2,59,116,11129,11131,1,8734,105,101,59,1,10717,100,111,116,59,1,305,4,5,59,99,101,108,112,11154,11156,11161,11179,11186,1,8747,97,108,59,1,8890,4,2,103,114,11167,11173,101,114,115,59,1,8484,99,97,108,59,1,8890,97,114,104,107,59,1,10775,114,111,100,59,1,10812,4,4,99,103,112,116,11202,11206,11211,11216,121,59,1,1105,111,110,59,1,303,102,59,3,55349,56666,97,59,1,953,114,111,100,59,1,10812,117,101,115,116,5,191,1,59,11235,1,191,4,2,99,105,11243,11248,114,59,3,55349,56510,110,4,5,59,69,100,115,118,11261,11263,11266,11271,11282,1,8712,59,1,8953,111,116,59,1,8949,4,2,59,118,11277,11279,1,8948,59,1,8947,59,1,8712,4,2,59,105,11291,11293,1,8290,108,100,101,59,1,297,4,2,107,109,11305,11310,99,121,59,1,1110,108,5,239,1,59,11316,1,239,4,6,99,102,109,111,115,117,11332,11346,11351,11357,11363,11380,4,2,105,121,11338,11343,114,99,59,1,309,59,1,1081,114,59,3,55349,56615,97,116,104,59,1,567,112,102,59,3,55349,56667,4,2,99,101,11369,11374,114,59,3,55349,56511,114,99,121,59,1,1112,107,99,121,59,1,1108,4,8,97,99,102,103,104,106,111,115,11404,11418,11433,11438,11445,11450,11455,11461,112,112,97,4,2,59,118,11413,11415,1,954,59,1,1008,4,2,101,121,11424,11430,100,105,108,59,1,311,59,1,1082,114,59,3,55349,56616,114,101,101,110,59,1,312,99,121,59,1,1093,99,121,59,1,1116,112,102,59,3,55349,56668,99,114,59,3,55349,56512,4,23,65,66,69,72,97,98,99,100,101,102,103,104,106,108,109,110,111,112,114,115,116,117,118,11515,11538,11544,11555,11560,11721,11780,11818,11868,12136,12160,12171,12203,12208,12246,12275,12327,12509,12523,12569,12641,12732,12752,4,3,97,114,116,11523,11528,11532,114,114,59,1,8666,114,59,1,8656,97,105,108,59,1,10523,97,114,114,59,1,10510,4,2,59,103,11550,11552,1,8806,59,1,10891,97,114,59,1,10594,4,9,99,101,103,109,110,112,113,114,116,11580,11586,11594,11600,11606,11624,11627,11636,11694,117,116,101,59,1,314,109,112,116,121,118,59,1,10676,114,97,110,59,1,8466,98,100,97,59,1,955,103,4,3,59,100,108,11615,11617,11620,1,10216,59,1,10641,101,59,1,10216,59,1,10885,117,111,5,171,1,59,11634,1,171,114,4,8,59,98,102,104,108,112,115,116,11655,11657,11669,11673,11677,11681,11685,11690,1,8592,4,2,59,102,11663,11665,1,8676,115,59,1,10527,115,59,1,10525,107,59,1,8617,112,59,1,8619,108,59,1,10553,105,109,59,1,10611,108,59,1,8610,4,3,59,97,101,11702,11704,11709,1,10923,105,108,59,1,10521,4,2,59,115,11715,11717,1,10925,59,3,10925,65024,4,3,97,98,114,11729,11734,11739,114,114,59,1,10508,114,107,59,1,10098,4,2,97,107,11745,11758,99,4,2,101,107,11752,11755,59,1,123,59,1,91,4,2,101,115,11764,11767,59,1,10635,108,4,2,100,117,11774,11777,59,1,10639,59,1,10637,4,4,97,101,117,121,11790,11796,11811,11815,114,111,110,59,1,318,4,2,100,105,11802,11807,105,108,59,1,316,108,59,1,8968,98,59,1,123,59,1,1083,4,4,99,113,114,115,11828,11832,11845,11864,97,59,1,10550,117,111,4,2,59,114,11840,11842,1,8220,59,1,8222,4,2,100,117,11851,11857,104,97,114,59,1,10599,115,104,97,114,59,1,10571,104,59,1,8626,4,5,59,102,103,113,115,11880,11882,12008,12011,12031,1,8804,116,4,5,97,104,108,114,116,11895,11913,11935,11947,11996,114,114,111,119,4,2,59,116,11905,11907,1,8592,97,105,108,59,1,8610,97,114,112,111,111,110,4,2,100,117,11925,11931,111,119,110,59,1,8637,112,59,1,8636,101,102,116,97,114,114,111,119,115,59,1,8647,105,103,104,116,4,3,97,104,115,11959,11974,11984,114,114,111,119,4,2,59,115,11969,11971,1,8596,59,1,8646,97,114,112,111,111,110,115,59,1,8651,113,117,105,103,97,114,114,111,119,59,1,8621,104,114,101,101,116,105,109,101,115,59,1,8907,59,1,8922,4,3,59,113,115,12019,12021,12024,1,8804,59,1,8806,108,97,110,116,59,1,10877,4,5,59,99,100,103,115,12043,12045,12049,12070,12083,1,10877,99,59,1,10920,111,116,4,2,59,111,12057,12059,1,10879,4,2,59,114,12065,12067,1,10881,59,1,10883,4,2,59,101,12076,12079,3,8922,65024,115,59,1,10899,4,5,97,100,101,103,115,12095,12103,12108,12126,12131,112,112,114,111,120,59,1,10885,111,116,59,1,8918,113,4,2,103,113,12115,12120,116,114,59,1,8922,103,116,114,59,1,10891,116,114,59,1,8822,105,109,59,1,8818,4,3,105,108,114,12144,12150,12156,115,104,116,59,1,10620,111,111,114,59,1,8970,59,3,55349,56617,4,2,59,69,12166,12168,1,8822,59,1,10897,4,2,97,98,12177,12198,114,4,2,100,117,12184,12187,59,1,8637,4,2,59,108,12193,12195,1,8636,59,1,10602,108,107,59,1,9604,99,121,59,1,1113,4,5,59,97,99,104,116,12220,12222,12227,12235,12241,1,8810,114,114,59,1,8647,111,114,110,101,114,59,1,8990,97,114,100,59,1,10603,114,105,59,1,9722,4,2,105,111,12252,12258,100,111,116,59,1,320,117,115,116,4,2,59,97,12267,12269,1,9136,99,104,101,59,1,9136,4,4,69,97,101,115,12285,12288,12303,12322,59,1,8808,112,4,2,59,112,12295,12297,1,10889,114,111,120,59,1,10889,4,2,59,113,12309,12311,1,10887,4,2,59,113,12317,12319,1,10887,59,1,8808,105,109,59,1,8934,4,8,97,98,110,111,112,116,119,122,12345,12359,12364,12421,12446,12467,12474,12490,4,2,110,114,12351,12355,103,59,1,10220,114,59,1,8701,114,107,59,1,10214,103,4,3,108,109,114,12373,12401,12409,101,102,116,4,2,97,114,12382,12389,114,114,111,119,59,1,10229,105,103,104,116,97,114,114,111,119,59,1,10231,97,112,115,116,111,59,1,10236,105,103,104,116,97,114,114,111,119,59,1,10230,112,97,114,114,111,119,4,2,108,114,12433,12439,101,102,116,59,1,8619,105,103,104,116,59,1,8620,4,3,97,102,108,12454,12458,12462,114,59,1,10629,59,3,55349,56669,117,115,59,1,10797,105,109,101,115,59,1,10804,4,2,97,98,12480,12485,115,116,59,1,8727,97,114,59,1,95,4,3,59,101,102,12498,12500,12506,1,9674,110,103,101,59,1,9674,59,1,10731,97,114,4,2,59,108,12517,12519,1,40,116,59,1,10643,4,5,97,99,104,109,116,12535,12540,12548,12561,12564,114,114,59,1,8646,111,114,110,101,114,59,1,8991,97,114,4,2,59,100,12556,12558,1,8651,59,1,10605,59,1,8206,114,105,59,1,8895,4,6,97,99,104,105,113,116,12583,12589,12594,12597,12614,12635,113,117,111,59,1,8249,114,59,3,55349,56513,59,1,8624,109,4,3,59,101,103,12606,12608,12611,1,8818,59,1,10893,59,1,10895,4,2,98,117,12620,12623,59,1,91,111,4,2,59,114,12630,12632,1,8216,59,1,8218,114,111,107,59,1,322,5,60,8,59,99,100,104,105,108,113,114,12660,12662,12675,12680,12686,12692,12698,12705,1,60,4,2,99,105,12668,12671,59,1,10918,114,59,1,10873,111,116,59,1,8918,114,101,101,59,1,8907,109,101,115,59,1,8905,97,114,114,59,1,10614,117,101,115,116,59,1,10875,4,2,80,105,12711,12716,97,114,59,1,10646,4,3,59,101,102,12724,12726,12729,1,9667,59,1,8884,59,1,9666,114,4,2,100,117,12739,12746,115,104,97,114,59,1,10570,104,97,114,59,1,10598,4,2,101,110,12758,12768,114,116,110,101,113,113,59,3,8808,65024,69,59,3,8808,65024,4,14,68,97,99,100,101,102,104,105,108,110,111,112,115,117,12803,12809,12893,12908,12914,12928,12933,12937,13011,13025,13032,13049,13052,13069,68,111,116,59,1,8762,4,4,99,108,112,114,12819,12827,12849,12887,114,5,175,1,59,12825,1,175,4,2,101,116,12833,12836,59,1,9794,4,2,59,101,12842,12844,1,10016,115,101,59,1,10016,4,2,59,115,12855,12857,1,8614,116,111,4,4,59,100,108,117,12869,12871,12877,12883,1,8614,111,119,110,59,1,8615,101,102,116,59,1,8612,112,59,1,8613,107,101,114,59,1,9646,4,2,111,121,12899,12905,109,109,97,59,1,10793,59,1,1084,97,115,104,59,1,8212,97,115,117,114,101,100,97,110,103,108,101,59,1,8737,114,59,3,55349,56618,111,59,1,8487,4,3,99,100,110,12945,12954,12985,114,111,5,181,1,59,12952,1,181,4,4,59,97,99,100,12964,12966,12971,12976,1,8739,115,116,59,1,42,105,114,59,1,10992,111,116,5,183,1,59,12983,1,183,117,115,4,3,59,98,100,12995,12997,13e3,1,8722,59,1,8863,4,2,59,117,13006,13008,1,8760,59,1,10794,4,2,99,100,13017,13021,112,59,1,10971,114,59,1,8230,112,108,117,115,59,1,8723,4,2,100,112,13038,13044,101,108,115,59,1,8871,102,59,3,55349,56670,59,1,8723,4,2,99,116,13058,13063,114,59,3,55349,56514,112,111,115,59,1,8766,4,3,59,108,109,13077,13079,13087,1,956,116,105,109,97,112,59,1,8888,97,112,59,1,8888,4,24,71,76,82,86,97,98,99,100,101,102,103,104,105,106,108,109,111,112,114,115,116,117,118,119,13142,13165,13217,13229,13247,13330,13359,13414,13420,13508,13513,13579,13602,13626,13631,13762,13767,13855,13936,13995,14214,14285,14312,14432,4,2,103,116,13148,13152,59,3,8921,824,4,2,59,118,13158,13161,3,8811,8402,59,3,8811,824,4,3,101,108,116,13173,13200,13204,102,116,4,2,97,114,13181,13188,114,114,111,119,59,1,8653,105,103,104,116,97,114,114,111,119,59,1,8654,59,3,8920,824,4,2,59,118,13210,13213,3,8810,8402,59,3,8810,824,105,103,104,116,97,114,114,111,119,59,1,8655,4,2,68,100,13235,13241,97,115,104,59,1,8879,97,115,104,59,1,8878,4,5,98,99,110,112,116,13259,13264,13270,13275,13308,108,97,59,1,8711,117,116,101,59,1,324,103,59,3,8736,8402,4,5,59,69,105,111,112,13287,13289,13293,13298,13302,1,8777,59,3,10864,824,100,59,3,8779,824,115,59,1,329,114,111,120,59,1,8777,117,114,4,2,59,97,13316,13318,1,9838,108,4,2,59,115,13325,13327,1,9838,59,1,8469,4,2,115,117,13336,13344,112,5,160,1,59,13342,1,160,109,112,4,2,59,101,13352,13355,3,8782,824,59,3,8783,824,4,5,97,101,111,117,121,13371,13385,13391,13407,13411,4,2,112,114,13377,13380,59,1,10819,111,110,59,1,328,100,105,108,59,1,326,110,103,4,2,59,100,13399,13401,1,8775,111,116,59,3,10861,824,112,59,1,10818,59,1,1085,97,115,104,59,1,8211,4,7,59,65,97,100,113,115,120,13436,13438,13443,13466,13472,13478,13494,1,8800,114,114,59,1,8663,114,4,2,104,114,13450,13454,107,59,1,10532,4,2,59,111,13460,13462,1,8599,119,59,1,8599,111,116,59,3,8784,824,117,105,118,59,1,8802,4,2,101,105,13484,13489,97,114,59,1,10536,109,59,3,8770,824,105,115,116,4,2,59,115,13503,13505,1,8708,59,1,8708,114,59,3,55349,56619,4,4,69,101,115,116,13523,13527,13563,13568,59,3,8807,824,4,3,59,113,115,13535,13537,13559,1,8817,4,3,59,113,115,13545,13547,13551,1,8817,59,3,8807,824,108,97,110,116,59,3,10878,824,59,3,10878,824,105,109,59,1,8821,4,2,59,114,13574,13576,1,8815,59,1,8815,4,3,65,97,112,13587,13592,13597,114,114,59,1,8654,114,114,59,1,8622,97,114,59,1,10994,4,3,59,115,118,13610,13612,13623,1,8715,4,2,59,100,13618,13620,1,8956,59,1,8954,59,1,8715,99,121,59,1,1114,4,7,65,69,97,100,101,115,116,13647,13652,13656,13661,13665,13737,13742,114,114,59,1,8653,59,3,8806,824,114,114,59,1,8602,114,59,1,8229,4,4,59,102,113,115,13675,13677,13703,13725,1,8816,116,4,2,97,114,13684,13691,114,114,111,119,59,1,8602,105,103,104,116,97,114,114,111,119,59,1,8622,4,3,59,113,115,13711,13713,13717,1,8816,59,3,8806,824,108,97,110,116,59,3,10877,824,4,2,59,115,13731,13734,3,10877,824,59,1,8814,105,109,59,1,8820,4,2,59,114,13748,13750,1,8814,105,4,2,59,101,13757,13759,1,8938,59,1,8940,105,100,59,1,8740,4,2,112,116,13773,13778,102,59,3,55349,56671,5,172,3,59,105,110,13787,13789,13829,1,172,110,4,4,59,69,100,118,13800,13802,13806,13812,1,8713,59,3,8953,824,111,116,59,3,8949,824,4,3,97,98,99,13820,13823,13826,59,1,8713,59,1,8951,59,1,8950,105,4,2,59,118,13836,13838,1,8716,4,3,97,98,99,13846,13849,13852,59,1,8716,59,1,8958,59,1,8957,4,3,97,111,114,13863,13892,13899,114,4,4,59,97,115,116,13874,13876,13883,13888,1,8742,108,108,101,108,59,1,8742,108,59,3,11005,8421,59,3,8706,824,108,105,110,116,59,1,10772,4,3,59,99,101,13907,13909,13914,1,8832,117,101,59,1,8928,4,2,59,99,13920,13923,3,10927,824,4,2,59,101,13929,13931,1,8832,113,59,3,10927,824,4,4,65,97,105,116,13946,13951,13971,13982,114,114,59,1,8655,114,114,4,3,59,99,119,13961,13963,13967,1,8603,59,3,10547,824,59,3,8605,824,103,104,116,97,114,114,111,119,59,1,8603,114,105,4,2,59,101,13990,13992,1,8939,59,1,8941,4,7,99,104,105,109,112,113,117,14011,14036,14060,14080,14085,14090,14106,4,4,59,99,101,114,14021,14023,14028,14032,1,8833,117,101,59,1,8929,59,3,10928,824,59,3,55349,56515,111,114,116,4,2,109,112,14045,14050,105,100,59,1,8740,97,114,97,108,108,101,108,59,1,8742,109,4,2,59,101,14067,14069,1,8769,4,2,59,113,14075,14077,1,8772,59,1,8772,105,100,59,1,8740,97,114,59,1,8742,115,117,4,2,98,112,14098,14102,101,59,1,8930,101,59,1,8931,4,3,98,99,112,14114,14157,14171,4,4,59,69,101,115,14124,14126,14130,14133,1,8836,59,3,10949,824,59,1,8840,101,116,4,2,59,101,14141,14144,3,8834,8402,113,4,2,59,113,14151,14153,1,8840,59,3,10949,824,99,4,2,59,101,14164,14166,1,8833,113,59,3,10928,824,4,4,59,69,101,115,14181,14183,14187,14190,1,8837,59,3,10950,824,59,1,8841,101,116,4,2,59,101,14198,14201,3,8835,8402,113,4,2,59,113,14208,14210,1,8841,59,3,10950,824,4,4,103,105,108,114,14224,14228,14238,14242,108,59,1,8825,108,100,101,5,241,1,59,14236,1,241,103,59,1,8824,105,97,110,103,108,101,4,2,108,114,14254,14269,101,102,116,4,2,59,101,14263,14265,1,8938,113,59,1,8940,105,103,104,116,4,2,59,101,14279,14281,1,8939,113,59,1,8941,4,2,59,109,14291,14293,1,957,4,3,59,101,115,14301,14303,14308,1,35,114,111,59,1,8470,112,59,1,8199,4,9,68,72,97,100,103,105,108,114,115,14332,14338,14344,14349,14355,14369,14376,14408,14426,97,115,104,59,1,8877,97,114,114,59,1,10500,112,59,3,8781,8402,97,115,104,59,1,8876,4,2,101,116,14361,14365,59,3,8805,8402,59,3,62,8402,110,102,105,110,59,1,10718,4,3,65,101,116,14384,14389,14393,114,114,59,1,10498,59,3,8804,8402,4,2,59,114,14399,14402,3,60,8402,105,101,59,3,8884,8402,4,2,65,116,14414,14419,114,114,59,1,10499,114,105,101,59,3,8885,8402,105,109,59,3,8764,8402,4,3,65,97,110,14440,14445,14468,114,114,59,1,8662,114,4,2,104,114,14452,14456,107,59,1,10531,4,2,59,111,14462,14464,1,8598,119,59,1,8598,101,97,114,59,1,10535,4,18,83,97,99,100,101,102,103,104,105,108,109,111,112,114,115,116,117,118,14512,14515,14535,14560,14597,14603,14618,14643,14657,14662,14701,14741,14747,14769,14851,14877,14907,14916,59,1,9416,4,2,99,115,14521,14531,117,116,101,5,243,1,59,14529,1,243,116,59,1,8859,4,2,105,121,14541,14557,114,4,2,59,99,14548,14550,1,8858,5,244,1,59,14555,1,244,59,1,1086,4,5,97,98,105,111,115,14572,14577,14583,14587,14591,115,104,59,1,8861,108,97,99,59,1,337,118,59,1,10808,116,59,1,8857,111,108,100,59,1,10684,108,105,103,59,1,339,4,2,99,114,14609,14614,105,114,59,1,10687,59,3,55349,56620,4,3,111,114,116,14626,14630,14640,110,59,1,731,97,118,101,5,242,1,59,14638,1,242,59,1,10689,4,2,98,109,14649,14654,97,114,59,1,10677,59,1,937,110,116,59,1,8750,4,4,97,99,105,116,14672,14677,14693,14698,114,114,59,1,8634,4,2,105,114,14683,14687,114,59,1,10686,111,115,115,59,1,10683,110,101,59,1,8254,59,1,10688,4,3,97,101,105,14709,14714,14719,99,114,59,1,333,103,97,59,1,969,4,3,99,100,110,14727,14733,14736,114,111,110,59,1,959,59,1,10678,117,115,59,1,8854,112,102,59,3,55349,56672,4,3,97,101,108,14755,14759,14764,114,59,1,10679,114,112,59,1,10681,117,115,59,1,8853,4,7,59,97,100,105,111,115,118,14785,14787,14792,14831,14837,14841,14848,1,8744,114,114,59,1,8635,4,4,59,101,102,109,14802,14804,14817,14824,1,10845,114,4,2,59,111,14811,14813,1,8500,102,59,1,8500,5,170,1,59,14822,1,170,5,186,1,59,14829,1,186,103,111,102,59,1,8886,114,59,1,10838,108,111,112,101,59,1,10839,59,1,10843,4,3,99,108,111,14859,14863,14873,114,59,1,8500,97,115,104,5,248,1,59,14871,1,248,108,59,1,8856,105,4,2,108,109,14884,14893,100,101,5,245,1,59,14891,1,245,101,115,4,2,59,97,14901,14903,1,8855,115,59,1,10806,109,108,5,246,1,59,14914,1,246,98,97,114,59,1,9021,4,12,97,99,101,102,104,105,108,109,111,114,115,117,14948,14992,14996,15033,15038,15068,15090,15189,15192,15222,15427,15441,114,4,4,59,97,115,116,14959,14961,14976,14989,1,8741,5,182,2,59,108,14968,14970,1,182,108,101,108,59,1,8741,4,2,105,108,14982,14986,109,59,1,10995,59,1,11005,59,1,8706,121,59,1,1087,114,4,5,99,105,109,112,116,15009,15014,15019,15024,15027,110,116,59,1,37,111,100,59,1,46,105,108,59,1,8240,59,1,8869,101,110,107,59,1,8241,114,59,3,55349,56621,4,3,105,109,111,15046,15057,15063,4,2,59,118,15052,15054,1,966,59,1,981,109,97,116,59,1,8499,110,101,59,1,9742,4,3,59,116,118,15076,15078,15087,1,960,99,104,102,111,114,107,59,1,8916,59,1,982,4,2,97,117,15096,15119,110,4,2,99,107,15103,15115,107,4,2,59,104,15110,15112,1,8463,59,1,8462,118,59,1,8463,115,4,9,59,97,98,99,100,101,109,115,116,15140,15142,15148,15151,15156,15168,15171,15179,15184,1,43,99,105,114,59,1,10787,59,1,8862,105,114,59,1,10786,4,2,111,117,15162,15165,59,1,8724,59,1,10789,59,1,10866,110,5,177,1,59,15177,1,177,105,109,59,1,10790,119,111,59,1,10791,59,1,177,4,3,105,112,117,15200,15208,15213,110,116,105,110,116,59,1,10773,102,59,3,55349,56673,110,100,5,163,1,59,15220,1,163,4,10,59,69,97,99,101,105,110,111,115,117,15244,15246,15249,15253,15258,15334,15347,15367,15416,15421,1,8826,59,1,10931,112,59,1,10935,117,101,59,1,8828,4,2,59,99,15264,15266,1,10927,4,6,59,97,99,101,110,115,15280,15282,15290,15299,15303,15329,1,8826,112,112,114,111,120,59,1,10935,117,114,108,121,101,113,59,1,8828,113,59,1,10927,4,3,97,101,115,15311,15319,15324,112,112,114,111,120,59,1,10937,113,113,59,1,10933,105,109,59,1,8936,105,109,59,1,8830,109,101,4,2,59,115,15342,15344,1,8242,59,1,8473,4,3,69,97,115,15355,15358,15362,59,1,10933,112,59,1,10937,105,109,59,1,8936,4,3,100,102,112,15375,15378,15404,59,1,8719,4,3,97,108,115,15386,15392,15398,108,97,114,59,1,9006,105,110,101,59,1,8978,117,114,102,59,1,8979,4,2,59,116,15410,15412,1,8733,111,59,1,8733,105,109,59,1,8830,114,101,108,59,1,8880,4,2,99,105,15433,15438,114,59,3,55349,56517,59,1,968,110,99,115,112,59,1,8200,4,6,102,105,111,112,115,117,15462,15467,15472,15478,15485,15491,114,59,3,55349,56622,110,116,59,1,10764,112,102,59,3,55349,56674,114,105,109,101,59,1,8279,99,114,59,3,55349,56518,4,3,97,101,111,15499,15520,15534,116,4,2,101,105,15506,15515,114,110,105,111,110,115,59,1,8461,110,116,59,1,10774,115,116,4,2,59,101,15528,15530,1,63,113,59,1,8799,116,5,34,1,59,15540,1,34,4,21,65,66,72,97,98,99,100,101,102,104,105,108,109,110,111,112,114,115,116,117,120,15586,15609,15615,15620,15796,15855,15893,15931,15977,16001,16039,16183,16204,16222,16228,16285,16312,16318,16363,16408,16416,4,3,97,114,116,15594,15599,15603,114,114,59,1,8667,114,59,1,8658,97,105,108,59,1,10524,97,114,114,59,1,10511,97,114,59,1,10596,4,7,99,100,101,110,113,114,116,15636,15651,15656,15664,15687,15696,15770,4,2,101,117,15642,15646,59,3,8765,817,116,101,59,1,341,105,99,59,1,8730,109,112,116,121,118,59,1,10675,103,4,4,59,100,101,108,15675,15677,15680,15683,1,10217,59,1,10642,59,1,10661,101,59,1,10217,117,111,5,187,1,59,15694,1,187,114,4,11,59,97,98,99,102,104,108,112,115,116,119,15721,15723,15727,15739,15742,15746,15750,15754,15758,15763,15767,1,8594,112,59,1,10613,4,2,59,102,15733,15735,1,8677,115,59,1,10528,59,1,10547,115,59,1,10526,107,59,1,8618,112,59,1,8620,108,59,1,10565,105,109,59,1,10612,108,59,1,8611,59,1,8605,4,2,97,105,15776,15781,105,108,59,1,10522,111,4,2,59,110,15788,15790,1,8758,97,108,115,59,1,8474,4,3,97,98,114,15804,15809,15814,114,114,59,1,10509,114,107,59,1,10099,4,2,97,107,15820,15833,99,4,2,101,107,15827,15830,59,1,125,59,1,93,4,2,101,115,15839,15842,59,1,10636,108,4,2,100,117,15849,15852,59,1,10638,59,1,10640,4,4,97,101,117,121,15865,15871,15886,15890,114,111,110,59,1,345,4,2,100,105,15877,15882,105,108,59,1,343,108,59,1,8969,98,59,1,125,59,1,1088,4,4,99,108,113,115,15903,15907,15914,15927,97,59,1,10551,100,104,97,114,59,1,10601,117,111,4,2,59,114,15922,15924,1,8221,59,1,8221,104,59,1,8627,4,3,97,99,103,15939,15966,15970,108,4,4,59,105,112,115,15950,15952,15957,15963,1,8476,110,101,59,1,8475,97,114,116,59,1,8476,59,1,8477,116,59,1,9645,5,174,1,59,15975,1,174,4,3,105,108,114,15985,15991,15997,115,104,116,59,1,10621,111,111,114,59,1,8971,59,3,55349,56623,4,2,97,111,16007,16028,114,4,2,100,117,16014,16017,59,1,8641,4,2,59,108,16023,16025,1,8640,59,1,10604,4,2,59,118,16034,16036,1,961,59,1,1009,4,3,103,110,115,16047,16167,16171,104,116,4,6,97,104,108,114,115,116,16063,16081,16103,16130,16143,16155,114,114,111,119,4,2,59,116,16073,16075,1,8594,97,105,108,59,1,8611,97,114,112,111,111,110,4,2,100,117,16093,16099,111,119,110,59,1,8641,112,59,1,8640,101,102,116,4,2,97,104,16112,16120,114,114,111,119,115,59,1,8644,97,114,112,111,111,110,115,59,1,8652,105,103,104,116,97,114,114,111,119,115,59,1,8649,113,117,105,103,97,114,114,111,119,59,1,8605,104,114,101,101,116,105,109,101,115,59,1,8908,103,59,1,730,105,110,103,100,111,116,115,101,113,59,1,8787,4,3,97,104,109,16191,16196,16201,114,114,59,1,8644,97,114,59,1,8652,59,1,8207,111,117,115,116,4,2,59,97,16214,16216,1,9137,99,104,101,59,1,9137,109,105,100,59,1,10990,4,4,97,98,112,116,16238,16252,16257,16278,4,2,110,114,16244,16248,103,59,1,10221,114,59,1,8702,114,107,59,1,10215,4,3,97,102,108,16265,16269,16273,114,59,1,10630,59,3,55349,56675,117,115,59,1,10798,105,109,101,115,59,1,10805,4,2,97,112,16291,16304,114,4,2,59,103,16298,16300,1,41,116,59,1,10644,111,108,105,110,116,59,1,10770,97,114,114,59,1,8649,4,4,97,99,104,113,16328,16334,16339,16342,113,117,111,59,1,8250,114,59,3,55349,56519,59,1,8625,4,2,98,117,16348,16351,59,1,93,111,4,2,59,114,16358,16360,1,8217,59,1,8217,4,3,104,105,114,16371,16377,16383,114,101,101,59,1,8908,109,101,115,59,1,8906,105,4,4,59,101,102,108,16394,16396,16399,16402,1,9657,59,1,8885,59,1,9656,116,114,105,59,1,10702,108,117,104,97,114,59,1,10600,59,1,8478,4,19,97,98,99,100,101,102,104,105,108,109,111,112,113,114,115,116,117,119,122,16459,16466,16472,16572,16590,16672,16687,16746,16844,16850,16924,16963,16988,17115,17121,17154,17206,17614,17656,99,117,116,101,59,1,347,113,117,111,59,1,8218,4,10,59,69,97,99,101,105,110,112,115,121,16494,16496,16499,16513,16518,16531,16536,16556,16564,16569,1,8827,59,1,10932,4,2,112,114,16505,16508,59,1,10936,111,110,59,1,353,117,101,59,1,8829,4,2,59,100,16524,16526,1,10928,105,108,59,1,351,114,99,59,1,349,4,3,69,97,115,16544,16547,16551,59,1,10934,112,59,1,10938,105,109,59,1,8937,111,108,105,110,116,59,1,10771,105,109,59,1,8831,59,1,1089,111,116,4,3,59,98,101,16582,16584,16587,1,8901,59,1,8865,59,1,10854,4,7,65,97,99,109,115,116,120,16606,16611,16634,16642,16646,16652,16668,114,114,59,1,8664,114,4,2,104,114,16618,16622,107,59,1,10533,4,2,59,111,16628,16630,1,8600,119,59,1,8600,116,5,167,1,59,16640,1,167,105,59,1,59,119,97,114,59,1,10537,109,4,2,105,110,16659,16665,110,117,115,59,1,8726,59,1,8726,116,59,1,10038,114,4,2,59,111,16679,16682,3,55349,56624,119,110,59,1,8994,4,4,97,99,111,121,16697,16702,16716,16739,114,112,59,1,9839,4,2,104,121,16708,16713,99,121,59,1,1097,59,1,1096,114,116,4,2,109,112,16724,16729,105,100,59,1,8739,97,114,97,108,108,101,108,59,1,8741,5,173,1,59,16744,1,173,4,2,103,109,16752,16770,109,97,4,3,59,102,118,16762,16764,16767,1,963,59,1,962,59,1,962,4,8,59,100,101,103,108,110,112,114,16788,16790,16795,16806,16817,16828,16832,16838,1,8764,111,116,59,1,10858,4,2,59,113,16801,16803,1,8771,59,1,8771,4,2,59,69,16812,16814,1,10910,59,1,10912,4,2,59,69,16823,16825,1,10909,59,1,10911,101,59,1,8774,108,117,115,59,1,10788,97,114,114,59,1,10610,97,114,114,59,1,8592,4,4,97,101,105,116,16860,16883,16891,16904,4,2,108,115,16866,16878,108,115,101,116,109,105,110,117,115,59,1,8726,104,112,59,1,10803,112,97,114,115,108,59,1,10724,4,2,100,108,16897,16900,59,1,8739,101,59,1,8995,4,2,59,101,16910,16912,1,10922,4,2,59,115,16918,16920,1,10924,59,3,10924,65024,4,3,102,108,112,16932,16938,16958,116,99,121,59,1,1100,4,2,59,98,16944,16946,1,47,4,2,59,97,16952,16954,1,10692,114,59,1,9023,102,59,3,55349,56676,97,4,2,100,114,16970,16985,101,115,4,2,59,117,16978,16980,1,9824,105,116,59,1,9824,59,1,8741,4,3,99,115,117,16996,17028,17089,4,2,97,117,17002,17015,112,4,2,59,115,17009,17011,1,8851,59,3,8851,65024,112,4,2,59,115,17022,17024,1,8852,59,3,8852,65024,117,4,2,98,112,17035,17062,4,3,59,101,115,17043,17045,17048,1,8847,59,1,8849,101,116,4,2,59,101,17056,17058,1,8847,113,59,1,8849,4,3,59,101,115,17070,17072,17075,1,8848,59,1,8850,101,116,4,2,59,101,17083,17085,1,8848,113,59,1,8850,4,3,59,97,102,17097,17099,17112,1,9633,114,4,2,101,102,17106,17109,59,1,9633,59,1,9642,59,1,9642,97,114,114,59,1,8594,4,4,99,101,109,116,17131,17136,17142,17148,114,59,3,55349,56520,116,109,110,59,1,8726,105,108,101,59,1,8995,97,114,102,59,1,8902,4,2,97,114,17160,17172,114,4,2,59,102,17167,17169,1,9734,59,1,9733,4,2,97,110,17178,17202,105,103,104,116,4,2,101,112,17188,17197,112,115,105,108,111,110,59,1,1013,104,105,59,1,981,115,59,1,175,4,5,98,99,109,110,112,17218,17351,17420,17423,17427,4,9,59,69,100,101,109,110,112,114,115,17238,17240,17243,17248,17261,17267,17279,17285,17291,1,8834,59,1,10949,111,116,59,1,10941,4,2,59,100,17254,17256,1,8838,111,116,59,1,10947,117,108,116,59,1,10945,4,2,69,101,17273,17276,59,1,10955,59,1,8842,108,117,115,59,1,10943,97,114,114,59,1,10617,4,3,101,105,117,17299,17335,17339,116,4,3,59,101,110,17308,17310,17322,1,8834,113,4,2,59,113,17317,17319,1,8838,59,1,10949,101,113,4,2,59,113,17330,17332,1,8842,59,1,10955,109,59,1,10951,4,2,98,112,17345,17348,59,1,10965,59,1,10963,99,4,6,59,97,99,101,110,115,17366,17368,17376,17385,17389,17415,1,8827,112,112,114,111,120,59,1,10936,117,114,108,121,101,113,59,1,8829,113,59,1,10928,4,3,97,101,115,17397,17405,17410,112,112,114,111,120,59,1,10938,113,113,59,1,10934,105,109,59,1,8937,105,109,59,1,8831,59,1,8721,103,59,1,9834,4,13,49,50,51,59,69,100,101,104,108,109,110,112,115,17455,17462,17469,17476,17478,17481,17496,17509,17524,17530,17536,17548,17554,5,185,1,59,17460,1,185,5,178,1,59,17467,1,178,5,179,1,59,17474,1,179,1,8835,59,1,10950,4,2,111,115,17487,17491,116,59,1,10942,117,98,59,1,10968,4,2,59,100,17502,17504,1,8839,111,116,59,1,10948,115,4,2,111,117,17516,17520,108,59,1,10185,98,59,1,10967,97,114,114,59,1,10619,117,108,116,59,1,10946,4,2,69,101,17542,17545,59,1,10956,59,1,8843,108,117,115,59,1,10944,4,3,101,105,117,17562,17598,17602,116,4,3,59,101,110,17571,17573,17585,1,8835,113,4,2,59,113,17580,17582,1,8839,59,1,10950,101,113,4,2,59,113,17593,17595,1,8843,59,1,10956,109,59,1,10952,4,2,98,112,17608,17611,59,1,10964,59,1,10966,4,3,65,97,110,17622,17627,17650,114,114,59,1,8665,114,4,2,104,114,17634,17638,107,59,1,10534,4,2,59,111,17644,17646,1,8601,119,59,1,8601,119,97,114,59,1,10538,108,105,103,5,223,1,59,17664,1,223,4,13,97,98,99,100,101,102,104,105,111,112,114,115,119,17694,17709,17714,17737,17742,17749,17754,17860,17905,17957,17964,18090,18122,4,2,114,117,17700,17706,103,101,116,59,1,8982,59,1,964,114,107,59,1,9140,4,3,97,101,121,17722,17728,17734,114,111,110,59,1,357,100,105,108,59,1,355,59,1,1090,111,116,59,1,8411,108,114,101,99,59,1,8981,114,59,3,55349,56625,4,4,101,105,107,111,17764,17805,17836,17851,4,2,114,116,17770,17786,101,4,2,52,102,17777,17780,59,1,8756,111,114,101,59,1,8756,97,4,3,59,115,118,17795,17797,17802,1,952,121,109,59,1,977,59,1,977,4,2,99,110,17811,17831,107,4,2,97,115,17818,17826,112,112,114,111,120,59,1,8776,105,109,59,1,8764,115,112,59,1,8201,4,2,97,115,17842,17846,112,59,1,8776,105,109,59,1,8764,114,110,5,254,1,59,17858,1,254,4,3,108,109,110,17868,17873,17901,100,101,59,1,732,101,115,5,215,3,59,98,100,17884,17886,17898,1,215,4,2,59,97,17892,17894,1,8864,114,59,1,10801,59,1,10800,116,59,1,8749,4,3,101,112,115,17913,17917,17953,97,59,1,10536,4,4,59,98,99,102,17927,17929,17934,17939,1,8868,111,116,59,1,9014,105,114,59,1,10993,4,2,59,111,17945,17948,3,55349,56677,114,107,59,1,10970,97,59,1,10537,114,105,109,101,59,1,8244,4,3,97,105,112,17972,17977,18082,100,101,59,1,8482,4,7,97,100,101,109,112,115,116,17993,18051,18056,18059,18066,18072,18076,110,103,108,101,4,5,59,100,108,113,114,18009,18011,18017,18032,18035,1,9653,111,119,110,59,1,9663,101,102,116,4,2,59,101,18026,18028,1,9667,113,59,1,8884,59,1,8796,105,103,104,116,4,2,59,101,18045,18047,1,9657,113,59,1,8885,111,116,59,1,9708,59,1,8796,105,110,117,115,59,1,10810,108,117,115,59,1,10809,98,59,1,10701,105,109,101,59,1,10811,101,122,105,117,109,59,1,9186,4,3,99,104,116,18098,18111,18116,4,2,114,121,18104,18108,59,3,55349,56521,59,1,1094,99,121,59,1,1115,114,111,107,59,1,359,4,2,105,111,18128,18133,120,116,59,1,8812,104,101,97,100,4,2,108,114,18143,18154,101,102,116,97,114,114,111,119,59,1,8606,105,103,104,116,97,114,114,111,119,59,1,8608,4,18,65,72,97,98,99,100,102,103,104,108,109,111,112,114,115,116,117,119,18204,18209,18214,18234,18250,18268,18292,18308,18319,18343,18379,18397,18413,18504,18547,18553,18584,18603,114,114,59,1,8657,97,114,59,1,10595,4,2,99,114,18220,18230,117,116,101,5,250,1,59,18228,1,250,114,59,1,8593,114,4,2,99,101,18241,18245,121,59,1,1118,118,101,59,1,365,4,2,105,121,18256,18265,114,99,5,251,1,59,18263,1,251,59,1,1091,4,3,97,98,104,18276,18281,18287,114,114,59,1,8645,108,97,99,59,1,369,97,114,59,1,10606,4,2,105,114,18298,18304,115,104,116,59,1,10622,59,3,55349,56626,114,97,118,101,5,249,1,59,18317,1,249,4,2,97,98,18325,18338,114,4,2,108,114,18332,18335,59,1,8639,59,1,8638,108,107,59,1,9600,4,2,99,116,18349,18374,4,2,111,114,18355,18369,114,110,4,2,59,101,18363,18365,1,8988,114,59,1,8988,111,112,59,1,8975,114,105,59,1,9720,4,2,97,108,18385,18390,99,114,59,1,363,5,168,1,59,18395,1,168,4,2,103,112,18403,18408,111,110,59,1,371,102,59,3,55349,56678,4,6,97,100,104,108,115,117,18427,18434,18445,18470,18475,18494,114,114,111,119,59,1,8593,111,119,110,97,114,114,111,119,59,1,8597,97,114,112,111,111,110,4,2,108,114,18457,18463,101,102,116,59,1,8639,105,103,104,116,59,1,8638,117,115,59,1,8846,105,4,3,59,104,108,18484,18486,18489,1,965,59,1,978,111,110,59,1,965,112,97,114,114,111,119,115,59,1,8648,4,3,99,105,116,18512,18537,18542,4,2,111,114,18518,18532,114,110,4,2,59,101,18526,18528,1,8989,114,59,1,8989,111,112,59,1,8974,110,103,59,1,367,114,105,59,1,9721,99,114,59,3,55349,56522,4,3,100,105,114,18561,18566,18572,111,116,59,1,8944,108,100,101,59,1,361,105,4,2,59,102,18579,18581,1,9653,59,1,9652,4,2,97,109,18590,18595,114,114,59,1,8648,108,5,252,1,59,18601,1,252,97,110,103,108,101,59,1,10663,4,15,65,66,68,97,99,100,101,102,108,110,111,112,114,115,122,18643,18648,18661,18667,18847,18851,18857,18904,18909,18915,18931,18937,18943,18949,18996,114,114,59,1,8661,97,114,4,2,59,118,18656,18658,1,10984,59,1,10985,97,115,104,59,1,8872,4,2,110,114,18673,18679,103,114,116,59,1,10652,4,7,101,107,110,112,114,115,116,18695,18704,18711,18720,18742,18754,18810,112,115,105,108,111,110,59,1,1013,97,112,112,97,59,1,1008,111,116,104,105,110,103,59,1,8709,4,3,104,105,114,18728,18732,18735,105,59,1,981,59,1,982,111,112,116,111,59,1,8733,4,2,59,104,18748,18750,1,8597,111,59,1,1009,4,2,105,117,18760,18766,103,109,97,59,1,962,4,2,98,112,18772,18791,115,101,116,110,101,113,4,2,59,113,18784,18787,3,8842,65024,59,3,10955,65024,115,101,116,110,101,113,4,2,59,113,18803,18806,3,8843,65024,59,3,10956,65024,4,2,104,114,18816,18822,101,116,97,59,1,977,105,97,110,103,108,101,4,2,108,114,18834,18840,101,102,116,59,1,8882,105,103,104,116,59,1,8883,121,59,1,1074,97,115,104,59,1,8866,4,3,101,108,114,18865,18884,18890,4,3,59,98,101,18873,18875,18880,1,8744,97,114,59,1,8891,113,59,1,8794,108,105,112,59,1,8942,4,2,98,116,18896,18901,97,114,59,1,124,59,1,124,114,59,3,55349,56627,116,114,105,59,1,8882,115,117,4,2,98,112,18923,18927,59,3,8834,8402,59,3,8835,8402,112,102,59,3,55349,56679,114,111,112,59,1,8733,116,114,105,59,1,8883,4,2,99,117,18955,18960,114,59,3,55349,56523,4,2,98,112,18966,18981,110,4,2,69,101,18973,18977,59,3,10955,65024,59,3,8842,65024,110,4,2,69,101,18988,18992,59,3,10956,65024,59,3,8843,65024,105,103,122,97,103,59,1,10650,4,7,99,101,102,111,112,114,115,19020,19026,19061,19066,19072,19075,19089,105,114,99,59,1,373,4,2,100,105,19032,19055,4,2,98,103,19038,19043,97,114,59,1,10847,101,4,2,59,113,19050,19052,1,8743,59,1,8793,101,114,112,59,1,8472,114,59,3,55349,56628,112,102,59,3,55349,56680,59,1,8472,4,2,59,101,19081,19083,1,8768,97,116,104,59,1,8768,99,114,59,3,55349,56524,4,14,99,100,102,104,105,108,109,110,111,114,115,117,118,119,19125,19146,19152,19157,19173,19176,19192,19197,19202,19236,19252,19269,19286,19291,4,3,97,105,117,19133,19137,19142,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,116,114,105,59,1,9661,114,59,3,55349,56629,4,2,65,97,19163,19168,114,114,59,1,10234,114,114,59,1,10231,59,1,958,4,2,65,97,19182,19187,114,114,59,1,10232,114,114,59,1,10229,97,112,59,1,10236,105,115,59,1,8955,4,3,100,112,116,19210,19215,19230,111,116,59,1,10752,4,2,102,108,19221,19225,59,3,55349,56681,117,115,59,1,10753,105,109,101,59,1,10754,4,2,65,97,19242,19247,114,114,59,1,10233,114,114,59,1,10230,4,2,99,113,19258,19263,114,59,3,55349,56525,99,117,112,59,1,10758,4,2,112,116,19275,19281,108,117,115,59,1,10756,114,105,59,1,9651,101,101,59,1,8897,101,100,103,101,59,1,8896,4,8,97,99,101,102,105,111,115,117,19316,19335,19349,19357,19362,19367,19373,19379,99,4,2,117,121,19323,19332,116,101,5,253,1,59,19330,1,253,59,1,1103,4,2,105,121,19341,19346,114,99,59,1,375,59,1,1099,110,5,165,1,59,19355,1,165,114,59,3,55349,56630,99,121,59,1,1111,112,102,59,3,55349,56682,99,114,59,3,55349,56526,4,2,99,109,19385,19389,121,59,1,1102,108,5,255,1,59,19395,1,255,4,10,97,99,100,101,102,104,105,111,115,119,19419,19426,19441,19446,19462,19467,19472,19480,19486,19492,99,117,116,101,59,1,378,4,2,97,121,19432,19438,114,111,110,59,1,382,59,1,1079,111,116,59,1,380,4,2,101,116,19452,19458,116,114,102,59,1,8488,97,59,1,950,114,59,3,55349,56631,99,121,59,1,1078,103,114,97,114,114,59,1,8669,112,102,59,3,55349,56683,99,114,59,3,55349,56527,4,2,106,110,19498,19501,59,1,8205,106,59,1,8204])},77118:function(e,t,n){"use strict";let r=n(54284),a=n(41734),i=r.CODE_POINTS;e.exports=class{constructor(){this.html=null,this.pos=-1,this.lastGapPos=-1,this.lastCharPos=-1,this.gapStack=[],this.skipNextNewLine=!1,this.lastChunkWritten=!1,this.endOfChunkHit=!1,this.bufferWaterline=65536}_err(){}_addGap(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos}_processSurrogate(e){if(this.pos!==this.lastCharPos){let t=this.html.charCodeAt(this.pos+1);if(r.isSurrogatePair(t))return this.pos++,this._addGap(),r.getSurrogatePairCodePoint(e,t)}else if(!this.lastChunkWritten)return this.endOfChunkHit=!0,i.EOF;return this._err(a.surrogateInInputStream),e}dropParsedChunk(){this.pos>this.bufferWaterline&&(this.lastCharPos-=this.pos,this.html=this.html.substring(this.pos),this.pos=0,this.lastGapPos=-1,this.gapStack=[])}write(e,t){this.html?this.html+=e:this.html=e,this.lastCharPos=this.html.length-1,this.endOfChunkHit=!1,this.lastChunkWritten=t}insertHtmlAtCurrentPos(e){this.html=this.html.substring(0,this.pos+1)+e+this.html.substring(this.pos+1,this.html.length),this.lastCharPos=this.html.length-1,this.endOfChunkHit=!1}advance(){if(this.pos++,this.pos>this.lastCharPos)return this.endOfChunkHit=!this.lastChunkWritten,i.EOF;let e=this.html.charCodeAt(this.pos);if(this.skipNextNewLine&&e===i.LINE_FEED)return this.skipNextNewLine=!1,this._addGap(),this.advance();if(e===i.CARRIAGE_RETURN)return this.skipNextNewLine=!0,i.LINE_FEED;this.skipNextNewLine=!1,r.isSurrogate(e)&&(e=this._processSurrogate(e));let t=e>31&&e<127||e===i.LINE_FEED||e===i.CARRIAGE_RETURN||e>159&&e<64976;return t||this._checkForProblematicCharacters(e),e}_checkForProblematicCharacters(e){r.isControlCodePoint(e)?this._err(a.controlCharacterInInputStream):r.isUndefinedCodePoint(e)&&this._err(a.noncharacterInInputStream)}retreat(){this.pos===this.lastGapPos&&(this.lastGapPos=this.gapStack.pop(),this.pos--),this.pos--}}},17296:function(e,t,n){"use strict";let{DOCUMENT_MODE:r}=n(16152);t.createDocument=function(){return{nodeName:"#document",mode:r.NO_QUIRKS,childNodes:[]}},t.createDocumentFragment=function(){return{nodeName:"#document-fragment",childNodes:[]}},t.createElement=function(e,t,n){return{nodeName:e,tagName:e,attrs:n,namespaceURI:t,childNodes:[],parentNode:null}},t.createCommentNode=function(e){return{nodeName:"#comment",data:e,parentNode:null}};let a=function(e){return{nodeName:"#text",value:e,parentNode:null}},i=t.appendChild=function(e,t){e.childNodes.push(t),t.parentNode=e},o=t.insertBefore=function(e,t,n){let r=e.childNodes.indexOf(n);e.childNodes.splice(r,0,t),t.parentNode=e};t.setTemplateContent=function(e,t){e.content=t},t.getTemplateContent=function(e){return e.content},t.setDocumentType=function(e,t,n,r){let a=null;for(let t=0;t(Object.keys(t).forEach(n=>{e[n]=t[n]}),e),Object.create(null))}},81704:function(e){"use strict";class t{constructor(e){let t={},n=this._getOverriddenMethods(this,t);for(let r of Object.keys(n))"function"==typeof n[r]&&(t[r]=e[r],e[r]=n[r])}_getOverriddenMethods(){throw Error("Not implemented")}}t.install=function(e,t,n){e.__mixins||(e.__mixins=[]);for(let n=0;n4&&g.slice(0,4)===o&&s.test(t)&&("-"===t.charAt(4)?f=o+(n=t.slice(5).replace(l,d)).charAt(0).toUpperCase()+n.slice(1):(m=(p=t).slice(4),t=l.test(m)?p:("-"!==(m=m.replace(c,u)).charAt(0)&&(m="-"+m),o+m)),h=a),new h(f,t))};var s=/^data[-\w.:]+$/i,l=/-[a-z]/g,c=/[A-Z]/g;function u(e){return"-"+e.toLowerCase()}function d(e){return e.charAt(1).toUpperCase()}},97247:function(e,t,n){"use strict";var r=n(19940),a=n(8289),i=n(5812),o=n(94397),s=n(67716),l=n(61805);e.exports=r([i,a,o,s,l])},67716:function(e,t,n){"use strict";var r=n(17e3),a=n(17596),i=r.booleanish,o=r.number,s=r.spaceSeparated;e.exports=a({transform:function(e,t){return"role"===t?t:"aria-"+t.slice(4).toLowerCase()},properties:{ariaActiveDescendant:null,ariaAtomic:i,ariaAutoComplete:null,ariaBusy:i,ariaChecked:i,ariaColCount:o,ariaColIndex:o,ariaColSpan:o,ariaControls:s,ariaCurrent:null,ariaDescribedBy:s,ariaDetails:null,ariaDisabled:i,ariaDropEffect:s,ariaErrorMessage:null,ariaExpanded:i,ariaFlowTo:s,ariaGrabbed:i,ariaHasPopup:null,ariaHidden:i,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:s,ariaLevel:o,ariaLive:null,ariaModal:i,ariaMultiLine:i,ariaMultiSelectable:i,ariaOrientation:null,ariaOwns:s,ariaPlaceholder:null,ariaPosInSet:o,ariaPressed:i,ariaReadOnly:i,ariaRelevant:null,ariaRequired:i,ariaRoleDescription:s,ariaRowCount:o,ariaRowIndex:o,ariaRowSpan:o,ariaSelected:i,ariaSetSize:o,ariaSort:null,ariaValueMax:o,ariaValueMin:o,ariaValueNow:o,ariaValueText:null,role:null}})},61805:function(e,t,n){"use strict";var r=n(17e3),a=n(17596),i=n(10855),o=r.boolean,s=r.overloadedBoolean,l=r.booleanish,c=r.number,u=r.spaceSeparated,d=r.commaSeparated;e.exports=a({space:"html",attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},transform:i,mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:d,acceptCharset:u,accessKey:u,action:null,allow:null,allowFullScreen:o,allowPaymentRequest:o,allowUserMedia:o,alt:null,as:null,async:o,autoCapitalize:null,autoComplete:u,autoFocus:o,autoPlay:o,capture:o,charSet:null,checked:o,cite:null,className:u,cols:c,colSpan:null,content:null,contentEditable:l,controls:o,controlsList:u,coords:c|d,crossOrigin:null,data:null,dateTime:null,decoding:null,default:o,defer:o,dir:null,dirName:null,disabled:o,download:s,draggable:l,encType:null,enterKeyHint:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:o,formTarget:null,headers:u,height:c,hidden:o,high:c,href:null,hrefLang:null,htmlFor:u,httpEquiv:u,id:null,imageSizes:null,imageSrcSet:d,inputMode:null,integrity:null,is:null,isMap:o,itemId:null,itemProp:u,itemRef:u,itemScope:o,itemType:u,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:o,low:c,manifest:null,max:null,maxLength:c,media:null,method:null,min:null,minLength:c,multiple:o,muted:o,name:null,nonce:null,noModule:o,noValidate:o,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforePrint:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextMenu:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:o,optimum:c,pattern:null,ping:u,placeholder:null,playsInline:o,poster:null,preload:null,readOnly:o,referrerPolicy:null,rel:u,required:o,reversed:o,rows:c,rowSpan:c,sandbox:u,scope:null,scoped:o,seamless:o,selected:o,shape:null,size:c,sizes:null,slot:null,span:c,spellCheck:l,src:null,srcDoc:null,srcLang:null,srcSet:d,start:c,step:null,style:null,tabIndex:c,target:null,title:null,translate:null,type:null,typeMustMatch:o,useMap:null,value:l,width:c,wrap:null,align:null,aLink:null,archive:u,axis:null,background:null,bgColor:null,border:c,borderColor:null,bottomMargin:c,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:o,declare:o,event:null,face:null,frame:null,frameBorder:null,hSpace:c,leftMargin:c,link:null,longDesc:null,lowSrc:null,marginHeight:c,marginWidth:c,noResize:o,noHref:o,noShade:o,noWrap:o,object:null,profile:null,prompt:null,rev:null,rightMargin:c,rules:null,scheme:null,scrolling:l,standby:null,summary:null,text:null,topMargin:c,valueType:null,version:null,vAlign:null,vLink:null,vSpace:c,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:o,disableRemotePlayback:o,prefix:null,property:null,results:c,security:null,unselectable:null}})},10855:function(e,t,n){"use strict";var r=n(28740);e.exports=function(e,t){return r(e,t.toLowerCase())}},28740:function(e){"use strict";e.exports=function(e,t){return t in e?e[t]:t}},17596:function(e,t,n){"use strict";var r=n(66632),a=n(99607),i=n(98805);e.exports=function(e){var t,n,o=e.space,s=e.mustUseProperty||[],l=e.attributes||{},c=e.properties,u=e.transform,d={},p={};for(t in c)n=new i(t,u(l,t),c[t],o),-1!==s.indexOf(t)&&(n.mustUseProperty=!0),d[t]=n,p[r(t)]=t,p[r(n.attribute)]=t;return new a(d,p,o)}},98805:function(e,t,n){"use strict";var r=n(57643),a=n(17e3);e.exports=s,s.prototype=new r,s.prototype.defined=!0;var i=["boolean","booleanish","overloadedBoolean","number","commaSeparated","spaceSeparated","commaOrSpaceSeparated"],o=i.length;function s(e,t,n,s){var l,c,u,d=-1;for(s&&(this.space=s),r.call(this,e,t);++dt.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let i="text/event-stream",l="last-event-id";function c(e,t){var{signal:n,headers:c,onopen:d,onmessage:m,onclose:u,onerror:p,openWhenHidden:g,fetch:f}=t,$=a(t,["signal","headers","onopen","onmessage","onclose","onerror","openWhenHidden","fetch"]);return new Promise((t,a)=>{let b;let h=Object.assign({},c);function y(){b.abort(),document.hidden||w()}h.accept||(h.accept=i),g||document.addEventListener("visibilitychange",y);let v=1e3,x=0;function E(){document.removeEventListener("visibilitychange",y),window.clearTimeout(x),b.abort()}null==n||n.addEventListener("abort",()=>{E(),t()});let O=null!=f?f:window.fetch,S=null!=d?d:s;async function w(){var n,i;b=new AbortController;try{let n,a,c,s;let d=await O(e,Object.assign(Object.assign({},$),{headers:h,signal:b.signal}));await S(d),await r(d.body,(i=function(e,t,n){let r=o(),a=new TextDecoder;return function(i,l){if(0===i.length)null==n||n(r),r=o();else if(l>0){let n=a.decode(i.subarray(0,l)),o=l+(32===i[l+1]?2:1),c=a.decode(i.subarray(o));switch(n){case"data":r.data=r.data?r.data+"\n"+c:c;break;case"event":r.event=c;break;case"id":e(r.id=c);break;case"retry":let s=parseInt(c,10);isNaN(s)||t(r.retry=s)}}}}(e=>{e?h[l]=e:delete h[l]},e=>{v=e},m),s=!1,function(e){void 0===n?(n=e,a=0,c=-1):n=function(e,t){let n=new Uint8Array(e.length+t.length);return n.set(e),n.set(t,e.length),n}(n,e);let t=n.length,r=0;for(;a{let{icon:t,description:n,prefixCls:r,className:a}=e,i=o.createElement("div",{className:`${r}-icon`},o.createElement($,null));return o.createElement("div",{onClick:e.onClick,onFocus:e.onFocus,onMouseEnter:e.onMouseEnter,onMouseLeave:e.onMouseLeave,className:s()(a,`${r}-content`)},t||n?o.createElement(o.Fragment,null,t&&o.createElement("div",{className:`${r}-icon`},t),n&&o.createElement("div",{className:`${r}-description`},n)):i)});let h=o.createContext(void 0),{Provider:y}=h;var v=n(23183),x=n(14747),E=n(16932),O=n(93590),S=n(67968),w=n(45503),k=e=>0===e?0:e-Math.sqrt(Math.pow(e,2)/2);let C=e=>{let{componentCls:t,floatButtonSize:n,motionDurationSlow:r,motionEaseInOutCirc:o}=e,a=`${t}-group`,i=new v.E4("antFloatButtonMoveDownIn",{"0%":{transform:`translate3d(0, ${n}px, 0)`,transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),l=new v.E4("antFloatButtonMoveDownOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:`translate3d(0, ${n}px, 0)`,transformOrigin:"0 0",opacity:0}});return[{[`${a}-wrap`]:Object.assign({},(0,O.R)(`${a}-wrap`,i,l,r,!0))},{[`${a}-wrap`]:{[` + &${a}-wrap-enter, + &${a}-wrap-appear + `]:{opacity:0,animationTimingFunction:o},[`&${a}-wrap-leave`]:{animationTimingFunction:o}}}]},j=e=>{let{antCls:t,componentCls:n,floatButtonSize:r,margin:o,borderRadiusLG:a,borderRadiusSM:i,badgeOffset:l,floatButtonBodyPadding:c}=e,s=`${n}-group`;return{[s]:Object.assign(Object.assign({},(0,x.Wf)(e)),{zIndex:99,display:"block",border:"none",position:"fixed",width:r,height:"auto",boxShadow:"none",minHeight:r,insetInlineEnd:e.floatButtonInsetInlineEnd,insetBlockEnd:e.floatButtonInsetBlockEnd,borderRadius:a,[`${s}-wrap`]:{zIndex:-1,display:"block",position:"relative",marginBottom:o},[`&${s}-rtl`]:{direction:"rtl"},[n]:{position:"static"}}),[`${s}-circle`]:{[`${n}-circle:not(:last-child)`]:{marginBottom:e.margin,[`${n}-body`]:{width:r,height:r,borderRadius:"50%"}}},[`${s}-square`]:{[`${n}-square`]:{borderRadius:0,padding:0,"&:first-child":{borderStartStartRadius:a,borderStartEndRadius:a},"&:last-child":{borderEndStartRadius:a,borderEndEndRadius:a},"&:not(:last-child)":{borderBottom:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`},[`${t}-badge`]:{[`${t}-badge-count`]:{top:-(c+l),insetInlineEnd:-(c+l)}}},[`${s}-wrap`]:{display:"block",borderRadius:a,boxShadow:e.boxShadowSecondary,[`${n}-square`]:{boxShadow:"none",marginTop:0,borderRadius:0,padding:c,"&:first-child":{borderStartStartRadius:a,borderStartEndRadius:a},"&:last-child":{borderEndStartRadius:a,borderEndEndRadius:a},"&:not(:last-child)":{borderBottom:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`},[`${n}-body`]:{width:e.floatButtonBodySize,height:e.floatButtonBodySize}}}},[`${s}-circle-shadow`]:{boxShadow:"none"},[`${s}-square-shadow`]:{boxShadow:e.boxShadowSecondary,[`${n}-square`]:{boxShadow:"none",padding:c,[`${n}-body`]:{width:e.floatButtonBodySize,height:e.floatButtonBodySize,borderRadius:i}}}}},B=e=>{let{antCls:t,componentCls:n,floatButtonBodyPadding:r,floatButtonIconSize:o,floatButtonSize:a,borderRadiusLG:i,badgeOffset:l,dotOffsetInSquare:c,dotOffsetInCircle:s}=e;return{[n]:Object.assign(Object.assign({},(0,x.Wf)(e)),{border:"none",position:"fixed",cursor:"pointer",zIndex:99,width:a,height:a,insetInlineEnd:e.floatButtonInsetInlineEnd,insetBlockEnd:e.floatButtonInsetBlockEnd,boxShadow:e.boxShadowSecondary,"&-pure":{position:"relative",inset:"auto"},"&:empty":{display:"none"},[`${t}-badge`]:{width:"100%",height:"100%",[`${t}-badge-count`]:{transform:"translate(0, 0)",transformOrigin:"center",top:-l,insetInlineEnd:-l}},[`${n}-body`]:{width:"100%",height:"100%",display:"flex",justifyContent:"center",alignItems:"center",transition:`all ${e.motionDurationMid}`,[`${n}-content`]:{overflow:"hidden",textAlign:"center",minHeight:a,display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",padding:`${r/2}px ${r}px`,[`${n}-icon`]:{textAlign:"center",margin:"auto",width:o,fontSize:o,lineHeight:1}}}}),[`${n}-rtl`]:{direction:"rtl"},[`${n}-circle`]:{height:a,borderRadius:"50%",[`${t}-badge`]:{[`${t}-badge-dot`]:{top:s,insetInlineEnd:s}},[`${n}-body`]:{borderRadius:"50%"}},[`${n}-square`]:{height:"auto",minHeight:a,borderRadius:i,[`${t}-badge`]:{[`${t}-badge-dot`]:{top:c,insetInlineEnd:c}},[`${n}-body`]:{height:"auto",borderRadius:i}},[`${n}-default`]:{backgroundColor:e.floatButtonBackgroundColor,transition:`background-color ${e.motionDurationMid}`,[`${n}-body`]:{backgroundColor:e.floatButtonBackgroundColor,transition:`background-color ${e.motionDurationMid}`,"&:hover":{backgroundColor:e.colorFillContent},[`${n}-content`]:{[`${n}-icon`]:{color:e.colorText},[`${n}-description`]:{display:"flex",alignItems:"center",lineHeight:`${e.fontSizeLG}px`,color:e.colorText,fontSize:e.fontSizeSM}}}},[`${n}-primary`]:{backgroundColor:e.colorPrimary,[`${n}-body`]:{backgroundColor:e.colorPrimary,transition:`background-color ${e.motionDurationMid}`,"&:hover":{backgroundColor:e.colorPrimaryHover},[`${n}-content`]:{[`${n}-icon`]:{color:e.colorTextLightSolid},[`${n}-description`]:{display:"flex",alignItems:"center",lineHeight:`${e.fontSizeLG}px`,color:e.colorTextLightSolid,fontSize:e.fontSizeSM}}}}}};var N=(0,S.Z)("FloatButton",e=>{let{colorTextLightSolid:t,colorBgElevated:n,controlHeightLG:r,marginXXL:o,marginLG:a,fontSize:i,fontSizeIcon:l,controlItemBgHover:c,paddingXXS:s,borderRadiusLG:d}=e,m=(0,w.TS)(e,{floatButtonBackgroundColor:n,floatButtonColor:t,floatButtonHoverBackgroundColor:c,floatButtonFontSize:i,floatButtonIconSize:1.5*l,floatButtonSize:r,floatButtonInsetBlockEnd:o,floatButtonInsetInlineEnd:a,floatButtonBodySize:r-2*s,floatButtonBodyPadding:s,badgeOffset:1.5*s,dotOffsetInCircle:k(r/2),dotOffsetInSquare:k(d)});return[j(m),B(m),(0,E.J$)(e),C(m)]}),z=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let I="float-btn",P=o.forwardRef((e,t)=>{let{prefixCls:n,className:r,rootClassName:a,type:i="default",shape:l="circle",icon:c,description:d,tooltip:f,badge:$={}}=e,y=z(e,["prefixCls","className","rootClassName","type","shape","icon","description","tooltip","badge"]),{getPrefixCls:v,direction:x}=(0,o.useContext)(p.E_),E=(0,o.useContext)(h),O=v(I,n),[S,w]=N(O),k=s()(w,O,r,a,`${O}-${i}`,`${O}-${E||l}`,{[`${O}-rtl`]:"rtl"===x}),C=(0,o.useMemo)(()=>(0,m.Z)($,["title","children","status","text"]),[$]),j=(0,o.useMemo)(()=>({prefixCls:O,description:d,icon:c,type:i}),[O,d,c,i]),B=o.createElement("div",{className:`${O}-body`},o.createElement(b,Object.assign({},j)));return"badge"in e&&(B=o.createElement(u.Z,Object.assign({},C),B)),"tooltip"in e&&(B=o.createElement(g.Z,{title:f,placement:"rtl"===x?"right":"left"},B)),S(e.href?o.createElement("a",Object.assign({ref:t},y,{className:k}),B):o.createElement("button",Object.assign({ref:t},y,{className:k,type:"button"}),B))});var M=n(66367),Z=n(58375),L=n(74902),H=n(75164),R=function(e){let t;let n=n=>()=>{t=null,e.apply(void 0,(0,L.Z)(n))},r=function(){if(null==t){for(var e=arguments.length,r=Array(e),o=0;o{H.Z.cancel(t),t=null},r},T=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n},W=(0,o.memo)(e=>{let{prefixCls:t,className:n,type:r="default",shape:a="circle",visibilityHeight:i=400,icon:c=o.createElement(l,null),target:m,onClick:u,duration:g=450}=e,f=T(e,["prefixCls","className","type","shape","visibilityHeight","icon","target","onClick","duration"]),[$,b]=(0,o.useState)(0===i),y=(0,o.useRef)(null),v=()=>y.current&&y.current.ownerDocument?y.current.ownerDocument:window,x=R(e=>{let t=(0,M.Z)(e.target,!0);b(t>=i)});(0,o.useEffect)(()=>{let e=m||v,t=e();return x({target:t}),null==t||t.addEventListener("scroll",x),()=>{x.cancel(),null==t||t.removeEventListener("scroll",x)}},[m]);let E=e=>{(0,Z.Z)(0,{getContainer:m||v,duration:g}),null==u||u(e)},{getPrefixCls:O}=(0,o.useContext)(p.E_),S=O(I,t),w=O(),[k]=N(S),C=(0,o.useContext)(h),j=Object.assign({prefixCls:S,icon:c,type:r,shape:C||a},f);return k(o.createElement(d.ZP,{visible:$,motionName:`${w}-fade`},e=>{let{className:t}=e;return o.createElement(P,Object.assign({ref:y},j,{onClick:E,className:s()(n,t)}))}))}),_=n(97937),D=n(21770),F=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n},A=(0,o.memo)(e=>{let{prefixCls:t,className:n,style:r,shape:a="circle",type:i="default",icon:l=o.createElement($,null),closeIcon:c=o.createElement(_.Z,null),description:m,trigger:u,children:g,onOpenChange:f,open:b}=e,h=F(e,["prefixCls","className","style","shape","type","icon","closeIcon","description","trigger","children","onOpenChange","open"]),{direction:v,getPrefixCls:x}=(0,o.useContext)(p.E_),E=x(I,t),[O,S]=N(E),w=`${E}-group`,k=s()(w,S,n,{[`${w}-rtl`]:"rtl"===v,[`${w}-${a}`]:a,[`${w}-${a}-shadow`]:!u}),C=s()(S,`${w}-wrap`),[j,B]=(0,D.Z)(!1,{value:b}),z=(0,o.useRef)(null),M=(0,o.useRef)(null),Z=(0,o.useMemo)(()=>"hover"===u?{onMouseEnter(){B(!0),null==f||f(!0)},onMouseLeave(){B(!1),null==f||f(!1)}}:{},[u]),L=()=>{B(e=>(null==f||f(!e),!e))},H=(0,o.useCallback)(e=>{var t,n;if(null===(t=z.current)||void 0===t?void 0:t.contains(e.target)){(null===(n=M.current)||void 0===n?void 0:n.contains(e.target))&&L();return}B(!1),null==f||f(!1)},[u]);return(0,o.useEffect)(()=>{if("click"===u)return document.addEventListener("click",H),()=>{document.removeEventListener("click",H)}},[u]),O(o.createElement(y,{value:a},o.createElement("div",Object.assign({ref:z,className:k,style:r},Z),u&&["click","hover"].includes(u)?o.createElement(o.Fragment,null,o.createElement(d.ZP,{visible:j,motionName:`${w}-wrap`},e=>{let{className:t}=e;return o.createElement("div",{className:s()(t,C)},g)}),o.createElement(P,Object.assign({ref:M,type:i,shape:a,icon:j?c:l,description:m,"aria-label":e["aria-label"]},h))):g)))}),G=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let q=e=>{var{backTop:t}=e,n=G(e,["backTop"]);return t?o.createElement(W,Object.assign({},n,{visibilityHeight:0})):o.createElement(P,Object.assign({},n))};P.BackTop=W,P.Group=A,P._InternalPanelDoNotUseOrYouWillBeFired=e=>{var{className:t,items:n}=e,r=G(e,["className","items"]);let{prefixCls:a}=r,{getPrefixCls:i}=o.useContext(p.E_),l=i(I,a),c=`${l}-pure`;return n?o.createElement(A,Object.assign({className:s()(t,c)},r),n.map((e,t)=>o.createElement(q,Object.assign({key:t},e)))):o.createElement(q,Object.assign({className:s()(t,c)},r))};var V=P},2487:function(e,t,n){n.d(t,{Z:function(){return B}});var r=n(74902),o=n(94184),a=n.n(o),i=n(67294),l=n(38780),c=n(74443),s=n(53124),d=n(88258),m=n(92820),u=n(25378),p=n(81647),g=n(75081),f=n(96159),$=n(21584);let b=i.createContext({});b.Consumer;var h=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let y=(0,i.forwardRef)((e,t)=>{let n;var{prefixCls:r,children:o,actions:l,extra:c,className:d,colStyle:m}=e,u=h(e,["prefixCls","children","actions","extra","className","colStyle"]);let{grid:p,itemLayout:g}=(0,i.useContext)(b),{getPrefixCls:y}=(0,i.useContext)(s.E_),v=y("list",r),x=l&&l.length>0&&i.createElement("ul",{className:`${v}-item-action`,key:"actions"},l.map((e,t)=>i.createElement("li",{key:`${v}-item-action-${t}`},e,t!==l.length-1&&i.createElement("em",{className:`${v}-item-action-split`})))),E=p?"div":"li",O=i.createElement(E,Object.assign({},u,p?{}:{ref:t},{className:a()(`${v}-item`,{[`${v}-item-no-flex`]:!("vertical"===g?!!c:(i.Children.forEach(o,e=>{"string"==typeof e&&(n=!0)}),!(n&&i.Children.count(o)>1)))},d)}),"vertical"===g&&c?[i.createElement("div",{className:`${v}-item-main`,key:"content"},o,x),i.createElement("div",{className:`${v}-item-extra`,key:"extra"},c)]:[o,x,(0,f.Tm)(c,{key:"extra"})]);return p?i.createElement($.Z,{ref:t,flex:1,style:m},O):O});y.Meta=e=>{var{prefixCls:t,className:n,avatar:r,title:o,description:l}=e,c=h(e,["prefixCls","className","avatar","title","description"]);let{getPrefixCls:d}=(0,i.useContext)(s.E_),m=d("list",t),u=a()(`${m}-item-meta`,n),p=i.createElement("div",{className:`${m}-item-meta-content`},o&&i.createElement("h4",{className:`${m}-item-meta-title`},o),l&&i.createElement("div",{className:`${m}-item-meta-description`},l));return i.createElement("div",Object.assign({},c,{className:u}),r&&i.createElement("div",{className:`${m}-item-meta-avatar`},r),(o||l)&&p)};var v=n(14747),x=n(67968),E=n(45503);let O=e=>{let{listBorderedCls:t,componentCls:n,paddingLG:r,margin:o,itemPaddingSM:a,itemPaddingLG:i,marginLG:l,borderRadiusLG:c}=e;return{[`${t}`]:{border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,borderRadius:c,[`${n}-header,${n}-footer,${n}-item`]:{paddingInline:r},[`${n}-pagination`]:{margin:`${o}px ${l}px`}},[`${t}${n}-sm`]:{[`${n}-item,${n}-header,${n}-footer`]:{padding:a}},[`${t}${n}-lg`]:{[`${n}-item,${n}-header,${n}-footer`]:{padding:i}}}},S=e=>{let{componentCls:t,screenSM:n,screenMD:r,marginLG:o,marginSM:a,margin:i}=e;return{[`@media screen and (max-width:${r})`]:{[`${t}`]:{[`${t}-item`]:{[`${t}-item-action`]:{marginInlineStart:o}}},[`${t}-vertical`]:{[`${t}-item`]:{[`${t}-item-extra`]:{marginInlineStart:o}}}},[`@media screen and (max-width: ${n})`]:{[`${t}`]:{[`${t}-item`]:{flexWrap:"wrap",[`${t}-action`]:{marginInlineStart:a}}},[`${t}-vertical`]:{[`${t}-item`]:{flexWrap:"wrap-reverse",[`${t}-item-main`]:{minWidth:e.contentWidth},[`${t}-item-extra`]:{margin:`auto auto ${i}px`}}}}}},w=e=>{let{componentCls:t,antCls:n,controlHeight:r,minHeight:o,paddingSM:a,marginLG:i,padding:l,itemPadding:c,colorPrimary:s,itemPaddingSM:d,itemPaddingLG:m,paddingXS:u,margin:p,colorText:g,colorTextDescription:f,motionDurationSlow:$,lineWidth:b,headerBg:h,footerBg:y,emptyTextPadding:x,metaMarginBottom:E,avatarMarginRight:O,titleMarginBottom:S,descriptionFontSize:w}=e,k={};return["start","center","end"].forEach(e=>{k[`&-align-${e}`]={textAlign:e}}),{[`${t}`]:Object.assign(Object.assign({},(0,v.Wf)(e)),{position:"relative","*":{outline:"none"},[`${t}-header`]:{background:h},[`${t}-footer`]:{background:y},[`${t}-header, ${t}-footer`]:{paddingBlock:a},[`${t}-pagination`]:Object.assign(Object.assign({marginBlockStart:i},k),{[`${n}-pagination-options`]:{textAlign:"start"}}),[`${t}-spin`]:{minHeight:o,textAlign:"center"},[`${t}-items`]:{margin:0,padding:0,listStyle:"none"},[`${t}-item`]:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:c,color:g,[`${t}-item-meta`]:{display:"flex",flex:1,alignItems:"flex-start",maxWidth:"100%",[`${t}-item-meta-avatar`]:{marginInlineEnd:O},[`${t}-item-meta-content`]:{flex:"1 0",width:0,color:g},[`${t}-item-meta-title`]:{margin:`0 0 ${e.marginXXS}px 0`,color:g,fontSize:e.fontSize,lineHeight:e.lineHeight,"> a":{color:g,transition:`all ${$}`,"&:hover":{color:s}}},[`${t}-item-meta-description`]:{color:f,fontSize:w,lineHeight:e.lineHeight}},[`${t}-item-action`]:{flex:"0 0 auto",marginInlineStart:e.marginXXL,padding:0,fontSize:0,listStyle:"none","& > li":{position:"relative",display:"inline-block",padding:`0 ${u}px`,color:f,fontSize:e.fontSize,lineHeight:e.lineHeight,textAlign:"center","&:first-child":{paddingInlineStart:0}},[`${t}-item-action-split`]:{position:"absolute",insetBlockStart:"50%",insetInlineEnd:0,width:b,height:Math.ceil(e.fontSize*e.lineHeight)-2*e.marginXXS,transform:"translateY(-50%)",backgroundColor:e.colorSplit}}},[`${t}-empty`]:{padding:`${l}px 0`,color:f,fontSize:e.fontSizeSM,textAlign:"center"},[`${t}-empty-text`]:{padding:x,color:e.colorTextDisabled,fontSize:e.fontSize,textAlign:"center"},[`${t}-item-no-flex`]:{display:"block"}}),[`${t}-grid ${n}-col > ${t}-item`]:{display:"block",maxWidth:"100%",marginBlockEnd:p,paddingBlock:0,borderBlockEnd:"none"},[`${t}-vertical ${t}-item`]:{alignItems:"initial",[`${t}-item-main`]:{display:"block",flex:1},[`${t}-item-extra`]:{marginInlineStart:i},[`${t}-item-meta`]:{marginBlockEnd:E,[`${t}-item-meta-title`]:{marginBlockStart:0,marginBlockEnd:S,color:g,fontSize:e.fontSizeLG,lineHeight:e.lineHeightLG}},[`${t}-item-action`]:{marginBlockStart:l,marginInlineStart:"auto","> li":{padding:`0 ${l}px`,"&:first-child":{paddingInlineStart:0}}}},[`${t}-split ${t}-item`]:{borderBlockEnd:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`,"&:last-child":{borderBlockEnd:"none"}},[`${t}-split ${t}-header`]:{borderBlockEnd:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`},[`${t}-split${t}-empty ${t}-footer`]:{borderTop:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`},[`${t}-loading ${t}-spin-nested-loading`]:{minHeight:r},[`${t}-split${t}-something-after-last-item ${n}-spin-container > ${t}-items > ${t}-item:last-child`]:{borderBlockEnd:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`},[`${t}-lg ${t}-item`]:{padding:m},[`${t}-sm ${t}-item`]:{padding:d},[`${t}:not(${t}-vertical)`]:{[`${t}-item-no-flex`]:{[`${t}-item-action`]:{float:"right"}}}}};var k=(0,x.Z)("List",e=>{let t=(0,E.TS)(e,{listBorderedCls:`${e.componentCls}-bordered`,minHeight:e.controlHeightLG});return[w(t),O(t),S(t)]},e=>({contentWidth:220,itemPadding:`${e.paddingContentVertical}px 0`,itemPaddingSM:`${e.paddingContentVerticalSM}px ${e.paddingContentHorizontal}px`,itemPaddingLG:`${e.paddingContentVerticalLG}px ${e.paddingContentHorizontalLG}px`,headerBg:"transparent",footerBg:"transparent",emptyTextPadding:e.padding,metaMarginBottom:e.padding,avatarMarginRight:e.padding,titleMarginBottom:e.paddingSM,descriptionFontSize:e.fontSize})),C=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};function j(e){var t,{pagination:n=!1,prefixCls:o,bordered:f=!1,split:$=!0,className:h,rootClassName:y,style:v,children:x,itemLayout:E,loadMore:O,grid:S,dataSource:w=[],size:j,header:B,footer:N,loading:z=!1,rowKey:I,renderItem:P,locale:M}=e,Z=C(e,["pagination","prefixCls","bordered","split","className","rootClassName","style","children","itemLayout","loadMore","grid","dataSource","size","header","footer","loading","rowKey","renderItem","locale"]);let L=n&&"object"==typeof n?n:{},[H,R]=i.useState(L.defaultCurrent||1),[T,W]=i.useState(L.defaultPageSize||10),{getPrefixCls:_,renderEmpty:D,direction:F,list:A}=i.useContext(s.E_),G=e=>(t,r)=>{var o;R(t),W(r),n&&n[e]&&(null===(o=null==n?void 0:n[e])||void 0===o||o.call(n,t,r))},q=G("onChange"),V=G("onShowSizeChange"),X=(e,t)=>{let n;return P?((n="function"==typeof I?I(e):I?e[I]:e.key)||(n=`list-item-${t}`),i.createElement(i.Fragment,{key:n},P(e,t))):null},U=_("list",o),[Y,J]=k(U),K=z;"boolean"==typeof K&&(K={spinning:K});let Q=K&&K.spinning,ee="";switch(j){case"large":ee="lg";break;case"small":ee="sm"}let et=a()(U,{[`${U}-vertical`]:"vertical"===E,[`${U}-${ee}`]:ee,[`${U}-split`]:$,[`${U}-bordered`]:f,[`${U}-loading`]:Q,[`${U}-grid`]:!!S,[`${U}-something-after-last-item`]:!!(O||n||N),[`${U}-rtl`]:"rtl"===F},null==A?void 0:A.className,h,y,J),en=(0,l.Z)({current:1,total:0},{total:w.length,current:H,pageSize:T},n||{}),er=Math.ceil(en.total/en.pageSize);en.current>er&&(en.current=er);let eo=n?i.createElement("div",{className:a()(`${U}-pagination`,`${U}-pagination-align-${null!==(t=null==en?void 0:en.align)&&void 0!==t?t:"end"}`)},i.createElement(p.Z,Object.assign({},en,{onChange:q,onShowSizeChange:V}))):null,ea=(0,r.Z)(w);n&&w.length>(en.current-1)*en.pageSize&&(ea=(0,r.Z)(w).splice((en.current-1)*en.pageSize,en.pageSize));let ei=Object.keys(S||{}).some(e=>["xs","sm","md","lg","xl","xxl"].includes(e)),el=(0,u.Z)(ei),ec=i.useMemo(()=>{for(let e=0;e{if(!S)return;let e=ec&&S[ec]?S[ec]:S.column;if(e)return{width:`${100/e}%`,maxWidth:`${100/e}%`}},[null==S?void 0:S.column,ec]),ed=Q&&i.createElement("div",{style:{minHeight:53}});if(ea.length>0){let e=ea.map((e,t)=>X(e,t));ed=S?i.createElement(m.Z,{gutter:S.gutter},i.Children.map(e,e=>i.createElement("div",{key:null==e?void 0:e.key,style:es},e))):i.createElement("ul",{className:`${U}-items`},e)}else x||Q||(ed=i.createElement("div",{className:`${U}-empty-text`},M&&M.emptyText||(null==D?void 0:D("List"))||i.createElement(d.Z,{componentName:"List"})));let em=en.position||"bottom",eu=i.useMemo(()=>({grid:S,itemLayout:E}),[JSON.stringify(S),E]);return Y(i.createElement(b.Provider,{value:eu},i.createElement("div",Object.assign({style:Object.assign(Object.assign({},null==A?void 0:A.style),v),className:et},Z),("top"===em||"both"===em)&&eo,B&&i.createElement("div",{className:`${U}-header`},B),i.createElement(g.Z,Object.assign({},K),ed,x),N&&i.createElement("div",{className:`${U}-footer`},N),O||("bottom"===em||"both"===em)&&eo)))}j.Item=y;var B=j},74627:function(e,t,n){n.d(t,{Z:function(){return C}});var r=n(94184),o=n.n(r),a=n(67294);let i=e=>e?"function"==typeof e?e():e:null;var l=n(33603),c=n(53124),s=n(83062),d=n(92419),m=n(14747),u=n(50438),p=n(77786),g=n(8796),f=n(67968),$=n(45503);let b=e=>{let{componentCls:t,popoverColor:n,minWidth:r,fontWeightStrong:o,popoverPadding:a,boxShadowSecondary:i,colorTextHeading:l,borderRadiusLG:c,zIndexPopup:s,marginXS:d,colorBgElevated:u,popoverBg:g}=e;return[{[t]:Object.assign(Object.assign({},(0,m.Wf)(e)),{position:"absolute",top:0,left:{_skip_check_:!0,value:0},zIndex:s,fontWeight:"normal",whiteSpace:"normal",textAlign:"start",cursor:"auto",userSelect:"text",transformOrigin:"var(--arrow-x, 50%) var(--arrow-y, 50%)","--antd-arrow-background-color":u,"&-rtl":{direction:"rtl"},"&-hidden":{display:"none"},[`${t}-content`]:{position:"relative"},[`${t}-inner`]:{backgroundColor:g,backgroundClip:"padding-box",borderRadius:c,boxShadow:i,padding:a},[`${t}-title`]:{minWidth:r,marginBottom:d,color:l,fontWeight:o},[`${t}-inner-content`]:{color:n}})},(0,p.ZP)(e,{colorBg:"var(--antd-arrow-background-color)"}),{[`${t}-pure`]:{position:"relative",maxWidth:"none",margin:e.sizePopupArrow,display:"inline-block",[`${t}-content`]:{display:"inline-block"}}}]},h=e=>{let{componentCls:t}=e;return{[t]:g.i.map(n=>{let r=e[`${n}6`];return{[`&${t}-${n}`]:{"--antd-arrow-background-color":r,[`${t}-inner`]:{backgroundColor:r},[`${t}-arrow`]:{background:"transparent"}}}})}},y=e=>{let{componentCls:t,lineWidth:n,lineType:r,colorSplit:o,paddingSM:a,controlHeight:i,fontSize:l,lineHeight:c,padding:s}=e,d=i-Math.round(l*c);return{[t]:{[`${t}-inner`]:{padding:0},[`${t}-title`]:{margin:0,padding:`${d/2}px ${s}px ${d/2-n}px`,borderBottom:`${n}px ${r} ${o}`},[`${t}-inner-content`]:{padding:`${a}px ${s}px`}}}};var v=(0,f.Z)("Popover",e=>{let{colorBgElevated:t,colorText:n,wireframe:r}=e,o=(0,$.TS)(e,{popoverPadding:12,popoverBg:t,popoverColor:n});return[b(o),h(o),r&&y(o),(0,u._y)(o,"zoom-big")]},e=>({width:177,minWidth:177,zIndexPopup:e.zIndexPopupBase+30}),{deprecatedTokens:[["width","minWidth"]]}),x=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let E=(e,t,n)=>{if(t||n)return a.createElement(a.Fragment,null,t&&a.createElement("div",{className:`${e}-title`},i(t)),a.createElement("div",{className:`${e}-inner-content`},i(n)))},O=e=>{let{hashId:t,prefixCls:n,className:r,style:i,placement:l="top",title:c,content:s,children:m}=e;return a.createElement("div",{className:o()(t,n,`${n}-pure`,`${n}-placement-${l}`,r),style:i},a.createElement("div",{className:`${n}-arrow`}),a.createElement(d.G,Object.assign({},e,{className:t,prefixCls:n}),m||E(n,c,s)))};var S=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let w=e=>{let{title:t,content:n,prefixCls:r}=e;return a.createElement(a.Fragment,null,t&&a.createElement("div",{className:`${r}-title`},i(t)),a.createElement("div",{className:`${r}-inner-content`},i(n)))},k=a.forwardRef((e,t)=>{let{prefixCls:n,title:r,content:i,overlayClassName:d,placement:m="top",trigger:u="hover",mouseEnterDelay:p=.1,mouseLeaveDelay:g=.1,overlayStyle:f={}}=e,$=S(e,["prefixCls","title","content","overlayClassName","placement","trigger","mouseEnterDelay","mouseLeaveDelay","overlayStyle"]),{getPrefixCls:b}=a.useContext(c.E_),h=b("popover",n),[y,x]=v(h),E=b(),O=o()(d,x);return y(a.createElement(s.Z,Object.assign({placement:m,trigger:u,mouseEnterDelay:p,mouseLeaveDelay:g,overlayStyle:f},$,{prefixCls:h,overlayClassName:O,ref:t,overlay:r||i?a.createElement(w,{prefixCls:h,title:r,content:i}):null,transitionName:(0,l.m)(E,"zoom-big",$.transitionName),"data-popover-inject":!0})))});k._InternalPanelDoNotUseOrYouWillBeFired=e=>{let{prefixCls:t}=e,n=x(e,["prefixCls"]),{getPrefixCls:r}=a.useContext(c.E_),o=r("popover",t),[i,l]=v(o);return i(a.createElement(O,Object.assign({},n,{prefixCls:o,hashId:l})))};var C=k}}]); \ No newline at end of file diff --git a/pilot/server/static/_next/static/chunks/44-941ba89e47567ba3.js b/pilot/server/static/_next/static/chunks/44-941ba89e47567ba3.js deleted file mode 100644 index ff47d7058..000000000 --- a/pilot/server/static/_next/static/chunks/44-941ba89e47567ba3.js +++ /dev/null @@ -1,16 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44],{63606:function(e,t,r){r.d(t,{Z:function(){return i}});var n=r(87462),o=r(67294),a={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z"}}]},name:"check",theme:"outlined"},l=r(84089),i=o.forwardRef(function(e,t){return o.createElement(l.Z,(0,n.Z)({},e,{ref:t,icon:a}))})},99611:function(e,t,r){r.d(t,{Z:function(){return i}});var n=r(87462),o=r(67294),a={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z"}}]},name:"eye",theme:"outlined"},l=r(84089),i=o.forwardRef(function(e,t){return o.createElement(l.Z,(0,n.Z)({},e,{ref:t,icon:a}))})},68795:function(e,t,r){r.d(t,{Z:function(){return i}});var n=r(87462),o=r(67294),a={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z"}}]},name:"search",theme:"outlined"},l=r(84089),i=o.forwardRef(function(e,t){return o.createElement(l.Z,(0,n.Z)({},e,{ref:t,icon:a}))})},9708:function(e,t,r){r.d(t,{F:function(){return l},Z:function(){return a}});var n=r(94184),o=r.n(n);function a(e,t,r){return o()({[`${e}-status-success`]:"success"===t,[`${e}-status-warning`]:"warning"===t,[`${e}-status-error`]:"error"===t,[`${e}-status-validating`]:"validating"===t,[`${e}-has-feedback`]:r})}let l=(e,t)=>t||e},32983:function(e,t,r){r.d(t,{Z:function(){return v}});var n=r(94184),o=r.n(n),a=r(67294),l=r(53124),i=r(10110),s=r(10274),c=r(25976),d=r(67968),u=r(45503);let p=e=>{let{componentCls:t,margin:r,marginXS:n,marginXL:o,fontSize:a,lineHeight:l}=e;return{[t]:{marginInline:n,fontSize:a,lineHeight:l,textAlign:"center",[`${t}-image`]:{height:e.emptyImgHeight,marginBottom:n,opacity:e.opacityImage,img:{height:"100%"},svg:{maxWidth:"100%",height:"100%",margin:"auto"}},[`${t}-description`]:{color:e.colorText},[`${t}-footer`]:{marginTop:r},"&-normal":{marginBlock:o,color:e.colorTextDisabled,[`${t}-description`]:{color:e.colorTextDisabled},[`${t}-image`]:{height:e.emptyImgHeightMD}},"&-small":{marginBlock:n,color:e.colorTextDisabled,[`${t}-image`]:{height:e.emptyImgHeightSM}}}}};var f=(0,d.Z)("Empty",e=>{let{componentCls:t,controlHeightLG:r}=e,n=(0,u.TS)(e,{emptyImgCls:`${t}-img`,emptyImgHeight:2.5*r,emptyImgHeightMD:r,emptyImgHeightSM:.875*r});return[p(n)]}),g=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,n=Object.getOwnPropertySymbols(e);ot.indexOf(n[o])&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]]);return r};let m=a.createElement(()=>{let[,e]=(0,c.Z)(),t=new s.C(e.colorBgBase),r=t.toHsl().l<.5?{opacity:.65}:{};return a.createElement("svg",{style:r,width:"184",height:"152",viewBox:"0 0 184 152",xmlns:"http://www.w3.org/2000/svg"},a.createElement("g",{fill:"none",fillRule:"evenodd"},a.createElement("g",{transform:"translate(24 31.67)"},a.createElement("ellipse",{fillOpacity:".8",fill:"#F5F5F7",cx:"67.797",cy:"106.89",rx:"67.797",ry:"12.668"}),a.createElement("path",{d:"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z",fill:"#AEB8C2"}),a.createElement("path",{d:"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z",fill:"url(#linearGradient-1)",transform:"translate(13.56)"}),a.createElement("path",{d:"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z",fill:"#F5F5F7"}),a.createElement("path",{d:"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z",fill:"#DCE0E6"})),a.createElement("path",{d:"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z",fill:"#DCE0E6"}),a.createElement("g",{transform:"translate(149.65 15.383)",fill:"#FFF"},a.createElement("ellipse",{cx:"20.654",cy:"3.167",rx:"2.849",ry:"2.815"}),a.createElement("path",{d:"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z"}))))},null),b=a.createElement(()=>{let[,e]=(0,c.Z)(),{colorFill:t,colorFillTertiary:r,colorFillQuaternary:n,colorBgContainer:o}=e,{borderColor:l,shadowColor:i,contentColor:d}=(0,a.useMemo)(()=>({borderColor:new s.C(t).onBackground(o).toHexShortString(),shadowColor:new s.C(r).onBackground(o).toHexShortString(),contentColor:new s.C(n).onBackground(o).toHexShortString()}),[t,r,n,o]);return a.createElement("svg",{width:"64",height:"41",viewBox:"0 0 64 41",xmlns:"http://www.w3.org/2000/svg"},a.createElement("g",{transform:"translate(0 1)",fill:"none",fillRule:"evenodd"},a.createElement("ellipse",{fill:i,cx:"32",cy:"33",rx:"32",ry:"7"}),a.createElement("g",{fillRule:"nonzero",stroke:l},a.createElement("path",{d:"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z"}),a.createElement("path",{d:"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z",fill:d}))))},null),h=e=>{var{className:t,rootClassName:r,prefixCls:n,image:s=m,description:c,children:d,imageStyle:u,style:p}=e,h=g(e,["className","rootClassName","prefixCls","image","description","children","imageStyle","style"]);let{getPrefixCls:v,direction:x,empty:$}=a.useContext(l.E_),y=v("empty",n),[w,E]=f(y),[S]=(0,i.Z)("Empty"),C=void 0!==c?c:null==S?void 0:S.description,z="string"==typeof C?C:"empty",R=null;return R="string"==typeof s?a.createElement("img",{alt:z,src:s}):s,w(a.createElement("div",Object.assign({className:o()(E,y,null==$?void 0:$.className,{[`${y}-normal`]:s===b,[`${y}-rtl`]:"rtl"===x},t,r),style:Object.assign(Object.assign({},null==$?void 0:$.style),p)},h),a.createElement("div",{className:`${y}-image`,style:u},R),C&&a.createElement("div",{className:`${y}-description`},C),d&&a.createElement("div",{className:`${y}-footer`},d)))};h.PRESENTED_IMAGE_DEFAULT=m,h.PRESENTED_IMAGE_SIMPLE=b;var v=h},59566:function(e,t,r){r.d(t,{default:function(){return er}});var n,o=r(94184),a=r.n(o),l=r(67294),i=r(53124),s=r(65223),c=r(47673),d=r(4340),u=r(67656),p=r(42550),f=r(9708),g=r(98866),m=r(98675),b=r(4173);function h(e,t){let r=(0,l.useRef)([]),n=()=>{r.current.push(setTimeout(()=>{var t,r,n,o;(null===(t=e.current)||void 0===t?void 0:t.input)&&(null===(r=e.current)||void 0===r?void 0:r.input.getAttribute("type"))==="password"&&(null===(n=e.current)||void 0===n?void 0:n.input.hasAttribute("value"))&&(null===(o=e.current)||void 0===o||o.input.removeAttribute("value"))}))};return(0,l.useEffect)(()=>(t&&n(),()=>r.current.forEach(e=>{e&&clearTimeout(e)})),[]),n}var v=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,n=Object.getOwnPropertySymbols(e);ot.indexOf(n[o])&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]]);return r};let x=(0,l.forwardRef)((e,t)=>{var r;let n;let{prefixCls:o,bordered:x=!0,status:$,size:y,disabled:w,onBlur:E,onFocus:S,suffix:C,allowClear:z,addonAfter:R,addonBefore:O,className:Z,style:H,styles:I,rootClassName:j,onChange:P,classNames:N}=e,k=v(e,["prefixCls","bordered","status","size","disabled","onBlur","onFocus","suffix","allowClear","addonAfter","addonBefore","className","style","styles","rootClassName","onChange","classNames"]),{getPrefixCls:A,direction:M,input:B}=l.useContext(i.E_),T=A("input",o),W=(0,l.useRef)(null),[F,L]=(0,c.ZP)(T),{compactSize:D,compactItemClassnames:V}=(0,b.ri)(T,M),_=(0,m.Z)(e=>{var t;return null!==(t=null!=y?y:D)&&void 0!==t?t:e}),X=l.useContext(g.Z),G=null!=w?w:X,{status:Q,hasFeedback:J,feedbackIcon:U}=(0,l.useContext)(s.aM),K=(0,f.F)(Q,$),q=!!(e.prefix||e.suffix||e.allowClear)||!!J,Y=(0,l.useRef)(q);(0,l.useEffect)(()=>{q&&Y.current,Y.current=q},[q]);let ee=h(W,!0),et=(J||C)&&l.createElement(l.Fragment,null,C,J&&U);return"object"==typeof z&&(null==z?void 0:z.clearIcon)?n=z:z&&(n={clearIcon:l.createElement(d.Z,null)}),F(l.createElement(u.Z,Object.assign({ref:(0,p.sQ)(t,W),prefixCls:T,autoComplete:null==B?void 0:B.autoComplete},k,{disabled:G,onBlur:e=>{ee(),null==E||E(e)},onFocus:e=>{ee(),null==S||S(e)},style:Object.assign(Object.assign({},null==B?void 0:B.style),H),styles:Object.assign(Object.assign({},null==B?void 0:B.styles),I),suffix:et,allowClear:n,className:a()(Z,j,V,null==B?void 0:B.className),onChange:e=>{ee(),null==P||P(e)},addonAfter:R&&l.createElement(b.BR,null,l.createElement(s.Ux,{override:!0,status:!0},R)),addonBefore:O&&l.createElement(b.BR,null,l.createElement(s.Ux,{override:!0,status:!0},O)),classNames:Object.assign(Object.assign(Object.assign({},N),null==B?void 0:B.classNames),{input:a()({[`${T}-sm`]:"small"===_,[`${T}-lg`]:"large"===_,[`${T}-rtl`]:"rtl"===M,[`${T}-borderless`]:!x},!q&&(0,f.Z)(T,K),null==N?void 0:N.input,null===(r=null==B?void 0:B.classNames)||void 0===r?void 0:r.input,L)}),classes:{affixWrapper:a()({[`${T}-affix-wrapper-sm`]:"small"===_,[`${T}-affix-wrapper-lg`]:"large"===_,[`${T}-affix-wrapper-rtl`]:"rtl"===M,[`${T}-affix-wrapper-borderless`]:!x},(0,f.Z)(`${T}-affix-wrapper`,K,J),L),wrapper:a()({[`${T}-group-rtl`]:"rtl"===M},L),group:a()({[`${T}-group-wrapper-sm`]:"small"===_,[`${T}-group-wrapper-lg`]:"large"===_,[`${T}-group-wrapper-rtl`]:"rtl"===M,[`${T}-group-wrapper-disabled`]:G},(0,f.Z)(`${T}-group-wrapper`,K,J),L)}})))});var $=r(87462),y={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M942.2 486.2Q889.47 375.11 816.7 305l-50.88 50.88C807.31 395.53 843.45 447.4 874.7 512 791.5 684.2 673.4 766 512 766q-72.67 0-133.87-22.38L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 000-51.5zm-63.57-320.64L836 122.88a8 8 0 00-11.32 0L715.31 232.2Q624.86 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 000 51.5q56.69 119.4 136.5 191.41L112.48 835a8 8 0 000 11.31L155.17 889a8 8 0 0011.31 0l712.15-712.12a8 8 0 000-11.32zM149.3 512C232.6 339.8 350.7 258 512 258c54.54 0 104.13 9.36 149.12 28.39l-70.3 70.3a176 176 0 00-238.13 238.13l-83.42 83.42C223.1 637.49 183.3 582.28 149.3 512zm246.7 0a112.11 112.11 0 01146.2-106.69L401.31 546.2A112 112 0 01396 512z"}},{tag:"path",attrs:{d:"M508 624c-3.46 0-6.87-.16-10.25-.47l-52.82 52.82a176.09 176.09 0 00227.42-227.42l-52.82 52.82c.31 3.38.47 6.79.47 10.25a111.94 111.94 0 01-112 112z"}}]},name:"eye-invisible",theme:"outlined"},w=r(84089),E=l.forwardRef(function(e,t){return l.createElement(w.Z,(0,$.Z)({},e,{ref:t,icon:y}))}),S=r(99611),C=r(98423),z=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,n=Object.getOwnPropertySymbols(e);ot.indexOf(n[o])&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]]);return r};let R=e=>e?l.createElement(S.Z,null):l.createElement(E,null),O={click:"onClick",hover:"onMouseOver"},Z=l.forwardRef((e,t)=>{let{visibilityToggle:r=!0}=e,n="object"==typeof r&&void 0!==r.visible,[o,s]=(0,l.useState)(()=>!!n&&r.visible),c=(0,l.useRef)(null);l.useEffect(()=>{n&&s(r.visible)},[n,r]);let d=h(c),u=()=>{let{disabled:t}=e;t||(o&&d(),s(e=>{var t;let n=!e;return"object"==typeof r&&(null===(t=r.onVisibleChange)||void 0===t||t.call(r,n)),n}))},{className:f,prefixCls:g,inputPrefixCls:m,size:b}=e,v=z(e,["className","prefixCls","inputPrefixCls","size"]),{getPrefixCls:$}=l.useContext(i.E_),y=$("input",m),w=$("input-password",g),E=r&&(t=>{let{action:r="click",iconRender:n=R}=e,a=O[r]||"",i=n(o),s={[a]:u,className:`${t}-icon`,key:"passwordIcon",onMouseDown:e=>{e.preventDefault()},onMouseUp:e=>{e.preventDefault()}};return l.cloneElement(l.isValidElement(i)?i:l.createElement("span",null,i),s)})(w),S=a()(w,f,{[`${w}-${b}`]:!!b}),Z=Object.assign(Object.assign({},(0,C.Z)(v,["suffix","iconRender","visibilityToggle"])),{type:o?"text":"password",className:S,prefixCls:y,suffix:E});return b&&(Z.size=b),l.createElement(x,Object.assign({ref:(0,p.sQ)(t,c)},Z))});var H=r(68795),I=r(96159),j=r(71577),P=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,n=Object.getOwnPropertySymbols(e);ot.indexOf(n[o])&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]]);return r};let N=l.forwardRef((e,t)=>{let r;let{prefixCls:n,inputPrefixCls:o,className:s,size:c,suffix:d,enterButton:u=!1,addonAfter:f,loading:g,disabled:h,onSearch:v,onChange:$,onCompositionStart:y,onCompositionEnd:w}=e,E=P(e,["prefixCls","inputPrefixCls","className","size","suffix","enterButton","addonAfter","loading","disabled","onSearch","onChange","onCompositionStart","onCompositionEnd"]),{getPrefixCls:S,direction:C}=l.useContext(i.E_),z=l.useRef(!1),R=S("input-search",n),O=S("input",o),{compactSize:Z}=(0,b.ri)(R,C),N=(0,m.Z)(e=>{var t;return null!==(t=null!=c?c:Z)&&void 0!==t?t:e}),k=l.useRef(null),A=e=>{var t;document.activeElement===(null===(t=k.current)||void 0===t?void 0:t.input)&&e.preventDefault()},M=e=>{var t,r;v&&v(null===(r=null===(t=k.current)||void 0===t?void 0:t.input)||void 0===r?void 0:r.value,e)},B="boolean"==typeof u?l.createElement(H.Z,null):null,T=`${R}-button`,W=u||{},F=W.type&&!0===W.type.__ANT_BUTTON;r=F||"button"===W.type?(0,I.Tm)(W,Object.assign({onMouseDown:A,onClick:e=>{var t,r;null===(r=null===(t=null==W?void 0:W.props)||void 0===t?void 0:t.onClick)||void 0===r||r.call(t,e),M(e)},key:"enterButton"},F?{className:T,size:N}:{})):l.createElement(j.ZP,{className:T,type:u?"primary":void 0,size:N,disabled:h,key:"enterButton",onMouseDown:A,onClick:M,loading:g,icon:B},u),f&&(r=[r,(0,I.Tm)(f,{key:"addonAfter"})]);let L=a()(R,{[`${R}-rtl`]:"rtl"===C,[`${R}-${N}`]:!!N,[`${R}-with-button`]:!!u},s);return l.createElement(x,Object.assign({ref:(0,p.sQ)(k,t),onPressEnter:e=>{z.current||g||M(e)}},E,{size:N,onCompositionStart:e=>{z.current=!0,null==y||y(e)},onCompositionEnd:e=>{z.current=!1,null==w||w(e)},prefixCls:O,addonAfter:r,suffix:d,onChange:e=>{e&&e.target&&"click"===e.type&&v&&v(e.target.value,e),$&&$(e)},className:L,disabled:h}))});var k=r(1413),A=r(4942),M=r(71002),B=r(97685),T=r(45987),W=r(74902),F=r(87887),L=r(21770),D=r(9220),V=r(8410),_=r(75164),X=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","font-variant","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing","word-break","white-space"],G={},Q=["prefixCls","onPressEnter","defaultValue","value","autoSize","onResize","className","style","disabled","onChange","onInternalAutoSize"],J=l.forwardRef(function(e,t){var r=e.prefixCls,o=(e.onPressEnter,e.defaultValue),i=e.value,s=e.autoSize,c=e.onResize,d=e.className,u=e.style,p=e.disabled,f=e.onChange,g=(e.onInternalAutoSize,(0,T.Z)(e,Q)),m=(0,L.Z)(o,{value:i,postState:function(e){return null!=e?e:""}}),b=(0,B.Z)(m,2),h=b[0],v=b[1],x=l.useRef();l.useImperativeHandle(t,function(){return{textArea:x.current}});var y=l.useMemo(function(){return s&&"object"===(0,M.Z)(s)?[s.minRows,s.maxRows]:[]},[s]),w=(0,B.Z)(y,2),E=w[0],S=w[1],C=!!s,z=function(){try{if(document.activeElement===x.current){var e=x.current,t=e.selectionStart,r=e.selectionEnd,n=e.scrollTop;x.current.setSelectionRange(t,r),x.current.scrollTop=n}}catch(e){}},R=l.useState(2),O=(0,B.Z)(R,2),Z=O[0],H=O[1],I=l.useState(),j=(0,B.Z)(I,2),P=j[0],N=j[1],W=function(){H(0)};(0,V.Z)(function(){C&&W()},[i,E,S,C]),(0,V.Z)(function(){if(0===Z)H(1);else if(1===Z){var e=function(e){var t,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;n||((n=document.createElement("textarea")).setAttribute("tab-index","-1"),n.setAttribute("aria-hidden","true"),document.body.appendChild(n)),e.getAttribute("wrap")?n.setAttribute("wrap",e.getAttribute("wrap")):n.removeAttribute("wrap");var l=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=e.getAttribute("id")||e.getAttribute("data-reactid")||e.getAttribute("name");if(t&&G[r])return G[r];var n=window.getComputedStyle(e),o=n.getPropertyValue("box-sizing")||n.getPropertyValue("-moz-box-sizing")||n.getPropertyValue("-webkit-box-sizing"),a=parseFloat(n.getPropertyValue("padding-bottom"))+parseFloat(n.getPropertyValue("padding-top")),l=parseFloat(n.getPropertyValue("border-bottom-width"))+parseFloat(n.getPropertyValue("border-top-width")),i={sizingStyle:X.map(function(e){return"".concat(e,":").concat(n.getPropertyValue(e))}).join(";"),paddingSize:a,borderSize:l,boxSizing:o};return t&&r&&(G[r]=i),i}(e,r),i=l.paddingSize,s=l.borderSize,c=l.boxSizing,d=l.sizingStyle;n.setAttribute("style","".concat(d,";").concat("\n min-height:0 !important;\n max-height:none !important;\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important;\n pointer-events: none !important;\n")),n.value=e.value||e.placeholder||"";var u=void 0,p=void 0,f=n.scrollHeight;if("border-box"===c?f+=s:"content-box"===c&&(f-=i),null!==o||null!==a){n.value=" ";var g=n.scrollHeight-i;null!==o&&(u=g*o,"border-box"===c&&(u=u+i+s),f=Math.max(u,f)),null!==a&&(p=g*a,"border-box"===c&&(p=p+i+s),t=f>p?"":"hidden",f=Math.min(p,f))}var m={height:f,overflowY:t,resize:"none"};return u&&(m.minHeight=u),p&&(m.maxHeight=p),m}(x.current,!1,E,S);H(2),N(e)}else z()},[Z]);var F=l.useRef(),J=function(){_.Z.cancel(F.current)};l.useEffect(function(){return J},[]);var U=C?P:null,K=(0,k.Z)((0,k.Z)({},u),U);return(0===Z||1===Z)&&(K.overflowY="hidden",K.overflowX="hidden"),l.createElement(D.Z,{onResize:function(e){2===Z&&(null==c||c(e),s&&(J(),F.current=(0,_.Z)(function(){W()})))},disabled:!(s||c)},l.createElement("textarea",(0,$.Z)({},g,{ref:x,style:K,className:a()(r,d,(0,A.Z)({},"".concat(r,"-disabled"),p)),disabled:p,value:h,onChange:function(e){v(e.target.value),null==f||f(e)}})))}),U=["defaultValue","value","onFocus","onBlur","onChange","allowClear","maxLength","onCompositionStart","onCompositionEnd","suffix","prefixCls","classes","showCount","className","style","disabled","hidden","classNames","styles","onResize"];function K(e,t){return(0,W.Z)(e||"").slice(0,t).join("")}function q(e,t,r,n){var o=r;return e?o=K(r,n):(0,W.Z)(t||"").lengthn&&(o=t),o}var Y=l.forwardRef(function(e,t){var r,n,o=e.defaultValue,i=e.value,s=e.onFocus,c=e.onBlur,d=e.onChange,p=e.allowClear,f=e.maxLength,g=e.onCompositionStart,m=e.onCompositionEnd,b=e.suffix,h=e.prefixCls,v=void 0===h?"rc-textarea":h,x=e.classes,y=e.showCount,w=e.className,E=e.style,S=e.disabled,C=e.hidden,z=e.classNames,R=e.styles,O=e.onResize,Z=(0,T.Z)(e,U),H=(0,L.Z)(o,{value:i,defaultValue:o}),I=(0,B.Z)(H,2),j=I[0],P=I[1],N=(0,l.useRef)(null),D=l.useState(!1),V=(0,B.Z)(D,2),_=V[0],X=V[1],G=l.useState(!1),Q=(0,B.Z)(G,2),Y=Q[0],ee=Q[1],et=l.useRef(),er=l.useRef(0),en=l.useState(null),eo=(0,B.Z)(en,2),ea=eo[0],el=eo[1],ei=function(){var e;null===(e=N.current)||void 0===e||e.textArea.focus()};(0,l.useImperativeHandle)(t,function(){return{resizableTextArea:N.current,focus:ei,blur:function(){var e;null===(e=N.current)||void 0===e||e.textArea.blur()}}}),(0,l.useEffect)(function(){X(function(e){return!S&&e})},[S]);var es=Number(f)>0,ec=(0,F.D7)(j);!Y&&es&&null==i&&(ec=K(ec,f));var ed=b;if(y){var eu=(0,W.Z)(ec).length;n="object"===(0,M.Z)(y)?y.formatter({value:ec,count:eu,maxLength:f}):"".concat(eu).concat(es?" / ".concat(f):""),ed=l.createElement(l.Fragment,null,ed,l.createElement("span",{className:a()("".concat(v,"-data-count"),null==z?void 0:z.count),style:null==R?void 0:R.count},n))}var ep=!Z.autoSize&&!y&&!p;return l.createElement(u.Q,{value:ec,allowClear:p,handleReset:function(e){var t;P(""),ei(),(0,F.rJ)(null===(t=N.current)||void 0===t?void 0:t.textArea,e,d)},suffix:ed,prefixCls:v,classes:{affixWrapper:a()(null==x?void 0:x.affixWrapper,(r={},(0,A.Z)(r,"".concat(v,"-show-count"),y),(0,A.Z)(r,"".concat(v,"-textarea-allow-clear"),p),r))},disabled:S,focused:_,className:w,style:(0,k.Z)((0,k.Z)({},E),ea&&!ep?{height:"auto"}:{}),dataAttrs:{affixWrapper:{"data-count":"string"==typeof n?n:void 0}},hidden:C,inputElement:l.createElement(J,(0,$.Z)({},Z,{onKeyDown:function(e){var t=Z.onPressEnter,r=Z.onKeyDown;"Enter"===e.key&&t&&t(e),null==r||r(e)},onChange:function(e){var t=e.target.value;!Y&&es&&(t=q(e.target.selectionStart>=f+1||e.target.selectionStart===t.length||!e.target.selectionStart,j,t,f)),P(t),(0,F.rJ)(e.currentTarget,e,d,t)},onFocus:function(e){X(!0),null==s||s(e)},onBlur:function(e){X(!1),null==c||c(e)},onCompositionStart:function(e){ee(!0),et.current=j,er.current=e.currentTarget.selectionStart,null==g||g(e)},onCompositionEnd:function(e){ee(!1);var t,r=e.currentTarget.value;es&&(r=q(er.current>=f+1||er.current===(null===(t=et.current)||void 0===t?void 0:t.length),et.current,r,f)),r!==j&&(P(r),(0,F.rJ)(e.currentTarget,e,d,r)),null==m||m(e)},className:null==z?void 0:z.textarea,style:(0,k.Z)((0,k.Z)({},null==R?void 0:R.textarea),{},{resize:null==E?void 0:E.resize}),disabled:S,prefixCls:v,onResize:function(e){var t;null==O||O(e),null!==(t=N.current)&&void 0!==t&&t.textArea.style.height&&el(!0)},ref:N}))})}),ee=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,n=Object.getOwnPropertySymbols(e);ot.indexOf(n[o])&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]]);return r};let et=(0,l.forwardRef)((e,t)=>{let r;let{prefixCls:n,bordered:o=!0,size:u,disabled:p,status:b,allowClear:h,showCount:v,classNames:x}=e,$=ee(e,["prefixCls","bordered","size","disabled","status","allowClear","showCount","classNames"]),{getPrefixCls:y,direction:w}=l.useContext(i.E_),E=(0,m.Z)(u),S=l.useContext(g.Z),{status:C,hasFeedback:z,feedbackIcon:R}=l.useContext(s.aM),O=(0,f.F)(C,b),Z=l.useRef(null);l.useImperativeHandle(t,()=>{var e;return{resizableTextArea:null===(e=Z.current)||void 0===e?void 0:e.resizableTextArea,focus:e=>{var t,r;!function(e,t){if(!e)return;e.focus(t);let{cursor:r}=t||{};if(r){let t=e.value.length;switch(r){case"start":e.setSelectionRange(0,0);break;case"end":e.setSelectionRange(t,t);break;default:e.setSelectionRange(0,t)}}}(null===(r=null===(t=Z.current)||void 0===t?void 0:t.resizableTextArea)||void 0===r?void 0:r.textArea,e)},blur:()=>{var e;return null===(e=Z.current)||void 0===e?void 0:e.blur()}}});let H=y("input",n);"object"==typeof h&&(null==h?void 0:h.clearIcon)?r=h:h&&(r={clearIcon:l.createElement(d.Z,null)});let[I,j]=(0,c.ZP)(H);return I(l.createElement(Y,Object.assign({},$,{disabled:null!=p?p:S,allowClear:r,classes:{affixWrapper:a()(`${H}-textarea-affix-wrapper`,{[`${H}-affix-wrapper-rtl`]:"rtl"===w,[`${H}-affix-wrapper-borderless`]:!o,[`${H}-affix-wrapper-sm`]:"small"===E,[`${H}-affix-wrapper-lg`]:"large"===E,[`${H}-textarea-show-count`]:v},(0,f.Z)(`${H}-affix-wrapper`,O),j)},classNames:Object.assign(Object.assign({},x),{textarea:a()({[`${H}-borderless`]:!o,[`${H}-sm`]:"small"===E,[`${H}-lg`]:"large"===E},(0,f.Z)(H,O),j,null==x?void 0:x.textarea)}),prefixCls:H,suffix:z&&l.createElement("span",{className:`${H}-textarea-suffix`},R),showCount:v,ref:Z})))});x.Group=e=>{let{getPrefixCls:t,direction:r}=(0,l.useContext)(i.E_),{prefixCls:n,className:o}=e,d=t("input-group",n),u=t("input"),[p,f]=(0,c.ZP)(u),g=a()(d,{[`${d}-lg`]:"large"===e.size,[`${d}-sm`]:"small"===e.size,[`${d}-compact`]:e.compact,[`${d}-rtl`]:"rtl"===r},f,o),m=(0,l.useContext)(s.aM),b=(0,l.useMemo)(()=>Object.assign(Object.assign({},m),{isFormItemInput:!1}),[m]);return p(l.createElement("span",{className:g,style:e.style,onMouseEnter:e.onMouseEnter,onMouseLeave:e.onMouseLeave,onFocus:e.onFocus,onBlur:e.onBlur},l.createElement(s.aM.Provider,{value:b},e.children)))},x.Search=N,x.TextArea=et,x.Password=Z;var er=x},47673:function(e,t,r){r.d(t,{M1:function(){return c},Xy:function(){return d},bi:function(){return f},e5:function(){return y},ik:function(){return g},nz:function(){return i},pU:function(){return s},s7:function(){return m},x0:function(){return p}});var n=r(14747),o=r(80110),a=r(45503),l=r(67968);let i=e=>({"&::-moz-placeholder":{opacity:1},"&::placeholder":{color:e,userSelect:"none"},"&:placeholder-shown":{textOverflow:"ellipsis"}}),s=e=>({borderColor:e.inputBorderHoverColor,borderInlineEndWidth:e.lineWidth}),c=e=>({borderColor:e.inputBorderHoverColor,boxShadow:`0 0 0 ${e.controlOutlineWidth}px ${e.controlOutline}`,borderInlineEndWidth:e.lineWidth,outline:0}),d=e=>({color:e.colorTextDisabled,backgroundColor:e.colorBgContainerDisabled,borderColor:e.colorBorder,boxShadow:"none",cursor:"not-allowed",opacity:1,"&:hover":Object.assign({},s((0,a.TS)(e,{inputBorderHoverColor:e.colorBorder})))}),u=e=>{let{inputPaddingVerticalLG:t,fontSizeLG:r,lineHeightLG:n,borderRadiusLG:o,inputPaddingHorizontalLG:a}=e;return{padding:`${t}px ${a}px`,fontSize:r,lineHeight:n,borderRadius:o}},p=e=>({padding:`${e.inputPaddingVerticalSM}px ${e.controlPaddingHorizontalSM-1}px`,borderRadius:e.borderRadiusSM}),f=(e,t)=>{let{componentCls:r,colorError:n,colorWarning:o,colorErrorOutline:l,colorWarningOutline:i,colorErrorBorderHover:s,colorWarningBorderHover:d}=e;return{[`&-status-error:not(${t}-disabled):not(${t}-borderless)${t}`]:{borderColor:n,"&:hover":{borderColor:s},"&:focus, &-focused":Object.assign({},c((0,a.TS)(e,{inputBorderActiveColor:n,inputBorderHoverColor:n,controlOutline:l}))),[`${r}-prefix, ${r}-suffix`]:{color:n}},[`&-status-warning:not(${t}-disabled):not(${t}-borderless)${t}`]:{borderColor:o,"&:hover":{borderColor:d},"&:focus, &-focused":Object.assign({},c((0,a.TS)(e,{inputBorderActiveColor:o,inputBorderHoverColor:o,controlOutline:i}))),[`${r}-prefix, ${r}-suffix`]:{color:o}}}},g=e=>Object.assign(Object.assign({position:"relative",display:"inline-block",width:"100%",minWidth:0,padding:`${e.inputPaddingVertical}px ${e.inputPaddingHorizontal}px`,color:e.colorText,fontSize:e.fontSize,lineHeight:e.lineHeight,backgroundColor:e.colorBgContainer,backgroundImage:"none",borderWidth:e.lineWidth,borderStyle:e.lineType,borderColor:e.colorBorder,borderRadius:e.borderRadius,transition:`all ${e.motionDurationMid}`},i(e.colorTextPlaceholder)),{"&:hover":Object.assign({},s(e)),"&:focus, &-focused":Object.assign({},c(e)),"&-disabled, &[disabled]":Object.assign({},d(e)),"&-borderless":{"&, &:hover, &:focus, &-focused, &-disabled, &[disabled]":{backgroundColor:"transparent",border:"none",boxShadow:"none"}},"textarea&":{maxWidth:"100%",height:"auto",minHeight:e.controlHeight,lineHeight:e.lineHeight,verticalAlign:"bottom",transition:`all ${e.motionDurationSlow}, height 0s`,resize:"vertical"},"&-lg":Object.assign({},u(e)),"&-sm":Object.assign({},p(e)),"&-rtl":{direction:"rtl"},"&-textarea-rtl":{direction:"rtl"}}),m=e=>{let{componentCls:t,antCls:r}=e;return{position:"relative",display:"table",width:"100%",borderCollapse:"separate",borderSpacing:0,"&[class*='col-']":{paddingInlineEnd:e.paddingXS,"&:last-child":{paddingInlineEnd:0}},[`&-lg ${t}, &-lg > ${t}-group-addon`]:Object.assign({},u(e)),[`&-sm ${t}, &-sm > ${t}-group-addon`]:Object.assign({},p(e)),[`&-lg ${r}-select-single ${r}-select-selector`]:{height:e.controlHeightLG},[`&-sm ${r}-select-single ${r}-select-selector`]:{height:e.controlHeightSM},[`> ${t}`]:{display:"table-cell","&:not(:first-child):not(:last-child)":{borderRadius:0}},[`${t}-group`]:{"&-addon, &-wrap":{display:"table-cell",width:1,whiteSpace:"nowrap",verticalAlign:"middle","&:not(:first-child):not(:last-child)":{borderRadius:0}},"&-wrap > *":{display:"block !important"},"&-addon":{position:"relative",padding:`0 ${e.inputPaddingHorizontal}px`,color:e.colorText,fontWeight:"normal",fontSize:e.fontSize,textAlign:"center",backgroundColor:e.colorFillAlter,border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,borderRadius:e.borderRadius,transition:`all ${e.motionDurationSlow}`,lineHeight:1,[`${r}-select`]:{margin:`-${e.inputPaddingVertical+1}px -${e.inputPaddingHorizontal}px`,[`&${r}-select-single:not(${r}-select-customize-input)`]:{[`${r}-select-selector`]:{backgroundColor:"inherit",border:`${e.lineWidth}px ${e.lineType} transparent`,boxShadow:"none"}},"&-open, &-focused":{[`${r}-select-selector`]:{color:e.colorPrimary}}},[`${r}-cascader-picker`]:{margin:`-9px -${e.inputPaddingHorizontal}px`,backgroundColor:"transparent",[`${r}-cascader-input`]:{textAlign:"start",border:0,boxShadow:"none"}}},"&-addon:first-child":{borderInlineEnd:0},"&-addon:last-child":{borderInlineStart:0}},[`${t}`]:{width:"100%",marginBottom:0,textAlign:"inherit","&:focus":{zIndex:1,borderInlineEndWidth:1},"&:hover":{zIndex:1,borderInlineEndWidth:1,[`${t}-search-with-button &`]:{zIndex:0}}},[`> ${t}:first-child, ${t}-group-addon:first-child`]:{borderStartEndRadius:0,borderEndEndRadius:0,[`${r}-select ${r}-select-selector`]:{borderStartEndRadius:0,borderEndEndRadius:0}},[`> ${t}-affix-wrapper`]:{[`&:not(:first-child) ${t}`]:{borderStartStartRadius:0,borderEndStartRadius:0},[`&:not(:last-child) ${t}`]:{borderStartEndRadius:0,borderEndEndRadius:0}},[`> ${t}:last-child, ${t}-group-addon:last-child`]:{borderStartStartRadius:0,borderEndStartRadius:0,[`${r}-select ${r}-select-selector`]:{borderStartStartRadius:0,borderEndStartRadius:0}},[`${t}-affix-wrapper`]:{"&:not(:last-child)":{borderStartEndRadius:0,borderEndEndRadius:0,[`${t}-search &`]:{borderStartStartRadius:e.borderRadius,borderEndStartRadius:e.borderRadius}},[`&:not(:first-child), ${t}-search &:not(:first-child)`]:{borderStartStartRadius:0,borderEndStartRadius:0}},[`&${t}-group-compact`]:Object.assign(Object.assign({display:"block"},(0,n.dF)()),{[`${t}-group-addon, ${t}-group-wrap, > ${t}`]:{"&:not(:first-child):not(:last-child)":{borderInlineEndWidth:e.lineWidth,"&:hover":{zIndex:1},"&:focus":{zIndex:1}}},"& > *":{display:"inline-block",float:"none",verticalAlign:"top",borderRadius:0},[` - & > ${t}-affix-wrapper, - & > ${t}-number-affix-wrapper, - & > ${r}-picker-range - `]:{display:"inline-flex"},"& > *:not(:last-child)":{marginInlineEnd:-e.lineWidth,borderInlineEndWidth:e.lineWidth},[`${t}`]:{float:"none"},[`& > ${r}-select > ${r}-select-selector, - & > ${r}-select-auto-complete ${t}, - & > ${r}-cascader-picker ${t}, - & > ${t}-group-wrapper ${t}`]:{borderInlineEndWidth:e.lineWidth,borderRadius:0,"&:hover":{zIndex:1},"&:focus":{zIndex:1}},[`& > ${r}-select-focused`]:{zIndex:1},[`& > ${r}-select > ${r}-select-arrow`]:{zIndex:1},[`& > *:first-child, - & > ${r}-select:first-child > ${r}-select-selector, - & > ${r}-select-auto-complete:first-child ${t}, - & > ${r}-cascader-picker:first-child ${t}`]:{borderStartStartRadius:e.borderRadius,borderEndStartRadius:e.borderRadius},[`& > *:last-child, - & > ${r}-select:last-child > ${r}-select-selector, - & > ${r}-cascader-picker:last-child ${t}, - & > ${r}-cascader-picker-focused:last-child ${t}`]:{borderInlineEndWidth:e.lineWidth,borderStartEndRadius:e.borderRadius,borderEndEndRadius:e.borderRadius},[`& > ${r}-select-auto-complete ${t}`]:{verticalAlign:"top"},[`${t}-group-wrapper + ${t}-group-wrapper`]:{marginInlineStart:-e.lineWidth,[`${t}-affix-wrapper`]:{borderRadius:0}},[`${t}-group-wrapper:not(:last-child)`]:{[`&${t}-search > ${t}-group`]:{[`& > ${t}-group-addon > ${t}-search-button`]:{borderRadius:0},[`& > ${t}`]:{borderStartStartRadius:e.borderRadius,borderStartEndRadius:0,borderEndEndRadius:0,borderEndStartRadius:e.borderRadius}}}})}},b=e=>{let{componentCls:t,controlHeightSM:r,lineWidth:o}=e,a=(r-2*o-16)/2;return{[t]:Object.assign(Object.assign(Object.assign(Object.assign({},(0,n.Wf)(e)),g(e)),f(e,t)),{'&[type="color"]':{height:e.controlHeight,[`&${t}-lg`]:{height:e.controlHeightLG},[`&${t}-sm`]:{height:r,paddingTop:a,paddingBottom:a}},'&[type="search"]::-webkit-search-cancel-button, &[type="search"]::-webkit-search-decoration':{"-webkit-appearance":"none"}})}},h=e=>{let{componentCls:t}=e;return{[`${t}-clear-icon`]:{margin:0,color:e.colorTextQuaternary,fontSize:e.fontSizeIcon,verticalAlign:-1,cursor:"pointer",transition:`color ${e.motionDurationSlow}`,"&:hover":{color:e.colorTextTertiary},"&:active":{color:e.colorText},"&-hidden":{visibility:"hidden"},"&-has-suffix":{margin:`0 ${e.inputAffixPadding}px`}}}},v=e=>{let{componentCls:t,inputAffixPadding:r,colorTextDescription:n,motionDurationSlow:o,colorIcon:a,colorIconHover:l,iconCls:i}=e;return{[`${t}-affix-wrapper`]:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},g(e)),{display:"inline-flex",[`&:not(${t}-affix-wrapper-disabled):hover`]:Object.assign(Object.assign({},s(e)),{zIndex:1,[`${t}-search-with-button &`]:{zIndex:0}}),"&-focused, &:focus":{zIndex:1},"&-disabled":{[`${t}[disabled]`]:{background:"transparent"}},[`> input${t}`]:{padding:0,fontSize:"inherit",border:"none",borderRadius:0,outline:"none","&::-ms-reveal":{display:"none"},"&:focus":{boxShadow:"none !important"}},"&::before":{display:"inline-block",width:0,visibility:"hidden",content:'"\\a0"'},[`${t}`]:{"&-prefix, &-suffix":{display:"flex",flex:"none",alignItems:"center","> *:not(:last-child)":{marginInlineEnd:e.paddingXS}},"&-show-count-suffix":{color:n},"&-show-count-has-suffix":{marginInlineEnd:e.paddingXXS},"&-prefix":{marginInlineEnd:r},"&-suffix":{marginInlineStart:r}}}),h(e)),{[`${i}${t}-password-icon`]:{color:a,cursor:"pointer",transition:`all ${o}`,"&:hover":{color:l}}}),f(e,`${t}-affix-wrapper`))}},x=e=>{let{componentCls:t,colorError:r,colorWarning:o,borderRadiusLG:a,borderRadiusSM:l}=e;return{[`${t}-group`]:Object.assign(Object.assign(Object.assign({},(0,n.Wf)(e)),m(e)),{"&-rtl":{direction:"rtl"},"&-wrapper":{display:"inline-block",width:"100%",textAlign:"start",verticalAlign:"top","&-rtl":{direction:"rtl"},"&-lg":{[`${t}-group-addon`]:{borderRadius:a,fontSize:e.fontSizeLG}},"&-sm":{[`${t}-group-addon`]:{borderRadius:l}},"&-status-error":{[`${t}-group-addon`]:{color:r,borderColor:r}},"&-status-warning":{[`${t}-group-addon`]:{color:o,borderColor:o}},"&-disabled":{[`${t}-group-addon`]:Object.assign({},d(e))},[`&:not(${t}-compact-first-item):not(${t}-compact-last-item)${t}-compact-item`]:{[`${t}, ${t}-group-addon`]:{borderRadius:0}},[`&:not(${t}-compact-last-item)${t}-compact-first-item`]:{[`${t}, ${t}-group-addon`]:{borderStartEndRadius:0,borderEndEndRadius:0}},[`&:not(${t}-compact-first-item)${t}-compact-last-item`]:{[`${t}, ${t}-group-addon`]:{borderStartStartRadius:0,borderEndStartRadius:0}}}})}},$=e=>{let{componentCls:t,antCls:r}=e,n=`${t}-search`;return{[n]:{[`${t}`]:{"&:hover, &:focus":{borderColor:e.colorPrimaryHover,[`+ ${t}-group-addon ${n}-button:not(${r}-btn-primary)`]:{borderInlineStartColor:e.colorPrimaryHover}}},[`${t}-affix-wrapper`]:{borderRadius:0},[`${t}-lg`]:{lineHeight:e.lineHeightLG-2e-4},[`> ${t}-group`]:{[`> ${t}-group-addon:last-child`]:{insetInlineStart:-1,padding:0,border:0,[`${n}-button`]:{paddingTop:0,paddingBottom:0,borderStartStartRadius:0,borderStartEndRadius:e.borderRadius,borderEndEndRadius:e.borderRadius,borderEndStartRadius:0},[`${n}-button:not(${r}-btn-primary)`]:{color:e.colorTextDescription,"&:hover":{color:e.colorPrimaryHover},"&:active":{color:e.colorPrimaryActive},[`&${r}-btn-loading::before`]:{insetInlineStart:0,insetInlineEnd:0,insetBlockStart:0,insetBlockEnd:0}}}},[`${n}-button`]:{height:e.controlHeight,"&:hover, &:focus":{zIndex:1}},[`&-large ${n}-button`]:{height:e.controlHeightLG},[`&-small ${n}-button`]:{height:e.controlHeightSM},"&-rtl":{direction:"rtl"},[`&${t}-compact-item`]:{[`&:not(${t}-compact-last-item)`]:{[`${t}-group-addon`]:{[`${t}-search-button`]:{marginInlineEnd:-e.lineWidth,borderRadius:0}}},[`&:not(${t}-compact-first-item)`]:{[`${t},${t}-affix-wrapper`]:{borderRadius:0}},[`> ${t}-group-addon ${t}-search-button, - > ${t}, - ${t}-affix-wrapper`]:{"&:hover,&:focus,&:active":{zIndex:2}},[`> ${t}-affix-wrapper-focused`]:{zIndex:2}}}}};function y(e){return(0,a.TS)(e,{inputAffixPadding:e.paddingXXS,inputPaddingVertical:Math.max(Math.round((e.controlHeight-e.fontSize*e.lineHeight)/2*10)/10-e.lineWidth,3),inputPaddingVerticalLG:Math.ceil((e.controlHeightLG-e.fontSizeLG*e.lineHeightLG)/2*10)/10-e.lineWidth,inputPaddingVerticalSM:Math.max(Math.round((e.controlHeightSM-e.fontSize*e.lineHeight)/2*10)/10-e.lineWidth,0),inputPaddingHorizontal:e.paddingSM-e.lineWidth,inputPaddingHorizontalSM:e.paddingXS-e.lineWidth,inputPaddingHorizontalLG:e.controlPaddingHorizontal-e.lineWidth,inputBorderHoverColor:e.colorPrimaryHover,inputBorderActiveColor:e.colorPrimaryHover})}let w=e=>{let{componentCls:t,paddingLG:r}=e,n=`${t}-textarea`;return{[n]:{position:"relative","&-show-count":{[`> ${t}`]:{height:"100%"},[`${t}-data-count`]:{position:"absolute",bottom:-e.fontSize*e.lineHeight,insetInlineEnd:0,color:e.colorTextDescription,whiteSpace:"nowrap",pointerEvents:"none"}},"&-allow-clear":{[`> ${t}`]:{paddingInlineEnd:r}},[`&-affix-wrapper${n}-has-feedback`]:{[`${t}`]:{paddingInlineEnd:r}},[`&-affix-wrapper${t}-affix-wrapper`]:{padding:0,[`> textarea${t}`]:{fontSize:"inherit",border:"none",outline:"none","&:focus":{boxShadow:"none !important"}},[`${t}-suffix`]:{margin:0,"> *:not(:last-child)":{marginInline:0},[`${t}-clear-icon`]:{position:"absolute",insetInlineEnd:e.paddingXS,insetBlockStart:e.paddingXS},[`${n}-suffix`]:{position:"absolute",top:0,insetInlineEnd:e.inputPaddingHorizontal,bottom:0,zIndex:1,display:"inline-flex",alignItems:"center",margin:"auto",pointerEvents:"none"}}}}}};t.ZP=(0,l.Z)("Input",e=>{let t=y(e);return[b(t),w(t),v(t),x(t),$(t),(0,o.c)(t)]})},67656:function(e,t,r){r.d(t,{Q:function(){return u},Z:function(){return v}});var n=r(87462),o=r(1413),a=r(4942),l=r(71002),i=r(94184),s=r.n(i),c=r(67294),d=r(87887),u=function(e){var t=e.inputElement,r=e.prefixCls,i=e.prefix,u=e.suffix,p=e.addonBefore,f=e.addonAfter,g=e.className,m=e.style,b=e.disabled,h=e.readOnly,v=e.focused,x=e.triggerFocus,$=e.allowClear,y=e.value,w=e.handleReset,E=e.hidden,S=e.classes,C=e.classNames,z=e.dataAttrs,R=e.styles,O=e.components,Z=(null==O?void 0:O.affixWrapper)||"span",H=(null==O?void 0:O.groupWrapper)||"span",I=(null==O?void 0:O.wrapper)||"span",j=(null==O?void 0:O.groupAddon)||"span",P=(0,c.useRef)(null),N=(0,c.cloneElement)(t,{value:y,hidden:E,className:s()(null===(k=t.props)||void 0===k?void 0:k.className,!(0,d.X3)(e)&&!(0,d.He)(e)&&g)||null,style:(0,o.Z)((0,o.Z)({},null===(A=t.props)||void 0===A?void 0:A.style),(0,d.X3)(e)||(0,d.He)(e)?{}:m)});if((0,d.X3)(e)){var k,A,M,B="".concat(r,"-affix-wrapper"),T=s()(B,(M={},(0,a.Z)(M,"".concat(B,"-disabled"),b),(0,a.Z)(M,"".concat(B,"-focused"),v),(0,a.Z)(M,"".concat(B,"-readonly"),h),(0,a.Z)(M,"".concat(B,"-input-with-clear-btn"),u&&$&&y),M),!(0,d.He)(e)&&g,null==S?void 0:S.affixWrapper,null==C?void 0:C.affixWrapper),W=(u||$)&&c.createElement("span",{className:s()("".concat(r,"-suffix"),null==C?void 0:C.suffix),style:null==R?void 0:R.suffix},function(){if(!$)return null;var e,t=!b&&!h&&y,n="".concat(r,"-clear-icon"),o="object"===(0,l.Z)($)&&null!=$&&$.clearIcon?$.clearIcon:"✖";return c.createElement("span",{onClick:w,onMouseDown:function(e){return e.preventDefault()},className:s()(n,(e={},(0,a.Z)(e,"".concat(n,"-hidden"),!t),(0,a.Z)(e,"".concat(n,"-has-suffix"),!!u),e)),role:"button",tabIndex:-1},o)}(),u);N=c.createElement(Z,(0,n.Z)({className:T,style:(0,o.Z)((0,o.Z)({},(0,d.He)(e)?void 0:m),null==R?void 0:R.affixWrapper),hidden:!(0,d.He)(e)&&E,onClick:function(e){var t;null!==(t=P.current)&&void 0!==t&&t.contains(e.target)&&(null==x||x())}},null==z?void 0:z.affixWrapper,{ref:P}),i&&c.createElement("span",{className:s()("".concat(r,"-prefix"),null==C?void 0:C.prefix),style:null==R?void 0:R.prefix},i),(0,c.cloneElement)(t,{value:y,hidden:null}),W)}if((0,d.He)(e)){var F="".concat(r,"-group"),L="".concat(F,"-addon"),D=s()("".concat(r,"-wrapper"),F,null==S?void 0:S.wrapper),V=s()("".concat(r,"-group-wrapper"),g,null==S?void 0:S.group);return c.createElement(H,{className:V,style:m,hidden:E},c.createElement(I,{className:D},p&&c.createElement(j,{className:L},p),(0,c.cloneElement)(N,{hidden:null}),f&&c.createElement(j,{className:L},f)))}return N},p=r(74902),f=r(97685),g=r(45987),m=r(21770),b=r(98423),h=["autoComplete","onChange","onFocus","onBlur","onPressEnter","onKeyDown","prefixCls","disabled","htmlSize","className","maxLength","suffix","showCount","type","classes","classNames","styles"],v=(0,c.forwardRef)(function(e,t){var r,i=e.autoComplete,v=e.onChange,x=e.onFocus,$=e.onBlur,y=e.onPressEnter,w=e.onKeyDown,E=e.prefixCls,S=void 0===E?"rc-input":E,C=e.disabled,z=e.htmlSize,R=e.className,O=e.maxLength,Z=e.suffix,H=e.showCount,I=e.type,j=e.classes,P=e.classNames,N=e.styles,k=(0,g.Z)(e,h),A=(0,m.Z)(e.defaultValue,{value:e.value}),M=(0,f.Z)(A,2),B=M[0],T=M[1],W=(0,c.useState)(!1),F=(0,f.Z)(W,2),L=F[0],D=F[1],V=(0,c.useRef)(null),_=function(e){V.current&&(0,d.nH)(V.current,e)};return(0,c.useImperativeHandle)(t,function(){return{focus:_,blur:function(){var e;null===(e=V.current)||void 0===e||e.blur()},setSelectionRange:function(e,t,r){var n;null===(n=V.current)||void 0===n||n.setSelectionRange(e,t,r)},select:function(){var e;null===(e=V.current)||void 0===e||e.select()},input:V.current}}),(0,c.useEffect)(function(){D(function(e){return(!e||!C)&&e})},[C]),c.createElement(u,(0,n.Z)({},k,{prefixCls:S,className:R,inputElement:(r=(0,b.Z)(e,["prefixCls","onPressEnter","addonBefore","addonAfter","prefix","suffix","allowClear","defaultValue","showCount","classes","htmlSize","styles","classNames"]),c.createElement("input",(0,n.Z)({autoComplete:i},r,{onChange:function(t){void 0===e.value&&T(t.target.value),V.current&&(0,d.rJ)(V.current,t,v)},onFocus:function(e){D(!0),null==x||x(e)},onBlur:function(e){D(!1),null==$||$(e)},onKeyDown:function(e){y&&"Enter"===e.key&&y(e),null==w||w(e)},className:s()(S,(0,a.Z)({},"".concat(S,"-disabled"),C),null==P?void 0:P.input),style:null==N?void 0:N.input,ref:V,size:z,type:void 0===I?"text":I}))),handleReset:function(e){T(""),_(),V.current&&(0,d.rJ)(V.current,e,v)},value:(0,d.D7)(B),focused:L,triggerFocus:_,suffix:function(){var e=Number(O)>0;if(Z||H){var t=(0,d.D7)(B),r=(0,p.Z)(t).length,n="object"===(0,l.Z)(H)?H.formatter({value:t,count:r,maxLength:O}):"".concat(r).concat(e?" / ".concat(O):"");return c.createElement(c.Fragment,null,!!H&&c.createElement("span",{className:s()("".concat(S,"-show-count-suffix"),(0,a.Z)({},"".concat(S,"-show-count-has-suffix"),!!Z),null==P?void 0:P.count),style:(0,o.Z)({},null==N?void 0:N.count)},n),Z)}return null}(),disabled:C,classes:j,classNames:P,styles:N}))})},87887:function(e,t,r){function n(e){return!!(e.addonBefore||e.addonAfter)}function o(e){return!!(e.prefix||e.suffix||e.allowClear)}function a(e,t,r,n){if(r){var o=t;if("click"===t.type){var a=e.cloneNode(!0);o=Object.create(t,{target:{value:a},currentTarget:{value:a}}),a.value="",r(o);return}if(void 0!==n){o=Object.create(t,{target:{value:e},currentTarget:{value:e}}),e.value=n,r(o);return}r(o)}}function l(e,t){if(e){e.focus(t);var r=(t||{}).cursor;if(r){var n=e.value.length;switch(r){case"start":e.setSelectionRange(0,0);break;case"end":e.setSelectionRange(n,n);break;default:e.setSelectionRange(0,n)}}}}function i(e){return null==e?"":String(e)}r.d(t,{D7:function(){return i},He:function(){return n},X3:function(){return o},nH:function(){return l},rJ:function(){return a}})}}]); \ No newline at end of file diff --git a/pilot/server/static/_next/static/chunks/45-9ff739c09925ea35.js b/pilot/server/static/_next/static/chunks/45-9ff739c09925ea35.js deleted file mode 100644 index cefd89fd6..000000000 --- a/pilot/server/static/_next/static/chunks/45-9ff739c09925ea35.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[45],{78045:function(e,r,o){o.d(r,{ZP:function(){return P}});var t=o(94184),n=o.n(t),l=o(21770),i=o(64217),a=o(67294),d=o(53124),s=o(98675);let c=a.createContext(null),b=c.Provider,u=a.createContext(null),p=u.Provider;var g=o(50132),h=o(42550),f=o(98866),$=o(65223),v=o(14747),k=o(67968),C=o(45503);let y=e=>{let{componentCls:r,antCls:o}=e,t=`${r}-group`;return{[t]:Object.assign(Object.assign({},(0,v.Wf)(e)),{display:"inline-block",fontSize:0,[`&${t}-rtl`]:{direction:"rtl"},[`${o}-badge ${o}-badge-count`]:{zIndex:1},[`> ${o}-badge:not(:first-child) > ${o}-button-wrapper`]:{borderInlineStart:"none"}})}},S=e=>{let{componentCls:r,wrapperMarginInlineEnd:o,colorPrimary:t,radioSize:n,motionDurationSlow:l,motionDurationMid:i,motionEaseInOutCirc:a,colorBgContainer:d,colorBorder:s,lineWidth:c,dotSize:b,colorBgContainerDisabled:u,colorTextDisabled:p,paddingXS:g,dotColorDisabled:h,lineType:f,radioDotDisabledSize:$,wireframe:k,colorWhite:C}=e,y=`${r}-inner`;return{[`${r}-wrapper`]:Object.assign(Object.assign({},(0,v.Wf)(e)),{display:"inline-flex",alignItems:"baseline",marginInlineStart:0,marginInlineEnd:o,cursor:"pointer",[`&${r}-wrapper-rtl`]:{direction:"rtl"},"&-disabled":{cursor:"not-allowed",color:e.colorTextDisabled},"&::after":{display:"inline-block",width:0,overflow:"hidden",content:'"\\a0"'},[`${r}-checked::after`]:{position:"absolute",insetBlockStart:0,insetInlineStart:0,width:"100%",height:"100%",border:`${c}px ${f} ${t}`,borderRadius:"50%",visibility:"hidden",content:'""'},[r]:Object.assign(Object.assign({},(0,v.Wf)(e)),{position:"relative",display:"inline-block",outline:"none",cursor:"pointer",alignSelf:"center",borderRadius:"50%"}),[`${r}-wrapper:hover &, - &:hover ${y}`]:{borderColor:t},[`${r}-input:focus-visible + ${y}`]:Object.assign({},(0,v.oN)(e)),[`${r}:hover::after, ${r}-wrapper:hover &::after`]:{visibility:"visible"},[`${r}-inner`]:{"&::after":{boxSizing:"border-box",position:"absolute",insetBlockStart:"50%",insetInlineStart:"50%",display:"block",width:n,height:n,marginBlockStart:-(n/2),marginInlineStart:-(n/2),backgroundColor:k?t:C,borderBlockStart:0,borderInlineStart:0,borderRadius:n,transform:"scale(0)",opacity:0,transition:`all ${l} ${a}`,content:'""'},boxSizing:"border-box",position:"relative",insetBlockStart:0,insetInlineStart:0,display:"block",width:n,height:n,backgroundColor:d,borderColor:s,borderStyle:"solid",borderWidth:c,borderRadius:"50%",transition:`all ${i}`},[`${r}-input`]:{position:"absolute",inset:0,zIndex:1,cursor:"pointer",opacity:0},[`${r}-checked`]:{[y]:{borderColor:t,backgroundColor:k?d:t,"&::after":{transform:`scale(${b/n})`,opacity:1,transition:`all ${l} ${a}`}}},[`${r}-disabled`]:{cursor:"not-allowed",[y]:{backgroundColor:u,borderColor:s,cursor:"not-allowed","&::after":{backgroundColor:h}},[`${r}-input`]:{cursor:"not-allowed"},[`${r}-disabled + span`]:{color:p,cursor:"not-allowed"},[`&${r}-checked`]:{[y]:{"&::after":{transform:`scale(${$/n})`}}}},[`span${r} + *`]:{paddingInlineStart:g,paddingInlineEnd:g}})}},m=e=>{let{buttonColor:r,controlHeight:o,componentCls:t,lineWidth:n,lineType:l,colorBorder:i,motionDurationSlow:a,motionDurationMid:d,buttonPaddingInline:s,fontSize:c,buttonBg:b,fontSizeLG:u,controlHeightLG:p,controlHeightSM:g,paddingXS:h,borderRadius:f,borderRadiusSM:$,borderRadiusLG:k,buttonCheckedBg:C,buttonSolidCheckedColor:y,colorTextDisabled:S,colorBgContainerDisabled:m,buttonCheckedBgDisabled:x,buttonCheckedColorDisabled:w,colorPrimary:E,colorPrimaryHover:O,colorPrimaryActive:I}=e;return{[`${t}-button-wrapper`]:{position:"relative",display:"inline-block",height:o,margin:0,paddingInline:s,paddingBlock:0,color:r,fontSize:c,lineHeight:`${o-2*n}px`,background:b,border:`${n}px ${l} ${i}`,borderBlockStartWidth:n+.02,borderInlineStartWidth:0,borderInlineEndWidth:n,cursor:"pointer",transition:`color ${d},background ${d},box-shadow ${d}`,a:{color:r},[`> ${t}-button`]:{position:"absolute",insetBlockStart:0,insetInlineStart:0,zIndex:-1,width:"100%",height:"100%"},"&:not(:first-child)":{"&::before":{position:"absolute",insetBlockStart:-n,insetInlineStart:-n,display:"block",boxSizing:"content-box",width:1,height:"100%",paddingBlock:n,paddingInline:0,backgroundColor:i,transition:`background-color ${a}`,content:'""'}},"&:first-child":{borderInlineStart:`${n}px ${l} ${i}`,borderStartStartRadius:f,borderEndStartRadius:f},"&:last-child":{borderStartEndRadius:f,borderEndEndRadius:f},"&:first-child:last-child":{borderRadius:f},[`${t}-group-large &`]:{height:p,fontSize:u,lineHeight:`${p-2*n}px`,"&:first-child":{borderStartStartRadius:k,borderEndStartRadius:k},"&:last-child":{borderStartEndRadius:k,borderEndEndRadius:k}},[`${t}-group-small &`]:{height:g,paddingInline:h-n,paddingBlock:0,lineHeight:`${g-2*n}px`,"&:first-child":{borderStartStartRadius:$,borderEndStartRadius:$},"&:last-child":{borderStartEndRadius:$,borderEndEndRadius:$}},"&:hover":{position:"relative",color:E},"&:has(:focus-visible)":Object.assign({},(0,v.oN)(e)),[`${t}-inner, input[type='checkbox'], input[type='radio']`]:{width:0,height:0,opacity:0,pointerEvents:"none"},[`&-checked:not(${t}-button-wrapper-disabled)`]:{zIndex:1,color:E,background:C,borderColor:E,"&::before":{backgroundColor:E},"&:first-child":{borderColor:E},"&:hover":{color:O,borderColor:O,"&::before":{backgroundColor:O}},"&:active":{color:I,borderColor:I,"&::before":{backgroundColor:I}}},[`${t}-group-solid &-checked:not(${t}-button-wrapper-disabled)`]:{color:y,background:E,borderColor:E,"&:hover":{color:y,background:O,borderColor:O},"&:active":{color:y,background:I,borderColor:I}},"&-disabled":{color:S,backgroundColor:m,borderColor:i,cursor:"not-allowed","&:first-child, &:hover":{color:S,backgroundColor:m,borderColor:i}},[`&-disabled${t}-button-wrapper-checked`]:{color:w,backgroundColor:x,borderColor:i,boxShadow:"none"}}}},x=e=>e-8;var w=(0,k.Z)("Radio",e=>{let{controlOutline:r,controlOutlineWidth:o,radioSize:t}=e,n=`0 0 0 ${o}px ${r}`,l=x(t),i=(0,C.TS)(e,{radioDotDisabledSize:l,radioFocusShadow:n,radioButtonFocusShadow:n});return[y(i),S(i),m(i)]},e=>{let{wireframe:r,padding:o,marginXS:t,lineWidth:n,fontSizeLG:l,colorText:i,colorBgContainer:a,colorTextDisabled:d,controlItemBgActiveDisabled:s,colorTextLightSolid:c}=e,b=r?x(l):l-(4+n)*2;return{radioSize:l,dotSize:b,dotColorDisabled:d,buttonSolidCheckedColor:c,buttonBg:a,buttonCheckedBg:a,buttonColor:i,buttonCheckedBgDisabled:s,buttonCheckedColorDisabled:d,buttonPaddingInline:o-n,wrapperMarginInlineEnd:t}}),E=o(45353),O=o(17415),I=function(e,r){var o={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&0>r.indexOf(t)&&(o[t]=e[t]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var n=0,t=Object.getOwnPropertySymbols(e);nr.indexOf(t[n])&&Object.prototype.propertyIsEnumerable.call(e,t[n])&&(o[t[n]]=e[t[n]]);return o};let R=a.forwardRef((e,r)=>{var o,t;let l=a.useContext(c),i=a.useContext(u),{getPrefixCls:s,direction:b,radio:p}=a.useContext(d.E_),v=a.useRef(null),k=(0,h.sQ)(r,v),{isFormItemInput:C}=a.useContext($.aM),{prefixCls:y,className:S,rootClassName:m,children:x,style:R}=e,j=I(e,["prefixCls","className","rootClassName","children","style"]),B=s("radio",y),z="button"===((null==l?void 0:l.optionType)||i),N=z?`${B}-button`:B,[P,_]=w(B),M=Object.assign({},j),Z=a.useContext(f.Z);l&&(M.name=l.name,M.onChange=r=>{var o,t;null===(o=e.onChange)||void 0===o||o.call(e,r),null===(t=null==l?void 0:l.onChange)||void 0===t||t.call(l,r)},M.checked=e.value===l.value,M.disabled=null!==(o=M.disabled)&&void 0!==o?o:l.disabled),M.disabled=null!==(t=M.disabled)&&void 0!==t?t:Z;let W=n()(`${N}-wrapper`,{[`${N}-wrapper-checked`]:M.checked,[`${N}-wrapper-disabled`]:M.disabled,[`${N}-wrapper-rtl`]:"rtl"===b,[`${N}-wrapper-in-form-item`]:C},null==p?void 0:p.className,S,m,_);return P(a.createElement(E.Z,{component:"Radio",disabled:M.disabled},a.createElement("label",{className:W,style:Object.assign(Object.assign({},null==p?void 0:p.style),R),onMouseEnter:e.onMouseEnter,onMouseLeave:e.onMouseLeave},a.createElement(g.Z,Object.assign({},M,{className:n()(M.className,!z&&O.A),type:"radio",prefixCls:N,ref:k})),void 0!==x?a.createElement("span",null,x):null)))}),j=a.forwardRef((e,r)=>{let{getPrefixCls:o,direction:t}=a.useContext(d.E_),[c,u]=(0,l.Z)(e.defaultValue,{value:e.value}),{prefixCls:p,className:g,rootClassName:h,options:f,buttonStyle:$="outline",disabled:v,children:k,size:C,style:y,id:S,onMouseEnter:m,onMouseLeave:x,onFocus:E,onBlur:O}=e,I=o("radio",p),j=`${I}-group`,[B,z]=w(I),N=k;f&&f.length>0&&(N=f.map(e=>"string"==typeof e||"number"==typeof e?a.createElement(R,{key:e.toString(),prefixCls:I,disabled:v,value:e,checked:c===e},e):a.createElement(R,{key:`radio-group-value-options-${e.value}`,prefixCls:I,disabled:e.disabled||v,value:e.value,checked:c===e.value,title:e.title,style:e.style},e.label)));let P=(0,s.Z)(C),_=n()(j,`${j}-${$}`,{[`${j}-${P}`]:P,[`${j}-rtl`]:"rtl"===t},g,h,z);return B(a.createElement("div",Object.assign({},(0,i.Z)(e,{aria:!0,data:!0}),{className:_,style:y,onMouseEnter:m,onMouseLeave:x,onFocus:E,onBlur:O,id:S,ref:r}),a.createElement(b,{value:{onChange:r=>{let o=r.target.value;"value"in e||u(o);let{onChange:t}=e;t&&o!==c&&t(r)},value:c,disabled:e.disabled,name:e.name,optionType:e.optionType}},N)))});var B=a.memo(j),z=function(e,r){var o={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&0>r.indexOf(t)&&(o[t]=e[t]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var n=0,t=Object.getOwnPropertySymbols(e);nr.indexOf(t[n])&&Object.prototype.propertyIsEnumerable.call(e,t[n])&&(o[t[n]]=e[t[n]]);return o},N=a.forwardRef((e,r)=>{let{getPrefixCls:o}=a.useContext(d.E_),{prefixCls:t}=e,n=z(e,["prefixCls"]),l=o("radio",t);return a.createElement(p,{value:"button"},a.createElement(R,Object.assign({prefixCls:l},n,{type:"radio",ref:r})))});R.Button=N,R.Group=B,R.__ANT_RADIO=!0;var P=R}}]); \ No newline at end of file diff --git a/pilot/server/static/_next/static/chunks/479-68b22ee2b7a47fb3.js b/pilot/server/static/_next/static/chunks/479-68b22ee2b7a47fb3.js deleted file mode 100644 index d373a3ee8..000000000 --- a/pilot/server/static/_next/static/chunks/479-68b22ee2b7a47fb3.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[479],{74443:function(e,t,r){r.d(t,{Z:function(){return s},c:function(){return i}});var n=r(67294),l=r(25976);let i=["xxl","xl","lg","md","sm","xs"],o=e=>({xs:`(max-width: ${e.screenXSMax}px)`,sm:`(min-width: ${e.screenSM}px)`,md:`(min-width: ${e.screenMD}px)`,lg:`(min-width: ${e.screenLG}px)`,xl:`(min-width: ${e.screenXL}px)`,xxl:`(min-width: ${e.screenXXL}px)`}),a=e=>{let t=[].concat(i).reverse();return t.forEach((r,n)=>{let l=r.toUpperCase(),i=`screen${l}Min`,o=`screen${l}`;if(!(e[i]<=e[o]))throw Error(`${i}<=${o} fails : !(${e[i]}<=${e[o]})`);if(n{let e=new Map,r=-1,n={};return{matchHandlers:{},dispatch:t=>(n=t,e.forEach(e=>e(n)),e.size>=1),subscribe(t){return e.size||this.register(),r+=1,e.set(r,t),t(n),r},unsubscribe(t){e.delete(t),e.size||this.unregister()},unregister(){Object.keys(t).forEach(e=>{let r=t[e],n=this.matchHandlers[r];null==n||n.mql.removeListener(null==n?void 0:n.listener)}),e.clear()},register(){Object.keys(t).forEach(e=>{let r=t[e],l=t=>{let{matches:r}=t;this.dispatch(Object.assign(Object.assign({},n),{[e]:r}))},i=window.matchMedia(r);i.addListener(l),this.matchHandlers[r]={mql:i,listener:l},l(i)})},responsiveMap:t}},[e])}},39479:function(e,t,r){r.d(t,{Z:function(){return eZ}});var n=r(74902),l=r(94184),i=r.n(l),o=r(82225),a=r(67294),s=r(33603),c=r(65223);function u(e){let[t,r]=a.useState(e);return a.useEffect(()=>{let t=setTimeout(()=>{r(e)},e.length?0:10);return()=>{clearTimeout(t)}},[e]),t}var d=r(14747),f=r(50438),p=r(33507),m=r(45503),g=r(67968),h=e=>{let{componentCls:t}=e,r=`${t}-show-help`,n=`${t}-show-help-item`;return{[r]:{transition:`opacity ${e.motionDurationSlow} ${e.motionEaseInOut}`,"&-appear, &-enter":{opacity:0,"&-active":{opacity:1}},"&-leave":{opacity:1,"&-active":{opacity:0}},[n]:{overflow:"hidden",transition:`height ${e.motionDurationSlow} ${e.motionEaseInOut}, - opacity ${e.motionDurationSlow} ${e.motionEaseInOut}, - transform ${e.motionDurationSlow} ${e.motionEaseInOut} !important`,[`&${n}-appear, &${n}-enter`]:{transform:"translateY(-5px)",opacity:0,"&-active":{transform:"translateY(0)",opacity:1}},[`&${n}-leave-active`]:{transform:"translateY(-5px)"}}}}};let $=e=>({legend:{display:"block",width:"100%",marginBottom:e.marginLG,padding:0,color:e.colorTextDescription,fontSize:e.fontSizeLG,lineHeight:"inherit",border:0,borderBottom:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`},label:{fontSize:e.fontSize},'input[type="search"]':{boxSizing:"border-box"},'input[type="radio"], input[type="checkbox"]':{lineHeight:"normal"},'input[type="file"]':{display:"block"},'input[type="range"]':{display:"block",width:"100%"},"select[multiple], select[size]":{height:"auto"},[`input[type='file']:focus, - input[type='radio']:focus, - input[type='checkbox']:focus`]:{outline:0,boxShadow:`0 0 0 ${e.controlOutlineWidth}px ${e.controlOutline}`},output:{display:"block",paddingTop:15,color:e.colorText,fontSize:e.fontSize,lineHeight:e.lineHeight}}),b=(e,t)=>{let{formItemCls:r}=e;return{[r]:{[`${r}-label > label`]:{height:t},[`${r}-control-input`]:{minHeight:t}}}},y=e=>{let{componentCls:t}=e;return{[e.componentCls]:Object.assign(Object.assign(Object.assign({},(0,d.Wf)(e)),$(e)),{[`${t}-text`]:{display:"inline-block",paddingInlineEnd:e.paddingSM},"&-small":Object.assign({},b(e,e.controlHeightSM)),"&-large":Object.assign({},b(e,e.controlHeightLG))})}},x=e=>{let{formItemCls:t,iconCls:r,componentCls:n,rootPrefixCls:l}=e;return{[t]:Object.assign(Object.assign({},(0,d.Wf)(e)),{marginBottom:e.marginLG,verticalAlign:"top","&-with-help":{transition:"none"},[`&-hidden, - &-hidden.${l}-row`]:{display:"none"},"&-has-warning":{[`${t}-split`]:{color:e.colorError}},"&-has-error":{[`${t}-split`]:{color:e.colorWarning}},[`${t}-label`]:{flexGrow:0,overflow:"hidden",whiteSpace:"nowrap",textAlign:"end",verticalAlign:"middle","&-left":{textAlign:"start"},"&-wrap":{overflow:"unset",lineHeight:`${e.lineHeight} - 0.25em`,whiteSpace:"unset"},"> label":{position:"relative",display:"inline-flex",alignItems:"center",maxWidth:"100%",height:e.controlHeight,color:e.colorTextHeading,fontSize:e.fontSize,[`> ${r}`]:{fontSize:e.fontSize,verticalAlign:"top"},[`&${t}-required:not(${t}-required-mark-optional)::before`]:{display:"inline-block",marginInlineEnd:e.marginXXS,color:e.colorError,fontSize:e.fontSize,fontFamily:"SimSun, sans-serif",lineHeight:1,content:'"*"',[`${n}-hide-required-mark &`]:{display:"none"}},[`${t}-optional`]:{display:"inline-block",marginInlineStart:e.marginXXS,color:e.colorTextDescription,[`${n}-hide-required-mark &`]:{display:"none"}},[`${t}-tooltip`]:{color:e.colorTextDescription,cursor:"help",writingMode:"horizontal-tb",marginInlineStart:e.marginXXS},"&::after":{content:'":"',position:"relative",marginBlock:0,marginInlineStart:e.marginXXS/2,marginInlineEnd:e.marginXS},[`&${t}-no-colon::after`]:{content:'"\\a0"'}}},[`${t}-control`]:{"--ant-display":"flex",flexDirection:"column",flexGrow:1,[`&:first-child:not([class^="'${l}-col-'"]):not([class*="' ${l}-col-'"])`]:{width:"100%"},"&-input":{position:"relative",display:"flex",alignItems:"center",minHeight:e.controlHeight,"&-content":{flex:"auto",maxWidth:"100%"}}},[t]:{"&-explain, &-extra":{clear:"both",color:e.colorTextDescription,fontSize:e.fontSize,lineHeight:e.lineHeight},"&-explain-connected":{width:"100%"},"&-extra":{minHeight:e.controlHeightSM,transition:`color ${e.motionDurationMid} ${e.motionEaseOut}`},"&-explain":{"&-error":{color:e.colorError},"&-warning":{color:e.colorWarning}}},[`&-with-help ${t}-explain`]:{height:"auto",opacity:1},[`${t}-feedback-icon`]:{fontSize:e.fontSize,textAlign:"center",visibility:"visible",animationName:f.kr,animationDuration:e.motionDurationMid,animationTimingFunction:e.motionEaseOutBack,pointerEvents:"none","&-success":{color:e.colorSuccess},"&-error":{color:e.colorError},"&-warning":{color:e.colorWarning},"&-validating":{color:e.colorPrimary}}})}},v=e=>{let{componentCls:t,formItemCls:r}=e;return{[`${t}-horizontal`]:{[`${r}-label`]:{flexGrow:0},[`${r}-control`]:{flex:"1 1 0",minWidth:0},[`${r}-label[class$='-24'], ${r}-label[class*='-24 ']`]:{[`& + ${r}-control`]:{minWidth:"unset"}}}}},w=e=>{let{componentCls:t,formItemCls:r}=e;return{[`${t}-inline`]:{display:"flex",flexWrap:"wrap",[r]:{flex:"none",marginInlineEnd:e.margin,marginBottom:0,"&-row":{flexWrap:"nowrap"},[`> ${r}-label, - > ${r}-control`]:{display:"inline-block",verticalAlign:"top"},[`> ${r}-label`]:{flex:"none"},[`${t}-text`]:{display:"inline-block"},[`${r}-has-feedback`]:{display:"inline-block"}}}}},O=e=>({padding:`0 0 ${e.paddingXS}px`,whiteSpace:"initial",textAlign:"start","> label":{margin:0,"&::after":{visibility:"hidden"}}}),E=e=>{let{componentCls:t,formItemCls:r,rootPrefixCls:n}=e;return{[`${r} ${r}-label`]:O(e),[t]:{[r]:{flexWrap:"wrap",[`${r}-label, ${r}-control`]:{[`&:not([class*=" ${n}-col-xs"])`]:{flex:"0 0 100%",maxWidth:"100%"}}}}}},j=e=>{let{componentCls:t,formItemCls:r,rootPrefixCls:n}=e;return{[`${t}-vertical`]:{[r]:{"&-row":{flexDirection:"column"},"&-label > label":{height:"auto"},[`${t}-item-control`]:{width:"100%"}}},[`${t}-vertical ${r}-label, - .${n}-col-24${r}-label, - .${n}-col-xl-24${r}-label`]:O(e),[`@media (max-width: ${e.screenXSMax}px)`]:[E(e),{[t]:{[`.${n}-col-xs-24${r}-label`]:O(e)}}],[`@media (max-width: ${e.screenSMMax}px)`]:{[t]:{[`.${n}-col-sm-24${r}-label`]:O(e)}},[`@media (max-width: ${e.screenMDMax}px)`]:{[t]:{[`.${n}-col-md-24${r}-label`]:O(e)}},[`@media (max-width: ${e.screenLGMax}px)`]:{[t]:{[`.${n}-col-lg-24${r}-label`]:O(e)}}}},S=(e,t)=>{let r=(0,m.TS)(e,{formItemCls:`${e.componentCls}-item`,rootPrefixCls:t});return r};var C=(0,g.Z)("Form",(e,t)=>{let{rootPrefixCls:r}=t,n=S(e,r);return[y(n),x(n),h(n),v(n),w(n),j(n),(0,p.Z)(n),f.kr]},null,{order:-1e3});let M=[];function k(e,t,r){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;return{key:"string"==typeof e?e:`${t}-${n}`,error:e,errorStatus:r}}var I=e=>{let{help:t,helpStatus:r,errors:l=M,warnings:d=M,className:f,fieldId:p,onVisibleChanged:m}=e,{prefixCls:g}=a.useContext(c.Rk),h=`${g}-item-explain`,[,$]=C(g),b=(0,a.useMemo)(()=>(0,s.Z)(g),[g]),y=u(l),x=u(d),v=a.useMemo(()=>null!=t?[k(t,"help",r)]:[].concat((0,n.Z)(y.map((e,t)=>k(e,"error","error",t))),(0,n.Z)(x.map((e,t)=>k(e,"warning","warning",t)))),[t,r,y,x]),w={};return p&&(w.id=`${p}_help`),a.createElement(o.ZP,{motionDeadline:b.motionDeadline,motionName:`${g}-show-help`,visible:!!v.length,onVisibleChanged:m},e=>{let{className:t,style:r}=e;return a.createElement("div",Object.assign({},w,{className:i()(h,t,f,$),style:r,role:"alert"}),a.createElement(o.V4,Object.assign({keys:v},(0,s.Z)(g),{motionName:`${g}-show-help-item`,component:!1}),e=>{let{key:t,error:r,errorStatus:n,className:l,style:o}=e;return a.createElement("div",{key:t,className:i()(l,{[`${h}-${n}`]:n}),style:o},r)}))})},Z=r(43589),N=r(53124),W=r(98866),P=r(97647),q=r(98675);let H=e=>"object"==typeof e&&null!=e&&1===e.nodeType,R=(e,t)=>(!t||"hidden"!==e)&&"visible"!==e&&"clip"!==e,_=(e,t)=>{if(e.clientHeight{let t=(e=>{if(!e.ownerDocument||!e.ownerDocument.defaultView)return null;try{return e.ownerDocument.defaultView.frameElement}catch(e){return null}})(e);return!!t&&(t.clientHeightit||i>e&&o=t&&a>=r?i-e-n:o>t&&ar?o-t+l:0,F=e=>{let t=e.parentElement;return null==t?e.getRootNode().host||null:t},T=(e,t)=>{var r,n,l,i;if("undefined"==typeof document)return[];let{scrollMode:o,block:a,inline:s,boundary:c,skipOverflowHiddenElements:u}=t,d="function"==typeof c?c:e=>e!==c;if(!H(e))throw TypeError("Invalid target");let f=document.scrollingElement||document.documentElement,p=[],m=e;for(;H(m)&&d(m);){if((m=F(m))===f){p.push(m);break}null!=m&&m===document.body&&_(m)&&!_(document.documentElement)||null!=m&&_(m,u)&&p.push(m)}let g=null!=(n=null==(r=window.visualViewport)?void 0:r.width)?n:innerWidth,h=null!=(i=null==(l=window.visualViewport)?void 0:l.height)?i:innerHeight,{scrollX:$,scrollY:b}=window,{height:y,width:x,top:v,right:w,bottom:O,left:E}=e.getBoundingClientRect(),j="start"===a||"nearest"===a?v:"end"===a?O:v+y/2,S="center"===s?E+x/2:"end"===s?w:E,C=[];for(let e=0;e=0&&E>=0&&O<=h&&w<=g&&v>=l&&O<=c&&E>=u&&w<=i)break;let d=getComputedStyle(t),m=parseInt(d.borderLeftWidth,10),M=parseInt(d.borderTopWidth,10),k=parseInt(d.borderRightWidth,10),I=parseInt(d.borderBottomWidth,10),Z=0,N=0,W="offsetWidth"in t?t.offsetWidth-t.clientWidth-m-k:0,P="offsetHeight"in t?t.offsetHeight-t.clientHeight-M-I:0,q="offsetWidth"in t?0===t.offsetWidth?0:n/t.offsetWidth:0,H="offsetHeight"in t?0===t.offsetHeight?0:r/t.offsetHeight:0;if(f===t)Z="start"===a?j:"end"===a?j-h:"nearest"===a?z(b,b+h,h,M,I,b+j,b+j+y,y):j-h/2,N="start"===s?S:"center"===s?S-g/2:"end"===s?S-g:z($,$+g,g,m,k,$+S,$+S+x,x),Z=Math.max(0,Z+b),N=Math.max(0,N+$);else{Z="start"===a?j-l-M:"end"===a?j-c+I+P:"nearest"===a?z(l,c,r,M,I+P,j,j+y,y):j-(l+r/2)+P/2,N="start"===s?S-u-m:"center"===s?S-(u+n/2)+W/2:"end"===s?S-i+k+W:z(u,i,n,m,k+W,S,S+x,x);let{scrollLeft:e,scrollTop:o}=t;Z=Math.max(0,Math.min(o+Z/H,t.scrollHeight-r/H+P)),N=Math.max(0,Math.min(e+N/q,t.scrollWidth-n/q+W)),j+=o-Z,S+=e-N}C.push({el:t,top:Z,left:N})}return C},A=e=>!1===e?{block:"end",inline:"nearest"}:e===Object(e)&&0!==Object.keys(e).length?e:{block:"start",inline:"nearest"},L=["parentNode"];function D(e){return void 0===e||!1===e?[]:Array.isArray(e)?e:[e]}function V(e,t){if(!e.length)return;let r=e.join("_");if(t)return`${t}_${r}`;let n=L.includes(r);return n?`form_item_${r}`:r}function X(e){let t=D(e);return t.join("_")}function B(e){let[t]=(0,Z.cI)(),r=a.useRef({}),n=a.useMemo(()=>null!=e?e:Object.assign(Object.assign({},t),{__INTERNAL__:{itemRef:e=>t=>{let n=X(e);t?r.current[n]=t:delete r.current[n]}},scrollToField:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=D(e),l=V(r,n.__INTERNAL__.name),i=l?document.getElementById(l):null;i&&function(e,t){if(!e.isConnected||!(e=>{let t=e;for(;t&&t.parentNode;){if(t.parentNode===document)return!0;t=t.parentNode instanceof ShadowRoot?t.parentNode.host:t.parentNode}return!1})(e))return;if("object"==typeof t&&"function"==typeof t.behavior)return t.behavior(T(e,t));let r="boolean"==typeof t||null==t?void 0:t.behavior;for(let{el:n,top:l,left:i}of T(e,A(t)))n.scroll({top:l,left:i,behavior:r})}(i,Object.assign({scrollMode:"if-needed",block:"nearest"},t))},getFieldInstance:e=>{let t=X(e);return r.current[t]}}),[e,t]);return[n]}var G=r(37920),Y=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var l=0,n=Object.getOwnPropertySymbols(e);lt.indexOf(n[l])&&Object.prototype.propertyIsEnumerable.call(e,n[l])&&(r[n[l]]=e[n[l]]);return r};let K=a.forwardRef((e,t)=>{let r=a.useContext(W.Z),{getPrefixCls:n,direction:l,form:o}=a.useContext(N.E_),{prefixCls:s,className:u,rootClassName:d,size:f,disabled:p=r,form:m,colon:g,labelAlign:h,labelWrap:$,labelCol:b,wrapperCol:y,hideRequiredMark:x,layout:v="horizontal",scrollToFirstError:w,requiredMark:O,onFinishFailed:E,name:j,style:S}=e,M=Y(e,["prefixCls","className","rootClassName","size","disabled","form","colon","labelAlign","labelWrap","labelCol","wrapperCol","hideRequiredMark","layout","scrollToFirstError","requiredMark","onFinishFailed","name","style"]),k=(0,q.Z)(f),I=a.useContext(G.Z),H=(0,a.useMemo)(()=>void 0!==O?O:o&&void 0!==o.requiredMark?o.requiredMark:!x,[x,O,o]),R=null!=g?g:null==o?void 0:o.colon,_=n("form",s),[z,F]=C(_),T=i()(_,`${_}-${v}`,{[`${_}-hide-required-mark`]:!1===H,[`${_}-rtl`]:"rtl"===l,[`${_}-${k}`]:k},F,null==o?void 0:o.className,u,d),[A]=B(m),{__INTERNAL__:L}=A;L.name=j;let D=(0,a.useMemo)(()=>({name:j,labelAlign:h,labelCol:b,labelWrap:$,wrapperCol:y,vertical:"vertical"===v,colon:R,requiredMark:H,itemRef:L.itemRef,form:A}),[j,h,b,y,v,R,H,A]);a.useImperativeHandle(t,()=>A);let V=(e,t)=>{if(e){let r={block:"nearest"};"object"==typeof e&&(r=e),A.scrollToField(t,r)}};return z(a.createElement(W.n,{disabled:p},a.createElement(P.q,{size:k},a.createElement(c.RV,{validateMessages:I},a.createElement(c.q3.Provider,{value:D},a.createElement(Z.ZP,Object.assign({id:j},M,{name:j,onFinishFailed:e=>{if(null==E||E(e),e.errorFields.length){let t=e.errorFields[0].name;if(void 0!==w){V(w,t);return}o&&void 0!==o.scrollToFirstError&&V(o.scrollToFirstError,t)}},form:A,style:Object.assign(Object.assign({},null==o?void 0:o.style),S),className:T})))))))});var U=r(30470),J=r(42550),Q=r(96159);let ee=()=>{let{status:e,errors:t=[],warnings:r=[]}=(0,a.useContext)(c.aM);return{status:e,errors:t,warnings:r}};ee.Context=c.aM;var et=r(75164),er=r(89739),en=r(4340),el=r(21640),ei=r(50888),eo=r(8410),ea=r(5110),es=r(98423),ec=r(92820),eu=r(21584);let ed=e=>{let{formItemCls:t}=e;return{"@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none)":{[`${t}-control`]:{display:"flex"}}}};var ef=(0,g.b)(["Form","item-item"],(e,t)=>{let{rootPrefixCls:r}=t,n=S(e,r);return[ed(n)]}),ep=e=>{let{prefixCls:t,status:r,wrapperCol:n,children:l,errors:o,warnings:s,_internalItemRender:u,extra:d,help:f,fieldId:p,marginBottom:m,onErrorVisibleChanged:g}=e,h=`${t}-item`,$=a.useContext(c.q3),b=n||$.wrapperCol||{},y=i()(`${h}-control`,b.className),x=a.useMemo(()=>Object.assign({},$),[$]);delete x.labelCol,delete x.wrapperCol;let v=a.createElement("div",{className:`${h}-control-input`},a.createElement("div",{className:`${h}-control-input-content`},l)),w=a.useMemo(()=>({prefixCls:t,status:r}),[t,r]),O=null!==m||o.length||s.length?a.createElement("div",{style:{display:"flex",flexWrap:"nowrap"}},a.createElement(c.Rk.Provider,{value:w},a.createElement(I,{fieldId:p,errors:o,warnings:s,help:f,helpStatus:r,className:`${h}-explain-connected`,onVisibleChanged:g})),!!m&&a.createElement("div",{style:{width:0,height:m}})):null,E={};p&&(E.id=`${p}_extra`);let j=d?a.createElement("div",Object.assign({},E,{className:`${h}-extra`}),d):null,S=u&&"pro_table_render"===u.mark&&u.render?u.render(e,{input:v,errorList:O,extra:j}):a.createElement(a.Fragment,null,v,O,j);return a.createElement(c.q3.Provider,{value:x},a.createElement(eu.Z,Object.assign({},b,{className:y}),S),a.createElement(ef,{prefixCls:t}))},em=r(87462),eg={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}},{tag:"path",attrs:{d:"M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.5-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0130.9-44.8c59-22.7 97.1-74.7 97.1-132.5.1-39.3-17.1-76-48.3-103.3zM472 732a40 40 0 1080 0 40 40 0 10-80 0z"}}]},name:"question-circle",theme:"outlined"},eh=r(84089),e$=a.forwardRef(function(e,t){return a.createElement(eh.Z,(0,em.Z)({},e,{ref:t,icon:eg}))}),eb=r(88526),ey=r(10110),ex=r(83062),ev=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var l=0,n=Object.getOwnPropertySymbols(e);lt.indexOf(n[l])&&Object.prototype.propertyIsEnumerable.call(e,n[l])&&(r[n[l]]=e[n[l]]);return r},ew=e=>{var t;let{prefixCls:r,label:n,htmlFor:l,labelCol:o,labelAlign:s,colon:u,required:d,requiredMark:f,tooltip:p}=e,[m]=(0,ey.Z)("Form"),{vertical:g,labelAlign:h,labelCol:$,labelWrap:b,colon:y}=a.useContext(c.q3);if(!n)return null;let x=o||$||{},v=`${r}-item-label`,w=i()(v,"left"===(s||h)&&`${v}-left`,x.className,{[`${v}-wrap`]:!!b}),O=n,E=!0===u||!1!==y&&!1!==u;E&&!g&&"string"==typeof n&&""!==n.trim()&&(O=n.replace(/[:|:]\s*$/,""));let j=p?"object"!=typeof p||a.isValidElement(p)?{title:p}:p:null;if(j){let{icon:e=a.createElement(e$,null)}=j,t=ev(j,["icon"]),n=a.createElement(ex.Z,Object.assign({},t),a.cloneElement(e,{className:`${r}-item-tooltip`,title:""}));O=a.createElement(a.Fragment,null,O,n)}"optional"!==f||d||(O=a.createElement(a.Fragment,null,O,a.createElement("span",{className:`${r}-item-optional`,title:""},(null==m?void 0:m.optional)||(null===(t=eb.Z.Form)||void 0===t?void 0:t.optional))));let S=i()({[`${r}-item-required`]:d,[`${r}-item-required-mark-optional`]:"optional"===f,[`${r}-item-no-colon`]:!E});return a.createElement(eu.Z,Object.assign({},x,{className:w}),a.createElement("label",{htmlFor:l,className:S,title:"string"==typeof n?n:""},O))},eO=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var l=0,n=Object.getOwnPropertySymbols(e);lt.indexOf(n[l])&&Object.prototype.propertyIsEnumerable.call(e,n[l])&&(r[n[l]]=e[n[l]]);return r};let eE={success:er.Z,warning:el.Z,error:en.Z,validating:ei.Z};function ej(e){let{prefixCls:t,className:r,rootClassName:n,style:l,help:o,errors:s,warnings:d,validateStatus:f,meta:p,hasFeedback:m,hidden:g,children:h,fieldId:$,required:b,isRequired:y,onSubItemMetaChange:x}=e,v=eO(e,["prefixCls","className","rootClassName","style","help","errors","warnings","validateStatus","meta","hasFeedback","hidden","children","fieldId","required","isRequired","onSubItemMetaChange"]),w=`${t}-item`,{requiredMark:O}=a.useContext(c.q3),E=a.useRef(null),j=u(s),S=u(d),C=null!=o,M=!!(C||s.length||d.length),k=!!E.current&&(0,ea.Z)(E.current),[I,Z]=a.useState(null);(0,eo.Z)(()=>{if(M&&E.current){let e=getComputedStyle(E.current);Z(parseInt(e.marginBottom,10))}},[M,k]);let N=function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t="",r=e?j:p.errors,n=e?S:p.warnings;return void 0!==f?t=f:p.validating?t="validating":r.length?t="error":n.length?t="warning":(p.touched||m&&p.validated)&&(t="success"),t}(),W=a.useMemo(()=>{let e;if(m){let t=N&&eE[N];e=t?a.createElement("span",{className:i()(`${w}-feedback-icon`,`${w}-feedback-icon-${N}`)},a.createElement(t,null)):null}return{status:N,errors:s,warnings:d,hasFeedback:m,feedbackIcon:e,isFormItemInput:!0}},[N,m]),P=i()(w,r,n,{[`${w}-with-help`]:C||j.length||S.length,[`${w}-has-feedback`]:N&&m,[`${w}-has-success`]:"success"===N,[`${w}-has-warning`]:"warning"===N,[`${w}-has-error`]:"error"===N,[`${w}-is-validating`]:"validating"===N,[`${w}-hidden`]:g});return a.createElement("div",{className:P,style:l,ref:E},a.createElement(ec.Z,Object.assign({className:`${w}-row`},(0,es.Z)(v,["_internalItemRender","colon","dependencies","extra","fieldKey","getValueFromEvent","getValueProps","htmlFor","id","initialValue","isListField","label","labelAlign","labelCol","labelWrap","messageVariables","name","normalize","noStyle","preserve","requiredMark","rules","shouldUpdate","trigger","tooltip","validateFirst","validateTrigger","valuePropName","wrapperCol"])),a.createElement(ew,Object.assign({htmlFor:$},e,{requiredMark:O,required:null!=b?b:y,prefixCls:t})),a.createElement(ep,Object.assign({},e,p,{errors:j,warnings:S,prefixCls:t,status:N,help:o,marginBottom:I,onErrorVisibleChanged:e=>{e||Z(null)}}),a.createElement(c.qI.Provider,{value:x},a.createElement(c.aM.Provider,{value:W},h)))),!!I&&a.createElement("div",{className:`${w}-margin-offset`,style:{marginBottom:-I}}))}var eS=r(50344);let eC=a.memo(e=>{let{children:t}=e;return t},(e,t)=>e.value===t.value&&e.update===t.update&&e.childProps.length===t.childProps.length&&e.childProps.every((e,r)=>e===t.childProps[r]));function eM(){return{errors:[],warnings:[],touched:!1,validating:!1,name:[],validated:!1}}let ek=function(e){let{name:t,noStyle:r,className:l,dependencies:o,prefixCls:s,shouldUpdate:u,rules:d,children:f,required:p,label:m,messageVariables:g,trigger:h="onChange",validateTrigger:$,hidden:b,help:y}=e,{getPrefixCls:x}=a.useContext(N.E_),{name:v}=a.useContext(c.q3),w=function(e){if("function"==typeof e)return e;let t=(0,eS.Z)(e);return t.length<=1?t[0]:t}(f),O="function"==typeof w,E=a.useContext(c.qI),{validateTrigger:j}=a.useContext(Z.zb),S=void 0!==$?$:j,M=null!=t,k=x("form",s),[I,W]=C(k),P=a.useContext(Z.ZM),q=a.useRef(),[H,R]=function(e){let[t,r]=a.useState(e),n=(0,a.useRef)(null),l=(0,a.useRef)([]),i=(0,a.useRef)(!1);return a.useEffect(()=>(i.current=!1,()=>{i.current=!0,et.Z.cancel(n.current),n.current=null}),[]),[t,function(e){i.current||(null===n.current&&(l.current=[],n.current=(0,et.Z)(()=>{n.current=null,r(e=>{let t=e;return l.current.forEach(e=>{t=e(t)}),t})})),l.current.push(e))}]}({}),[_,z]=(0,U.Z)(()=>eM()),F=(e,t)=>{R(r=>{let l=Object.assign({},r),i=[].concat((0,n.Z)(e.name.slice(0,-1)),(0,n.Z)(t)),o=i.join("__SPLIT__");return e.destroy?delete l[o]:l[o]=e,l})},[T,A]=a.useMemo(()=>{let e=(0,n.Z)(_.errors),t=(0,n.Z)(_.warnings);return Object.values(H).forEach(r=>{e.push.apply(e,(0,n.Z)(r.errors||[])),t.push.apply(t,(0,n.Z)(r.warnings||[]))}),[e,t]},[H,_.errors,_.warnings]),L=function(){let{itemRef:e}=a.useContext(c.q3),t=a.useRef({});return function(r,n){let l=n&&"object"==typeof n&&n.ref,i=r.join("_");return(t.current.name!==i||t.current.originRef!==l)&&(t.current.name=i,t.current.originRef=l,t.current.ref=(0,J.sQ)(e(r),l)),t.current.ref}}();function X(t,n,o){return r&&!b?t:a.createElement(ej,Object.assign({key:"row"},e,{className:i()(l,W),prefixCls:k,fieldId:n,isRequired:o,errors:T,warnings:A,meta:_,onSubItemMetaChange:F}),t)}if(!M&&!O&&!o)return I(X(w));let B={};return"string"==typeof m?B.label=m:t&&(B.label=String(t)),g&&(B=Object.assign(Object.assign({},B),g)),I(a.createElement(Z.gN,Object.assign({},e,{messageVariables:B,trigger:h,validateTrigger:S,onMetaChange:e=>{let t=null==P?void 0:P.getKey(e.name);if(z(e.destroy?eM():e,!0),r&&!1!==y&&E){let r=e.name;if(e.destroy)r=q.current||r;else if(void 0!==t){let[e,l]=t;r=[e].concat((0,n.Z)(l)),q.current=r}E(e,r)}}}),(r,l,i)=>{let s=D(t).length&&l?l.name:[],c=V(s,v),f=void 0!==p?p:!!(d&&d.some(e=>{if(e&&"object"==typeof e&&e.required&&!e.warningOnly)return!0;if("function"==typeof e){let t=e(i);return t&&t.required&&!t.warningOnly}return!1})),m=Object.assign({},r),g=null;if(Array.isArray(w)&&M)g=w;else if(O&&(!(u||o)||M));else if(!o||O||M){if((0,Q.l$)(w)){let t=Object.assign(Object.assign({},w.props),m);if(t.id||(t.id=c),y||T.length>0||A.length>0||e.extra){let r=[];(y||T.length>0)&&r.push(`${c}_help`),e.extra&&r.push(`${c}_extra`),t["aria-describedby"]=r.join(" ")}T.length>0&&(t["aria-invalid"]="true"),f&&(t["aria-required"]="true"),(0,J.Yr)(w)&&(t.ref=L(s,w));let r=new Set([].concat((0,n.Z)(D(h)),(0,n.Z)(D(S))));r.forEach(e=>{t[e]=function(){for(var t,r,n,l=arguments.length,i=Array(l),o=0;ot.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var l=0,n=Object.getOwnPropertySymbols(e);lt.indexOf(n[l])&&Object.prototype.propertyIsEnumerable.call(e,n[l])&&(r[n[l]]=e[n[l]]);return r};K.Item=ek,K.List=e=>{var{prefixCls:t,children:r}=e,n=eI(e,["prefixCls","children"]);let{getPrefixCls:l}=a.useContext(N.E_),i=l("form",t),o=a.useMemo(()=>({prefixCls:i,status:"error"}),[i]);return a.createElement(Z.aV,Object.assign({},n),(e,t,n)=>a.createElement(c.Rk.Provider,{value:o},r(e.map(e=>Object.assign(Object.assign({},e),{fieldKey:e.key})),t,{errors:n.errors,warnings:n.warnings})))},K.ErrorList=I,K.useForm=B,K.useFormInstance=function(){let{form:e}=(0,a.useContext)(c.q3);return e},K.useWatch=Z.qo,K.Provider=c.RV,K.create=()=>{};var eZ=K},99134:function(e,t,r){var n=r(67294);let l=(0,n.createContext)({});t.Z=l},21584:function(e,t,r){var n=r(94184),l=r.n(n),i=r(67294),o=r(53124),a=r(99134),s=r(6999),c=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var l=0,n=Object.getOwnPropertySymbols(e);lt.indexOf(n[l])&&Object.prototype.propertyIsEnumerable.call(e,n[l])&&(r[n[l]]=e[n[l]]);return r};let u=["xs","sm","md","lg","xl","xxl"],d=i.forwardRef((e,t)=>{let{getPrefixCls:r,direction:n}=i.useContext(o.E_),{gutter:d,wrap:f,supportFlexGap:p}=i.useContext(a.Z),{prefixCls:m,span:g,order:h,offset:$,push:b,pull:y,className:x,children:v,flex:w,style:O}=e,E=c(e,["prefixCls","span","order","offset","push","pull","className","children","flex","style"]),j=r("col",m),[S,C]=(0,s.c)(j),M={};u.forEach(t=>{let r={},l=e[t];"number"==typeof l?r.span=l:"object"==typeof l&&(r=l||{}),delete E[t],M=Object.assign(Object.assign({},M),{[`${j}-${t}-${r.span}`]:void 0!==r.span,[`${j}-${t}-order-${r.order}`]:r.order||0===r.order,[`${j}-${t}-offset-${r.offset}`]:r.offset||0===r.offset,[`${j}-${t}-push-${r.push}`]:r.push||0===r.push,[`${j}-${t}-pull-${r.pull}`]:r.pull||0===r.pull,[`${j}-${t}-flex-${r.flex}`]:r.flex||"auto"===r.flex,[`${j}-rtl`]:"rtl"===n})});let k=l()(j,{[`${j}-${g}`]:void 0!==g,[`${j}-order-${h}`]:h,[`${j}-offset-${$}`]:$,[`${j}-push-${b}`]:b,[`${j}-pull-${y}`]:y},x,M,C),I={};if(d&&d[0]>0){let e=d[0]/2;I.paddingLeft=e,I.paddingRight=e}if(d&&d[1]>0&&!p){let e=d[1]/2;I.paddingTop=e,I.paddingBottom=e}return w&&(I.flex="number"==typeof w?`${w} ${w} auto`:/^\d+(\.\d+)?(px|em|rem|%)$/.test(w)?`0 0 ${w}`:w,!1!==f||I.minWidth||(I.minWidth=0)),S(i.createElement("div",Object.assign({},E,{style:Object.assign(Object.assign({},I),O),className:k,ref:t}),v))});t.Z=d},92820:function(e,t,r){var n=r(94184),l=r.n(n),i=r(67294),o=r(53124),a=r(98082),s=r(74443),c=r(99134),u=r(6999),d=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var l=0,n=Object.getOwnPropertySymbols(e);lt.indexOf(n[l])&&Object.prototype.propertyIsEnumerable.call(e,n[l])&&(r[n[l]]=e[n[l]]);return r};function f(e,t){let[r,n]=i.useState("string"==typeof e?e:""),l=()=>{if("string"==typeof e&&n(e),"object"==typeof e)for(let r=0;r{l()},[JSON.stringify(e),t]),r}let p=i.forwardRef((e,t)=>{let{prefixCls:r,justify:n,align:p,className:m,style:g,children:h,gutter:$=0,wrap:b}=e,y=d(e,["prefixCls","justify","align","className","style","children","gutter","wrap"]),{getPrefixCls:x,direction:v}=i.useContext(o.E_),[w,O]=i.useState({xs:!0,sm:!0,md:!0,lg:!0,xl:!0,xxl:!0}),[E,j]=i.useState({xs:!1,sm:!1,md:!1,lg:!1,xl:!1,xxl:!1}),S=f(p,E),C=f(n,E),M=(0,a.Z)(),k=i.useRef($),I=(0,s.Z)();i.useEffect(()=>{let e=I.subscribe(e=>{j(e);let t=k.current||0;(!Array.isArray(t)&&"object"==typeof t||Array.isArray(t)&&("object"==typeof t[0]||"object"==typeof t[1]))&&O(e)});return()=>I.unsubscribe(e)},[]);let Z=x("row",r),[N,W]=(0,u.V)(Z),P=(()=>{let e=[void 0,void 0],t=Array.isArray($)?$:[$,void 0];return t.forEach((t,r)=>{if("object"==typeof t)for(let n=0;n0?-(P[0]/2):void 0,_=null!=P[1]&&P[1]>0?-(P[1]/2):void 0;R&&(H.marginLeft=R,H.marginRight=R),M?[,H.rowGap]=P:_&&(H.marginTop=_,H.marginBottom=_);let[z,F]=P,T=i.useMemo(()=>({gutter:[z,F],wrap:b,supportFlexGap:M}),[z,F,b,M]);return N(i.createElement(c.Z.Provider,{value:T},i.createElement("div",Object.assign({},y,{className:q,style:Object.assign(Object.assign({},H),g),ref:t}),h)))});t.Z=p},6999:function(e,t,r){r.d(t,{V:function(){return u},c:function(){return d}});var n=r(67968),l=r(45503);let i=e=>{let{componentCls:t}=e;return{[t]:{display:"flex",flexFlow:"row wrap",minWidth:0,"&::before, &::after":{display:"flex"},"&-no-wrap":{flexWrap:"nowrap"},"&-start":{justifyContent:"flex-start"},"&-center":{justifyContent:"center"},"&-end":{justifyContent:"flex-end"},"&-space-between":{justifyContent:"space-between"},"&-space-around":{justifyContent:"space-around"},"&-space-evenly":{justifyContent:"space-evenly"},"&-top":{alignItems:"flex-start"},"&-middle":{alignItems:"center"},"&-bottom":{alignItems:"flex-end"}}}},o=e=>{let{componentCls:t}=e;return{[t]:{position:"relative",maxWidth:"100%",minHeight:1}}},a=(e,t)=>{let{componentCls:r,gridColumns:n}=e,l={};for(let e=n;e>=0;e--)0===e?(l[`${r}${t}-${e}`]={display:"none"},l[`${r}-push-${e}`]={insetInlineStart:"auto"},l[`${r}-pull-${e}`]={insetInlineEnd:"auto"},l[`${r}${t}-push-${e}`]={insetInlineStart:"auto"},l[`${r}${t}-pull-${e}`]={insetInlineEnd:"auto"},l[`${r}${t}-offset-${e}`]={marginInlineStart:0},l[`${r}${t}-order-${e}`]={order:0}):(l[`${r}${t}-${e}`]=[{"--ant-display":"block",display:"block"},{display:"var(--ant-display)",flex:`0 0 ${e/n*100}%`,maxWidth:`${e/n*100}%`}],l[`${r}${t}-push-${e}`]={insetInlineStart:`${e/n*100}%`},l[`${r}${t}-pull-${e}`]={insetInlineEnd:`${e/n*100}%`},l[`${r}${t}-offset-${e}`]={marginInlineStart:`${e/n*100}%`},l[`${r}${t}-order-${e}`]={order:e});return l},s=(e,t)=>a(e,t),c=(e,t,r)=>({[`@media (min-width: ${t}px)`]:Object.assign({},s(e,r))}),u=(0,n.Z)("Grid",e=>[i(e)]),d=(0,n.Z)("Grid",e=>{let t=(0,l.TS)(e,{gridColumns:24}),r={"-sm":t.screenSMMin,"-md":t.screenMDMin,"-lg":t.screenLGMin,"-xl":t.screenXLMin,"-xxl":t.screenXXLMin};return[o(t),s(t,""),s(t,"-xs"),Object.keys(r).map(e=>c(t,r[e],e)).reduce((e,t)=>Object.assign(Object.assign({},e),t),{})]})}}]); \ No newline at end of file diff --git a/pilot/server/static/_next/static/chunks/479-b20198841f9a6a1e.js b/pilot/server/static/_next/static/chunks/479-b20198841f9a6a1e.js new file mode 100644 index 000000000..b22006b12 --- /dev/null +++ b/pilot/server/static/_next/static/chunks/479-b20198841f9a6a1e.js @@ -0,0 +1,9 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[479],{39479:function(e,t,n){n.d(t,{Z:function(){return eI}});var r=n(74902),l=n(94184),i=n.n(l),o=n(82225),a=n(67294),s=n(33603),c=n(65223);function u(e){let[t,n]=a.useState(e);return a.useEffect(()=>{let t=setTimeout(()=>{n(e)},e.length?0:10);return()=>{clearTimeout(t)}},[e]),t}var d=n(14747),m=n(50438),p=n(33507),f=n(45503),g=n(67968),h=e=>{let{componentCls:t}=e,n=`${t}-show-help`,r=`${t}-show-help-item`;return{[n]:{transition:`opacity ${e.motionDurationSlow} ${e.motionEaseInOut}`,"&-appear, &-enter":{opacity:0,"&-active":{opacity:1}},"&-leave":{opacity:1,"&-active":{opacity:0}},[r]:{overflow:"hidden",transition:`height ${e.motionDurationSlow} ${e.motionEaseInOut}, + opacity ${e.motionDurationSlow} ${e.motionEaseInOut}, + transform ${e.motionDurationSlow} ${e.motionEaseInOut} !important`,[`&${r}-appear, &${r}-enter`]:{transform:"translateY(-5px)",opacity:0,"&-active":{transform:"translateY(0)",opacity:1}},[`&${r}-leave-active`]:{transform:"translateY(-5px)"}}}}};let b=e=>({legend:{display:"block",width:"100%",marginBottom:e.marginLG,padding:0,color:e.colorTextDescription,fontSize:e.fontSizeLG,lineHeight:"inherit",border:0,borderBottom:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`},label:{fontSize:e.fontSize},'input[type="search"]':{boxSizing:"border-box"},'input[type="radio"], input[type="checkbox"]':{lineHeight:"normal"},'input[type="file"]':{display:"block"},'input[type="range"]':{display:"block",width:"100%"},"select[multiple], select[size]":{height:"auto"},[`input[type='file']:focus, + input[type='radio']:focus, + input[type='checkbox']:focus`]:{outline:0,boxShadow:`0 0 0 ${e.controlOutlineWidth}px ${e.controlOutline}`},output:{display:"block",paddingTop:15,color:e.colorText,fontSize:e.fontSize,lineHeight:e.lineHeight}}),y=(e,t)=>{let{formItemCls:n}=e;return{[n]:{[`${n}-label > label`]:{height:t},[`${n}-control-input`]:{minHeight:t}}}},v=e=>{let{componentCls:t}=e;return{[e.componentCls]:Object.assign(Object.assign(Object.assign({},(0,d.Wf)(e)),b(e)),{[`${t}-text`]:{display:"inline-block",paddingInlineEnd:e.paddingSM},"&-small":Object.assign({},y(e,e.controlHeightSM)),"&-large":Object.assign({},y(e,e.controlHeightLG))})}},$=e=>{let{formItemCls:t,iconCls:n,componentCls:r,rootPrefixCls:l}=e;return{[t]:Object.assign(Object.assign({},(0,d.Wf)(e)),{marginBottom:e.marginLG,verticalAlign:"top","&-with-help":{transition:"none"},[`&-hidden, + &-hidden.${l}-row`]:{display:"none"},"&-has-warning":{[`${t}-split`]:{color:e.colorError}},"&-has-error":{[`${t}-split`]:{color:e.colorWarning}},[`${t}-label`]:{flexGrow:0,overflow:"hidden",whiteSpace:"nowrap",textAlign:"end",verticalAlign:"middle","&-left":{textAlign:"start"},"&-wrap":{overflow:"unset",lineHeight:`${e.lineHeight} - 0.25em`,whiteSpace:"unset"},"> label":{position:"relative",display:"inline-flex",alignItems:"center",maxWidth:"100%",height:e.controlHeight,color:e.colorTextHeading,fontSize:e.fontSize,[`> ${n}`]:{fontSize:e.fontSize,verticalAlign:"top"},[`&${t}-required:not(${t}-required-mark-optional)::before`]:{display:"inline-block",marginInlineEnd:e.marginXXS,color:e.colorError,fontSize:e.fontSize,fontFamily:"SimSun, sans-serif",lineHeight:1,content:'"*"',[`${r}-hide-required-mark &`]:{display:"none"}},[`${t}-optional`]:{display:"inline-block",marginInlineStart:e.marginXXS,color:e.colorTextDescription,[`${r}-hide-required-mark &`]:{display:"none"}},[`${t}-tooltip`]:{color:e.colorTextDescription,cursor:"help",writingMode:"horizontal-tb",marginInlineStart:e.marginXXS},"&::after":{content:'":"',position:"relative",marginBlock:0,marginInlineStart:e.marginXXS/2,marginInlineEnd:e.marginXS},[`&${t}-no-colon::after`]:{content:'"\\a0"'}}},[`${t}-control`]:{"--ant-display":"flex",flexDirection:"column",flexGrow:1,[`&:first-child:not([class^="'${l}-col-'"]):not([class*="' ${l}-col-'"])`]:{width:"100%"},"&-input":{position:"relative",display:"flex",alignItems:"center",minHeight:e.controlHeight,"&-content":{flex:"auto",maxWidth:"100%"}}},[t]:{"&-explain, &-extra":{clear:"both",color:e.colorTextDescription,fontSize:e.fontSize,lineHeight:e.lineHeight},"&-explain-connected":{width:"100%"},"&-extra":{minHeight:e.controlHeightSM,transition:`color ${e.motionDurationMid} ${e.motionEaseOut}`},"&-explain":{"&-error":{color:e.colorError},"&-warning":{color:e.colorWarning}}},[`&-with-help ${t}-explain`]:{height:"auto",opacity:1},[`${t}-feedback-icon`]:{fontSize:e.fontSize,textAlign:"center",visibility:"visible",animationName:m.kr,animationDuration:e.motionDurationMid,animationTimingFunction:e.motionEaseOutBack,pointerEvents:"none","&-success":{color:e.colorSuccess},"&-error":{color:e.colorError},"&-warning":{color:e.colorWarning},"&-validating":{color:e.colorPrimary}}})}},x=e=>{let{componentCls:t,formItemCls:n}=e;return{[`${t}-horizontal`]:{[`${n}-label`]:{flexGrow:0},[`${n}-control`]:{flex:"1 1 0",minWidth:0},[`${n}-label[class$='-24'], ${n}-label[class*='-24 ']`]:{[`& + ${n}-control`]:{minWidth:"unset"}}}}},w=e=>{let{componentCls:t,formItemCls:n}=e;return{[`${t}-inline`]:{display:"flex",flexWrap:"wrap",[n]:{flex:"none",marginInlineEnd:e.margin,marginBottom:0,"&-row":{flexWrap:"nowrap"},[`> ${n}-label, + > ${n}-control`]:{display:"inline-block",verticalAlign:"top"},[`> ${n}-label`]:{flex:"none"},[`${t}-text`]:{display:"inline-block"},[`${n}-has-feedback`]:{display:"inline-block"}}}}},E=e=>({padding:`0 0 ${e.paddingXS}px`,whiteSpace:"initial",textAlign:"start","> label":{margin:0,"&::after":{visibility:"hidden"}}}),O=e=>{let{componentCls:t,formItemCls:n,rootPrefixCls:r}=e;return{[`${n} ${n}-label`]:E(e),[t]:{[n]:{flexWrap:"wrap",[`${n}-label, ${n}-control`]:{[`&:not([class*=" ${r}-col-xs"])`]:{flex:"0 0 100%",maxWidth:"100%"}}}}}},S=e=>{let{componentCls:t,formItemCls:n,rootPrefixCls:r}=e;return{[`${t}-vertical`]:{[n]:{"&-row":{flexDirection:"column"},"&-label > label":{height:"auto"},[`${t}-item-control`]:{width:"100%"}}},[`${t}-vertical ${n}-label, + .${r}-col-24${n}-label, + .${r}-col-xl-24${n}-label`]:E(e),[`@media (max-width: ${e.screenXSMax}px)`]:[O(e),{[t]:{[`.${r}-col-xs-24${n}-label`]:E(e)}}],[`@media (max-width: ${e.screenSMMax}px)`]:{[t]:{[`.${r}-col-sm-24${n}-label`]:E(e)}},[`@media (max-width: ${e.screenMDMax}px)`]:{[t]:{[`.${r}-col-md-24${n}-label`]:E(e)}},[`@media (max-width: ${e.screenLGMax}px)`]:{[t]:{[`.${r}-col-lg-24${n}-label`]:E(e)}}}},j=(e,t)=>{let n=(0,f.TS)(e,{formItemCls:`${e.componentCls}-item`,rootPrefixCls:t});return n};var C=(0,g.Z)("Form",(e,t)=>{let{rootPrefixCls:n}=t,r=j(e,n);return[v(r),$(r),h(r),x(r),w(r),S(r),(0,p.Z)(r),m.kr]},null,{order:-1e3});let k=[];function M(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;return{key:"string"==typeof e?e:`${t}-${r}`,error:e,errorStatus:n}}var N=e=>{let{help:t,helpStatus:n,errors:l=k,warnings:d=k,className:m,fieldId:p,onVisibleChanged:f}=e,{prefixCls:g}=a.useContext(c.Rk),h=`${g}-item-explain`,[,b]=C(g),y=(0,a.useMemo)(()=>(0,s.Z)(g),[g]),v=u(l),$=u(d),x=a.useMemo(()=>null!=t?[M(t,"help",n)]:[].concat((0,r.Z)(v.map((e,t)=>M(e,"error","error",t))),(0,r.Z)($.map((e,t)=>M(e,"warning","warning",t)))),[t,n,v,$]),w={};return p&&(w.id=`${p}_help`),a.createElement(o.ZP,{motionDeadline:y.motionDeadline,motionName:`${g}-show-help`,visible:!!x.length,onVisibleChanged:f},e=>{let{className:t,style:n}=e;return a.createElement("div",Object.assign({},w,{className:i()(h,t,m,b),style:n,role:"alert"}),a.createElement(o.V4,Object.assign({keys:x},(0,s.Z)(g),{motionName:`${g}-show-help-item`,component:!1}),e=>{let{key:t,error:n,errorStatus:r,className:l,style:o}=e;return a.createElement("div",{key:t,className:i()(l,{[`${h}-${r}`]:r}),style:o},n)}))})},I=n(43589),Z=n(53124),q=n(98866),W=n(97647),_=n(98675);let H=e=>"object"==typeof e&&null!=e&&1===e.nodeType,F=(e,t)=>(!t||"hidden"!==e)&&"visible"!==e&&"clip"!==e,P=(e,t)=>{if(e.clientHeight{let t=(e=>{if(!e.ownerDocument||!e.ownerDocument.defaultView)return null;try{return e.ownerDocument.defaultView.frameElement}catch(e){return null}})(e);return!!t&&(t.clientHeightit||i>e&&o=t&&a>=n?i-e-r:o>t&&an?o-t+l:0,z=e=>{let t=e.parentElement;return null==t?e.getRootNode().host||null:t},T=(e,t)=>{var n,r,l,i;if("undefined"==typeof document)return[];let{scrollMode:o,block:a,inline:s,boundary:c,skipOverflowHiddenElements:u}=t,d="function"==typeof c?c:e=>e!==c;if(!H(e))throw TypeError("Invalid target");let m=document.scrollingElement||document.documentElement,p=[],f=e;for(;H(f)&&d(f);){if((f=z(f))===m){p.push(f);break}null!=f&&f===document.body&&P(f)&&!P(document.documentElement)||null!=f&&P(f,u)&&p.push(f)}let g=null!=(r=null==(n=window.visualViewport)?void 0:n.width)?r:innerWidth,h=null!=(i=null==(l=window.visualViewport)?void 0:l.height)?i:innerHeight,{scrollX:b,scrollY:y}=window,{height:v,width:$,top:x,right:w,bottom:E,left:O}=e.getBoundingClientRect(),S="start"===a||"nearest"===a?x:"end"===a?E:x+v/2,j="center"===s?O+$/2:"end"===s?w:O,C=[];for(let e=0;e=0&&O>=0&&E<=h&&w<=g&&x>=l&&E<=c&&O>=u&&w<=i)break;let d=getComputedStyle(t),f=parseInt(d.borderLeftWidth,10),k=parseInt(d.borderTopWidth,10),M=parseInt(d.borderRightWidth,10),N=parseInt(d.borderBottomWidth,10),I=0,Z=0,q="offsetWidth"in t?t.offsetWidth-t.clientWidth-f-M:0,W="offsetHeight"in t?t.offsetHeight-t.clientHeight-k-N:0,_="offsetWidth"in t?0===t.offsetWidth?0:r/t.offsetWidth:0,H="offsetHeight"in t?0===t.offsetHeight?0:n/t.offsetHeight:0;if(m===t)I="start"===a?S:"end"===a?S-h:"nearest"===a?R(y,y+h,h,k,N,y+S,y+S+v,v):S-h/2,Z="start"===s?j:"center"===s?j-g/2:"end"===s?j-g:R(b,b+g,g,f,M,b+j,b+j+$,$),I=Math.max(0,I+y),Z=Math.max(0,Z+b);else{I="start"===a?S-l-k:"end"===a?S-c+N+W:"nearest"===a?R(l,c,n,k,N+W,S,S+v,v):S-(l+n/2)+W/2,Z="start"===s?j-u-f:"center"===s?j-(u+r/2)+q/2:"end"===s?j-i+M+q:R(u,i,r,f,M+q,j,j+$,$);let{scrollLeft:e,scrollTop:o}=t;I=Math.max(0,Math.min(o+I/H,t.scrollHeight-n/H+W)),Z=Math.max(0,Math.min(e+Z/_,t.scrollWidth-r/_+q)),S+=o-I,j+=e-Z}C.push({el:t,top:I,left:Z})}return C},D=e=>!1===e?{block:"end",inline:"nearest"}:e===Object(e)&&0!==Object.keys(e).length?e:{block:"start",inline:"nearest"},V=["parentNode"];function A(e){return void 0===e||!1===e?[]:Array.isArray(e)?e:[e]}function B(e,t){if(!e.length)return;let n=e.join("_");if(t)return`${t}_${n}`;let r=V.includes(n);return r?`form_item_${n}`:n}function L(e){let t=A(e);return t.join("_")}function X(e){let[t]=(0,I.cI)(),n=a.useRef({}),r=a.useMemo(()=>null!=e?e:Object.assign(Object.assign({},t),{__INTERNAL__:{itemRef:e=>t=>{let r=L(e);t?n.current[r]=t:delete n.current[r]}},scrollToField:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=A(e),l=B(n,r.__INTERNAL__.name),i=l?document.getElementById(l):null;i&&function(e,t){if(!e.isConnected||!(e=>{let t=e;for(;t&&t.parentNode;){if(t.parentNode===document)return!0;t=t.parentNode instanceof ShadowRoot?t.parentNode.host:t.parentNode}return!1})(e))return;if("object"==typeof t&&"function"==typeof t.behavior)return t.behavior(T(e,t));let n="boolean"==typeof t||null==t?void 0:t.behavior;for(let{el:r,top:l,left:i}of T(e,D(t)))r.scroll({top:l,left:i,behavior:n})}(i,Object.assign({scrollMode:"if-needed",block:"nearest"},t))},getFieldInstance:e=>{let t=L(e);return n.current[t]}}),[e,t]);return[r]}var G=n(37920),Y=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var l=0,r=Object.getOwnPropertySymbols(e);lt.indexOf(r[l])&&Object.prototype.propertyIsEnumerable.call(e,r[l])&&(n[r[l]]=e[r[l]]);return n};let K=a.forwardRef((e,t)=>{let n=a.useContext(q.Z),{getPrefixCls:r,direction:l,form:o}=a.useContext(Z.E_),{prefixCls:s,className:u,rootClassName:d,size:m,disabled:p=n,form:f,colon:g,labelAlign:h,labelWrap:b,labelCol:y,wrapperCol:v,hideRequiredMark:$,layout:x="horizontal",scrollToFirstError:w,requiredMark:E,onFinishFailed:O,name:S,style:j}=e,k=Y(e,["prefixCls","className","rootClassName","size","disabled","form","colon","labelAlign","labelWrap","labelCol","wrapperCol","hideRequiredMark","layout","scrollToFirstError","requiredMark","onFinishFailed","name","style"]),M=(0,_.Z)(m),N=a.useContext(G.Z),H=(0,a.useMemo)(()=>void 0!==E?E:o&&void 0!==o.requiredMark?o.requiredMark:!$,[$,E,o]),F=null!=g?g:null==o?void 0:o.colon,P=r("form",s),[R,z]=C(P),T=i()(P,`${P}-${x}`,{[`${P}-hide-required-mark`]:!1===H,[`${P}-rtl`]:"rtl"===l,[`${P}-${M}`]:M},z,null==o?void 0:o.className,u,d),[D]=X(f),{__INTERNAL__:V}=D;V.name=S;let A=(0,a.useMemo)(()=>({name:S,labelAlign:h,labelCol:y,labelWrap:b,wrapperCol:v,vertical:"vertical"===x,colon:F,requiredMark:H,itemRef:V.itemRef,form:D}),[S,h,y,v,x,F,H,D]);a.useImperativeHandle(t,()=>D);let B=(e,t)=>{if(e){let n={block:"nearest"};"object"==typeof e&&(n=e),D.scrollToField(t,n)}};return R(a.createElement(q.n,{disabled:p},a.createElement(W.q,{size:M},a.createElement(c.RV,{validateMessages:N},a.createElement(c.q3.Provider,{value:A},a.createElement(I.ZP,Object.assign({id:S},k,{name:S,onFinishFailed:e=>{if(null==O||O(e),e.errorFields.length){let t=e.errorFields[0].name;if(void 0!==w){B(w,t);return}o&&void 0!==o.scrollToFirstError&&B(o.scrollToFirstError,t)}},form:D,style:Object.assign(Object.assign({},null==o?void 0:o.style),j),className:T})))))))});var Q=n(30470),U=n(42550),J=n(96159);let ee=()=>{let{status:e,errors:t=[],warnings:n=[]}=(0,a.useContext)(c.aM);return{status:e,errors:t,warnings:n}};ee.Context=c.aM;var et=n(75164),en=n(89739),er=n(4340),el=n(21640),ei=n(50888),eo=n(8410),ea=n(5110),es=n(98423),ec=n(92820),eu=n(21584);let ed=e=>{let{formItemCls:t}=e;return{"@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none)":{[`${t}-control`]:{display:"flex"}}}};var em=(0,g.b)(["Form","item-item"],(e,t)=>{let{rootPrefixCls:n}=t,r=j(e,n);return[ed(r)]}),ep=e=>{let{prefixCls:t,status:n,wrapperCol:r,children:l,errors:o,warnings:s,_internalItemRender:u,extra:d,help:m,fieldId:p,marginBottom:f,onErrorVisibleChanged:g}=e,h=`${t}-item`,b=a.useContext(c.q3),y=r||b.wrapperCol||{},v=i()(`${h}-control`,y.className),$=a.useMemo(()=>Object.assign({},b),[b]);delete $.labelCol,delete $.wrapperCol;let x=a.createElement("div",{className:`${h}-control-input`},a.createElement("div",{className:`${h}-control-input-content`},l)),w=a.useMemo(()=>({prefixCls:t,status:n}),[t,n]),E=null!==f||o.length||s.length?a.createElement("div",{style:{display:"flex",flexWrap:"nowrap"}},a.createElement(c.Rk.Provider,{value:w},a.createElement(N,{fieldId:p,errors:o,warnings:s,help:m,helpStatus:n,className:`${h}-explain-connected`,onVisibleChanged:g})),!!f&&a.createElement("div",{style:{width:0,height:f}})):null,O={};p&&(O.id=`${p}_extra`);let S=d?a.createElement("div",Object.assign({},O,{className:`${h}-extra`}),d):null,j=u&&"pro_table_render"===u.mark&&u.render?u.render(e,{input:x,errorList:E,extra:S}):a.createElement(a.Fragment,null,x,E,S);return a.createElement(c.q3.Provider,{value:$},a.createElement(eu.Z,Object.assign({},y,{className:v}),j),a.createElement(em,{prefixCls:t}))},ef=n(87462),eg={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}},{tag:"path",attrs:{d:"M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.5-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0130.9-44.8c59-22.7 97.1-74.7 97.1-132.5.1-39.3-17.1-76-48.3-103.3zM472 732a40 40 0 1080 0 40 40 0 10-80 0z"}}]},name:"question-circle",theme:"outlined"},eh=n(84089),eb=a.forwardRef(function(e,t){return a.createElement(eh.Z,(0,ef.Z)({},e,{ref:t,icon:eg}))}),ey=n(88526),ev=n(10110),e$=n(83062),ex=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var l=0,r=Object.getOwnPropertySymbols(e);lt.indexOf(r[l])&&Object.prototype.propertyIsEnumerable.call(e,r[l])&&(n[r[l]]=e[r[l]]);return n},ew=e=>{var t;let{prefixCls:n,label:r,htmlFor:l,labelCol:o,labelAlign:s,colon:u,required:d,requiredMark:m,tooltip:p}=e,[f]=(0,ev.Z)("Form"),{vertical:g,labelAlign:h,labelCol:b,labelWrap:y,colon:v}=a.useContext(c.q3);if(!r)return null;let $=o||b||{},x=`${n}-item-label`,w=i()(x,"left"===(s||h)&&`${x}-left`,$.className,{[`${x}-wrap`]:!!y}),E=r,O=!0===u||!1!==v&&!1!==u;O&&!g&&"string"==typeof r&&""!==r.trim()&&(E=r.replace(/[:|:]\s*$/,""));let S=p?"object"!=typeof p||a.isValidElement(p)?{title:p}:p:null;if(S){let{icon:e=a.createElement(eb,null)}=S,t=ex(S,["icon"]),r=a.createElement(e$.Z,Object.assign({},t),a.cloneElement(e,{className:`${n}-item-tooltip`,title:""}));E=a.createElement(a.Fragment,null,E,r)}"optional"!==m||d||(E=a.createElement(a.Fragment,null,E,a.createElement("span",{className:`${n}-item-optional`,title:""},(null==f?void 0:f.optional)||(null===(t=ey.Z.Form)||void 0===t?void 0:t.optional))));let j=i()({[`${n}-item-required`]:d,[`${n}-item-required-mark-optional`]:"optional"===m,[`${n}-item-no-colon`]:!O});return a.createElement(eu.Z,Object.assign({},$,{className:w}),a.createElement("label",{htmlFor:l,className:j,title:"string"==typeof r?r:""},E))},eE=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var l=0,r=Object.getOwnPropertySymbols(e);lt.indexOf(r[l])&&Object.prototype.propertyIsEnumerable.call(e,r[l])&&(n[r[l]]=e[r[l]]);return n};let eO={success:en.Z,warning:el.Z,error:er.Z,validating:ei.Z};function eS(e){let{prefixCls:t,className:n,rootClassName:r,style:l,help:o,errors:s,warnings:d,validateStatus:m,meta:p,hasFeedback:f,hidden:g,children:h,fieldId:b,required:y,isRequired:v,onSubItemMetaChange:$}=e,x=eE(e,["prefixCls","className","rootClassName","style","help","errors","warnings","validateStatus","meta","hasFeedback","hidden","children","fieldId","required","isRequired","onSubItemMetaChange"]),w=`${t}-item`,{requiredMark:E}=a.useContext(c.q3),O=a.useRef(null),S=u(s),j=u(d),C=null!=o,k=!!(C||s.length||d.length),M=!!O.current&&(0,ea.Z)(O.current),[N,I]=a.useState(null);(0,eo.Z)(()=>{if(k&&O.current){let e=getComputedStyle(O.current);I(parseInt(e.marginBottom,10))}},[k,M]);let Z=function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t="",n=e?S:p.errors,r=e?j:p.warnings;return void 0!==m?t=m:p.validating?t="validating":n.length?t="error":r.length?t="warning":(p.touched||f&&p.validated)&&(t="success"),t}(),q=a.useMemo(()=>{let e;if(f){let t=Z&&eO[Z];e=t?a.createElement("span",{className:i()(`${w}-feedback-icon`,`${w}-feedback-icon-${Z}`)},a.createElement(t,null)):null}return{status:Z,errors:s,warnings:d,hasFeedback:f,feedbackIcon:e,isFormItemInput:!0}},[Z,f]),W=i()(w,n,r,{[`${w}-with-help`]:C||S.length||j.length,[`${w}-has-feedback`]:Z&&f,[`${w}-has-success`]:"success"===Z,[`${w}-has-warning`]:"warning"===Z,[`${w}-has-error`]:"error"===Z,[`${w}-is-validating`]:"validating"===Z,[`${w}-hidden`]:g});return a.createElement("div",{className:W,style:l,ref:O},a.createElement(ec.Z,Object.assign({className:`${w}-row`},(0,es.Z)(x,["_internalItemRender","colon","dependencies","extra","fieldKey","getValueFromEvent","getValueProps","htmlFor","id","initialValue","isListField","label","labelAlign","labelCol","labelWrap","messageVariables","name","normalize","noStyle","preserve","requiredMark","rules","shouldUpdate","trigger","tooltip","validateFirst","validateTrigger","valuePropName","wrapperCol"])),a.createElement(ew,Object.assign({htmlFor:b},e,{requiredMark:E,required:null!=y?y:v,prefixCls:t})),a.createElement(ep,Object.assign({},e,p,{errors:S,warnings:j,prefixCls:t,status:Z,help:o,marginBottom:N,onErrorVisibleChanged:e=>{e||I(null)}}),a.createElement(c.qI.Provider,{value:$},a.createElement(c.aM.Provider,{value:q},h)))),!!N&&a.createElement("div",{className:`${w}-margin-offset`,style:{marginBottom:-N}}))}var ej=n(50344);let eC=a.memo(e=>{let{children:t}=e;return t},(e,t)=>e.value===t.value&&e.update===t.update&&e.childProps.length===t.childProps.length&&e.childProps.every((e,n)=>e===t.childProps[n]));function ek(){return{errors:[],warnings:[],touched:!1,validating:!1,name:[],validated:!1}}let eM=function(e){let{name:t,noStyle:n,className:l,dependencies:o,prefixCls:s,shouldUpdate:u,rules:d,children:m,required:p,label:f,messageVariables:g,trigger:h="onChange",validateTrigger:b,hidden:y,help:v}=e,{getPrefixCls:$}=a.useContext(Z.E_),{name:x}=a.useContext(c.q3),w=function(e){if("function"==typeof e)return e;let t=(0,ej.Z)(e);return t.length<=1?t[0]:t}(m),E="function"==typeof w,O=a.useContext(c.qI),{validateTrigger:S}=a.useContext(I.zb),j=void 0!==b?b:S,k=null!=t,M=$("form",s),[N,q]=C(M),W=a.useContext(I.ZM),_=a.useRef(),[H,F]=function(e){let[t,n]=a.useState(e),r=(0,a.useRef)(null),l=(0,a.useRef)([]),i=(0,a.useRef)(!1);return a.useEffect(()=>(i.current=!1,()=>{i.current=!0,et.Z.cancel(r.current),r.current=null}),[]),[t,function(e){i.current||(null===r.current&&(l.current=[],r.current=(0,et.Z)(()=>{r.current=null,n(e=>{let t=e;return l.current.forEach(e=>{t=e(t)}),t})})),l.current.push(e))}]}({}),[P,R]=(0,Q.Z)(()=>ek()),z=(e,t)=>{F(n=>{let l=Object.assign({},n),i=[].concat((0,r.Z)(e.name.slice(0,-1)),(0,r.Z)(t)),o=i.join("__SPLIT__");return e.destroy?delete l[o]:l[o]=e,l})},[T,D]=a.useMemo(()=>{let e=(0,r.Z)(P.errors),t=(0,r.Z)(P.warnings);return Object.values(H).forEach(n=>{e.push.apply(e,(0,r.Z)(n.errors||[])),t.push.apply(t,(0,r.Z)(n.warnings||[]))}),[e,t]},[H,P.errors,P.warnings]),V=function(){let{itemRef:e}=a.useContext(c.q3),t=a.useRef({});return function(n,r){let l=r&&"object"==typeof r&&r.ref,i=n.join("_");return(t.current.name!==i||t.current.originRef!==l)&&(t.current.name=i,t.current.originRef=l,t.current.ref=(0,U.sQ)(e(n),l)),t.current.ref}}();function L(t,r,o){return n&&!y?t:a.createElement(eS,Object.assign({key:"row"},e,{className:i()(l,q),prefixCls:M,fieldId:r,isRequired:o,errors:T,warnings:D,meta:P,onSubItemMetaChange:z}),t)}if(!k&&!E&&!o)return N(L(w));let X={};return"string"==typeof f?X.label=f:t&&(X.label=String(t)),g&&(X=Object.assign(Object.assign({},X),g)),N(a.createElement(I.gN,Object.assign({},e,{messageVariables:X,trigger:h,validateTrigger:j,onMetaChange:e=>{let t=null==W?void 0:W.getKey(e.name);if(R(e.destroy?ek():e,!0),n&&!1!==v&&O){let n=e.name;if(e.destroy)n=_.current||n;else if(void 0!==t){let[e,l]=t;n=[e].concat((0,r.Z)(l)),_.current=n}O(e,n)}}}),(n,l,i)=>{let s=A(t).length&&l?l.name:[],c=B(s,x),m=void 0!==p?p:!!(d&&d.some(e=>{if(e&&"object"==typeof e&&e.required&&!e.warningOnly)return!0;if("function"==typeof e){let t=e(i);return t&&t.required&&!t.warningOnly}return!1})),f=Object.assign({},n),g=null;if(Array.isArray(w)&&k)g=w;else if(E&&(!(u||o)||k));else if(!o||E||k){if((0,J.l$)(w)){let t=Object.assign(Object.assign({},w.props),f);if(t.id||(t.id=c),v||T.length>0||D.length>0||e.extra){let n=[];(v||T.length>0)&&n.push(`${c}_help`),e.extra&&n.push(`${c}_extra`),t["aria-describedby"]=n.join(" ")}T.length>0&&(t["aria-invalid"]="true"),m&&(t["aria-required"]="true"),(0,U.Yr)(w)&&(t.ref=V(s,w));let n=new Set([].concat((0,r.Z)(A(h)),(0,r.Z)(A(j))));n.forEach(e=>{t[e]=function(){for(var t,n,r,l=arguments.length,i=Array(l),o=0;ot.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var l=0,r=Object.getOwnPropertySymbols(e);lt.indexOf(r[l])&&Object.prototype.propertyIsEnumerable.call(e,r[l])&&(n[r[l]]=e[r[l]]);return n};K.Item=eM,K.List=e=>{var{prefixCls:t,children:n}=e,r=eN(e,["prefixCls","children"]);let{getPrefixCls:l}=a.useContext(Z.E_),i=l("form",t),o=a.useMemo(()=>({prefixCls:i,status:"error"}),[i]);return a.createElement(I.aV,Object.assign({},r),(e,t,r)=>a.createElement(c.Rk.Provider,{value:o},n(e.map(e=>Object.assign(Object.assign({},e),{fieldKey:e.key})),t,{errors:r.errors,warnings:r.warnings})))},K.ErrorList=N,K.useForm=X,K.useFormInstance=function(){let{form:e}=(0,a.useContext)(c.q3);return e},K.useWatch=I.qo,K.Provider=c.RV,K.create=()=>{};var eI=K}}]); \ No newline at end of file diff --git a/pilot/server/static/_next/static/chunks/539-dcd22f1f6b99ebee.js b/pilot/server/static/_next/static/chunks/539-dcd22f1f6b99ebee.js deleted file mode 100644 index 3c99d6954..000000000 --- a/pilot/server/static/_next/static/chunks/539-dcd22f1f6b99ebee.js +++ /dev/null @@ -1,4 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[539],{27496:function(e,t,n){n.d(t,{Z:function(){return l}});var r=n(87462),o=n(67294),i={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M931.4 498.9L94.9 79.5c-3.4-1.7-7.3-2.1-11-1.2a15.99 15.99 0 00-11.7 19.3l86.2 352.2c1.3 5.3 5.2 9.6 10.4 11.3l147.7 50.7-147.6 50.7c-5.2 1.8-9.1 6-10.3 11.3L72.2 926.5c-.9 3.7-.5 7.6 1.2 10.9 3.9 7.9 13.5 11.1 21.5 7.2l836.5-417c3.1-1.5 5.6-4.1 7.2-7.1 3.9-8 .7-17.6-7.2-21.6zM170.8 826.3l50.3-205.6 295.2-101.3c2.3-.8 4.2-2.6 5-5 1.4-4.2-.8-8.7-5-10.2L221.1 403 171 198.2l628 314.9-628.2 313.2z"}}]},name:"send",theme:"outlined"},a=n(84089),l=o.forwardRef(function(e,t){return o.createElement(a.Z,(0,r.Z)({},e,{ref:t,icon:i}))})},58299:function(e,t,n){n.d(t,{Z:function(){return V}});var r=n(87462),o=n(67294),i={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M859.9 168H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zM518.3 355a8 8 0 00-12.6 0l-112 141.7a7.98 7.98 0 006.3 12.9h73.9V848c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V509.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 355z"}}]},name:"vertical-align-top",theme:"outlined"},a=n(84089),l=o.forwardRef(function(e,t){return o.createElement(a.Z,(0,r.Z)({},e,{ref:t,icon:i}))}),c=n(94184),s=n.n(c),d=n(82225),m=n(98423),p=n(40411),u=n(53124),g=n(83062),f={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z"}}]},name:"file-text",theme:"outlined"},$=o.forwardRef(function(e,t){return o.createElement(a.Z,(0,r.Z)({},e,{ref:t,icon:f}))}),b=(0,o.memo)(e=>{let{icon:t,description:n,prefixCls:r,className:i}=e,a=o.createElement("div",{className:`${r}-icon`},o.createElement($,null));return o.createElement("div",{onClick:e.onClick,onFocus:e.onFocus,onMouseEnter:e.onMouseEnter,onMouseLeave:e.onMouseLeave,className:s()(i,`${r}-content`)},t||n?o.createElement(o.Fragment,null,t&&o.createElement("div",{className:`${r}-icon`},t),n&&o.createElement("div",{className:`${r}-description`},n)):a)});let h=o.createContext(void 0),{Provider:y}=h;var v=n(23183),x=n(14747),E=n(16932),S=n(93590),O=n(67968),w=n(45503),C=e=>0===e?0:e-Math.sqrt(Math.pow(e,2)/2);let k=e=>{let{componentCls:t,floatButtonSize:n,motionDurationSlow:r,motionEaseInOutCirc:o}=e,i=`${t}-group`,a=new v.E4("antFloatButtonMoveDownIn",{"0%":{transform:`translate3d(0, ${n}px, 0)`,transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),l=new v.E4("antFloatButtonMoveDownOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:`translate3d(0, ${n}px, 0)`,transformOrigin:"0 0",opacity:0}});return[{[`${i}-wrap`]:Object.assign({},(0,S.R)(`${i}-wrap`,a,l,r,!0))},{[`${i}-wrap`]:{[` - &${i}-wrap-enter, - &${i}-wrap-appear - `]:{opacity:0,animationTimingFunction:o},[`&${i}-wrap-leave`]:{animationTimingFunction:o}}}]},B=e=>{let{antCls:t,componentCls:n,floatButtonSize:r,margin:o,borderRadiusLG:i,borderRadiusSM:a,badgeOffset:l,floatButtonBodyPadding:c}=e,s=`${n}-group`;return{[s]:Object.assign(Object.assign({},(0,x.Wf)(e)),{zIndex:99,display:"block",border:"none",position:"fixed",width:r,height:"auto",boxShadow:"none",minHeight:r,insetInlineEnd:e.floatButtonInsetInlineEnd,insetBlockEnd:e.floatButtonInsetBlockEnd,borderRadius:i,[`${s}-wrap`]:{zIndex:-1,display:"block",position:"relative",marginBottom:o},[`&${s}-rtl`]:{direction:"rtl"},[n]:{position:"static"}}),[`${s}-circle`]:{[`${n}-circle:not(:last-child)`]:{marginBottom:e.margin,[`${n}-body`]:{width:r,height:r,borderRadius:"50%"}}},[`${s}-square`]:{[`${n}-square`]:{borderRadius:0,padding:0,"&:first-child":{borderStartStartRadius:i,borderStartEndRadius:i},"&:last-child":{borderEndStartRadius:i,borderEndEndRadius:i},"&:not(:last-child)":{borderBottom:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`},[`${t}-badge`]:{[`${t}-badge-count`]:{top:-(c+l),insetInlineEnd:-(c+l)}}},[`${s}-wrap`]:{display:"block",borderRadius:i,boxShadow:e.boxShadowSecondary,[`${n}-square`]:{boxShadow:"none",marginTop:0,borderRadius:0,padding:c,"&:first-child":{borderStartStartRadius:i,borderStartEndRadius:i},"&:last-child":{borderEndStartRadius:i,borderEndEndRadius:i},"&:not(:last-child)":{borderBottom:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`},[`${n}-body`]:{width:e.floatButtonBodySize,height:e.floatButtonBodySize}}}},[`${s}-circle-shadow`]:{boxShadow:"none"},[`${s}-square-shadow`]:{boxShadow:e.boxShadowSecondary,[`${n}-square`]:{boxShadow:"none",padding:c,[`${n}-body`]:{width:e.floatButtonBodySize,height:e.floatButtonBodySize,borderRadius:a}}}}},j=e=>{let{antCls:t,componentCls:n,floatButtonBodyPadding:r,floatButtonIconSize:o,floatButtonSize:i,borderRadiusLG:a,badgeOffset:l,dotOffsetInSquare:c,dotOffsetInCircle:s}=e;return{[n]:Object.assign(Object.assign({},(0,x.Wf)(e)),{border:"none",position:"fixed",cursor:"pointer",zIndex:99,width:i,height:i,insetInlineEnd:e.floatButtonInsetInlineEnd,insetBlockEnd:e.floatButtonInsetBlockEnd,boxShadow:e.boxShadowSecondary,"&-pure":{position:"relative",inset:"auto"},"&:empty":{display:"none"},[`${t}-badge`]:{width:"100%",height:"100%",[`${t}-badge-count`]:{transform:"translate(0, 0)",transformOrigin:"center",top:-l,insetInlineEnd:-l}},[`${n}-body`]:{width:"100%",height:"100%",display:"flex",justifyContent:"center",alignItems:"center",transition:`all ${e.motionDurationMid}`,[`${n}-content`]:{overflow:"hidden",textAlign:"center",minHeight:i,display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",padding:`${r/2}px ${r}px`,[`${n}-icon`]:{textAlign:"center",margin:"auto",width:o,fontSize:o,lineHeight:1}}}}),[`${n}-rtl`]:{direction:"rtl"},[`${n}-circle`]:{height:i,borderRadius:"50%",[`${t}-badge`]:{[`${t}-badge-dot`]:{top:s,insetInlineEnd:s}},[`${n}-body`]:{borderRadius:"50%"}},[`${n}-square`]:{height:"auto",minHeight:i,borderRadius:a,[`${t}-badge`]:{[`${t}-badge-dot`]:{top:c,insetInlineEnd:c}},[`${n}-body`]:{height:"auto",borderRadius:a}},[`${n}-default`]:{backgroundColor:e.floatButtonBackgroundColor,transition:`background-color ${e.motionDurationMid}`,[`${n}-body`]:{backgroundColor:e.floatButtonBackgroundColor,transition:`background-color ${e.motionDurationMid}`,"&:hover":{backgroundColor:e.colorFillContent},[`${n}-content`]:{[`${n}-icon`]:{color:e.colorText},[`${n}-description`]:{display:"flex",alignItems:"center",lineHeight:`${e.fontSizeLG}px`,color:e.colorText,fontSize:e.fontSizeSM}}}},[`${n}-primary`]:{backgroundColor:e.colorPrimary,[`${n}-body`]:{backgroundColor:e.colorPrimary,transition:`background-color ${e.motionDurationMid}`,"&:hover":{backgroundColor:e.colorPrimaryHover},[`${n}-content`]:{[`${n}-icon`]:{color:e.colorTextLightSolid},[`${n}-description`]:{display:"flex",alignItems:"center",lineHeight:`${e.fontSizeLG}px`,color:e.colorTextLightSolid,fontSize:e.fontSizeSM}}}}}};var z=(0,O.Z)("FloatButton",e=>{let{colorTextLightSolid:t,colorBgElevated:n,controlHeightLG:r,marginXXL:o,marginLG:i,fontSize:a,fontSizeIcon:l,controlItemBgHover:c,paddingXXS:s,borderRadiusLG:d}=e,m=(0,w.TS)(e,{floatButtonBackgroundColor:n,floatButtonColor:t,floatButtonHoverBackgroundColor:c,floatButtonFontSize:a,floatButtonIconSize:1.5*l,floatButtonSize:r,floatButtonInsetBlockEnd:o,floatButtonInsetInlineEnd:i,floatButtonBodySize:r-2*s,floatButtonBodyPadding:s,badgeOffset:1.5*s,dotOffsetInCircle:C(r/2),dotOffsetInSquare:C(d)});return[B(m),j(m),(0,E.J$)(e),k(m)]}),N=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let I="float-btn",P=o.forwardRef((e,t)=>{let{prefixCls:n,className:r,rootClassName:i,type:a="default",shape:l="circle",icon:c,description:d,tooltip:f,badge:$={}}=e,y=N(e,["prefixCls","className","rootClassName","type","shape","icon","description","tooltip","badge"]),{getPrefixCls:v,direction:x}=(0,o.useContext)(u.E_),E=(0,o.useContext)(h),S=v(I,n),[O,w]=z(S),C=s()(w,S,r,i,`${S}-${a}`,`${S}-${E||l}`,{[`${S}-rtl`]:"rtl"===x}),k=(0,o.useMemo)(()=>(0,m.Z)($,["title","children","status","text"]),[$]),B=(0,o.useMemo)(()=>({prefixCls:S,description:d,icon:c,type:a}),[S,d,c,a]),j=o.createElement("div",{className:`${S}-body`},o.createElement(b,Object.assign({},B)));return"badge"in e&&(j=o.createElement(p.Z,Object.assign({},k),j)),"tooltip"in e&&(j=o.createElement(g.Z,{title:f,placement:"rtl"===x?"right":"left"},j)),O(e.href?o.createElement("a",Object.assign({ref:t},y,{className:C}),j):o.createElement("button",Object.assign({ref:t},y,{className:C,type:"button"}),j))});var M=n(66367),Z=n(58375),H=n(74902),L=n(75164),R=function(e){let t;let n=n=>()=>{t=null,e.apply(void 0,(0,H.Z)(n))},r=function(){if(null==t){for(var e=arguments.length,r=Array(e),o=0;o{L.Z.cancel(t),t=null},r},W=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n},T=(0,o.memo)(e=>{let{prefixCls:t,className:n,type:r="default",shape:i="circle",visibilityHeight:a=400,icon:c=o.createElement(l,null),target:m,onClick:p,duration:g=450}=e,f=W(e,["prefixCls","className","type","shape","visibilityHeight","icon","target","onClick","duration"]),[$,b]=(0,o.useState)(0===a),y=(0,o.useRef)(null),v=()=>y.current&&y.current.ownerDocument?y.current.ownerDocument:window,x=R(e=>{let t=(0,M.Z)(e.target,!0);b(t>=a)});(0,o.useEffect)(()=>{let e=m||v,t=e();return x({target:t}),null==t||t.addEventListener("scroll",x),()=>{x.cancel(),null==t||t.removeEventListener("scroll",x)}},[m]);let E=e=>{(0,Z.Z)(0,{getContainer:m||v,duration:g}),null==p||p(e)},{getPrefixCls:S}=(0,o.useContext)(u.E_),O=S(I,t),w=S(),[C]=z(O),k=(0,o.useContext)(h),B=Object.assign({prefixCls:O,icon:c,type:r,shape:k||i},f);return C(o.createElement(d.ZP,{visible:$,motionName:`${w}-fade`},e=>{let{className:t}=e;return o.createElement(P,Object.assign({ref:y},B,{onClick:E,className:s()(n,t)}))}))}),_=n(97937),F=n(21770),D=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n},A=(0,o.memo)(e=>{let{prefixCls:t,className:n,style:r,shape:i="circle",type:a="default",icon:l=o.createElement($,null),closeIcon:c=o.createElement(_.Z,null),description:m,trigger:p,children:g,onOpenChange:f,open:b}=e,h=D(e,["prefixCls","className","style","shape","type","icon","closeIcon","description","trigger","children","onOpenChange","open"]),{direction:v,getPrefixCls:x}=(0,o.useContext)(u.E_),E=x(I,t),[S,O]=z(E),w=`${E}-group`,C=s()(w,O,n,{[`${w}-rtl`]:"rtl"===v,[`${w}-${i}`]:i,[`${w}-${i}-shadow`]:!p}),k=s()(O,`${w}-wrap`),[B,j]=(0,F.Z)(!1,{value:b}),N=(0,o.useRef)(null),M=(0,o.useRef)(null),Z=(0,o.useMemo)(()=>"hover"===p?{onMouseEnter(){j(!0),null==f||f(!0)},onMouseLeave(){j(!1),null==f||f(!1)}}:{},[p]),H=()=>{j(e=>(null==f||f(!e),!e))},L=(0,o.useCallback)(e=>{var t,n;if(null===(t=N.current)||void 0===t?void 0:t.contains(e.target)){(null===(n=M.current)||void 0===n?void 0:n.contains(e.target))&&H();return}j(!1),null==f||f(!1)},[p]);return(0,o.useEffect)(()=>{if("click"===p)return document.addEventListener("click",L),()=>{document.removeEventListener("click",L)}},[p]),S(o.createElement(y,{value:i},o.createElement("div",Object.assign({ref:N,className:C,style:r},Z),p&&["click","hover"].includes(p)?o.createElement(o.Fragment,null,o.createElement(d.ZP,{visible:B,motionName:`${w}-wrap`},e=>{let{className:t}=e;return o.createElement("div",{className:s()(t,k)},g)}),o.createElement(P,Object.assign({ref:M,type:a,shape:i,icon:B?c:l,description:m,"aria-label":e["aria-label"]},h))):g)))}),G=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let q=e=>{var{backTop:t}=e,n=G(e,["backTop"]);return t?o.createElement(T,Object.assign({},n,{visibilityHeight:0})):o.createElement(P,Object.assign({},n))};P.BackTop=T,P.Group=A,P._InternalPanelDoNotUseOrYouWillBeFired=e=>{var{className:t,items:n}=e,r=G(e,["className","items"]);let{prefixCls:i}=r,{getPrefixCls:a}=o.useContext(u.E_),l=a(I,i),c=`${l}-pure`;return n?o.createElement(A,Object.assign({className:s()(t,c)},r),n.map((e,t)=>o.createElement(q,Object.assign({key:t},e)))):o.createElement(q,Object.assign({className:s()(t,c)},r))};var V=P},2487:function(e,t,n){n.d(t,{Z:function(){return j}});var r=n(74902),o=n(94184),i=n.n(o),a=n(67294),l=n(38780),c=n(74443),s=n(53124),d=n(88258),m=n(92820),p=n(25378),u=n(81647),g=n(75081),f=n(96159),$=n(21584);let b=a.createContext({});b.Consumer;var h=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let y=(0,a.forwardRef)((e,t)=>{let n;var{prefixCls:r,children:o,actions:l,extra:c,className:d,colStyle:m}=e,p=h(e,["prefixCls","children","actions","extra","className","colStyle"]);let{grid:u,itemLayout:g}=(0,a.useContext)(b),{getPrefixCls:y}=(0,a.useContext)(s.E_),v=y("list",r),x=l&&l.length>0&&a.createElement("ul",{className:`${v}-item-action`,key:"actions"},l.map((e,t)=>a.createElement("li",{key:`${v}-item-action-${t}`},e,t!==l.length-1&&a.createElement("em",{className:`${v}-item-action-split`})))),E=u?"div":"li",S=a.createElement(E,Object.assign({},p,u?{}:{ref:t},{className:i()(`${v}-item`,{[`${v}-item-no-flex`]:!("vertical"===g?!!c:(a.Children.forEach(o,e=>{"string"==typeof e&&(n=!0)}),!(n&&a.Children.count(o)>1)))},d)}),"vertical"===g&&c?[a.createElement("div",{className:`${v}-item-main`,key:"content"},o,x),a.createElement("div",{className:`${v}-item-extra`,key:"extra"},c)]:[o,x,(0,f.Tm)(c,{key:"extra"})]);return u?a.createElement($.Z,{ref:t,flex:1,style:m},S):S});y.Meta=e=>{var{prefixCls:t,className:n,avatar:r,title:o,description:l}=e,c=h(e,["prefixCls","className","avatar","title","description"]);let{getPrefixCls:d}=(0,a.useContext)(s.E_),m=d("list",t),p=i()(`${m}-item-meta`,n),u=a.createElement("div",{className:`${m}-item-meta-content`},o&&a.createElement("h4",{className:`${m}-item-meta-title`},o),l&&a.createElement("div",{className:`${m}-item-meta-description`},l));return a.createElement("div",Object.assign({},c,{className:p}),r&&a.createElement("div",{className:`${m}-item-meta-avatar`},r),(o||l)&&u)};var v=n(14747),x=n(67968),E=n(45503);let S=e=>{let{listBorderedCls:t,componentCls:n,paddingLG:r,margin:o,itemPaddingSM:i,itemPaddingLG:a,marginLG:l,borderRadiusLG:c}=e;return{[`${t}`]:{border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,borderRadius:c,[`${n}-header,${n}-footer,${n}-item`]:{paddingInline:r},[`${n}-pagination`]:{margin:`${o}px ${l}px`}},[`${t}${n}-sm`]:{[`${n}-item,${n}-header,${n}-footer`]:{padding:i}},[`${t}${n}-lg`]:{[`${n}-item,${n}-header,${n}-footer`]:{padding:a}}}},O=e=>{let{componentCls:t,screenSM:n,screenMD:r,marginLG:o,marginSM:i,margin:a}=e;return{[`@media screen and (max-width:${r})`]:{[`${t}`]:{[`${t}-item`]:{[`${t}-item-action`]:{marginInlineStart:o}}},[`${t}-vertical`]:{[`${t}-item`]:{[`${t}-item-extra`]:{marginInlineStart:o}}}},[`@media screen and (max-width: ${n})`]:{[`${t}`]:{[`${t}-item`]:{flexWrap:"wrap",[`${t}-action`]:{marginInlineStart:i}}},[`${t}-vertical`]:{[`${t}-item`]:{flexWrap:"wrap-reverse",[`${t}-item-main`]:{minWidth:e.contentWidth},[`${t}-item-extra`]:{margin:`auto auto ${a}px`}}}}}},w=e=>{let{componentCls:t,antCls:n,controlHeight:r,minHeight:o,paddingSM:i,marginLG:a,padding:l,itemPadding:c,colorPrimary:s,itemPaddingSM:d,itemPaddingLG:m,paddingXS:p,margin:u,colorText:g,colorTextDescription:f,motionDurationSlow:$,lineWidth:b,headerBg:h,footerBg:y,emptyTextPadding:x,metaMarginBottom:E,avatarMarginRight:S,titleMarginBottom:O,descriptionFontSize:w}=e,C={};return["start","center","end"].forEach(e=>{C[`&-align-${e}`]={textAlign:e}}),{[`${t}`]:Object.assign(Object.assign({},(0,v.Wf)(e)),{position:"relative","*":{outline:"none"},[`${t}-header`]:{background:h},[`${t}-footer`]:{background:y},[`${t}-header, ${t}-footer`]:{paddingBlock:i},[`${t}-pagination`]:Object.assign(Object.assign({marginBlockStart:a},C),{[`${n}-pagination-options`]:{textAlign:"start"}}),[`${t}-spin`]:{minHeight:o,textAlign:"center"},[`${t}-items`]:{margin:0,padding:0,listStyle:"none"},[`${t}-item`]:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:c,color:g,[`${t}-item-meta`]:{display:"flex",flex:1,alignItems:"flex-start",maxWidth:"100%",[`${t}-item-meta-avatar`]:{marginInlineEnd:S},[`${t}-item-meta-content`]:{flex:"1 0",width:0,color:g},[`${t}-item-meta-title`]:{margin:`0 0 ${e.marginXXS}px 0`,color:g,fontSize:e.fontSize,lineHeight:e.lineHeight,"> a":{color:g,transition:`all ${$}`,"&:hover":{color:s}}},[`${t}-item-meta-description`]:{color:f,fontSize:w,lineHeight:e.lineHeight}},[`${t}-item-action`]:{flex:"0 0 auto",marginInlineStart:e.marginXXL,padding:0,fontSize:0,listStyle:"none","& > li":{position:"relative",display:"inline-block",padding:`0 ${p}px`,color:f,fontSize:e.fontSize,lineHeight:e.lineHeight,textAlign:"center","&:first-child":{paddingInlineStart:0}},[`${t}-item-action-split`]:{position:"absolute",insetBlockStart:"50%",insetInlineEnd:0,width:b,height:Math.ceil(e.fontSize*e.lineHeight)-2*e.marginXXS,transform:"translateY(-50%)",backgroundColor:e.colorSplit}}},[`${t}-empty`]:{padding:`${l}px 0`,color:f,fontSize:e.fontSizeSM,textAlign:"center"},[`${t}-empty-text`]:{padding:x,color:e.colorTextDisabled,fontSize:e.fontSize,textAlign:"center"},[`${t}-item-no-flex`]:{display:"block"}}),[`${t}-grid ${n}-col > ${t}-item`]:{display:"block",maxWidth:"100%",marginBlockEnd:u,paddingBlock:0,borderBlockEnd:"none"},[`${t}-vertical ${t}-item`]:{alignItems:"initial",[`${t}-item-main`]:{display:"block",flex:1},[`${t}-item-extra`]:{marginInlineStart:a},[`${t}-item-meta`]:{marginBlockEnd:E,[`${t}-item-meta-title`]:{marginBlockStart:0,marginBlockEnd:O,color:g,fontSize:e.fontSizeLG,lineHeight:e.lineHeightLG}},[`${t}-item-action`]:{marginBlockStart:l,marginInlineStart:"auto","> li":{padding:`0 ${l}px`,"&:first-child":{paddingInlineStart:0}}}},[`${t}-split ${t}-item`]:{borderBlockEnd:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`,"&:last-child":{borderBlockEnd:"none"}},[`${t}-split ${t}-header`]:{borderBlockEnd:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`},[`${t}-split${t}-empty ${t}-footer`]:{borderTop:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`},[`${t}-loading ${t}-spin-nested-loading`]:{minHeight:r},[`${t}-split${t}-something-after-last-item ${n}-spin-container > ${t}-items > ${t}-item:last-child`]:{borderBlockEnd:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`},[`${t}-lg ${t}-item`]:{padding:m},[`${t}-sm ${t}-item`]:{padding:d},[`${t}:not(${t}-vertical)`]:{[`${t}-item-no-flex`]:{[`${t}-item-action`]:{float:"right"}}}}};var C=(0,x.Z)("List",e=>{let t=(0,E.TS)(e,{listBorderedCls:`${e.componentCls}-bordered`,minHeight:e.controlHeightLG});return[w(t),S(t),O(t)]},e=>({contentWidth:220,itemPadding:`${e.paddingContentVertical}px 0`,itemPaddingSM:`${e.paddingContentVerticalSM}px ${e.paddingContentHorizontal}px`,itemPaddingLG:`${e.paddingContentVerticalLG}px ${e.paddingContentHorizontalLG}px`,headerBg:"transparent",footerBg:"transparent",emptyTextPadding:e.padding,metaMarginBottom:e.padding,avatarMarginRight:e.padding,titleMarginBottom:e.paddingSM,descriptionFontSize:e.fontSize})),k=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};function B(e){var t,{pagination:n=!1,prefixCls:o,bordered:f=!1,split:$=!0,className:h,rootClassName:y,style:v,children:x,itemLayout:E,loadMore:S,grid:O,dataSource:w=[],size:B,header:j,footer:z,loading:N=!1,rowKey:I,renderItem:P,locale:M}=e,Z=k(e,["pagination","prefixCls","bordered","split","className","rootClassName","style","children","itemLayout","loadMore","grid","dataSource","size","header","footer","loading","rowKey","renderItem","locale"]);let H=n&&"object"==typeof n?n:{},[L,R]=a.useState(H.defaultCurrent||1),[W,T]=a.useState(H.defaultPageSize||10),{getPrefixCls:_,renderEmpty:F,direction:D,list:A}=a.useContext(s.E_),G=e=>(t,r)=>{var o;R(t),T(r),n&&n[e]&&(null===(o=null==n?void 0:n[e])||void 0===o||o.call(n,t,r))},q=G("onChange"),V=G("onShowSizeChange"),X=(e,t)=>{let n;return P?((n="function"==typeof I?I(e):I?e[I]:e.key)||(n=`list-item-${t}`),a.createElement(a.Fragment,{key:n},P(e,t))):null},Y=_("list",o),[J,U]=C(Y),K=N;"boolean"==typeof K&&(K={spinning:K});let Q=K&&K.spinning,ee="";switch(B){case"large":ee="lg";break;case"small":ee="sm"}let et=i()(Y,{[`${Y}-vertical`]:"vertical"===E,[`${Y}-${ee}`]:ee,[`${Y}-split`]:$,[`${Y}-bordered`]:f,[`${Y}-loading`]:Q,[`${Y}-grid`]:!!O,[`${Y}-something-after-last-item`]:!!(S||n||z),[`${Y}-rtl`]:"rtl"===D},null==A?void 0:A.className,h,y,U),en=(0,l.Z)({current:1,total:0},{total:w.length,current:L,pageSize:W},n||{}),er=Math.ceil(en.total/en.pageSize);en.current>er&&(en.current=er);let eo=n?a.createElement("div",{className:i()(`${Y}-pagination`,`${Y}-pagination-align-${null!==(t=null==en?void 0:en.align)&&void 0!==t?t:"end"}`)},a.createElement(u.Z,Object.assign({},en,{onChange:q,onShowSizeChange:V}))):null,ei=(0,r.Z)(w);n&&w.length>(en.current-1)*en.pageSize&&(ei=(0,r.Z)(w).splice((en.current-1)*en.pageSize,en.pageSize));let ea=Object.keys(O||{}).some(e=>["xs","sm","md","lg","xl","xxl"].includes(e)),el=(0,p.Z)(ea),ec=a.useMemo(()=>{for(let e=0;e{if(!O)return;let e=ec&&O[ec]?O[ec]:O.column;if(e)return{width:`${100/e}%`,maxWidth:`${100/e}%`}},[null==O?void 0:O.column,ec]),ed=Q&&a.createElement("div",{style:{minHeight:53}});if(ei.length>0){let e=ei.map((e,t)=>X(e,t));ed=O?a.createElement(m.Z,{gutter:O.gutter},a.Children.map(e,e=>a.createElement("div",{key:null==e?void 0:e.key,style:es},e))):a.createElement("ul",{className:`${Y}-items`},e)}else x||Q||(ed=a.createElement("div",{className:`${Y}-empty-text`},M&&M.emptyText||(null==F?void 0:F("List"))||a.createElement(d.Z,{componentName:"List"})));let em=en.position||"bottom",ep=a.useMemo(()=>({grid:O,itemLayout:E}),[JSON.stringify(O),E]);return J(a.createElement(b.Provider,{value:ep},a.createElement("div",Object.assign({style:Object.assign(Object.assign({},null==A?void 0:A.style),v),className:et},Z),("top"===em||"both"===em)&&eo,j&&a.createElement("div",{className:`${Y}-header`},j),a.createElement(g.Z,Object.assign({},K),ed,x),z&&a.createElement("div",{className:`${Y}-footer`},z),S||("bottom"===em||"both"===em)&&eo)))}B.Item=y;var j=B},74627:function(e,t,n){n.d(t,{Z:function(){return k}});var r=n(94184),o=n.n(r),i=n(67294);let a=e=>e?"function"==typeof e?e():e:null;var l=n(33603),c=n(53124),s=n(83062),d=n(92419),m=n(14747),p=n(50438),u=n(77786),g=n(8796),f=n(67968),$=n(45503);let b=e=>{let{componentCls:t,popoverColor:n,minWidth:r,fontWeightStrong:o,popoverPadding:i,boxShadowSecondary:a,colorTextHeading:l,borderRadiusLG:c,zIndexPopup:s,marginXS:d,colorBgElevated:p,popoverBg:g}=e;return[{[t]:Object.assign(Object.assign({},(0,m.Wf)(e)),{position:"absolute",top:0,left:{_skip_check_:!0,value:0},zIndex:s,fontWeight:"normal",whiteSpace:"normal",textAlign:"start",cursor:"auto",userSelect:"text",transformOrigin:"var(--arrow-x, 50%) var(--arrow-y, 50%)","--antd-arrow-background-color":p,"&-rtl":{direction:"rtl"},"&-hidden":{display:"none"},[`${t}-content`]:{position:"relative"},[`${t}-inner`]:{backgroundColor:g,backgroundClip:"padding-box",borderRadius:c,boxShadow:a,padding:i},[`${t}-title`]:{minWidth:r,marginBottom:d,color:l,fontWeight:o},[`${t}-inner-content`]:{color:n}})},(0,u.ZP)(e,{colorBg:"var(--antd-arrow-background-color)"}),{[`${t}-pure`]:{position:"relative",maxWidth:"none",margin:e.sizePopupArrow,display:"inline-block",[`${t}-content`]:{display:"inline-block"}}}]},h=e=>{let{componentCls:t}=e;return{[t]:g.i.map(n=>{let r=e[`${n}6`];return{[`&${t}-${n}`]:{"--antd-arrow-background-color":r,[`${t}-inner`]:{backgroundColor:r},[`${t}-arrow`]:{background:"transparent"}}}})}},y=e=>{let{componentCls:t,lineWidth:n,lineType:r,colorSplit:o,paddingSM:i,controlHeight:a,fontSize:l,lineHeight:c,padding:s}=e,d=a-Math.round(l*c);return{[t]:{[`${t}-inner`]:{padding:0},[`${t}-title`]:{margin:0,padding:`${d/2}px ${s}px ${d/2-n}px`,borderBottom:`${n}px ${r} ${o}`},[`${t}-inner-content`]:{padding:`${i}px ${s}px`}}}};var v=(0,f.Z)("Popover",e=>{let{colorBgElevated:t,colorText:n,wireframe:r}=e,o=(0,$.TS)(e,{popoverPadding:12,popoverBg:t,popoverColor:n});return[b(o),h(o),r&&y(o),(0,p._y)(o,"zoom-big")]},e=>({width:177,minWidth:177,zIndexPopup:e.zIndexPopupBase+30}),{deprecatedTokens:[["width","minWidth"]]}),x=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let E=(e,t,n)=>{if(t||n)return i.createElement(i.Fragment,null,t&&i.createElement("div",{className:`${e}-title`},a(t)),i.createElement("div",{className:`${e}-inner-content`},a(n)))},S=e=>{let{hashId:t,prefixCls:n,className:r,style:a,placement:l="top",title:c,content:s,children:m}=e;return i.createElement("div",{className:o()(t,n,`${n}-pure`,`${n}-placement-${l}`,r),style:a},i.createElement("div",{className:`${n}-arrow`}),i.createElement(d.G,Object.assign({},e,{className:t,prefixCls:n}),m||E(n,c,s)))};var O=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let w=e=>{let{title:t,content:n,prefixCls:r}=e;return i.createElement(i.Fragment,null,t&&i.createElement("div",{className:`${r}-title`},a(t)),i.createElement("div",{className:`${r}-inner-content`},a(n)))},C=i.forwardRef((e,t)=>{let{prefixCls:n,title:r,content:a,overlayClassName:d,placement:m="top",trigger:p="hover",mouseEnterDelay:u=.1,mouseLeaveDelay:g=.1,overlayStyle:f={}}=e,$=O(e,["prefixCls","title","content","overlayClassName","placement","trigger","mouseEnterDelay","mouseLeaveDelay","overlayStyle"]),{getPrefixCls:b}=i.useContext(c.E_),h=b("popover",n),[y,x]=v(h),E=b(),S=o()(d,x);return y(i.createElement(s.Z,Object.assign({placement:m,trigger:p,mouseEnterDelay:u,mouseLeaveDelay:g,overlayStyle:f},$,{prefixCls:h,overlayClassName:S,ref:t,overlay:r||a?i.createElement(w,{prefixCls:h,title:r,content:a}):null,transitionName:(0,l.m)(E,"zoom-big",$.transitionName),"data-popover-inject":!0})))});C._InternalPanelDoNotUseOrYouWillBeFired=e=>{let{prefixCls:t}=e,n=x(e,["prefixCls"]),{getPrefixCls:r}=i.useContext(c.E_),o=r("popover",t),[a,l]=v(o);return a(i.createElement(S,Object.assign({},n,{prefixCls:o,hashId:l})))};var k=C}}]); \ No newline at end of file diff --git a/pilot/server/static/_next/static/chunks/551-266086fbfa0925ec.js b/pilot/server/static/_next/static/chunks/551-266086fbfa0925ec.js new file mode 100644 index 000000000..96e76b8c8 --- /dev/null +++ b/pilot/server/static/_next/static/chunks/551-266086fbfa0925ec.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[551],{6321:function(t,e,i){i.d(e,{Z:function(){return c}});var n=i(87462),r=i(67294),o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 244c176.18 0 319 142.82 319 319v233a32 32 0 01-32 32H225a32 32 0 01-32-32V563c0-176.18 142.82-319 319-319zM484 68h56a8 8 0 018 8v96a8 8 0 01-8 8h-56a8 8 0 01-8-8V76a8 8 0 018-8zM177.25 191.66a8 8 0 0111.32 0l67.88 67.88a8 8 0 010 11.31l-39.6 39.6a8 8 0 01-11.31 0l-67.88-67.88a8 8 0 010-11.31l39.6-39.6zm669.6 0l39.6 39.6a8 8 0 010 11.3l-67.88 67.9a8 8 0 01-11.32 0l-39.6-39.6a8 8 0 010-11.32l67.89-67.88a8 8 0 0111.31 0zM192 892h640a32 32 0 0132 32v24a8 8 0 01-8 8H168a8 8 0 01-8-8v-24a32 32 0 0132-32zm148-317v253h64V575h-64z"}}]},name:"alert",theme:"filled"},a=i(84089),c=r.forwardRef(function(t,e){return r.createElement(a.Z,(0,n.Z)({},t,{ref:e,icon:o}))})},90389:function(t,e,i){i.d(e,{Z:function(){return c}});var n=i(87462),r=i(67294),o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-260 72h96v209.9L621.5 312 572 347.4V136zm220 752H232V136h280v296.9c0 3.3 1 6.6 3 9.3a15.9 15.9 0 0022.3 3.7l83.8-59.9 81.4 59.4c2.7 2 6 3.1 9.4 3.1 8.8 0 16-7.2 16-16V136h64v752z"}}]},name:"book",theme:"outlined"},a=i(84089),c=r.forwardRef(function(t,e){return r.createElement(a.Z,(0,n.Z)({},t,{ref:e,icon:o}))})},27704:function(t,e,i){i.d(e,{Z:function(){return c}});var n=i(87462),r=i(67294),o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M864 256H736v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zm-200 0H360v-72h304v72z"}}]},name:"delete",theme:"filled"},a=i(84089),c=r.forwardRef(function(t,e){return r.createElement(a.Z,(0,n.Z)({},t,{ref:e,icon:o}))})},31484:function(t,e,i){i.d(e,{Z:function(){return c}});var n=i(87462),r=i(67294),o={icon:function(t,e){return{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M292.7 840h438.6l24.2-512h-487z",fill:e}},{tag:"path",attrs:{d:"M864 256H736v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zm-504-72h304v72H360v-72zm371.3 656H292.7l-24.2-512h487l-24.2 512z",fill:t}}]}},name:"delete",theme:"twotone"},a=i(84089),c=r.forwardRef(function(t,e){return r.createElement(a.Z,(0,n.Z)({},t,{ref:e,icon:o}))})},31326:function(t,e,i){i.d(e,{Z:function(){return c}});var n=i(87462),r=i(67294),o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M396 512a112 112 0 10224 0 112 112 0 10-224 0zm546.2-25.8C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM508 688c-97.2 0-176-78.8-176-176s78.8-176 176-176 176 78.8 176 176-78.8 176-176 176z"}}]},name:"eye",theme:"filled"},a=i(84089),c=r.forwardRef(function(t,e){return r.createElement(a.Z,(0,n.Z)({},t,{ref:e,icon:o}))})},31545:function(t,e,i){i.d(e,{Z:function(){return c}});var n=i(87462),r=i(67294),o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M688 312v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8zm-392 88c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm144 452H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h272c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm445.7 51.5l-93.3-93.3C814.7 780.7 828 743.9 828 704c0-97.2-78.8-176-176-176s-176 78.8-176 176 78.8 176 176 176c35.8 0 69-10.7 96.8-29l94.7 94.7c1.6 1.6 3.6 2.3 5.6 2.3s4.1-.8 5.6-2.3l31-31a7.9 7.9 0 000-11.2zM652 816c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z"}}]},name:"file-search",theme:"outlined"},a=i(84089),c=r.forwardRef(function(t,e){return r.createElement(a.Z,(0,n.Z)({},t,{ref:e,icon:o}))})},27595:function(t,e,i){i.d(e,{Z:function(){return c}});var n=i(87462),r=i(67294),o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM320 482a8 8 0 00-8 8v48a8 8 0 008 8h384a8 8 0 008-8v-48a8 8 0 00-8-8H320zm0 136a8 8 0 00-8 8v48a8 8 0 008 8h184a8 8 0 008-8v-48a8 8 0 00-8-8H320z"}}]},name:"file-text",theme:"filled"},a=i(84089),c=r.forwardRef(function(t,e){return r.createElement(a.Z,(0,n.Z)({},t,{ref:e,icon:o}))})},27329:function(t,e,i){i.d(e,{Z:function(){return c}});var n=i(87462),r=i(67294),o={icon:function(t,e){return{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M534 352V136H232v752h560V394H576a42 42 0 01-42-42zm101.3 129.3c1.3-5.4 6.1-9.3 11.7-9.3h35.6a12.04 12.04 0 0111.6 15.1l-74.4 276c-1.4 5.3-6.2 8.9-11.6 8.9h-31.8c-5.4 0-10.2-3.7-11.6-8.9l-52.8-197-52.8 197c-1.4 5.3-6.2 8.9-11.6 8.9h-32c-5.4 0-10.2-3.7-11.6-8.9l-74.2-276a12.02 12.02 0 0111.6-15.1h35.4c5.6 0 10.4 3.9 11.7 9.3L434.6 680l49.7-198.9c1.3-5.4 6.1-9.1 11.6-9.1h32.2c5.5 0 10.3 3.7 11.6 9.1l49.8 199.3 45.8-199.1z",fill:e}},{tag:"path",attrs:{d:"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0042 42h216v494z",fill:t}},{tag:"path",attrs:{d:"M528.1 472h-32.2c-5.5 0-10.3 3.7-11.6 9.1L434.6 680l-46.1-198.7c-1.3-5.4-6.1-9.3-11.7-9.3h-35.4a12.02 12.02 0 00-11.6 15.1l74.2 276c1.4 5.2 6.2 8.9 11.6 8.9h32c5.4 0 10.2-3.6 11.6-8.9l52.8-197 52.8 197c1.4 5.2 6.2 8.9 11.6 8.9h31.8c5.4 0 10.2-3.6 11.6-8.9l74.4-276a12.04 12.04 0 00-11.6-15.1H647c-5.6 0-10.4 3.9-11.7 9.3l-45.8 199.1-49.8-199.3c-1.3-5.4-6.1-9.1-11.6-9.1z",fill:t}}]}},name:"file-word",theme:"twotone"},a=i(84089),c=r.forwardRef(function(t,e){return r.createElement(a.Z,(0,n.Z)({},t,{ref:e,icon:o}))})},68346:function(t,e,i){i.d(e,{Z:function(){return c}});var n=i(87462),r=i(67294),o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M693.6 284.4c-24 0-51.1 11.7-72.6 22 46.3 18 86 57.3 112.3 99.6 7.1-18.9 14.6-47.9 14.6-67.9 0-32-22.8-53.7-54.3-53.7zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm253.9 492.9H437.1c0 100.4 144.3 136 196.8 47.4h120.8c-32.6 91.7-119.7 146-216.8 146-35.1 0-70.3-.1-101.7-15.6-87.4 44.5-180.3 56.6-180.3-42 0-45.8 23.2-107.1 44-145C335 484 381.3 422.8 435.6 374.5c-43.7 18.9-91.1 66.3-122 101.2 25.9-112.8 129.5-193.6 237.1-186.5 130-59.8 209.7-34.1 209.7 38.6 0 27.4-10.6 63.3-21.4 87.9 25.2 45.5 33.3 97.6 26.9 141.2zM540.5 399.1c-53.7 0-102 39.7-104 94.9h208c-2-55.1-50.6-94.9-104-94.9zM320.6 602.9c-73 152.4 11.5 172.2 100.3 123.3-46.6-27.5-82.6-72.2-100.3-123.3z"}}]},name:"ie-circle",theme:"filled"},a=i(84089),c=r.forwardRef(function(t,e){return r.createElement(a.Z,(0,n.Z)({},t,{ref:e,icon:o}))})},64082:function(t,e,i){i.d(e,{Z:function(){return c}});var n=i(87462),r=i(67294),o={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M885.2 446.3l-.2-.8-112.2-285.1c-5-16.1-19.9-27.2-36.8-27.2H281.2c-17 0-32.1 11.3-36.9 27.6L139.4 443l-.3.7-.2.8c-1.3 4.9-1.7 9.9-1 14.8-.1 1.6-.2 3.2-.2 4.8V830a60.9 60.9 0 0060.8 60.8h627.2c33.5 0 60.8-27.3 60.9-60.8V464.1c0-1.3 0-2.6-.1-3.7.4-4.9 0-9.6-1.3-14.1zm-295.8-43l-.3 15.7c-.8 44.9-31.8 75.1-77.1 75.1-22.1 0-41.1-7.1-54.8-20.6S436 441.2 435.6 419l-.3-15.7H229.5L309 210h399.2l81.7 193.3H589.4zm-375 76.8h157.3c24.3 57.1 76 90.8 140.4 90.8 33.7 0 65-9.4 90.3-27.2 22.2-15.6 39.5-37.4 50.7-63.6h156.5V814H214.4V480.1z"}}]},name:"inbox",theme:"outlined"},a=i(84089),c=r.forwardRef(function(t,e){return r.createElement(a.Z,(0,n.Z)({},t,{ref:e,icon:o}))})},88008:function(t,e,i){i.d(e,{Z:function(){return c}});var n=i(87462),r=i(67294),o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM726 585.7c0 55.3-44.7 100.1-99.7 100.1H420.6v53.4c0 5.7-6.5 8.8-10.9 5.3l-109.1-85.7c-3.5-2.7-3.5-8 0-10.7l109.1-85.7c4.4-3.5 10.9-.3 10.9 5.3v53.4h205.7c19.6 0 35.5-16 35.5-35.6v-78.9c0-3.7 3-6.8 6.8-6.8h50.7c3.7 0 6.8 3 6.8 6.8v79.1zm-2.6-209.9l-109.1 85.7c-4.4 3.5-10.9.3-10.9-5.3v-53.4H397.7c-19.6 0-35.5 16-35.5 35.6v78.9c0 3.7-3 6.8-6.8 6.8h-50.7c-3.7 0-6.8-3-6.8-6.8v-78.9c0-55.3 44.7-100.1 99.7-100.1h205.7v-53.4c0-5.7 6.5-8.8 10.9-5.3l109.1 85.7c3.6 2.5 3.6 7.8.1 10.5z"}}]},name:"interaction",theme:"filled"},a=i(84089),c=r.forwardRef(function(t,e){return r.createElement(a.Z,(0,n.Z)({},t,{ref:e,icon:o}))})},78346:function(t,e,i){i.d(e,{Z:function(){return c}});var n=i(87462),r=i(67294),o={icon:function(t,e){return{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M775.3 248.9a369.62 369.62 0 00-119-80A370.2 370.2 0 00512.1 140h-1.7c-99.7.4-193 39.4-262.8 109.9-69.9 70.5-108 164.1-107.6 263.8.3 60.3 15.3 120.2 43.5 173.1l4.5 8.4V836h140.8l8.4 4.5c52.9 28.2 112.8 43.2 173.1 43.5h1.7c99 0 192-38.2 262.1-107.6 70.4-69.8 109.5-163.1 110.1-262.7.2-50.6-9.5-99.6-28.9-145.8a370.15 370.15 0 00-80-119zM312 560a48.01 48.01 0 010-96 48.01 48.01 0 010 96zm200 0a48.01 48.01 0 010-96 48.01 48.01 0 010 96zm200 0a48.01 48.01 0 010-96 48.01 48.01 0 010 96z",fill:e}},{tag:"path",attrs:{d:"M664 512a48 48 0 1096 0 48 48 0 10-96 0zm-400 0a48 48 0 1096 0 48 48 0 10-96 0z",fill:t}},{tag:"path",attrs:{d:"M925.2 338.4c-22.6-53.7-55-101.9-96.3-143.3a444.35 444.35 0 00-143.3-96.3C630.6 75.7 572.2 64 512 64h-2c-60.6.3-119.3 12.3-174.5 35.9a445.35 445.35 0 00-142 96.5c-40.9 41.3-73 89.3-95.2 142.8-23 55.4-34.6 114.3-34.3 174.9A449.4 449.4 0 00112 714v152a46 46 0 0046 46h152.1A449.4 449.4 0 00510 960h2.1c59.9 0 118-11.6 172.7-34.3a444.48 444.48 0 00142.8-95.2c41.3-40.9 73.8-88.7 96.5-142 23.6-55.2 35.6-113.9 35.9-174.5.3-60.9-11.5-120-34.8-175.6zm-151.1 438C704 845.8 611 884 512 884h-1.7c-60.3-.3-120.2-15.3-173.1-43.5l-8.4-4.5H188V695.2l-4.5-8.4C155.3 633.9 140.3 574 140 513.7c-.4-99.7 37.7-193.3 107.6-263.8 69.8-70.5 163.1-109.5 262.8-109.9h1.7c50 0 98.5 9.7 144.2 28.9 44.6 18.7 84.6 45.6 119 80 34.3 34.3 61.3 74.4 80 119 19.4 46.2 29.1 95.2 28.9 145.8-.6 99.6-39.7 192.9-110.1 262.7z",fill:t}},{tag:"path",attrs:{d:"M464 512a48 48 0 1096 0 48 48 0 10-96 0z",fill:t}}]}},name:"message",theme:"twotone"},a=i(84089),c=r.forwardRef(function(t,e){return r.createElement(a.Z,(0,n.Z)({},t,{ref:e,icon:o}))})},18754:function(t,e,i){i.d(e,{Z:function(){return c}});var n=i(87462),r=i(67294),o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M865.3 244.7c-.3-.3-61.1 59.8-182.1 180.6l-84.9-84.9 180.9-180.9c-95.2-57.3-217.5-42.6-296.8 36.7A244.42 244.42 0 00419 432l1.8 6.7-283.5 283.4c-6.2 6.2-6.2 16.4 0 22.6l141.4 141.4c6.2 6.2 16.4 6.2 22.6 0l283.3-283.3 6.7 1.8c83.7 22.3 173.6-.9 236-63.3 79.4-79.3 94.1-201.6 38-296.6z"}}]},name:"tool",theme:"filled"},a=i(84089),c=r.forwardRef(function(t,e){return r.createElement(a.Z,(0,n.Z)({},t,{ref:e,icon:o}))})},28058:function(t,e,i){i.d(e,{Z:function(){return c}});var n=i(87462),r=i(67294),o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M464 720a48 48 0 1096 0 48 48 0 10-96 0zm16-304v184c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V416c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8zm475.7 440l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zm-783.5-27.9L512 239.9l339.8 588.2H172.2z"}}]},name:"warning",theme:"outlined"},a=i(84089),c=r.forwardRef(function(t,e){return r.createElement(a.Z,(0,n.Z)({},t,{ref:e,icon:o}))})},15746:function(t,e,i){var n=i(21584);e.Z=n.Z},96074:function(t,e,i){i.d(e,{Z:function(){return m}});var n=i(94184),r=i.n(n),o=i(67294),a=i(53124),c=i(14747),l=i(67968),s=i(45503);let d=t=>{let{componentCls:e,sizePaddingEdgeHorizontal:i,colorSplit:n,lineWidth:r}=t;return{[e]:Object.assign(Object.assign({},(0,c.Wf)(t)),{borderBlockStart:`${r}px solid ${n}`,"&-vertical":{position:"relative",top:"-0.06em",display:"inline-block",height:"0.9em",margin:`0 ${t.dividerVerticalGutterMargin}px`,verticalAlign:"middle",borderTop:0,borderInlineStart:`${r}px solid ${n}`},"&-horizontal":{display:"flex",clear:"both",width:"100%",minWidth:"100%",margin:`${t.dividerHorizontalGutterMargin}px 0`},[`&-horizontal${e}-with-text`]:{display:"flex",alignItems:"center",margin:`${t.dividerHorizontalWithTextGutterMargin}px 0`,color:t.colorTextHeading,fontWeight:500,fontSize:t.fontSizeLG,whiteSpace:"nowrap",textAlign:"center",borderBlockStart:`0 ${n}`,"&::before, &::after":{position:"relative",width:"50%",borderBlockStart:`${r}px solid transparent`,borderBlockStartColor:"inherit",borderBlockEnd:0,transform:"translateY(50%)",content:"''"}},[`&-horizontal${e}-with-text-left`]:{"&::before":{width:"5%"},"&::after":{width:"95%"}},[`&-horizontal${e}-with-text-right`]:{"&::before":{width:"95%"},"&::after":{width:"5%"}},[`${e}-inner-text`]:{display:"inline-block",padding:"0 1em"},"&-dashed":{background:"none",borderColor:n,borderStyle:"dashed",borderWidth:`${r}px 0 0`},[`&-horizontal${e}-with-text${e}-dashed`]:{"&::before, &::after":{borderStyle:"dashed none none"}},[`&-vertical${e}-dashed`]:{borderInlineStartWidth:r,borderInlineEnd:0,borderBlockStart:0,borderBlockEnd:0},[`&-plain${e}-with-text`]:{color:t.colorText,fontWeight:"normal",fontSize:t.fontSize},[`&-horizontal${e}-with-text-left${e}-no-default-orientation-margin-left`]:{"&::before":{width:0},"&::after":{width:"100%"},[`${e}-inner-text`]:{paddingInlineStart:i}},[`&-horizontal${e}-with-text-right${e}-no-default-orientation-margin-right`]:{"&::before":{width:"100%"},"&::after":{width:0},[`${e}-inner-text`]:{paddingInlineEnd:i}}})}};var h=(0,l.Z)("Divider",t=>{let e=(0,s.TS)(t,{dividerVerticalGutterMargin:t.marginXS,dividerHorizontalWithTextGutterMargin:t.margin,dividerHorizontalGutterMargin:t.marginLG});return[d(e)]},{sizePaddingEdgeHorizontal:0}),g=function(t,e){var i={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&0>e.indexOf(n)&&(i[n]=t[n]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,n=Object.getOwnPropertySymbols(t);re.indexOf(n[r])&&Object.prototype.propertyIsEnumerable.call(t,n[r])&&(i[n[r]]=t[n[r]]);return i},m=t=>{let{getPrefixCls:e,direction:i,divider:n}=o.useContext(a.E_),{prefixCls:c,type:l="horizontal",orientation:s="center",orientationMargin:d,className:m,rootClassName:p,children:u,dashed:$,plain:f,style:b}=t,v=g(t,["prefixCls","type","orientation","orientationMargin","className","rootClassName","children","dashed","plain","style"]),S=e("divider",c),[w,x]=h(S),I=s.length>0?`-${s}`:s,y=!!u,z="left"===s&&null!=d,C="right"===s&&null!=d,M=r()(S,null==n?void 0:n.className,x,`${S}-${l}`,{[`${S}-with-text`]:y,[`${S}-with-text${I}`]:y,[`${S}-dashed`]:!!$,[`${S}-plain`]:!!f,[`${S}-rtl`]:"rtl"===i,[`${S}-no-default-orientation-margin-left`]:z,[`${S}-no-default-orientation-margin-right`]:C},m,p),k=o.useMemo(()=>"number"==typeof d?d:/^\d+$/.test(d)?Number(d):d,[d]),E=Object.assign(Object.assign({},z&&{marginLeft:k}),C&&{marginRight:k});return w(o.createElement("div",Object.assign({className:M,style:Object.assign(Object.assign({},null==n?void 0:n.style),b)},v,{role:"separator"}),u&&"vertical"!==l&&o.createElement("span",{className:`${S}-inner-text`,style:E},u)))}},25378:function(t,e,i){var n=i(67294),r=i(8410),o=i(57838),a=i(74443);e.Z=function(){let t=!(arguments.length>0)||void 0===arguments[0]||arguments[0],e=(0,n.useRef)({}),i=(0,o.Z)(),c=(0,a.Z)();return(0,r.Z)(()=>{let n=c.subscribe(n=>{e.current=n,t&&i()});return()=>c.unsubscribe(n)},[]),e.current}},74627:function(t,e,i){i.d(e,{Z:function(){return M}});var n=i(94184),r=i.n(n),o=i(67294);let a=t=>t?"function"==typeof t?t():t:null;var c=i(33603),l=i(53124),s=i(83062),d=i(92419),h=i(14747),g=i(50438),m=i(77786),p=i(8796),u=i(67968),$=i(45503);let f=t=>{let{componentCls:e,popoverColor:i,minWidth:n,fontWeightStrong:r,popoverPadding:o,boxShadowSecondary:a,colorTextHeading:c,borderRadiusLG:l,zIndexPopup:s,marginXS:d,colorBgElevated:g,popoverBg:p}=t;return[{[e]:Object.assign(Object.assign({},(0,h.Wf)(t)),{position:"absolute",top:0,left:{_skip_check_:!0,value:0},zIndex:s,fontWeight:"normal",whiteSpace:"normal",textAlign:"start",cursor:"auto",userSelect:"text",transformOrigin:"var(--arrow-x, 50%) var(--arrow-y, 50%)","--antd-arrow-background-color":g,"&-rtl":{direction:"rtl"},"&-hidden":{display:"none"},[`${e}-content`]:{position:"relative"},[`${e}-inner`]:{backgroundColor:p,backgroundClip:"padding-box",borderRadius:l,boxShadow:a,padding:o},[`${e}-title`]:{minWidth:n,marginBottom:d,color:c,fontWeight:r},[`${e}-inner-content`]:{color:i}})},(0,m.ZP)(t,{colorBg:"var(--antd-arrow-background-color)"}),{[`${e}-pure`]:{position:"relative",maxWidth:"none",margin:t.sizePopupArrow,display:"inline-block",[`${e}-content`]:{display:"inline-block"}}}]},b=t=>{let{componentCls:e}=t;return{[e]:p.i.map(i=>{let n=t[`${i}6`];return{[`&${e}-${i}`]:{"--antd-arrow-background-color":n,[`${e}-inner`]:{backgroundColor:n},[`${e}-arrow`]:{background:"transparent"}}}})}},v=t=>{let{componentCls:e,lineWidth:i,lineType:n,colorSplit:r,paddingSM:o,controlHeight:a,fontSize:c,lineHeight:l,padding:s}=t,d=a-Math.round(c*l);return{[e]:{[`${e}-inner`]:{padding:0},[`${e}-title`]:{margin:0,padding:`${d/2}px ${s}px ${d/2-i}px`,borderBottom:`${i}px ${n} ${r}`},[`${e}-inner-content`]:{padding:`${o}px ${s}px`}}}};var S=(0,u.Z)("Popover",t=>{let{colorBgElevated:e,colorText:i,wireframe:n}=t,r=(0,$.TS)(t,{popoverPadding:12,popoverBg:e,popoverColor:i});return[f(r),b(r),n&&v(r),(0,g._y)(r,"zoom-big")]},t=>({width:177,minWidth:177,zIndexPopup:t.zIndexPopupBase+30}),{deprecatedTokens:[["width","minWidth"]]}),w=function(t,e){var i={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&0>e.indexOf(n)&&(i[n]=t[n]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,n=Object.getOwnPropertySymbols(t);re.indexOf(n[r])&&Object.prototype.propertyIsEnumerable.call(t,n[r])&&(i[n[r]]=t[n[r]]);return i};let x=(t,e,i)=>{if(e||i)return o.createElement(o.Fragment,null,e&&o.createElement("div",{className:`${t}-title`},a(e)),o.createElement("div",{className:`${t}-inner-content`},a(i)))},I=t=>{let{hashId:e,prefixCls:i,className:n,style:a,placement:c="top",title:l,content:s,children:h}=t;return o.createElement("div",{className:r()(e,i,`${i}-pure`,`${i}-placement-${c}`,n),style:a},o.createElement("div",{className:`${i}-arrow`}),o.createElement(d.G,Object.assign({},t,{className:e,prefixCls:i}),h||x(i,l,s)))};var y=function(t,e){var i={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&0>e.indexOf(n)&&(i[n]=t[n]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,n=Object.getOwnPropertySymbols(t);re.indexOf(n[r])&&Object.prototype.propertyIsEnumerable.call(t,n[r])&&(i[n[r]]=t[n[r]]);return i};let z=t=>{let{title:e,content:i,prefixCls:n}=t;return o.createElement(o.Fragment,null,e&&o.createElement("div",{className:`${n}-title`},a(e)),o.createElement("div",{className:`${n}-inner-content`},a(i)))},C=o.forwardRef((t,e)=>{let{prefixCls:i,title:n,content:a,overlayClassName:d,placement:h="top",trigger:g="hover",mouseEnterDelay:m=.1,mouseLeaveDelay:p=.1,overlayStyle:u={}}=t,$=y(t,["prefixCls","title","content","overlayClassName","placement","trigger","mouseEnterDelay","mouseLeaveDelay","overlayStyle"]),{getPrefixCls:f}=o.useContext(l.E_),b=f("popover",i),[v,w]=S(b),x=f(),I=r()(d,w);return v(o.createElement(s.Z,Object.assign({placement:h,trigger:g,mouseEnterDelay:m,mouseLeaveDelay:p,overlayStyle:u},$,{prefixCls:b,overlayClassName:I,ref:e,overlay:n||a?o.createElement(z,{prefixCls:b,title:n,content:a}):null,transitionName:(0,c.m)(x,"zoom-big",$.transitionName),"data-popover-inject":!0})))});C._InternalPanelDoNotUseOrYouWillBeFired=t=>{let{prefixCls:e}=t,i=w(t,["prefixCls"]),{getPrefixCls:n}=o.useContext(l.E_),r=n("popover",e),[a,c]=S(r);return a(o.createElement(I,Object.assign({},i,{prefixCls:r,hashId:c})))};var M=C},71230:function(t,e,i){var n=i(92820);e.Z=n.Z},3363:function(t,e,i){i.d(e,{Z:function(){return G}});var n,r,o=i(63606),a=i(97937),c=i(94184),l=i.n(c),s=i(87462),d=i(1413),h=i(4942),g=i(45987),m=i(67294),p=i(15105),u=["className","prefixCls","style","active","status","iconPrefix","icon","wrapperStyle","stepNumber","disabled","description","title","subTitle","progressDot","stepIcon","tailContent","icons","stepIndex","onStepClick","onClick","render"];function $(t){return"string"==typeof t}var f=function(t){var e,i,n,r,o,a=t.className,c=t.prefixCls,f=t.style,b=t.active,v=t.status,S=t.iconPrefix,w=t.icon,x=(t.wrapperStyle,t.stepNumber),I=t.disabled,y=t.description,z=t.title,C=t.subTitle,M=t.progressDot,k=t.stepIcon,E=t.tailContent,Z=t.icons,H=t.stepIndex,O=t.onStepClick,P=t.onClick,j=t.render,N=(0,g.Z)(t,u),W={};O&&!I&&(W.role="button",W.tabIndex=0,W.onClick=function(t){null==P||P(t),O(H)},W.onKeyDown=function(t){var e=t.which;(e===p.Z.ENTER||e===p.Z.SPACE)&&O(H)});var T=v||"wait",X=l()("".concat(c,"-item"),"".concat(c,"-item-").concat(T),a,(o={},(0,h.Z)(o,"".concat(c,"-item-custom"),w),(0,h.Z)(o,"".concat(c,"-item-active"),b),(0,h.Z)(o,"".concat(c,"-item-disabled"),!0===I),o)),B=(0,d.Z)({},f),D=m.createElement("div",(0,s.Z)({},N,{className:X,style:B}),m.createElement("div",(0,s.Z)({onClick:P},W,{className:"".concat(c,"-item-container")}),m.createElement("div",{className:"".concat(c,"-item-tail")},E),m.createElement("div",{className:"".concat(c,"-item-icon")},(n=l()("".concat(c,"-icon"),"".concat(S,"icon"),(e={},(0,h.Z)(e,"".concat(S,"icon-").concat(w),w&&$(w)),(0,h.Z)(e,"".concat(S,"icon-check"),!w&&"finish"===v&&(Z&&!Z.finish||!Z)),(0,h.Z)(e,"".concat(S,"icon-cross"),!w&&"error"===v&&(Z&&!Z.error||!Z)),e)),r=m.createElement("span",{className:"".concat(c,"-icon-dot")}),i=M?"function"==typeof M?m.createElement("span",{className:"".concat(c,"-icon")},M(r,{index:x-1,status:v,title:z,description:y})):m.createElement("span",{className:"".concat(c,"-icon")},r):w&&!$(w)?m.createElement("span",{className:"".concat(c,"-icon")},w):Z&&Z.finish&&"finish"===v?m.createElement("span",{className:"".concat(c,"-icon")},Z.finish):Z&&Z.error&&"error"===v?m.createElement("span",{className:"".concat(c,"-icon")},Z.error):w||"finish"===v||"error"===v?m.createElement("span",{className:n}):m.createElement("span",{className:"".concat(c,"-icon")},x),k&&(i=k({index:x-1,status:v,title:z,description:y,node:i})),i)),m.createElement("div",{className:"".concat(c,"-item-content")},m.createElement("div",{className:"".concat(c,"-item-title")},z,C&&m.createElement("div",{title:"string"==typeof C?C:void 0,className:"".concat(c,"-item-subtitle")},C)),y&&m.createElement("div",{className:"".concat(c,"-item-description")},y))));return j&&(D=j(D)||null),D},b=["prefixCls","style","className","children","direction","type","labelPlacement","iconPrefix","status","size","current","progressDot","stepIcon","initial","icons","onChange","itemRender","items"];function v(t){var e,i=t.prefixCls,n=void 0===i?"rc-steps":i,r=t.style,o=void 0===r?{}:r,a=t.className,c=(t.children,t.direction),p=t.type,u=void 0===p?"default":p,$=t.labelPlacement,v=t.iconPrefix,S=void 0===v?"rc":v,w=t.status,x=void 0===w?"process":w,I=t.size,y=t.current,z=void 0===y?0:y,C=t.progressDot,M=t.stepIcon,k=t.initial,E=void 0===k?0:k,Z=t.icons,H=t.onChange,O=t.itemRender,P=t.items,j=(0,g.Z)(t,b),N="inline"===u,W=N||void 0!==C&&C,T=N?"horizontal":void 0===c?"horizontal":c,X=N?void 0:I,B=W?"vertical":void 0===$?"horizontal":$,D=l()(n,"".concat(n,"-").concat(T),a,(e={},(0,h.Z)(e,"".concat(n,"-").concat(X),X),(0,h.Z)(e,"".concat(n,"-label-").concat(B),"horizontal"===T),(0,h.Z)(e,"".concat(n,"-dot"),!!W),(0,h.Z)(e,"".concat(n,"-navigation"),"navigation"===u),(0,h.Z)(e,"".concat(n,"-inline"),N),e)),R=function(t){H&&z!==t&&H(t)};return m.createElement("div",(0,s.Z)({className:D,style:o},j),(void 0===P?[]:P).filter(function(t){return t}).map(function(t,e){var i=(0,d.Z)({},t),r=E+e;return"error"===x&&e===z-1&&(i.className="".concat(n,"-next-error")),i.status||(r===z?i.status=x:r{let{componentCls:e,customIconTop:i,customIconSize:n,customIconFontSize:r}=t;return{[`${e}-item-custom`]:{[`> ${e}-item-container > ${e}-item-icon`]:{height:"auto",background:"none",border:0,[`> ${e}-icon`]:{top:i,width:n,height:n,fontSize:r,lineHeight:`${r}px`}}},[`&:not(${e}-vertical)`]:{[`${e}-item-custom`]:{[`${e}-item-icon`]:{width:"auto",background:"none"}}}}},E=t=>{let{componentCls:e,inlineDotSize:i,inlineTitleColor:n,inlineTailColor:r}=t,o=t.paddingXS+t.lineWidth,a={[`${e}-item-container ${e}-item-content ${e}-item-title`]:{color:n}};return{[`&${e}-inline`]:{width:"auto",display:"inline-flex",[`${e}-item`]:{flex:"none","&-container":{padding:`${o}px ${t.paddingXXS}px 0`,margin:`0 ${t.marginXXS/2}px`,borderRadius:t.borderRadiusSM,cursor:"pointer",transition:`background-color ${t.motionDurationMid}`,"&:hover":{background:t.controlItemBgHover},"&[role='button']:hover":{opacity:1}},"&-icon":{width:i,height:i,marginInlineStart:`calc(50% - ${i/2}px)`,[`> ${e}-icon`]:{top:0},[`${e}-icon-dot`]:{borderRadius:t.fontSizeSM/4}},"&-content":{width:"auto",marginTop:t.marginXS-t.lineWidth},"&-title":{color:n,fontSize:t.fontSizeSM,lineHeight:t.lineHeightSM,fontWeight:"normal",marginBottom:t.marginXXS/2},"&-description":{display:"none"},"&-tail":{marginInlineStart:0,top:o+i/2,transform:"translateY(-50%)","&:after":{width:"100%",height:t.lineWidth,borderRadius:0,marginInlineStart:0,background:r}},[`&:first-child ${e}-item-tail`]:{width:"50%",marginInlineStart:"50%"},[`&:last-child ${e}-item-tail`]:{display:"block",width:"50%"},"&-wait":Object.assign({[`${e}-item-icon ${e}-icon ${e}-icon-dot`]:{backgroundColor:t.colorBorderBg,border:`${t.lineWidth}px ${t.lineType} ${r}`}},a),"&-finish":Object.assign({[`${e}-item-tail::after`]:{backgroundColor:r},[`${e}-item-icon ${e}-icon ${e}-icon-dot`]:{backgroundColor:r,border:`${t.lineWidth}px ${t.lineType} ${r}`}},a),"&-error":a,"&-active, &-process":Object.assign({[`${e}-item-icon`]:{width:i,height:i,marginInlineStart:`calc(50% - ${i/2}px)`,top:0}},a),[`&:not(${e}-item-active) > ${e}-item-container[role='button']:hover`]:{[`${e}-item-title`]:{color:n}}}}}},Z=t=>{let{componentCls:e,iconSize:i,lineHeight:n,iconSizeSM:r}=t;return{[`&${e}-label-vertical`]:{[`${e}-item`]:{overflow:"visible","&-tail":{marginInlineStart:i/2+t.controlHeightLG,padding:`${t.paddingXXS}px ${t.paddingLG}px`},"&-content":{display:"block",width:(i/2+t.controlHeightLG)*2,marginTop:t.marginSM,textAlign:"center"},"&-icon":{display:"inline-block",marginInlineStart:t.controlHeightLG},"&-title":{paddingInlineEnd:0,paddingInlineStart:0,"&::after":{display:"none"}},"&-subtitle":{display:"block",marginBottom:t.marginXXS,marginInlineStart:0,lineHeight:n}},[`&${e}-small:not(${e}-dot)`]:{[`${e}-item`]:{"&-icon":{marginInlineStart:t.controlHeightLG+(i-r)/2}}}}}},H=t=>{let{componentCls:e,navContentMaxWidth:i,navArrowColor:n,stepsNavActiveColor:r,motionDurationSlow:o}=t;return{[`&${e}-navigation`]:{paddingTop:t.paddingSM,[`&${e}-small`]:{[`${e}-item`]:{"&-container":{marginInlineStart:-t.marginSM}}},[`${e}-item`]:{overflow:"visible",textAlign:"center","&-container":{display:"inline-block",height:"100%",marginInlineStart:-t.margin,paddingBottom:t.paddingSM,textAlign:"start",transition:`opacity ${o}`,[`${e}-item-content`]:{maxWidth:i},[`${e}-item-title`]:Object.assign(Object.assign({maxWidth:"100%",paddingInlineEnd:0},z.vS),{"&::after":{display:"none"}})},[`&:not(${e}-item-active)`]:{[`${e}-item-container[role='button']`]:{cursor:"pointer","&:hover":{opacity:.85}}},"&:last-child":{flex:1,"&::after":{display:"none"}},"&::after":{position:"absolute",top:`calc(50% - ${t.paddingSM/2}px)`,insetInlineStart:"100%",display:"inline-block",width:t.fontSizeIcon,height:t.fontSizeIcon,borderTop:`${t.lineWidth}px ${t.lineType} ${n}`,borderBottom:"none",borderInlineStart:"none",borderInlineEnd:`${t.lineWidth}px ${t.lineType} ${n}`,transform:"translateY(-50%) translateX(-50%) rotate(45deg)",content:'""'},"&::before":{position:"absolute",bottom:0,insetInlineStart:"50%",display:"inline-block",width:0,height:t.lineWidthBold,backgroundColor:r,transition:`width ${o}, inset-inline-start ${o}`,transitionTimingFunction:"ease-out",content:'""'}},[`${e}-item${e}-item-active::before`]:{insetInlineStart:0,width:"100%"}},[`&${e}-navigation${e}-vertical`]:{[`> ${e}-item`]:{marginInlineEnd:0,"&::before":{display:"none"},[`&${e}-item-active::before`]:{top:0,insetInlineEnd:0,insetInlineStart:"unset",display:"block",width:3*t.lineWidth,height:`calc(100% - ${t.marginLG}px)`},"&::after":{position:"relative",insetInlineStart:"50%",display:"block",width:.25*t.controlHeight,height:.25*t.controlHeight,marginBottom:t.marginXS,textAlign:"center",transform:"translateY(-50%) translateX(-50%) rotate(135deg)"},"&:last-child":{"&::after":{display:"none"}},[`> ${e}-item-container > ${e}-item-tail`]:{visibility:"hidden"}}},[`&${e}-navigation${e}-horizontal`]:{[`> ${e}-item > ${e}-item-container > ${e}-item-tail`]:{visibility:"hidden"}}}},O=t=>{let{antCls:e,componentCls:i}=t;return{[`&${i}-with-progress`]:{[`${i}-item`]:{paddingTop:t.paddingXXS,[`&-process ${i}-item-container ${i}-item-icon ${i}-icon`]:{color:t.processIconColor}},[`&${i}-vertical > ${i}-item `]:{paddingInlineStart:t.paddingXXS,[`> ${i}-item-container > ${i}-item-tail`]:{top:t.marginXXS,insetInlineStart:t.iconSize/2-t.lineWidth+t.paddingXXS}},[`&, &${i}-small`]:{[`&${i}-horizontal ${i}-item:first-child`]:{paddingBottom:t.paddingXXS,paddingInlineStart:t.paddingXXS}},[`&${i}-small${i}-vertical > ${i}-item > ${i}-item-container > ${i}-item-tail`]:{insetInlineStart:t.iconSizeSM/2-t.lineWidth+t.paddingXXS},[`&${i}-label-vertical`]:{[`${i}-item ${i}-item-tail`]:{top:t.margin-2*t.lineWidth}},[`${i}-item-icon`]:{position:"relative",[`${e}-progress`]:{position:"absolute",insetBlockStart:(t.iconSize-t.stepsProgressSize-2*t.lineWidth)/2,insetInlineStart:(t.iconSize-t.stepsProgressSize-2*t.lineWidth)/2}}}}},P=t=>{let{componentCls:e,descriptionMaxWidth:i,lineHeight:n,dotCurrentSize:r,dotSize:o,motionDurationSlow:a}=t;return{[`&${e}-dot, &${e}-dot${e}-small`]:{[`${e}-item`]:{"&-title":{lineHeight:n},"&-tail":{top:Math.floor((t.dotSize-3*t.lineWidth)/2),width:"100%",marginTop:0,marginBottom:0,marginInline:`${i/2}px 0`,padding:0,"&::after":{width:`calc(100% - ${2*t.marginSM}px)`,height:3*t.lineWidth,marginInlineStart:t.marginSM}},"&-icon":{width:o,height:o,marginInlineStart:(t.descriptionMaxWidth-o)/2,paddingInlineEnd:0,lineHeight:`${o}px`,background:"transparent",border:0,[`${e}-icon-dot`]:{position:"relative",float:"left",width:"100%",height:"100%",borderRadius:100,transition:`all ${a}`,"&::after":{position:"absolute",top:-t.marginSM,insetInlineStart:(o-1.5*t.controlHeightLG)/2,width:1.5*t.controlHeightLG,height:t.controlHeight,background:"transparent",content:'""'}}},"&-content":{width:i},[`&-process ${e}-item-icon`]:{position:"relative",top:(o-r)/2,width:r,height:r,lineHeight:`${r}px`,background:"none",marginInlineStart:(t.descriptionMaxWidth-r)/2},[`&-process ${e}-icon`]:{[`&:first-child ${e}-icon-dot`]:{insetInlineStart:0}}}},[`&${e}-vertical${e}-dot`]:{[`${e}-item-icon`]:{marginTop:(t.controlHeight-o)/2,marginInlineStart:0,background:"none"},[`${e}-item-process ${e}-item-icon`]:{marginTop:(t.controlHeight-r)/2,top:0,insetInlineStart:(o-r)/2,marginInlineStart:0},[`${e}-item > ${e}-item-container > ${e}-item-tail`]:{top:(t.controlHeight-o)/2,insetInlineStart:0,margin:0,padding:`${o+t.paddingXS}px 0 ${t.paddingXS}px`,"&::after":{marginInlineStart:(o-t.lineWidth)/2}},[`&${e}-small`]:{[`${e}-item-icon`]:{marginTop:(t.controlHeightSM-o)/2},[`${e}-item-process ${e}-item-icon`]:{marginTop:(t.controlHeightSM-r)/2},[`${e}-item > ${e}-item-container > ${e}-item-tail`]:{top:(t.controlHeightSM-o)/2}},[`${e}-item:first-child ${e}-icon-dot`]:{insetInlineStart:0},[`${e}-item-content`]:{width:"inherit"}}}},j=t=>{let{componentCls:e}=t;return{[`&${e}-rtl`]:{direction:"rtl",[`${e}-item`]:{"&-subtitle":{float:"left"}},[`&${e}-navigation`]:{[`${e}-item::after`]:{transform:"rotate(-45deg)"}},[`&${e}-vertical`]:{[`> ${e}-item`]:{"&::after":{transform:"rotate(225deg)"},[`${e}-item-icon`]:{float:"right"}}},[`&${e}-dot`]:{[`${e}-item-icon ${e}-icon-dot, &${e}-small ${e}-item-icon ${e}-icon-dot`]:{float:"right"}}}}},N=t=>{let{componentCls:e,iconSizeSM:i,fontSizeSM:n,fontSize:r,colorTextDescription:o}=t;return{[`&${e}-small`]:{[`&${e}-horizontal:not(${e}-label-vertical) ${e}-item`]:{paddingInlineStart:t.paddingSM,"&:first-child":{paddingInlineStart:0}},[`${e}-item-icon`]:{width:i,height:i,marginTop:0,marginBottom:0,marginInline:`0 ${t.marginXS}px`,fontSize:n,lineHeight:`${i}px`,textAlign:"center",borderRadius:i},[`${e}-item-title`]:{paddingInlineEnd:t.paddingSM,fontSize:r,lineHeight:`${i}px`,"&::after":{top:i/2}},[`${e}-item-description`]:{color:o,fontSize:r},[`${e}-item-tail`]:{top:i/2-t.paddingXXS},[`${e}-item-custom ${e}-item-icon`]:{width:"inherit",height:"inherit",lineHeight:"inherit",background:"none",border:0,borderRadius:0,[`> ${e}-icon`]:{fontSize:i,lineHeight:`${i}px`,transform:"none"}}}}},W=t=>{let{componentCls:e,iconSizeSM:i,iconSize:n}=t;return{[`&${e}-vertical`]:{display:"flex",flexDirection:"column",[`> ${e}-item`]:{display:"block",flex:"1 0 auto",paddingInlineStart:0,overflow:"visible",[`${e}-item-icon`]:{float:"left",marginInlineEnd:t.margin},[`${e}-item-content`]:{display:"block",minHeight:1.5*t.controlHeight,overflow:"hidden"},[`${e}-item-title`]:{lineHeight:`${n}px`},[`${e}-item-description`]:{paddingBottom:t.paddingSM}},[`> ${e}-item > ${e}-item-container > ${e}-item-tail`]:{position:"absolute",top:0,insetInlineStart:n/2-t.lineWidth,width:t.lineWidth,height:"100%",padding:`${n+1.5*t.marginXXS}px 0 ${1.5*t.marginXXS}px`,"&::after":{width:t.lineWidth,height:"100%"}},[`> ${e}-item:not(:last-child) > ${e}-item-container > ${e}-item-tail`]:{display:"block"},[` > ${e}-item > ${e}-item-container > ${e}-item-content > ${e}-item-title`]:{"&::after":{display:"none"}},[`&${e}-small ${e}-item-container`]:{[`${e}-item-tail`]:{position:"absolute",top:0,insetInlineStart:i/2-t.lineWidth,padding:`${i+1.5*t.marginXXS}px 0 ${1.5*t.marginXXS}px`},[`${e}-item-title`]:{lineHeight:`${i}px`}}}}};(n=r||(r={})).wait="wait",n.process="process",n.finish="finish",n.error="error";let T=(t,e)=>{let i=`${e.componentCls}-item`,n=`${t}IconColor`,r=`${t}TitleColor`,o=`${t}DescriptionColor`,a=`${t}TailColor`,c=`${t}IconBgColor`,l=`${t}IconBorderColor`,s=`${t}DotColor`;return{[`${i}-${t} ${i}-icon`]:{backgroundColor:e[c],borderColor:e[l],[`> ${e.componentCls}-icon`]:{color:e[n],[`${e.componentCls}-icon-dot`]:{background:e[s]}}},[`${i}-${t}${i}-custom ${i}-icon`]:{[`> ${e.componentCls}-icon`]:{color:e[s]}},[`${i}-${t} > ${i}-container > ${i}-content > ${i}-title`]:{color:e[r],"&::after":{backgroundColor:e[a]}},[`${i}-${t} > ${i}-container > ${i}-content > ${i}-description`]:{color:e[o]},[`${i}-${t} > ${i}-container > ${i}-tail::after`]:{backgroundColor:e[a]}}},X=t=>{let{componentCls:e,motionDurationSlow:i}=t,n=`${e}-item`,o=`${n}-icon`;return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({[n]:{position:"relative",display:"inline-block",flex:1,overflow:"hidden",verticalAlign:"top","&:last-child":{flex:"none",[`> ${n}-container > ${n}-tail, > ${n}-container > ${n}-content > ${n}-title::after`]:{display:"none"}}},[`${n}-container`]:{outline:"none","&:focus-visible":{[o]:Object.assign({},(0,z.oN)(t))}},[`${o}, ${n}-content`]:{display:"inline-block",verticalAlign:"top"},[o]:{width:t.iconSize,height:t.iconSize,marginTop:0,marginBottom:0,marginInlineStart:0,marginInlineEnd:t.marginXS,fontSize:t.iconFontSize,fontFamily:t.fontFamily,lineHeight:`${t.iconSize}px`,textAlign:"center",borderRadius:t.iconSize,border:`${t.lineWidth}px ${t.lineType} transparent`,transition:`background-color ${i}, border-color ${i}`,[`${e}-icon`]:{position:"relative",top:t.iconTop,color:t.colorPrimary,lineHeight:1}},[`${n}-tail`]:{position:"absolute",top:t.iconSize/2-t.paddingXXS,insetInlineStart:0,width:"100%","&::after":{display:"inline-block",width:"100%",height:t.lineWidth,background:t.colorSplit,borderRadius:t.lineWidth,transition:`background ${i}`,content:'""'}},[`${n}-title`]:{position:"relative",display:"inline-block",paddingInlineEnd:t.padding,color:t.colorText,fontSize:t.fontSizeLG,lineHeight:`${t.titleLineHeight}px`,"&::after":{position:"absolute",top:t.titleLineHeight/2,insetInlineStart:"100%",display:"block",width:9999,height:t.lineWidth,background:t.processTailColor,content:'""'}},[`${n}-subtitle`]:{display:"inline",marginInlineStart:t.marginXS,color:t.colorTextDescription,fontWeight:"normal",fontSize:t.fontSize},[`${n}-description`]:{color:t.colorTextDescription,fontSize:t.fontSize}},T(r.wait,t)),T(r.process,t)),{[`${n}-process > ${n}-container > ${n}-title`]:{fontWeight:t.fontWeightStrong}}),T(r.finish,t)),T(r.error,t)),{[`${n}${e}-next-error > ${e}-item-title::after`]:{background:t.colorError},[`${n}-disabled`]:{cursor:"not-allowed"}})},B=t=>{let{componentCls:e,motionDurationSlow:i}=t;return{[`& ${e}-item`]:{[`&:not(${e}-item-active)`]:{[`& > ${e}-item-container[role='button']`]:{cursor:"pointer",[`${e}-item`]:{[`&-title, &-subtitle, &-description, &-icon ${e}-icon`]:{transition:`color ${i}`}},"&:hover":{[`${e}-item`]:{"&-title, &-subtitle, &-description":{color:t.colorPrimary}}}},[`&:not(${e}-item-process)`]:{[`& > ${e}-item-container[role='button']:hover`]:{[`${e}-item`]:{"&-icon":{borderColor:t.colorPrimary,[`${e}-icon`]:{color:t.colorPrimary}}}}}}},[`&${e}-horizontal:not(${e}-label-vertical)`]:{[`${e}-item`]:{paddingInlineStart:t.padding,whiteSpace:"nowrap","&:first-child":{paddingInlineStart:0},[`&:last-child ${e}-item-title`]:{paddingInlineEnd:0},"&-tail":{display:"none"},"&-description":{maxWidth:t.descriptionMaxWidth,whiteSpace:"normal"}}}}},D=t=>{let{componentCls:e}=t;return{[e]:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},(0,z.Wf)(t)),{display:"flex",width:"100%",fontSize:0,textAlign:"initial"}),X(t)),B(t)),k(t)),N(t)),W(t)),Z(t)),P(t)),H(t)),j(t)),O(t)),E(t))}};var R=(0,C.Z)("Steps",t=>{let{wireframe:e,colorTextDisabled:i,controlHeightLG:n,colorTextLightSolid:r,colorText:o,colorPrimary:a,colorTextLabel:c,colorTextDescription:l,colorTextQuaternary:s,colorFillContent:d,controlItemBgActive:h,colorError:g,colorBgContainer:m,colorBorderSecondary:p,colorSplit:u}=t,$=(0,M.TS)(t,{processIconColor:r,processTitleColor:o,processDescriptionColor:o,processIconBgColor:a,processIconBorderColor:a,processDotColor:a,processTailColor:u,waitIconColor:e?i:c,waitTitleColor:l,waitDescriptionColor:l,waitTailColor:u,waitIconBgColor:e?m:d,waitIconBorderColor:e?i:"transparent",waitDotColor:i,finishIconColor:a,finishTitleColor:o,finishDescriptionColor:l,finishTailColor:a,finishIconBgColor:e?m:h,finishIconBorderColor:e?a:h,finishDotColor:a,errorIconColor:r,errorTitleColor:g,errorDescriptionColor:g,errorTailColor:u,errorIconBgColor:g,errorIconBorderColor:g,errorDotColor:g,stepsNavActiveColor:a,stepsProgressSize:n,inlineDotSize:6,inlineTitleColor:s,inlineTailColor:p});return[D($)]},t=>{let{colorTextDisabled:e,fontSize:i,controlHeightSM:n,controlHeight:r,controlHeightLG:o,fontSizeHeading3:a}=t;return{titleLineHeight:r,customIconSize:r,customIconTop:0,customIconFontSize:n,iconSize:r,iconTop:-.5,iconFontSize:i,iconSizeSM:a,dotSize:r/4,dotCurrentSize:o/4,navArrowColor:e,navContentMaxWidth:"auto",descriptionMaxWidth:140}}),L=i(50344),V=function(t,e){var i={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&0>e.indexOf(n)&&(i[n]=t[n]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,n=Object.getOwnPropertySymbols(t);re.indexOf(n[r])&&Object.prototype.propertyIsEnumerable.call(t,n[r])&&(i[n[r]]=t[n[r]]);return i};let A=t=>{let{percent:e,size:i,className:n,rootClassName:r,direction:c,items:s,responsive:d=!0,current:h=0,children:g,style:p}=t,u=V(t,["percent","size","className","rootClassName","direction","items","responsive","current","children","style"]),{xs:$}=(0,x.Z)(d),{getPrefixCls:f,direction:b,steps:z}=m.useContext(S.E_),C=m.useMemo(()=>d&&$?"vertical":c,[$,c]),M=(0,w.Z)(i),k=f("steps",t.prefixCls),[E,Z]=R(k),H="inline"===t.type,O=f("",t.iconPrefix),P=function(t,e){if(t)return t;let i=(0,L.Z)(e).map(t=>{if(m.isValidElement(t)){let{props:e}=t,i=Object.assign({},e);return i}return null});return i.filter(t=>t)}(s,g),j=H?void 0:e,N=Object.assign(Object.assign({},null==z?void 0:z.style),p),W=l()(null==z?void 0:z.className,{[`${k}-rtl`]:"rtl"===b,[`${k}-with-progress`]:void 0!==j},n,r,Z),T={finish:m.createElement(o.Z,{className:`${k}-finish-icon`}),error:m.createElement(a.Z,{className:`${k}-error-icon`})};return E(m.createElement(v,Object.assign({icons:T},u,{style:N,current:h,size:M,items:P,itemRender:H?(t,e)=>t.description?m.createElement(y.Z,{title:t.description},e):e:void 0,stepIcon:t=>{let{node:e,status:i}=t;return"process"===i&&void 0!==j?m.createElement("div",{className:`${k}-progress-icon`},m.createElement(I.Z,{type:"circle",percent:j,size:"small"===M?32:40,strokeWidth:4,format:()=>null}),e):e},direction:C,prefixCls:k,iconPrefix:O,className:W})))};A.Step=v.Step;var G=A},72269:function(t,e,i){i.d(e,{Z:function(){return H}});var n=i(50888),r=i(94184),o=i.n(r),a=i(87462),c=i(4942),l=i(97685),s=i(45987),d=i(67294),h=i(21770),g=i(15105),m=["prefixCls","className","checked","defaultChecked","disabled","loadingIcon","checkedChildren","unCheckedChildren","onClick","onChange","onKeyDown"],p=d.forwardRef(function(t,e){var i,n=t.prefixCls,r=void 0===n?"rc-switch":n,p=t.className,u=t.checked,$=t.defaultChecked,f=t.disabled,b=t.loadingIcon,v=t.checkedChildren,S=t.unCheckedChildren,w=t.onClick,x=t.onChange,I=t.onKeyDown,y=(0,s.Z)(t,m),z=(0,h.Z)(!1,{value:u,defaultValue:$}),C=(0,l.Z)(z,2),M=C[0],k=C[1];function E(t,e){var i=M;return f||(k(i=t),null==x||x(i,e)),i}var Z=o()(r,p,(i={},(0,c.Z)(i,"".concat(r,"-checked"),M),(0,c.Z)(i,"".concat(r,"-disabled"),f),i));return d.createElement("button",(0,a.Z)({},y,{type:"button",role:"switch","aria-checked":M,disabled:f,className:Z,ref:e,onKeyDown:function(t){t.which===g.Z.LEFT?E(!1,t):t.which===g.Z.RIGHT&&E(!0,t),null==I||I(t)},onClick:function(t){var e=E(!M,t);null==w||w(e,t)}}),b,d.createElement("span",{className:"".concat(r,"-inner")},d.createElement("span",{className:"".concat(r,"-inner-checked")},v),d.createElement("span",{className:"".concat(r,"-inner-unchecked")},S)))});p.displayName="Switch";var u=i(45353),$=i(53124),f=i(98866),b=i(98675),v=i(10274),S=i(14747),w=i(67968),x=i(45503);let I=t=>{let{componentCls:e}=t,i=`${e}-inner`;return{[e]:{[`&${e}-small`]:{minWidth:t.switchMinWidthSM,height:t.switchHeightSM,lineHeight:`${t.switchHeightSM}px`,[`${e}-inner`]:{paddingInlineStart:t.switchInnerMarginMaxSM,paddingInlineEnd:t.switchInnerMarginMinSM,[`${i}-checked`]:{marginInlineStart:`calc(-100% + ${t.switchPinSizeSM+2*t.switchPadding}px - ${2*t.switchInnerMarginMaxSM}px)`,marginInlineEnd:`calc(100% - ${t.switchPinSizeSM+2*t.switchPadding}px + ${2*t.switchInnerMarginMaxSM}px)`},[`${i}-unchecked`]:{marginTop:-t.switchHeightSM,marginInlineStart:0,marginInlineEnd:0}},[`${e}-handle`]:{width:t.switchPinSizeSM,height:t.switchPinSizeSM},[`${e}-loading-icon`]:{top:(t.switchPinSizeSM-t.switchLoadingIconSize)/2,fontSize:t.switchLoadingIconSize},[`&${e}-checked`]:{[`${e}-inner`]:{paddingInlineStart:t.switchInnerMarginMinSM,paddingInlineEnd:t.switchInnerMarginMaxSM,[`${i}-checked`]:{marginInlineStart:0,marginInlineEnd:0},[`${i}-unchecked`]:{marginInlineStart:`calc(100% - ${t.switchPinSizeSM+2*t.switchPadding}px + ${2*t.switchInnerMarginMaxSM}px)`,marginInlineEnd:`calc(-100% + ${t.switchPinSizeSM+2*t.switchPadding}px - ${2*t.switchInnerMarginMaxSM}px)`}},[`${e}-handle`]:{insetInlineStart:`calc(100% - ${t.switchPinSizeSM+t.switchPadding}px)`}},[`&:not(${e}-disabled):active`]:{[`&:not(${e}-checked) ${i}`]:{[`${i}-unchecked`]:{marginInlineStart:t.marginXXS/2,marginInlineEnd:-t.marginXXS/2}},[`&${e}-checked ${i}`]:{[`${i}-checked`]:{marginInlineStart:-t.marginXXS/2,marginInlineEnd:t.marginXXS/2}}}}}}},y=t=>{let{componentCls:e}=t;return{[e]:{[`${e}-loading-icon${t.iconCls}`]:{position:"relative",top:(t.switchPinSize-t.fontSize)/2,color:t.switchLoadingIconColor,verticalAlign:"top"},[`&${e}-checked ${e}-loading-icon`]:{color:t.switchColor}}}},z=t=>{let{componentCls:e,motion:i}=t,n=`${e}-handle`;return{[e]:{[n]:{position:"absolute",top:t.switchPadding,insetInlineStart:t.switchPadding,width:t.switchPinSize,height:t.switchPinSize,transition:`all ${t.switchDuration} ease-in-out`,"&::before":{position:"absolute",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,backgroundColor:t.colorWhite,borderRadius:t.switchPinSize/2,boxShadow:t.switchHandleShadow,transition:`all ${t.switchDuration} ease-in-out`,content:'""'}},[`&${e}-checked ${n}`]:{insetInlineStart:`calc(100% - ${t.switchPinSize+t.switchPadding}px)`},[`&:not(${e}-disabled):active`]:i?{[`${n}::before`]:{insetInlineEnd:t.switchHandleActiveInset,insetInlineStart:0},[`&${e}-checked ${n}::before`]:{insetInlineEnd:0,insetInlineStart:t.switchHandleActiveInset}}:{}}}},C=t=>{let{componentCls:e}=t,i=`${e}-inner`;return{[e]:{[i]:{display:"block",overflow:"hidden",borderRadius:100,height:"100%",paddingInlineStart:t.switchInnerMarginMax,paddingInlineEnd:t.switchInnerMarginMin,transition:`padding-inline-start ${t.switchDuration} ease-in-out, padding-inline-end ${t.switchDuration} ease-in-out`,[`${i}-checked, ${i}-unchecked`]:{display:"block",color:t.colorTextLightSolid,fontSize:t.fontSizeSM,transition:`margin-inline-start ${t.switchDuration} ease-in-out, margin-inline-end ${t.switchDuration} ease-in-out`,pointerEvents:"none"},[`${i}-checked`]:{marginInlineStart:`calc(-100% + ${t.switchPinSize+2*t.switchPadding}px - ${2*t.switchInnerMarginMax}px)`,marginInlineEnd:`calc(100% - ${t.switchPinSize+2*t.switchPadding}px + ${2*t.switchInnerMarginMax}px)`},[`${i}-unchecked`]:{marginTop:-t.switchHeight,marginInlineStart:0,marginInlineEnd:0}},[`&${e}-checked ${i}`]:{paddingInlineStart:t.switchInnerMarginMin,paddingInlineEnd:t.switchInnerMarginMax,[`${i}-checked`]:{marginInlineStart:0,marginInlineEnd:0},[`${i}-unchecked`]:{marginInlineStart:`calc(100% - ${t.switchPinSize+2*t.switchPadding}px + ${2*t.switchInnerMarginMax}px)`,marginInlineEnd:`calc(-100% + ${t.switchPinSize+2*t.switchPadding}px - ${2*t.switchInnerMarginMax}px)`}},[`&:not(${e}-disabled):active`]:{[`&:not(${e}-checked) ${i}`]:{[`${i}-unchecked`]:{marginInlineStart:2*t.switchPadding,marginInlineEnd:-(2*t.switchPadding)}},[`&${e}-checked ${i}`]:{[`${i}-checked`]:{marginInlineStart:-(2*t.switchPadding),marginInlineEnd:2*t.switchPadding}}}}}},M=t=>{let{componentCls:e}=t;return{[e]:Object.assign(Object.assign(Object.assign(Object.assign({},(0,S.Wf)(t)),{position:"relative",display:"inline-block",boxSizing:"border-box",minWidth:t.switchMinWidth,height:t.switchHeight,lineHeight:`${t.switchHeight}px`,verticalAlign:"middle",background:t.colorTextQuaternary,border:"0",borderRadius:100,cursor:"pointer",transition:`all ${t.motionDurationMid}`,userSelect:"none",[`&:hover:not(${e}-disabled)`]:{background:t.colorTextTertiary}}),(0,S.Qy)(t)),{[`&${e}-checked`]:{background:t.switchColor,[`&:hover:not(${e}-disabled)`]:{background:t.colorPrimaryHover}},[`&${e}-loading, &${e}-disabled`]:{cursor:"not-allowed",opacity:t.switchDisabledOpacity,"*":{boxShadow:"none",cursor:"not-allowed"}},[`&${e}-rtl`]:{direction:"rtl"}})}};var k=(0,w.Z)("Switch",t=>{let e=t.fontSize*t.lineHeight,i=t.controlHeight/2,n=e-4,r=i-4,o=(0,x.TS)(t,{switchMinWidth:2*n+8,switchHeight:e,switchDuration:t.motionDurationMid,switchColor:t.colorPrimary,switchDisabledOpacity:t.opacityLoading,switchInnerMarginMin:n/2,switchInnerMarginMax:n+2+4,switchPadding:2,switchPinSize:n,switchBg:t.colorBgContainer,switchMinWidthSM:2*r+4,switchHeightSM:i,switchInnerMarginMinSM:r/2,switchInnerMarginMaxSM:r+2+4,switchPinSizeSM:r,switchHandleShadow:`0 2px 4px 0 ${new v.C("#00230b").setAlpha(.2).toRgbString()}`,switchLoadingIconSize:.75*t.fontSizeIcon,switchLoadingIconColor:`rgba(0, 0, 0, ${t.opacityLoading})`,switchHandleActiveInset:"-30%"});return[M(o),C(o),z(o),y(o),I(o)]}),E=function(t,e){var i={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&0>e.indexOf(n)&&(i[n]=t[n]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,n=Object.getOwnPropertySymbols(t);re.indexOf(n[r])&&Object.prototype.propertyIsEnumerable.call(t,n[r])&&(i[n[r]]=t[n[r]]);return i};let Z=d.forwardRef((t,e)=>{let{prefixCls:i,size:r,disabled:a,loading:c,className:l,rootClassName:s,style:h}=t,g=E(t,["prefixCls","size","disabled","loading","className","rootClassName","style"]),{getPrefixCls:m,direction:v,switch:S}=d.useContext($.E_),w=d.useContext(f.Z),x=(null!=a?a:w)||c,I=m("switch",i),y=d.createElement("div",{className:`${I}-handle`},c&&d.createElement(n.Z,{className:`${I}-loading-icon`})),[z,C]=k(I),M=(0,b.Z)(r),Z=o()(null==S?void 0:S.className,{[`${I}-small`]:"small"===M,[`${I}-loading`]:c,[`${I}-rtl`]:"rtl"===v},l,s,C),H=Object.assign(Object.assign({},null==S?void 0:S.style),h);return z(d.createElement(u.Z,{component:"Switch"},d.createElement(p,Object.assign({},g,{prefixCls:I,className:Z,style:H,disabled:x,ref:e,loadingIcon:y}))))});Z.__ANT_SWITCH=!0;var H=Z}}]); \ No newline at end of file diff --git a/pilot/server/static/_next/static/chunks/553-df5701294eedae07.js b/pilot/server/static/_next/static/chunks/553-df5701294eedae07.js new file mode 100644 index 000000000..10e665ee7 --- /dev/null +++ b/pilot/server/static/_next/static/chunks/553-df5701294eedae07.js @@ -0,0 +1,14 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[553],{23430:function(e,t,r){r.d(t,{Z:function(){return l}});var n=r(87462),o=r(67294),i={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M505.7 661a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z"}}]},name:"download",theme:"outlined"},a=r(84089),l=o.forwardRef(function(e,t){return o.createElement(a.Z,(0,n.Z)({},e,{ref:t,icon:i}))})},5392:function(e,t,r){r.d(t,{Z:function(){return l}});var n=r(87462),o=r(67294),i={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M779.3 196.6c-94.2-94.2-247.6-94.2-341.7 0l-261 260.8c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l261-260.8c32.4-32.4 75.5-50.2 121.3-50.2s88.9 17.8 121.2 50.2c32.4 32.4 50.2 75.5 50.2 121.2 0 45.8-17.8 88.8-50.2 121.2l-266 265.9-43.1 43.1c-40.3 40.3-105.8 40.3-146.1 0-19.5-19.5-30.2-45.4-30.2-73s10.7-53.5 30.2-73l263.9-263.8c6.7-6.6 15.5-10.3 24.9-10.3h.1c9.4 0 18.1 3.7 24.7 10.3 6.7 6.7 10.3 15.5 10.3 24.9 0 9.3-3.7 18.1-10.3 24.7L372.4 653c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l215.6-215.6c19.9-19.9 30.8-46.3 30.8-74.4s-11-54.6-30.8-74.4c-41.1-41.1-107.9-41-149 0L463 364 224.8 602.1A172.22 172.22 0 00174 724.8c0 46.3 18.1 89.8 50.8 122.5 33.9 33.8 78.3 50.7 122.7 50.7 44.4 0 88.8-16.9 122.6-50.7l309.2-309C824.8 492.7 850 432 850 367.5c.1-64.6-25.1-125.3-70.7-170.9z"}}]},name:"paper-clip",theme:"outlined"},a=r(84089),l=o.forwardRef(function(e,t){return o.createElement(a.Z,(0,n.Z)({},e,{ref:t,icon:i}))})},57838:function(e,t,r){r.d(t,{Z:function(){return o}});var n=r(67294);function o(){let[,e]=n.useReducer(e=>e+1,0);return e}},69814:function(e,t,r){r.d(t,{Z:function(){return et}});var n=r(89739),o=r(63606),i=r(4340),a=r(97937),l=r(94184),s=r.n(l),c=r(98423),u=r(67294),d=r(53124),p=r(87462),f=r(1413),m=r(45987),g={percent:0,prefixCls:"rc-progress",strokeColor:"#2db7f5",strokeLinecap:"round",strokeWidth:1,trailColor:"#D9D9D9",trailWidth:1,gapPosition:"bottom"},h=function(){var e=(0,u.useRef)([]),t=(0,u.useRef)(null);return(0,u.useEffect)(function(){var r=Date.now(),n=!1;e.current.forEach(function(e){if(e){n=!0;var o=e.style;o.transitionDuration=".3s, .3s, .3s, .06s",t.current&&r-t.current<100&&(o.transitionDuration="0s, 0s")}}),n&&(t.current=Date.now())}),e.current},b=r(71002),v=r(97685),$=r(98924),y=0,w=(0,$.Z)(),k=function(e){var t=u.useState(),r=(0,v.Z)(t,2),n=r[0],o=r[1];return u.useEffect(function(){var e;o("rc_progress_".concat((w?(e=y,y+=1):e="TEST_OR_SSR",e)))},[]),e||n},E=["id","prefixCls","steps","strokeWidth","trailWidth","gapDegree","gapPosition","trailColor","strokeLinecap","style","className","strokeColor","percent"];function x(e){return+e.replace("%","")}function C(e){var t=null!=e?e:[];return Array.isArray(t)?t:[t]}var S=function(e,t,r,n,o,i,a,l,s,c){var u=arguments.length>10&&void 0!==arguments[10]?arguments[10]:0,d=(100-n)/100*t;return"round"===s&&100!==n&&(d+=c/2)>=t&&(d=t-.01),{stroke:"string"==typeof l?l:void 0,strokeDasharray:"".concat(t,"px ").concat(e),strokeDashoffset:d+u,transform:"rotate(".concat(o+r/100*360*((360-i)/360)+(0===i?0:({bottom:0,top:180,left:90,right:-90})[a]),"deg)"),transformOrigin:"0 0",transition:"stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s",fillOpacity:0}},O=function(e){var t,r,n,o,i=(0,f.Z)((0,f.Z)({},g),e),a=i.id,l=i.prefixCls,c=i.steps,d=i.strokeWidth,v=i.trailWidth,$=i.gapDegree,y=void 0===$?0:$,w=i.gapPosition,O=i.trailColor,j=i.strokeLinecap,Z=i.style,I=i.className,D=i.strokeColor,R=i.percent,N=(0,m.Z)(i,E),P=k(a),M="".concat(P,"-gradient"),F=50-d/2,A=2*Math.PI*F,L=y>0?90+y/2:-90,z=A*((360-y)/360),T="object"===(0,b.Z)(c)?c:{count:c,space:2},X=T.count,_=T.space,U=S(A,z,0,100,L,y,w,O,j,d),H=C(R),W=C(D),B=W.find(function(e){return e&&"object"===(0,b.Z)(e)}),q=h();return u.createElement("svg",(0,p.Z)({className:s()("".concat(l,"-circle"),I),viewBox:"".concat(-50," ").concat(-50," ").concat(100," ").concat(100),style:Z,id:a,role:"presentation"},N),B&&u.createElement("defs",null,u.createElement("linearGradient",{id:M,x1:"100%",y1:"0%",x2:"0%",y2:"0%"},Object.keys(B).sort(function(e,t){return x(e)-x(t)}).map(function(e,t){return u.createElement("stop",{key:t,offset:e,stopColor:B[e]})}))),!X&&u.createElement("circle",{className:"".concat(l,"-circle-trail"),r:F,cx:0,cy:0,stroke:O,strokeLinecap:j,strokeWidth:v||d,style:U}),X?(t=Math.round(X*(H[0]/100)),r=100/X,n=0,Array(X).fill(null).map(function(e,o){var i=o<=t-1?W[0]:O,a=i&&"object"===(0,b.Z)(i)?"url(#".concat(M,")"):void 0,s=S(A,z,n,r,L,y,w,i,"butt",d,_);return n+=(z-s.strokeDashoffset+_)*100/z,u.createElement("circle",{key:o,className:"".concat(l,"-circle-path"),r:F,cx:0,cy:0,stroke:a,strokeWidth:d,opacity:1,style:s,ref:function(e){q[o]=e}})})):(o=0,H.map(function(e,t){var r=W[t]||W[W.length-1],n=r&&"object"===(0,b.Z)(r)?"url(#".concat(M,")"):void 0,i=S(A,z,o,e,L,y,w,r,j,d);return o+=e,u.createElement("circle",{key:t,className:"".concat(l,"-circle-path"),r:F,cx:0,cy:0,stroke:n,strokeLinecap:j,strokeWidth:d,opacity:0===e?0:1,style:i,ref:function(e){q[t]=e}})}).reverse()))},j=r(83062),Z=r(16397);function I(e){return!e||e<0?0:e>100?100:e}function D(e){let{success:t,successPercent:r}=e,n=r;return t&&"progress"in t&&(n=t.progress),t&&"percent"in t&&(n=t.percent),n}let R=e=>{let{percent:t,success:r,successPercent:n}=e,o=I(D({success:r,successPercent:n}));return[o,I(I(t)-o)]},N=e=>{let{success:t={},strokeColor:r}=e,{strokeColor:n}=t;return[n||Z.presetPrimaryColors.green,r||null]},P=(e,t,r)=>{var n,o,i,a;let l=-1,s=-1;if("step"===t){let t=r.steps,n=r.strokeWidth;"string"==typeof e||void 0===e?(l="small"===e?2:14,s=null!=n?n:8):"number"==typeof e?[l,s]=[e,e]:[l=14,s=8]=e,l*=t}else if("line"===t){let t=null==r?void 0:r.strokeWidth;"string"==typeof e||void 0===e?s=t||("small"===e?6:8):"number"==typeof e?[l,s]=[e,e]:[l=-1,s=8]=e}else("circle"===t||"dashboard"===t)&&("string"==typeof e||void 0===e?[l,s]="small"===e?[60,60]:[120,120]:"number"==typeof e?[l,s]=[e,e]:(l=null!==(o=null!==(n=e[0])&&void 0!==n?n:e[1])&&void 0!==o?o:120,s=null!==(a=null!==(i=e[0])&&void 0!==i?i:e[1])&&void 0!==a?a:120));return[l,s]},M=e=>3/e*100;var F=e=>{let{prefixCls:t,trailColor:r=null,strokeLinecap:n="round",gapPosition:o,gapDegree:i,width:a=120,type:l,children:c,success:d,size:p=a}=e,[f,m]=P(p,"circle"),{strokeWidth:g}=e;void 0===g&&(g=Math.max(M(f),6));let h=u.useMemo(()=>i||0===i?i:"dashboard"===l?75:void 0,[i,l]),b=o||"dashboard"===l&&"bottom"||void 0,v="[object Object]"===Object.prototype.toString.call(e.strokeColor),$=N({success:d,strokeColor:e.strokeColor}),y=s()(`${t}-inner`,{[`${t}-circle-gradient`]:v}),w=u.createElement(O,{percent:R(e),strokeWidth:g,trailWidth:g,strokeColor:$,strokeLinecap:n,trailColor:r,prefixCls:t,gapDegree:h,gapPosition:b});return u.createElement("div",{className:y,style:{width:f,height:m,fontSize:.15*f+6}},f<=20?u.createElement(j.Z,{title:c},u.createElement("span",null,w)):u.createElement(u.Fragment,null,w,c))},A=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,n=Object.getOwnPropertySymbols(e);ot.indexOf(n[o])&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]]);return r};let L=e=>{let t=[];return Object.keys(e).forEach(r=>{let n=parseFloat(r.replace(/%/g,""));isNaN(n)||t.push({key:n,value:e[r]})}),(t=t.sort((e,t)=>e.key-t.key)).map(e=>{let{key:t,value:r}=e;return`${r} ${t}%`}).join(", ")},z=(e,t)=>{let{from:r=Z.presetPrimaryColors.blue,to:n=Z.presetPrimaryColors.blue,direction:o="rtl"===t?"to left":"to right"}=e,i=A(e,["from","to","direction"]);if(0!==Object.keys(i).length){let e=L(i);return{backgroundImage:`linear-gradient(${o}, ${e})`}}return{backgroundImage:`linear-gradient(${o}, ${r}, ${n})`}};var T=e=>{let{prefixCls:t,direction:r,percent:n,size:o,strokeWidth:i,strokeColor:a,strokeLinecap:l="round",children:s,trailColor:c=null,success:d}=e,p=a&&"string"!=typeof a?z(a,r):{backgroundColor:a},f="square"===l||"butt"===l?0:void 0,m=null!=o?o:[-1,i||("small"===o?6:8)],[g,h]=P(m,"line",{strokeWidth:i}),b=Object.assign({width:`${I(n)}%`,height:h,borderRadius:f},p),v=D(e),$={width:`${I(v)}%`,height:h,borderRadius:f,backgroundColor:null==d?void 0:d.strokeColor};return u.createElement(u.Fragment,null,u.createElement("div",{className:`${t}-outer`,style:{width:g<0?"100%":g,height:h}},u.createElement("div",{className:`${t}-inner`,style:{backgroundColor:c||void 0,borderRadius:f}},u.createElement("div",{className:`${t}-bg`,style:b}),void 0!==v?u.createElement("div",{className:`${t}-success-bg`,style:$}):null)),s)},X=e=>{let{size:t,steps:r,percent:n=0,strokeWidth:o=8,strokeColor:i,trailColor:a=null,prefixCls:l,children:c}=e,d=Math.round(r*(n/100)),p=null!=t?t:["small"===t?2:14,o],[f,m]=P(p,"step",{steps:r,strokeWidth:o}),g=f/r,h=Array(r);for(let e=0;e{let t=e?"100%":"-100%";return new _.E4(`antProgress${e?"RTL":"LTR"}Active`,{"0%":{transform:`translateX(${t}) scaleX(0)`,opacity:.1},"20%":{transform:`translateX(${t}) scaleX(0)`,opacity:.5},to:{transform:"translateX(0) scaleX(1)",opacity:0}})},q=e=>{let{componentCls:t,iconCls:r}=e;return{[t]:Object.assign(Object.assign({},(0,U.Wf)(e)),{display:"inline-block","&-rtl":{direction:"rtl"},"&-line":{position:"relative",width:"100%",fontSize:e.fontSize,marginInlineEnd:e.marginXS,marginBottom:e.marginXS},[`${t}-outer`]:{display:"inline-block",width:"100%"},[`&${t}-show-info`]:{[`${t}-outer`]:{marginInlineEnd:`calc(-2em - ${e.marginXS}px)`,paddingInlineEnd:`calc(2em + ${e.paddingXS}px)`}},[`${t}-inner`]:{position:"relative",display:"inline-block",width:"100%",overflow:"hidden",verticalAlign:"middle",backgroundColor:e.progressRemainingColor,borderRadius:e.progressLineRadius},[`${t}-inner:not(${t}-circle-gradient)`]:{[`${t}-circle-path`]:{stroke:e.colorInfo}},[`${t}-success-bg, ${t}-bg`]:{position:"relative",backgroundColor:e.colorInfo,borderRadius:e.progressLineRadius,transition:`all ${e.motionDurationSlow} ${e.motionEaseInOutCirc}`},[`${t}-success-bg`]:{position:"absolute",insetBlockStart:0,insetInlineStart:0,backgroundColor:e.colorSuccess},[`${t}-text`]:{display:"inline-block",width:"2em",marginInlineStart:e.marginXS,color:e.progressInfoTextColor,lineHeight:1,whiteSpace:"nowrap",textAlign:"start",verticalAlign:"middle",wordBreak:"normal",[r]:{fontSize:e.fontSize}},[`&${t}-status-active`]:{[`${t}-bg::before`]:{position:"absolute",inset:0,backgroundColor:e.colorBgContainer,borderRadius:e.progressLineRadius,opacity:0,animationName:B(),animationDuration:e.progressActiveMotionDuration,animationTimingFunction:e.motionEaseOutQuint,animationIterationCount:"infinite",content:'""'}},[`&${t}-rtl${t}-status-active`]:{[`${t}-bg::before`]:{animationName:B(!0)}},[`&${t}-status-exception`]:{[`${t}-bg`]:{backgroundColor:e.colorError},[`${t}-text`]:{color:e.colorError}},[`&${t}-status-exception ${t}-inner:not(${t}-circle-gradient)`]:{[`${t}-circle-path`]:{stroke:e.colorError}},[`&${t}-status-success`]:{[`${t}-bg`]:{backgroundColor:e.colorSuccess},[`${t}-text`]:{color:e.colorSuccess}},[`&${t}-status-success ${t}-inner:not(${t}-circle-gradient)`]:{[`${t}-circle-path`]:{stroke:e.colorSuccess}}})}},V=e=>{let{componentCls:t,iconCls:r}=e;return{[t]:{[`${t}-circle-trail`]:{stroke:e.progressRemainingColor},[`&${t}-circle ${t}-inner`]:{position:"relative",lineHeight:1,backgroundColor:"transparent"},[`&${t}-circle ${t}-text`]:{position:"absolute",insetBlockStart:"50%",insetInlineStart:0,width:"100%",margin:0,padding:0,color:e.colorText,lineHeight:1,whiteSpace:"normal",textAlign:"center",transform:"translateY(-50%)",[r]:{fontSize:`${e.fontSize/e.fontSizeSM}em`}},[`${t}-circle&-status-exception`]:{[`${t}-text`]:{color:e.colorError}},[`${t}-circle&-status-success`]:{[`${t}-text`]:{color:e.colorSuccess}}},[`${t}-inline-circle`]:{lineHeight:1,[`${t}-inner`]:{verticalAlign:"bottom"}}}},G=e=>{let{componentCls:t}=e;return{[t]:{[`${t}-steps`]:{display:"inline-block","&-outer":{display:"flex",flexDirection:"row",alignItems:"center"},"&-item":{flexShrink:0,minWidth:e.progressStepMinWidth,marginInlineEnd:e.progressStepMarginInlineEnd,backgroundColor:e.progressRemainingColor,transition:`all ${e.motionDurationSlow}`,"&-active":{backgroundColor:e.colorInfo}}}}}},J=e=>{let{componentCls:t,iconCls:r}=e;return{[t]:{[`${t}-small&-line, ${t}-small&-line ${t}-text ${r}`]:{fontSize:e.fontSizeSM}}}};var K=(0,H.Z)("Progress",e=>{let t=e.marginXXS/2,r=(0,W.TS)(e,{progressLineRadius:100,progressInfoTextColor:e.colorText,progressDefaultColor:e.colorInfo,progressRemainingColor:e.colorFillSecondary,progressStepMarginInlineEnd:t,progressStepMinWidth:t,progressActiveMotionDuration:"2.4s"});return[q(r),V(r),G(r),J(r)]}),Q=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,n=Object.getOwnPropertySymbols(e);ot.indexOf(n[o])&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]]);return r};let Y=["normal","exception","active","success"],ee=u.forwardRef((e,t)=>{let r;let{prefixCls:l,className:p,rootClassName:f,steps:m,strokeColor:g,percent:h=0,size:b="default",showInfo:v=!0,type:$="line",status:y,format:w,style:k}=e,E=Q(e,["prefixCls","className","rootClassName","steps","strokeColor","percent","size","showInfo","type","status","format","style"]),x=u.useMemo(()=>{var t,r;let n=D(e);return parseInt(void 0!==n?null===(t=null!=n?n:0)||void 0===t?void 0:t.toString():null===(r=null!=h?h:0)||void 0===r?void 0:r.toString(),10)},[h,e.success,e.successPercent]),C=u.useMemo(()=>!Y.includes(y)&&x>=100?"success":y||"normal",[y,x]),{getPrefixCls:S,direction:O,progress:j}=u.useContext(d.E_),Z=S("progress",l),[R,N]=K(Z),M=u.useMemo(()=>{let t;if(!v)return null;let r=D(e),l=w||(e=>`${e}%`),s="line"===$;return w||"exception"!==C&&"success"!==C?t=l(I(h),I(r)):"exception"===C?t=s?u.createElement(i.Z,null):u.createElement(a.Z,null):"success"===C&&(t=s?u.createElement(n.Z,null):u.createElement(o.Z,null)),u.createElement("span",{className:`${Z}-text`,title:"string"==typeof t?t:void 0},t)},[v,h,x,C,$,Z,w]),A=Array.isArray(g)?g[0]:g,L="string"==typeof g||Array.isArray(g)?g:void 0;"line"===$?r=m?u.createElement(X,Object.assign({},e,{strokeColor:L,prefixCls:Z,steps:m}),M):u.createElement(T,Object.assign({},e,{strokeColor:A,prefixCls:Z,direction:O}),M):("circle"===$||"dashboard"===$)&&(r=u.createElement(F,Object.assign({},e,{strokeColor:A,prefixCls:Z,progressStatus:C}),M));let z=s()(Z,`${Z}-status-${C}`,`${Z}-${"dashboard"===$&&"circle"||m&&"steps"||$}`,{[`${Z}-inline-circle`]:"circle"===$&&P(b,"circle")[0]<=20,[`${Z}-show-info`]:v,[`${Z}-${b}`]:"string"==typeof b,[`${Z}-rtl`]:"rtl"===O},null==j?void 0:j.className,p,f,N);return R(u.createElement("div",Object.assign({ref:t,style:Object.assign(Object.assign({},null==j?void 0:j.style),k),className:z,role:"progressbar","aria-valuenow":x},(0,c.Z)(E,["trailColor","strokeWidth","width","gapDegree","gapPosition","strokeLinecap","success","successPercent"])),r))});var et=ee},84553:function(e,t,r){r.d(t,{default:function(){return eI}});var n=r(67294),o=r(74902),i=r(94184),a=r.n(i),l=r(87462),s=r(15671),c=r(43144),u=r(32531),d=r(73568),p=r(4942),f=r(45987),m=r(74165),g=r(71002),h=r(15861),b=r(64217);function v(e){var t=e.responseText||e.response;if(!t)return t;try{return JSON.parse(t)}catch(e){return t}}function $(e){var t=new XMLHttpRequest;e.onProgress&&t.upload&&(t.upload.onprogress=function(t){t.total>0&&(t.percent=t.loaded/t.total*100),e.onProgress(t)});var r=new FormData;e.data&&Object.keys(e.data).forEach(function(t){var n=e.data[t];if(Array.isArray(n)){n.forEach(function(e){r.append("".concat(t,"[]"),e)});return}r.append(t,n)}),e.file instanceof Blob?r.append(e.filename,e.file,e.file.name):r.append(e.filename,e.file),t.onerror=function(t){e.onError(t)},t.onload=function(){if(t.status<200||t.status>=300){var r;return e.onError(((r=Error("cannot ".concat(e.method," ").concat(e.action," ").concat(t.status,"'"))).status=t.status,r.method=e.method,r.url=e.action,r),v(t))}return e.onSuccess(v(t),t)},t.open(e.method,e.action,!0),e.withCredentials&&"withCredentials"in t&&(t.withCredentials=!0);var n=e.headers||{};return null!==n["X-Requested-With"]&&t.setRequestHeader("X-Requested-With","XMLHttpRequest"),Object.keys(n).forEach(function(e){null!==n[e]&&t.setRequestHeader(e,n[e])}),t.send(r),{abort:function(){t.abort()}}}var y=+new Date,w=0;function k(){return"rc-upload-".concat(y,"-").concat(++w)}var E=r(80334),x=function(e,t){if(e&&t){var r=Array.isArray(t)?t:t.split(","),n=e.name||"",o=e.type||"",i=o.replace(/\/.*$/,"");return r.some(function(e){var t=e.trim();if(/^\*(\/\*)?$/.test(e))return!0;if("."===t.charAt(0)){var r=n.toLowerCase(),a=t.toLowerCase(),l=[a];return(".jpg"===a||".jpeg"===a)&&(l=[".jpg",".jpeg"]),l.some(function(e){return r.endsWith(e)})}return/\/\*$/.test(t)?i===t.replace(/\/.*$/,""):o===t||!!/^\w+$/.test(t)&&((0,E.ZP)(!1,"Upload takes an invalidate 'accept' type '".concat(t,"'.Skip for check.")),!0)})}return!0},C=function(e,t,r){var n=function e(n,o){if(n.path=o||"",n.isFile)n.file(function(e){r(e)&&(n.fullPath&&!e.webkitRelativePath&&(Object.defineProperties(e,{webkitRelativePath:{writable:!0}}),e.webkitRelativePath=n.fullPath.replace(/^\//,""),Object.defineProperties(e,{webkitRelativePath:{writable:!1}})),t([e]))});else if(n.isDirectory){var i,a,l;i=function(t){t.forEach(function(t){e(t,"".concat(o).concat(n.name,"/"))})},a=n.createReader(),l=[],function e(){a.readEntries(function(t){var r=Array.prototype.slice.apply(t);l=l.concat(r),r.length?e():i(l)})}()}};e.forEach(function(e){n(e.webkitGetAsEntry())})},S=["component","prefixCls","className","disabled","id","style","multiple","accept","capture","children","directory","openFileDialogOnClick","onMouseEnter","onMouseLeave"],O=function(e){(0,u.Z)(r,e);var t=(0,d.Z)(r);function r(){(0,s.Z)(this,r);for(var e,n,i=arguments.length,a=Array(i),l=0;l{let{uid:r}=t;return r===e.uid});return -1===n?r.push(e):r[n]=e,r}function J(e,t){let r=void 0!==e.uid?"uid":"name";return t.filter(t=>t[r]===e[r])[0]}let K=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=e.split("/"),r=t[t.length-1],n=r.split(/#|\?/)[0];return(/\.[^./\\]*$/.exec(n)||[""])[0]},Q=e=>0===e.indexOf("image/"),Y=e=>{if(e.type&&!e.thumbUrl)return Q(e.type);let t=e.thumbUrl||e.url||"",r=K(t);return!!(/^data:image\//.test(t)||/(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico|heic|heif)$/i.test(r))||!/^data:/.test(t)&&!r};function ee(e){return new Promise(t=>{if(!e.type||!Q(e.type)){t("");return}let r=document.createElement("canvas");r.width=200,r.height=200,r.style.cssText="position: fixed; left: 0; top: 0; width: 200px; height: 200px; z-index: 9999; display: none;",document.body.appendChild(r);let n=r.getContext("2d"),o=new Image;if(o.onload=()=>{let{width:e,height:i}=o,a=200,l=200,s=0,c=0;e>i?c=-((l=i*(200/e))-a)/2:s=-((a=e*(200/i))-l)/2,n.drawImage(o,s,c,a,l);let u=r.toDataURL();document.body.removeChild(r),window.URL.revokeObjectURL(o.src),t(u)},o.crossOrigin="anonymous",e.type.startsWith("image/svg+xml")){let t=new FileReader;t.onload=()=>{t.result&&(o.src=t.result)},t.readAsDataURL(e)}else if(e.type.startsWith("image/gif")){let r=new FileReader;r.onload=()=>{r.result&&t(r.result)},r.readAsDataURL(e)}else o.src=window.URL.createObjectURL(e)})}var et=r(48689),er=r(23430),en=r(99611),eo=r(69814),ei=r(83062);let ea=n.forwardRef((e,t)=>{var r,o;let{prefixCls:i,className:l,style:s,locale:c,listType:u,file:d,items:p,progress:f,iconRender:m,actionIconRender:g,itemRender:h,isImgUrl:b,showPreviewIcon:v,showRemoveIcon:$,showDownloadIcon:y,previewIcon:w,removeIcon:k,downloadIcon:E,onPreview:x,onDownload:C,onClose:S}=e,{status:O}=d,[j,Z]=n.useState(O);n.useEffect(()=>{"removed"!==O&&Z(O)},[O]);let[I,D]=n.useState(!1);n.useEffect(()=>{let e=setTimeout(()=>{D(!0)},300);return()=>{clearTimeout(e)}},[]);let N=m(d),P=n.createElement("div",{className:`${i}-icon`},N);if("picture"===u||"picture-card"===u||"picture-circle"===u){if("uploading"!==j&&(d.thumbUrl||d.url)){let e=(null==b?void 0:b(d))?n.createElement("img",{src:d.thumbUrl||d.url,alt:d.name,className:`${i}-list-item-image`,crossOrigin:d.crossOrigin}):N,t=a()(`${i}-list-item-thumbnail`,{[`${i}-list-item-file`]:b&&!b(d)});P=n.createElement("a",{className:t,onClick:e=>x(d,e),href:d.url||d.thumbUrl,target:"_blank",rel:"noopener noreferrer"},e)}else{let e=a()(`${i}-list-item-thumbnail`,{[`${i}-list-item-file`]:"uploading"!==j});P=n.createElement("div",{className:e},N)}}let M=a()(`${i}-list-item`,`${i}-list-item-${j}`),F="string"==typeof d.linkProps?JSON.parse(d.linkProps):d.linkProps,A=$?g(("function"==typeof k?k(d):k)||n.createElement(et.Z,null),()=>S(d),i,c.removeFile):null,L=y&&"done"===j?g(("function"==typeof E?E(d):E)||n.createElement(er.Z,null),()=>C(d),i,c.downloadFile):null,z="picture-card"!==u&&"picture-circle"!==u&&n.createElement("span",{key:"download-delete",className:a()(`${i}-list-item-actions`,{picture:"picture"===u})},L,A),T=a()(`${i}-list-item-name`),X=d.url?[n.createElement("a",Object.assign({key:"view",target:"_blank",rel:"noopener noreferrer",className:T,title:d.name},F,{href:d.url,onClick:e=>x(d,e)}),d.name),z]:[n.createElement("span",{key:"view",className:T,onClick:e=>x(d,e),title:d.name},d.name),z],_=v?n.createElement("a",{href:d.url||d.thumbUrl,target:"_blank",rel:"noopener noreferrer",style:d.url||d.thumbUrl?void 0:{pointerEvents:"none",opacity:.5},onClick:e=>x(d,e),title:c.previewFile},"function"==typeof w?w(d):w||n.createElement(en.Z,null)):null,H=("picture-card"===u||"picture-circle"===u)&&"uploading"!==j&&n.createElement("span",{className:`${i}-list-item-actions`},_,"done"===j&&L,A),{getPrefixCls:W}=n.useContext(R.E_),B=W(),q=n.createElement("div",{className:M},P,X,H,I&&n.createElement(U.ZP,{motionName:`${B}-fade`,visible:"uploading"===j,motionDeadline:2e3},e=>{let{className:t}=e,r="percent"in d?n.createElement(eo.Z,Object.assign({},f,{type:"line",percent:d.percent,"aria-label":d["aria-label"],"aria-labelledby":d["aria-labelledby"]})):null;return n.createElement("div",{className:a()(`${i}-list-item-progress`,t)},r)})),V=d.response&&"string"==typeof d.response?d.response:(null===(r=d.error)||void 0===r?void 0:r.statusText)||(null===(o=d.error)||void 0===o?void 0:o.message)||c.uploadError,G="error"===j?n.createElement(ei.Z,{title:V,getPopupContainer:e=>e.parentNode},q):q;return n.createElement("div",{className:a()(`${i}-list-item-container`,l),style:s,ref:t},h?h(G,d,p,{download:C.bind(null,d),preview:x.bind(null,d),remove:S.bind(null,d)}):G)}),el=n.forwardRef((e,t)=>{let{listType:r="text",previewFile:i=ee,onPreview:l,onDownload:s,onRemove:c,locale:u,iconRender:d,isImageUrl:p=Y,prefixCls:f,items:m=[],showPreviewIcon:g=!0,showRemoveIcon:h=!0,showDownloadIcon:b=!1,removeIcon:v,previewIcon:$,downloadIcon:y,progress:w={size:[-1,2],showInfo:!1},appendAction:k,appendActionVisible:E=!0,itemRender:x,disabled:C}=e,S=(0,H.Z)(),[O,j]=n.useState(!1);n.useEffect(()=>{("picture"===r||"picture-card"===r||"picture-circle"===r)&&(m||[]).forEach(e=>{"undefined"!=typeof document&&"undefined"!=typeof window&&window.FileReader&&window.File&&(e.originFileObj instanceof File||e.originFileObj instanceof Blob)&&void 0===e.thumbUrl&&(e.thumbUrl="",i&&i(e.originFileObj).then(t=>{e.thumbUrl=t||"",S()}))})},[r,m,i]),n.useEffect(()=>{j(!0)},[]);let Z=(e,t)=>{if(l)return null==t||t.preventDefault(),l(e)},I=e=>{"function"==typeof s?s(e):e.url&&window.open(e.url)},D=e=>{null==c||c(e)},N=e=>{if(d)return d(e,r);let t="uploading"===e.status,o=p&&p(e)?n.createElement(_,null):n.createElement(L,null),i=t?n.createElement(z.Z,null):n.createElement(T.Z,null);return"picture"===r?i=t?n.createElement(z.Z,null):o:("picture-card"===r||"picture-circle"===r)&&(i=t?u.uploading:o),i},P=(e,t,r,o)=>{let i={type:"text",size:"small",title:o,onClick:r=>{t(),(0,B.l$)(e)&&e.props.onClick&&e.props.onClick(r)},className:`${r}-list-item-action`,disabled:C};if((0,B.l$)(e)){let t=(0,B.Tm)(e,Object.assign(Object.assign({},e.props),{onClick:()=>{}}));return n.createElement(q.ZP,Object.assign({},i,{icon:t}))}return n.createElement(q.ZP,Object.assign({},i),n.createElement("span",null,e))};n.useImperativeHandle(t,()=>({handlePreview:Z,handleDownload:I}));let{getPrefixCls:M}=n.useContext(R.E_),F=M("upload",f),A=M(),X=a()(`${F}-list`,`${F}-list-${r}`),V=(0,o.Z)(m.map(e=>({key:e.uid,file:e}))),G="picture-card"===r||"picture-circle"===r?"animate-inline":"animate",J={motionDeadline:2e3,motionName:`${F}-${G}`,keys:V,motionAppear:O},K=n.useMemo(()=>{let e=Object.assign({},(0,W.Z)(A));return delete e.onAppearEnd,delete e.onEnterEnd,delete e.onLeaveEnd,e},[A]);return"picture-card"!==r&&"picture-circle"!==r&&(J=Object.assign(Object.assign({},K),J)),n.createElement("div",{className:X},n.createElement(U.V4,Object.assign({},J,{component:!1}),e=>{let{key:t,file:o,className:i,style:a}=e;return n.createElement(ea,{key:t,locale:u,prefixCls:F,className:i,style:a,file:o,items:m,progress:w,listType:r,isImgUrl:p,showPreviewIcon:g,showRemoveIcon:h,showDownloadIcon:b,removeIcon:v,previewIcon:$,downloadIcon:y,iconRender:N,actionIconRender:P,itemRender:x,onPreview:Z,onDownload:I,onClose:D})}),k&&n.createElement(U.ZP,Object.assign({},J,{visible:E,forceRender:!0}),e=>{let{className:t,style:r}=e;return(0,B.Tm)(k,e=>({className:a()(e.className,t),style:Object.assign(Object.assign(Object.assign({},r),{pointerEvents:t?"none":void 0}),e.style)}))}))});var es=r(14747),ec=r(33507),eu=r(67968),ed=r(45503),ep=e=>{let{componentCls:t,iconCls:r}=e;return{[`${t}-wrapper`]:{[`${t}-drag`]:{position:"relative",width:"100%",height:"100%",textAlign:"center",background:e.colorFillAlter,border:`${e.lineWidth}px dashed ${e.colorBorder}`,borderRadius:e.borderRadiusLG,cursor:"pointer",transition:`border-color ${e.motionDurationSlow}`,[t]:{padding:`${e.padding}px 0`},[`${t}-btn`]:{display:"table",width:"100%",height:"100%",outline:"none"},[`${t}-drag-container`]:{display:"table-cell",verticalAlign:"middle"},[`&:not(${t}-disabled):hover`]:{borderColor:e.colorPrimaryHover},[`p${t}-drag-icon`]:{marginBottom:e.margin,[r]:{color:e.colorPrimary,fontSize:e.uploadThumbnailSize}},[`p${t}-text`]:{margin:`0 0 ${e.marginXXS}px`,color:e.colorTextHeading,fontSize:e.fontSizeLG},[`p${t}-hint`]:{color:e.colorTextDescription,fontSize:e.fontSize},[`&${t}-disabled`]:{cursor:"not-allowed",[`p${t}-drag-icon ${r}, + p${t}-text, + p${t}-hint + `]:{color:e.colorTextDisabled}}}}}},ef=e=>{let{componentCls:t,antCls:r,iconCls:n,fontSize:o,lineHeight:i}=e,a=`${t}-list-item`,l=`${a}-actions`,s=`${a}-action`,c=Math.round(o*i);return{[`${t}-wrapper`]:{[`${t}-list`]:Object.assign(Object.assign({},(0,es.dF)()),{lineHeight:e.lineHeight,[a]:{position:"relative",height:e.lineHeight*o,marginTop:e.marginXS,fontSize:o,display:"flex",alignItems:"center",transition:`background-color ${e.motionDurationSlow}`,"&:hover":{backgroundColor:e.controlItemBgHover},[`${a}-name`]:Object.assign(Object.assign({},es.vS),{padding:`0 ${e.paddingXS}px`,lineHeight:i,flex:"auto",transition:`all ${e.motionDurationSlow}`}),[l]:{[s]:{opacity:0},[`${s}${r}-btn-sm`]:{height:c,border:0,lineHeight:1,"> span":{transform:"scale(1)"}},[` + ${s}:focus, + &.picture ${s} + `]:{opacity:1},[n]:{color:e.actionsColor,transition:`all ${e.motionDurationSlow}`},[`&:hover ${n}`]:{color:e.colorText}},[`${t}-icon ${n}`]:{color:e.colorTextDescription,fontSize:o},[`${a}-progress`]:{position:"absolute",bottom:-e.uploadProgressOffset,width:"100%",paddingInlineStart:o+e.paddingXS,fontSize:o,lineHeight:0,pointerEvents:"none","> div":{margin:0}}},[`${a}:hover ${s}`]:{opacity:1,color:e.colorText},[`${a}-error`]:{color:e.colorError,[`${a}-name, ${t}-icon ${n}`]:{color:e.colorError},[l]:{[`${n}, ${n}:hover`]:{color:e.colorError},[s]:{opacity:1}}},[`${t}-list-item-container`]:{transition:`opacity ${e.motionDurationSlow}, height ${e.motionDurationSlow}`,"&::before":{display:"table",width:0,height:0,content:'""'}}})}}},em=r(23183),eg=r(16932);let eh=new em.E4("uploadAnimateInlineIn",{from:{width:0,height:0,margin:0,padding:0,opacity:0}}),eb=new em.E4("uploadAnimateInlineOut",{to:{width:0,height:0,margin:0,padding:0,opacity:0}});var ev=e=>{let{componentCls:t}=e,r=`${t}-animate-inline`;return[{[`${t}-wrapper`]:{[`${r}-appear, ${r}-enter, ${r}-leave`]:{animationDuration:e.motionDurationSlow,animationTimingFunction:e.motionEaseInOutCirc,animationFillMode:"forwards"},[`${r}-appear, ${r}-enter`]:{animationName:eh},[`${r}-leave`]:{animationName:eb}}},{[`${t}-wrapper`]:(0,eg.J$)(e)},eh,eb]},e$=r(16397),ey=r(10274);let ew=e=>{let{componentCls:t,iconCls:r,uploadThumbnailSize:n,uploadProgressOffset:o}=e,i=`${t}-list`,a=`${i}-item`;return{[`${t}-wrapper`]:{[` + ${i}${i}-picture, + ${i}${i}-picture-card, + ${i}${i}-picture-circle + `]:{[a]:{position:"relative",height:n+2*e.lineWidth+2*e.paddingXS,padding:e.paddingXS,border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,borderRadius:e.borderRadiusLG,"&:hover":{background:"transparent"},[`${a}-thumbnail`]:Object.assign(Object.assign({},es.vS),{width:n,height:n,lineHeight:`${n+e.paddingSM}px`,textAlign:"center",flex:"none",[r]:{fontSize:e.fontSizeHeading2,color:e.colorPrimary},img:{display:"block",width:"100%",height:"100%",overflow:"hidden"}}),[`${a}-progress`]:{bottom:o,width:`calc(100% - ${2*e.paddingSM}px)`,marginTop:0,paddingInlineStart:n+e.paddingXS}},[`${a}-error`]:{borderColor:e.colorError,[`${a}-thumbnail ${r}`]:{[`svg path[fill='${e$.blue[0]}']`]:{fill:e.colorErrorBg},[`svg path[fill='${e$.blue.primary}']`]:{fill:e.colorError}}},[`${a}-uploading`]:{borderStyle:"dashed",[`${a}-name`]:{marginBottom:o}}},[`${i}${i}-picture-circle ${a}`]:{[`&, &::before, ${a}-thumbnail`]:{borderRadius:"50%"}}}}},ek=e=>{let{componentCls:t,iconCls:r,fontSizeLG:n,colorTextLightSolid:o}=e,i=`${t}-list`,a=`${i}-item`,l=e.uploadPicCardSize;return{[` + ${t}-wrapper${t}-picture-card-wrapper, + ${t}-wrapper${t}-picture-circle-wrapper + `]:Object.assign(Object.assign({},(0,es.dF)()),{display:"inline-block",width:"100%",[`${t}${t}-select`]:{width:l,height:l,marginInlineEnd:e.marginXS,marginBottom:e.marginXS,textAlign:"center",verticalAlign:"top",backgroundColor:e.colorFillAlter,border:`${e.lineWidth}px dashed ${e.colorBorder}`,borderRadius:e.borderRadiusLG,cursor:"pointer",transition:`border-color ${e.motionDurationSlow}`,[`> ${t}`]:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%",textAlign:"center"},[`&:not(${t}-disabled):hover`]:{borderColor:e.colorPrimary}},[`${i}${i}-picture-card, ${i}${i}-picture-circle`]:{[`${i}-item-container`]:{display:"inline-block",width:l,height:l,marginBlock:`0 ${e.marginXS}px`,marginInline:`0 ${e.marginXS}px`,verticalAlign:"top"},"&::after":{display:"none"},[a]:{height:"100%",margin:0,"&::before":{position:"absolute",zIndex:1,width:`calc(100% - ${2*e.paddingXS}px)`,height:`calc(100% - ${2*e.paddingXS}px)`,backgroundColor:e.colorBgMask,opacity:0,transition:`all ${e.motionDurationSlow}`,content:'" "'}},[`${a}:hover`]:{[`&::before, ${a}-actions`]:{opacity:1}},[`${a}-actions`]:{position:"absolute",insetInlineStart:0,zIndex:10,width:"100%",whiteSpace:"nowrap",textAlign:"center",opacity:0,transition:`all ${e.motionDurationSlow}`,[`${r}-eye, ${r}-download, ${r}-delete`]:{zIndex:10,width:n,margin:`0 ${e.marginXXS}px`,fontSize:n,cursor:"pointer",transition:`all ${e.motionDurationSlow}`,svg:{verticalAlign:"baseline"}}},[`${a}-actions, ${a}-actions:hover`]:{[`${r}-eye, ${r}-download, ${r}-delete`]:{color:new ey.C(o).setAlpha(.65).toRgbString(),"&:hover":{color:o}}},[`${a}-thumbnail, ${a}-thumbnail img`]:{position:"static",display:"block",width:"100%",height:"100%",objectFit:"contain"},[`${a}-name`]:{display:"none",textAlign:"center"},[`${a}-file + ${a}-name`]:{position:"absolute",bottom:e.margin,display:"block",width:`calc(100% - ${2*e.paddingXS}px)`},[`${a}-uploading`]:{[`&${a}`]:{backgroundColor:e.colorFillAlter},[`&::before, ${r}-eye, ${r}-download, ${r}-delete`]:{display:"none"}},[`${a}-progress`]:{bottom:e.marginXL,width:`calc(100% - ${2*e.paddingXS}px)`,paddingInlineStart:0}}}),[`${t}-wrapper${t}-picture-circle-wrapper`]:{[`${t}${t}-select`]:{borderRadius:"50%"}}}};var eE=e=>{let{componentCls:t}=e;return{[`${t}-rtl`]:{direction:"rtl"}}};let ex=e=>{let{componentCls:t,colorTextDisabled:r}=e;return{[`${t}-wrapper`]:Object.assign(Object.assign({},(0,es.Wf)(e)),{[t]:{outline:0,"input[type='file']":{cursor:"pointer"}},[`${t}-select`]:{display:"inline-block"},[`${t}-disabled`]:{color:r,cursor:"not-allowed"}})}};var eC=(0,eu.Z)("Upload",e=>{let{fontSizeHeading3:t,fontSize:r,lineHeight:n,lineWidth:o,controlHeightLG:i}=e,a=(0,ed.TS)(e,{uploadThumbnailSize:2*t,uploadProgressOffset:Math.round(r*n)/2+o,uploadPicCardSize:2.55*i});return[ex(a),ep(a),ew(a),ek(a),ef(a),ev(a),eE(a),(0,ec.Z)(a)]},e=>({actionsColor:e.colorTextDescription}));let eS=`__LIST_IGNORE_${Date.now()}__`,eO=n.forwardRef((e,t)=>{var r;let{fileList:i,defaultFileList:l,onRemove:s,showUploadList:c=!0,listType:u="text",onPreview:d,onDownload:p,onChange:f,onDrop:m,previewFile:g,disabled:h,locale:b,iconRender:v,isImageUrl:$,progress:y,prefixCls:w,className:k,type:E="select",children:x,style:C,itemRender:S,maxCount:O,data:j={},multiple:F=!1,action:A="",accept:L="",supportServerRender:z=!0}=e,T=n.useContext(N.Z),X=null!=h?h:T,[_,U]=(0,I.Z)(l||[],{value:i,postState:e=>null!=e?e:[]}),[H,W]=n.useState("drop"),B=n.useRef(null);n.useMemo(()=>{let e=Date.now();(i||[]).forEach((t,r)=>{t.uid||Object.isFrozen(t)||(t.uid=`__AUTO__${e}_${r}__`)})},[i]);let q=(e,t,r)=>{let n=(0,o.Z)(t),i=!1;1===O?n=n.slice(-1):O&&(i=n.length>O,n=n.slice(0,O)),(0,D.flushSync)(()=>{U(n)});let a={file:e,fileList:n};r&&(a.event=r),(!i||n.some(t=>t.uid===e.uid))&&(0,D.flushSync)(()=>{null==f||f(a)})},K=e=>{let t=e.filter(e=>!e.file[eS]);if(!t.length)return;let r=t.map(e=>V(e.file)),n=(0,o.Z)(_);r.forEach(e=>{n=G(e,n)}),r.forEach((e,r)=>{let o=e;if(t[r].parsedFile)e.status="uploading";else{let t;let{originFileObj:r}=e;try{t=new File([r],r.name,{type:r.type})}catch(e){(t=new Blob([r],{type:r.type})).name=r.name,t.lastModifiedDate=new Date,t.lastModified=new Date().getTime()}t.uid=e.uid,o=t}q(o,n)})},Q=(e,t,r)=>{try{"string"==typeof e&&(e=JSON.parse(e))}catch(e){}if(!J(t,_))return;let n=V(t);n.status="done",n.percent=100,n.response=e,n.xhr=r;let o=G(n,_);q(n,o)},Y=(e,t)=>{if(!J(t,_))return;let r=V(t);r.status="uploading",r.percent=e.percent;let n=G(r,_);q(r,n,e)},ee=(e,t,r)=>{if(!J(r,_))return;let n=V(r);n.error=e,n.response=t,n.status="error";let o=G(n,_);q(n,o)},et=e=>{let t;Promise.resolve("function"==typeof s?s(e):s).then(r=>{var n;if(!1===r)return;let o=function(e,t){let r=void 0!==e.uid?"uid":"name",n=t.filter(t=>t[r]!==e[r]);return n.length===t.length?null:n}(e,_);o&&(t=Object.assign(Object.assign({},e),{status:"removed"}),null==_||_.forEach(e=>{let r=void 0!==t.uid?"uid":"name";e[r]!==t[r]||Object.isFrozen(e)||(e.status="removed")}),null===(n=B.current)||void 0===n||n.abort(t),q(t,o))})},er=e=>{W(e.type),"drop"===e.type&&(null==m||m(e))};n.useImperativeHandle(t,()=>({onBatchStart:K,onSuccess:Q,onProgress:Y,onError:ee,fileList:_,upload:B.current}));let{getPrefixCls:en,direction:eo,upload:ei}=n.useContext(R.E_),ea=en("upload",w),es=Object.assign(Object.assign({onBatchStart:K,onError:ee,onProgress:Y,onSuccess:Q},e),{data:j,multiple:F,action:A,accept:L,supportServerRender:z,prefixCls:ea,disabled:X,beforeUpload:(t,r)=>{var n,o,i,a;return n=void 0,o=void 0,i=void 0,a=function*(){let{beforeUpload:n,transformFile:o}=e,i=t;if(n){let e=yield n(t,r);if(!1===e)return!1;if(delete t[eS],e===eS)return Object.defineProperty(t,eS,{value:!0,configurable:!0}),!1;"object"==typeof e&&e&&(i=e)}return o&&(i=yield o(i)),i},new(i||(i=Promise))(function(e,t){function r(e){try{s(a.next(e))}catch(e){t(e)}}function l(e){try{s(a.throw(e))}catch(e){t(e)}}function s(t){var n;t.done?e(t.value):((n=t.value)instanceof i?n:new i(function(e){e(n)})).then(r,l)}s((a=a.apply(n,o||[])).next())})},onChange:void 0});delete es.className,delete es.style,(!x||X)&&delete es.id;let[ec,eu]=eC(ea),[ed]=(0,P.Z)("Upload",M.Z.Upload),{showRemoveIcon:ep,showPreviewIcon:ef,showDownloadIcon:em,removeIcon:eg,previewIcon:eh,downloadIcon:eb}="boolean"==typeof c?{}:c,ev=(e,t)=>c?n.createElement(el,{prefixCls:ea,listType:u,items:_,previewFile:g,onPreview:d,onDownload:p,onRemove:et,showRemoveIcon:!X&&ep,showPreviewIcon:ef,showDownloadIcon:em,removeIcon:eg,previewIcon:eh,downloadIcon:eb,iconRender:v,locale:Object.assign(Object.assign({},ed),b),isImageUrl:$,progress:y,appendAction:e,appendActionVisible:t,itemRender:S,disabled:X}):e,e$=a()(`${ea}-wrapper`,k,eu,null==ei?void 0:ei.className,{[`${ea}-rtl`]:"rtl"===eo,[`${ea}-picture-card-wrapper`]:"picture-card"===u,[`${ea}-picture-circle-wrapper`]:"picture-circle"===u}),ey=Object.assign(Object.assign({},null==ei?void 0:ei.style),C);if("drag"===E){let e=a()(eu,ea,`${ea}-drag`,{[`${ea}-drag-uploading`]:_.some(e=>"uploading"===e.status),[`${ea}-drag-hover`]:"dragover"===H,[`${ea}-disabled`]:X,[`${ea}-rtl`]:"rtl"===eo});return ec(n.createElement("span",{className:e$},n.createElement("div",{className:e,style:ey,onDrop:er,onDragOver:er,onDragLeave:er},n.createElement(Z,Object.assign({},es,{ref:B,className:`${ea}-btn`}),n.createElement("div",{className:`${ea}-drag-container`},x))),ev()))}let ew=a()(ea,`${ea}-select`,{[`${ea}-disabled`]:X}),ek=(r=x?void 0:{display:"none"},n.createElement("div",{className:ew,style:r},n.createElement(Z,Object.assign({},es,{ref:B}))));return ec("picture-card"===u||"picture-circle"===u?n.createElement("span",{className:e$},ev(ek,!!x)):n.createElement("span",{className:e$},ek,ev()))});var ej=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,n=Object.getOwnPropertySymbols(e);ot.indexOf(n[o])&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]]);return r};let eZ=n.forwardRef((e,t)=>{var{style:r,height:o}=e,i=ej(e,["style","height"]);return n.createElement(eO,Object.assign({ref:t},i,{type:"drag",style:Object.assign(Object.assign({},r),{height:o})}))});eO.Dragger=eZ,eO.LIST_IGNORE=eS;var eI=eO}}]); \ No newline at end of file diff --git a/pilot/server/static/_next/static/chunks/604.0b6534ada5e802bc.js b/pilot/server/static/_next/static/chunks/604.0b6534ada5e802bc.js deleted file mode 100644 index 42a2d2f68..000000000 --- a/pilot/server/static/_next/static/chunks/604.0b6534ada5e802bc.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[604],{24093:function(e,l,t){t.r(l),t.d(l,{default:function(){return ev}});var r=t(85893),a=t(67294),s=t(2093),n=t(1375),o=t(2453),i=t(58989),c=t(83454),d=e=>{let{queryAgentURL:l="/api/v1/chat/completions"}=e,t=(0,a.useMemo)(()=>new AbortController,[]),r=(0,a.useCallback)(async e=>{let{context:r,data:a,chatId:s,onMessage:d,onClose:u,onDone:x,onError:m}=e;if(!r){o.ZP.warning(i.Z.t("NoContextTip"));return}let h={...a,conv_uid:s,user_input:r};if(!h.conv_uid){o.ZP.error("conv_uid 不存在,请刷新后重试");return}try{var p;await (0,n.L)("".concat(null!==(p=c.env.API_BASE_URL)&&void 0!==p?p:"").concat(l),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(h),signal:t.signal,openWhenHidden:!0,async onopen(e){if(e.ok&&e.headers.get("content-type")===n.a)return},onclose(){t.abort(),null==u||u()},onerror(e){throw Error(e)},onmessage:e=>{var l;let t=null===(l=e.data)||void 0===l?void 0:l.replaceAll("\\n","\n");"[DONE]"===t?null==x||x():(null==t?void 0:t.startsWith("[ERROR]"))?null==m||m(null==t?void 0:t.replace("[ERROR]","")):null==d||d(t)}})}catch(e){t.abort(),null==m||m("Sorry, We meet some error, please try agin later.",e)}},[l]);return(0,a.useEffect)(()=>()=>{t.abort()},[]),r},u=t(39332),x=t(99513),m=t(24019),h=t(50888),p=t(97937),g=t(63606),v=t(50228),f=t(87547),b=t(89035),j=t(33035),y=t(12767),w=t(94184),Z=t.n(w),_=t(66309),N=t(81799),k=t(41468),C=t(57132),S=t(29158),P=t(98165),R=t(79166),E=t(93179),O=t(71577),D=t(38426),M=t(20640),I=t.n(M);let L={code(e){var l;let{inline:t,node:a,className:s,children:n,style:i,...c}=e,d=/language-(\w+)/.exec(s||"");return!t&&d?(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsx)(O.ZP,{className:"absolute right-3 top-2 text-gray-300 hover:!text-gray-200 bg-gray-700",type:"text",icon:(0,r.jsx)(C.Z,{}),onClick:()=>{let e=I()(n);o.ZP[e?"success":"error"](e?"Copy success":"Copy failed")}}),(0,r.jsx)(E.Z,{language:null!==(l=null==d?void 0:d[1])&&void 0!==l?l:"javascript",style:R.Z,children:n})]}):(0,r.jsx)("code",{...c,style:i,className:"px-[6px] py-[2px] rounded bg-gray-700 text-gray-100 dark:bg-gray-100 dark:text-gray-800 text-sm",children:n})},ul(e){let{children:l}=e;return(0,r.jsx)("ul",{className:"py-1",children:l})},ol(e){let{children:l}=e;return(0,r.jsx)("ol",{className:"py-1",children:l})},li(e){let{children:l,ordered:t}=e;return(0,r.jsx)("li",{className:"text-sm leading-7 ml-5 pl-2 text-gray-600 dark:text-gray-300 ".concat(t?"list-decimal":"list-disc"),children:l})},table(e){let{children:l}=e;return(0,r.jsx)("table",{className:"my-2 rounded-tl-md rounded-tr-md max-w-full bg-white dark:bg-gray-900 text-sm rounded-lg overflow-hidden",children:l})},thead(e){let{children:l}=e;return(0,r.jsx)("thead",{className:"bg-[#fafafa] dark:bg-black font-semibold",children:l})},th(e){let{children:l}=e;return(0,r.jsx)("th",{className:"!text-left p-4",children:l})},td(e){let{children:l}=e;return(0,r.jsx)("td",{className:"p-4 border-t border-[#f0f0f0] dark:border-gray-700",children:l})},h1(e){let{children:l}=e;return(0,r.jsx)("h3",{className:"text-2xl font-bold my-4 border-b border-slate-300 pb-4",children:l})},h2(e){let{children:l}=e;return(0,r.jsx)("h3",{className:"text-xl font-bold my-3",children:l})},h3(e){let{children:l}=e;return(0,r.jsx)("h3",{className:"text-lg font-semibold my-2",children:l})},h4(e){let{children:l}=e;return(0,r.jsx)("h3",{className:"text-base font-semibold my-1",children:l})},a(e){let{children:l,href:t}=e;return(0,r.jsxs)("div",{className:"inline-block text-blue-600 dark:text-blue-400",children:[(0,r.jsx)(S.Z,{className:"mr-1"}),(0,r.jsx)("a",{href:t,target:"_blank",children:l})]})},img(e){let{src:l,alt:t}=e;return(0,r.jsx)("div",{children:(0,r.jsx)(D.Z,{className:"min-h-[1rem] max-w-full max-h-full border rounded",src:l,alt:t,placeholder:(0,r.jsx)(_.Z,{icon:(0,r.jsx)(P.Z,{spin:!0}),color:"processing",children:"Image Loading..."}),fallback:"/images/fallback.png"})})},blockquote(e){let{children:l}=e;return(0,r.jsx)("blockquote",{className:"py-4 px-6 border-l-4 border-blue-600 rounded bg-white my-2 text-gray-500 dark:bg-slate-800 dark:text-gray-200 dark:border-white shadow-sm",children:l})}},A={todo:{bgClass:"bg-gray-500",icon:(0,r.jsx)(m.Z,{className:"ml-2"})},runing:{bgClass:"bg-blue-500",icon:(0,r.jsx)(h.Z,{className:"ml-2"})},failed:{bgClass:"bg-red-500",icon:(0,r.jsx)(p.Z,{className:"ml-2"})},completed:{bgClass:"bg-green-500",icon:(0,r.jsx)(g.Z,{className:"ml-2"})}};function T(e){return e.replaceAll("\\n","\n").replace(/]+)>/gi,"
").replace(/]+)>/gi,"")}var F=(0,a.memo)(function(e){let{children:l,content:t,isChartChat:s,onLinkClick:n}=e,{scene:o}=(0,a.useContext)(k.p),{context:i,model_name:c,role:d}=t,u="view"===d,{relations:x,value:m,cachePlguinContext:h}=(0,a.useMemo)(()=>{if("string"!=typeof i)return{relations:[],value:"",cachePlguinContext:[]};let[e,l]=i.split(" relations:"),t=l?l.split(","):[],r=[],a=0,s=e.replace(/]*>[^<]*<\/dbgpt-view>/gi,e=>{try{var l;console.log(e);let t=e.replaceAll("\n","\\n").replace(/<[^>]*>|<\/[^>]*>/gm,""),s=JSON.parse(t),n="".concat(a,"");return r.push({...s,result:T(null!==(l=s.result)&&void 0!==l?l:"")}),a++,n}catch(l){return console.log(l.message,l),e}});return{relations:t,cachePlguinContext:r,value:s}},[i]),p=(0,a.useMemo)(()=>({"custom-view"(e){var l;let{children:t}=e,a=+t.toString();if(!h[a])return t;let{name:s,status:n,err_msg:o,result:i}=h[a],{bgClass:c,icon:d}=null!==(l=A[n])&&void 0!==l?l:{};return(0,r.jsxs)("div",{className:"bg-white dark:bg-[#212121] rounded-lg overflow-hidden my-2 flex flex-col lg:max-w-[80%]",children:[(0,r.jsxs)("div",{className:Z()("flex px-4 md:px-6 py-2 items-center text-white text-sm",c),children:[s,d]}),i?(0,r.jsx)("div",{className:"px-4 md:px-6 py-4 text-sm",children:(0,r.jsx)(j.D,{components:L,rehypePlugins:[y.Z],children:null!=i?i:""})}):(0,r.jsx)("div",{className:"px-4 md:px-6 py-4 text-sm",children:o})]})}}),[i,h]);return(0,r.jsxs)("div",{className:Z()("relative flex flex-wrap w-full px-2 sm:px-4 py-2 sm:py-6 rounded-xl break-words",{"bg-slate-100 dark:bg-[#353539]":u,"lg:w-full xl:w-full pl-0":["chat_with_db_execute","chat_dashboard"].includes(o)}),children:[(0,r.jsx)("div",{className:"mr-2 flex flex-shrink-0 items-center justify-center h-7 w-7 rounded-full text-lg sm:mr-4",children:u?(0,N.A)(c)||(0,r.jsx)(v.Z,{}):(0,r.jsx)(f.Z,{})}),(0,r.jsxs)("div",{className:"flex-1 overflow-hidden items-center text-md leading-8",children:[!u&&"string"==typeof i&&i,u&&s&&"object"==typeof i&&(0,r.jsxs)("div",{children:["[".concat(i.template_name,"]: "),(0,r.jsxs)("span",{className:"text-[#1677ff] cursor-pointer",onClick:n,children:[(0,r.jsx)(b.Z,{className:"mr-1"}),i.template_introduce||"More Details"]})]}),u&&"string"==typeof i&&(0,r.jsx)(j.D,{components:{...L,...p},rehypePlugins:[y.Z],children:T(m)}),!!(null==x?void 0:x.length)&&(0,r.jsx)("div",{className:"flex flex-wrap mt-2",children:null==x?void 0:x.map((e,l)=>(0,r.jsx)(_.Z,{color:"#108ee9",children:e},e+l))})]}),l]})}),H=t(59301),V=t(41132),$=t(74312),q=t(3414),z=t(72868),J=t(59562),W=t(14553),G=t(25359),B=t(7203),K=t(48665),Q=t(26047),U=t(99056),X=t(57814),Y=t(63955),ee=t(33028),el=t(40911),et=t(66478),er=t(83062),ea=t(50489),es=t(67421),en=e=>{var l;let{conv_index:t,question:s,knowledge_space:n}=e,{t:i}=(0,es.$G)(),{chatId:c}=(0,a.useContext)(k.p),[d,u]=(0,a.useState)(""),[x,m]=(0,a.useState)(4),[h,p]=(0,a.useState)(""),g=(0,a.useRef)(null),[v,f]=o.ZP.useMessage(),[b,j]=(0,a.useState)({});(0,a.useEffect)(()=>{(0,ea.Vx)((0,ea.Lu)()).then(e=>{var l;console.log(e),j(null!==(l=e[1])&&void 0!==l?l:{})}).catch(e=>{console.log(e)})},[]);let y=(0,a.useCallback)((e,l)=>{l?(0,ea.Vx)((0,ea.Eb)(c,t)).then(e=>{var l,t,r,a;let s=null!==(l=e[1])&&void 0!==l?l:{};u(null!==(t=s.ques_type)&&void 0!==t?t:""),m(parseInt(null!==(r=s.score)&&void 0!==r?r:"4")),p(null!==(a=s.messages)&&void 0!==a?a:"")}).catch(e=>{console.log(e)}):(u(""),m(4),p(""))},[c,t]),w=(0,$.Z)(q.Z)(e=>{let{theme:l}=e;return{backgroundColor:"dark"===l.palette.mode?"#FBFCFD":"#0E0E10",...l.typography["body-sm"],padding:l.spacing(1),display:"flex",alignItems:"center",justifyContent:"center",borderRadius:4,width:"100%",height:"100%"}});return(0,r.jsxs)(z.L,{onOpenChange:y,children:[f,(0,r.jsx)(er.Z,{title:i("Rating"),children:(0,r.jsx)(J.Z,{slots:{root:W.ZP},slotProps:{root:{variant:"plain",color:"primary"}},sx:{borderRadius:40},children:(0,r.jsx)(H.Z,{})})}),(0,r.jsxs)(G.Z,{children:[(0,r.jsx)(B.Z,{disabled:!0,sx:{minHeight:0}}),(0,r.jsx)(K.Z,{sx:{width:"100%",maxWidth:350,display:"grid",gap:3,padding:1},children:(0,r.jsx)("form",{onSubmit:e=>{e.preventDefault();let l={conv_uid:c,conv_index:t,question:s,knowledge_space:n,score:x,ques_type:d,messages:h};console.log(l),(0,ea.Vx)((0,ea.VC)({data:l})).then(e=>{v.open({type:"success",content:"save success"})}).catch(e=>{v.open({type:"error",content:"save error"})})},children:(0,r.jsxs)(Q.Z,{container:!0,spacing:.5,columns:13,sx:{flexGrow:1},children:[(0,r.jsx)(Q.Z,{xs:3,children:(0,r.jsx)(w,{children:i("Q_A_Category")})}),(0,r.jsx)(Q.Z,{xs:10,children:(0,r.jsx)(U.Z,{action:g,value:d,placeholder:"Choose one…",onChange:(e,l)=>u(null!=l?l:""),...d&&{endDecorator:(0,r.jsx)(W.ZP,{size:"sm",variant:"plain",color:"neutral",onMouseDown:e=>{e.stopPropagation()},onClick:()=>{var e;u(""),null===(e=g.current)||void 0===e||e.focusVisible()},children:(0,r.jsx)(V.Z,{})}),indicator:null},sx:{width:"100%"},children:null===(l=Object.keys(b))||void 0===l?void 0:l.map(e=>(0,r.jsx)(X.Z,{value:e,children:b[e]},e))})}),(0,r.jsx)(Q.Z,{xs:3,children:(0,r.jsx)(w,{children:(0,r.jsx)(er.Z,{title:(0,r.jsx)(K.Z,{children:(0,r.jsx)("div",{children:i("feed_back_desc")})}),variant:"solid",placement:"left",children:i("Q_A_Rating")})})}),(0,r.jsx)(Q.Z,{xs:10,sx:{pl:0,ml:0},children:(0,r.jsx)(Y.Z,{"aria-label":"Custom",step:1,min:0,max:5,valueLabelFormat:function(e){return({0:i("Lowest"),1:i("Missed"),2:i("Lost"),3:i("Incorrect"),4:i("Verbose"),5:i("Best")})[e]},valueLabelDisplay:"on",marks:[{value:0,label:"0"},{value:1,label:"1"},{value:2,label:"2"},{value:3,label:"3"},{value:4,label:"4"},{value:5,label:"5"}],sx:{width:"90%",pt:3,m:2,ml:1},onChange:e=>{var l;return m(null===(l=e.target)||void 0===l?void 0:l.value)},value:x})}),(0,r.jsx)(Q.Z,{xs:13,children:(0,r.jsx)(ee.Z,{placeholder:i("Please_input_the_text"),value:h,onChange:e=>p(e.target.value),minRows:2,maxRows:4,endDecorator:(0,r.jsx)(el.ZP,{level:"body-xs",sx:{ml:"auto"},children:i("input_count")+h.length+i("input_unit")}),sx:{width:"100%",fontSize:14}})}),(0,r.jsx)(Q.Z,{xs:13,children:(0,r.jsx)(et.Z,{type:"submit",variant:"outlined",sx:{width:"100%",height:"100%"},children:i("submit")})})]})})})]})]})},eo=t(32983),ei=t(12069),ec=t(96486),ed=t.n(ec),eu=t(38954),ex=t(98399),em=e=>{var l;let{messages:t,onSubmit:n}=e,{dbParam:i,currentDialogue:c,scene:d,model:m,refreshDialogList:h,chatId:p,agentList:g}=(0,a.useContext)(k.p),{t:v}=(0,es.$G)(),f=(0,u.useSearchParams)(),b=null!==(l=f&&f.get("spaceNameOriginal"))&&void 0!==l?l:"",[j,y]=(0,a.useState)(!1),[w,_]=(0,a.useState)(!1),[S,P]=(0,a.useState)(t),[R,E]=(0,a.useState)(""),O=(0,a.useRef)(null),D=(0,a.useMemo)(()=>"chat_dashboard"===d,[d]),M=(0,a.useMemo)(()=>{switch(d){case"chat_agent":return g.join(",");case"chat_excel":return null==c?void 0:c.select_param;default:return b||i}},[d,g,c,i,b]),L=async e=>{if(!j&&e.trim())try{y(!0),await n(e,{select_param:null!=M?M:""})}finally{y(!1)}},A=e=>{try{return JSON.parse(e)}catch(l){return e}},[T,H]=o.ZP.useMessage(),V=async e=>{let l=null==e?void 0:e.replace(/\trelations:.*/g,""),t=I()(l);t?l?T.open({type:"success",content:v("Copy_success")}):T.open({type:"warning",content:v("Copy_nothing")}):T.open({type:"error",content:v("Copry_error")})};return(0,s.Z)(async()=>{let e=(0,ex.a_)();e&&e.id===p&&(await L(e.message),h(),localStorage.removeItem(ex.rU))},[p]),(0,a.useEffect)(()=>{let e=t;D&&(e=ed().cloneDeep(t).map(e=>((null==e?void 0:e.role)==="view"&&"string"==typeof(null==e?void 0:e.context)&&(e.context=A(null==e?void 0:e.context)),e))),P(e.filter(e=>["view","human"].includes(e.role)))},[D,t]),(0,a.useEffect)(()=>{setTimeout(()=>{var e;null===(e=O.current)||void 0===e||e.scrollTo(0,O.current.scrollHeight)},50)},[t]),(0,r.jsxs)(r.Fragment,{children:[H,(0,r.jsx)("div",{ref:O,className:"flex flex-1 overflow-y-auto pb-8 w-full flex-col",children:(0,r.jsx)("div",{className:"flex items-center flex-1 flex-col text-sm leading-6 text-slate-900 dark:text-slate-300 sm:text-base sm:leading-7",children:S.length?S.map((e,l)=>{var t;return(0,r.jsx)(F,{content:e,isChartChat:D,onLinkClick:()=>{_(!0),E(JSON.stringify(null==e?void 0:e.context,null,2))},children:"view"===e.role&&(0,r.jsxs)("div",{className:"flex w-full flex-row-reverse pt-2 md:pt-4 border-t border-gray-200 mt-2 md:mt-4",children:[(0,r.jsx)(en,{conv_index:Math.ceil((l+1)/2),question:null===(t=null==S?void 0:S.filter(l=>(null==l?void 0:l.role)==="human"&&(null==l?void 0:l.order)===e.order)[0])||void 0===t?void 0:t.context,knowledge_space:b||i||""}),(0,r.jsx)(er.Z,{title:v("Copy"),children:(0,r.jsx)(et.Z,{onClick:()=>V(null==e?void 0:e.context),slots:{root:W.ZP},slotProps:{root:{variant:"plain",color:"primary"}},sx:{borderRadius:40},children:(0,r.jsx)(C.Z,{})})})]})},l)}):(0,r.jsx)(eo.Z,{image:"/empty.png",imageStyle:{width:320,height:320,margin:"0 auto",maxWidth:"100%",maxHeight:"100%"},className:"flex items-center justify-center flex-col h-full w-full",description:"Start a conversation"})})}),(0,r.jsx)("div",{className:Z()("relative after:absolute after:-top-8 after:h-8 after:w-full after:bg-gradient-to-t after:from-white after:to-transparent dark:after:from-[#212121]",{"cursor-not-allowed":"chat_excel"===d&&!(null==c?void 0:c.select_param)}),children:(0,r.jsxs)("div",{className:"flex flex-wrap w-full py-2 sm:pt-6 sm:pb-10",children:[m&&(0,r.jsx)("div",{className:"mr-2 flex items-center h-10",children:(0,N.A)(m)}),(0,r.jsx)(eu.Z,{loading:j,onSubmit:L})]})}),(0,r.jsx)(ei.default,{title:"JSON Editor",open:w,width:"60%",cancelButtonProps:{hidden:!0},onOk:()=>{_(!1)},onCancel:()=>{_(!1)},children:(0,r.jsx)(x.Z,{className:"w-full h-[500px]",language:"json",value:R})})]})},eh=t(70803),ep=t(39156),eg=t(45247),ev=()=>{var e;let l=(0,u.useSearchParams)(),{scene:t,chatId:n,model:o,setModel:i}=(0,a.useContext)(k.p),c=d({}),x=null!==(e=l&&l.get("initMessage"))&&void 0!==e?e:"",[m,h]=(0,a.useState)(!1),[p,g]=(0,a.useState)(),[v,f]=(0,a.useState)([]),b=async()=>{h(!0);let[,e]=await (0,ea.Vx)((0,ea.$i)(n));f(null!=e?e:[]),h(!1)},j=e=>{var l;let t=null===(l=e[e.length-1])||void 0===l?void 0:l.context;if(t)try{let e=JSON.parse(t);g((null==e?void 0:e.template_name)==="report"?null==e?void 0:e.charts:void 0)}catch(e){g(void 0)}};(0,s.Z)(async()=>{let e=(0,ex.a_)();e&&e.id===n||await b()},[x,n]),(0,a.useEffect)(()=>{var e,l;if(!v.length)return;let t=null===(e=null===(l=v.filter(e=>"view"===e.role))||void 0===l?void 0:l.slice(-1))||void 0===e?void 0:e[0];(null==t?void 0:t.model_name)&&i(t.model_name),j(v)},[v.length]);let y=(0,a.useCallback)((e,l)=>new Promise(r=>{let a=[...v,{role:"human",context:e,model_name:o,order:0,time_stamp:0},{role:"view",context:"",model_name:o,order:0,time_stamp:0}],s=a.length-1;f([...a]),c({context:e,data:{...l,chat_mode:t||"chat_normal",model_name:o},chatId:n,onMessage:e=>{a[s].context=e,f([...a])},onDone:()=>{j(a),r()},onClose:()=>{j(a),r()},onError:e=>{a[s].context=e,f([...a]),r()}})}),[v,c,o]);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(eg.Z,{visible:m}),(0,r.jsx)(eh.Z,{refreshHistory:b,modelChange:e=>{i(e)}}),(0,r.jsxs)("div",{className:"px-4 flex flex-1 flex-wrap overflow-hidden relative",children:[!!(null==p?void 0:p.length)&&(0,r.jsx)("div",{className:"w-full xl:w-3/4 h-3/5 xl:pr-4 xl:h-full overflow-y-auto",children:(0,r.jsx)(ep.Z,{chartsData:p})}),!(null==p?void 0:p.length)&&"chat_dashboard"===t&&(0,r.jsx)(eo.Z,{image:"/empty.png",imageStyle:{width:320,height:320,margin:"0 auto",maxWidth:"100%",maxHeight:"100%"},className:"w-full xl:w-3/4 h-3/5 xl:h-full pt-0 md:pt-10"}),(0,r.jsx)("div",{className:Z()("flex flex-1 flex-col overflow-hidden",{"px-0 xl:pl-4 h-2/5 xl:h-full border-t xl:border-t-0 xl:border-l":"chat_dashboard"===t,"h-full lg:px-8":"chat_dashboard"!==t}),children:(0,r.jsx)(em,{messages:v,onSubmit:y})})]})]})}},38954:function(e,l,t){t.d(l,{Z:function(){return j}});var r=t(85893),a=t(27496),s=t(59566),n=t(71577),o=t(67294),i=t(2487),c=t(83062),d=t(2453),u=t(74627),x=t(39479),m=t(51009),h=t(58299),p=t(577),g=t(30119),v=t(67421);let f=e=>{let{data:l,loading:t,submit:a,close:s}=e,{t:n}=(0,v.$G)(),o=e=>()=>{a(e),s()};return(0,r.jsx)("div",{style:{maxHeight:400,overflow:"auto"},children:(0,r.jsx)(i.Z,{dataSource:null==l?void 0:l.data,loading:t,rowKey:e=>e.prompt_name,renderItem:e=>(0,r.jsx)(i.Z.Item,{onClick:o(e.content),children:(0,r.jsx)(c.Z,{title:e.content,children:(0,r.jsx)(i.Z.Item.Meta,{style:{cursor:"copy"},title:e.prompt_name,description:n("Prompt_Info_Scene")+":".concat(e.chat_scene,",")+n("Prompt_Info_Sub_Scene")+":".concat(e.sub_chat_scene)})})},e.prompt_name)})})};var b=e=>{let{submit:l}=e,{t}=(0,v.$G)(),[a,s]=(0,o.useState)(!1),[n,i]=(0,o.useState)("common"),{data:b,loading:j}=(0,p.Z)(()=>(0,g.PR)("/prompt/list",{prompt_type:n}),{refreshDeps:[n],onError:e=>{d.ZP.error(null==e?void 0:e.message)}});return(0,r.jsx)(u.Z,{title:(0,r.jsx)(x.Z.Item,{label:"Prompt "+t("Type"),children:(0,r.jsx)(m.default,{style:{width:130},value:n,onChange:e=>{i(e)},options:[{label:t("Public")+" Prompts",value:"common"},{label:t("Private")+" Prompts",value:"private"}]})}),content:(0,r.jsx)(f,{data:b,loading:j,submit:l,close:()=>{s(!1)}}),placement:"topRight",trigger:"click",open:a,onOpenChange:e=>{s(e)},children:(0,r.jsx)(c.Z,{title:t("Click_Select")+" Prompt",children:(0,r.jsx)(h.Z,{className:"bottom-32"})})})},j=function(e){let{children:l,loading:t,onSubmit:i,...c}=e,[d,u]=(0,o.useState)("");return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.default.TextArea,{className:"flex-1",size:"large",value:d,autoSize:{minRows:1,maxRows:4},...c,onPressEnter:e=>{if(d.trim()&&13===e.keyCode){if(e.shiftKey){u(e=>e+"\n");return}i(d),setTimeout(()=>{u("")},0)}},onChange:e=>{if("number"==typeof c.maxLength){u(e.target.value.substring(0,c.maxLength));return}u(e.target.value)}}),(0,r.jsx)(n.ZP,{className:"ml-2 flex items-center justify-center",size:"large",type:"text",loading:t,icon:(0,r.jsx)(a.Z,{}),onClick:()=>{i(d)}}),(0,r.jsx)(b,{submit:e=>{u(d+e)}}),l]})}},45247:function(e,l,t){var r=t(85893),a=t(50888);l.Z=function(e){let{visible:l}=e;return l?(0,r.jsx)("div",{className:"absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-white dark:bg-black bg-opacity-50 dark:bg-opacity-50 backdrop-blur-sm text-3xl animate-fade animate-duration-200",children:(0,r.jsx)(a.Z,{})}):null}}}]); \ No newline at end of file diff --git a/pilot/server/static/_next/static/chunks/607-b224c640f6907e4b.js b/pilot/server/static/_next/static/chunks/607-b224c640f6907e4b.js new file mode 100644 index 000000000..4a5c42434 --- /dev/null +++ b/pilot/server/static/_next/static/chunks/607-b224c640f6907e4b.js @@ -0,0 +1,78 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[607],{84567:function(e,t,n){n.d(t,{Z:function(){return w}});var r=n(94184),l=n.n(r),o=n(50132),a=n(67294),i=n(53124),c=n(98866),s=n(65223);let u=a.createContext(null);var d=n(63185),f=n(45353),p=n(17415),m=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var l=0,r=Object.getOwnPropertySymbols(e);lt.indexOf(r[l])&&Object.prototype.propertyIsEnumerable.call(e,r[l])&&(n[r[l]]=e[r[l]]);return n};let h=a.forwardRef((e,t)=>{var n;let{prefixCls:r,className:h,rootClassName:g,children:x,indeterminate:b=!1,style:v,onMouseEnter:y,onMouseLeave:w,skipGroup:C=!1,disabled:$}=e,E=m(e,["prefixCls","className","rootClassName","children","indeterminate","style","onMouseEnter","onMouseLeave","skipGroup","disabled"]),{getPrefixCls:S,direction:k,checkbox:Z}=a.useContext(i.E_),N=a.useContext(u),{isFormItemInput:O}=a.useContext(s.aM),R=a.useContext(c.Z),I=null!==(n=(null==N?void 0:N.disabled)||$)&&void 0!==n?n:R,j=a.useRef(E.value);a.useEffect(()=>{null==N||N.registerValue(E.value)},[]),a.useEffect(()=>{if(!C)return E.value!==j.current&&(null==N||N.cancelValue(j.current),null==N||N.registerValue(E.value),j.current=E.value),()=>null==N?void 0:N.cancelValue(E.value)},[E.value]);let P=S("checkbox",r),[T,z]=(0,d.ZP)(P),M=Object.assign({},E);N&&!C&&(M.onChange=function(){E.onChange&&E.onChange.apply(E,arguments),N.toggleOption&&N.toggleOption({label:x,value:E.value})},M.name=N.name,M.checked=N.value.includes(E.value));let H=l()(`${P}-wrapper`,{[`${P}-rtl`]:"rtl"===k,[`${P}-wrapper-checked`]:M.checked,[`${P}-wrapper-disabled`]:I,[`${P}-wrapper-in-form-item`]:O},null==Z?void 0:Z.className,h,g,z),L=l()({[`${P}-indeterminate`]:b},p.A,z);return T(a.createElement(f.Z,{component:"Checkbox",disabled:I},a.createElement("label",{className:H,style:Object.assign(Object.assign({},null==Z?void 0:Z.style),v),onMouseEnter:y,onMouseLeave:w},a.createElement(o.Z,Object.assign({"aria-checked":b?"mixed":void 0},M,{prefixCls:P,className:L,disabled:I,ref:t})),void 0!==x&&a.createElement("span",null,x))))});var g=n(74902),x=n(98423),b=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var l=0,r=Object.getOwnPropertySymbols(e);lt.indexOf(r[l])&&Object.prototype.propertyIsEnumerable.call(e,r[l])&&(n[r[l]]=e[r[l]]);return n};let v=a.forwardRef((e,t)=>{let{defaultValue:n,children:r,options:o=[],prefixCls:c,className:s,rootClassName:f,style:p,onChange:m}=e,v=b(e,["defaultValue","children","options","prefixCls","className","rootClassName","style","onChange"]),{getPrefixCls:y,direction:w}=a.useContext(i.E_),[C,$]=a.useState(v.value||n||[]),[E,S]=a.useState([]);a.useEffect(()=>{"value"in v&&$(v.value||[])},[v.value]);let k=a.useMemo(()=>o.map(e=>"string"==typeof e||"number"==typeof e?{label:e,value:e}:e),[o]),Z=y("checkbox",c),N=`${Z}-group`,[O,R]=(0,d.ZP)(Z),I=(0,x.Z)(v,["value","disabled"]),j=o.length?k.map(e=>a.createElement(h,{prefixCls:Z,key:e.value.toString(),disabled:"disabled"in e?e.disabled:v.disabled,value:e.value,checked:C.includes(e.value),onChange:e.onChange,className:`${N}-item`,style:e.style,title:e.title},e.label)):r,P={toggleOption:e=>{let t=C.indexOf(e.value),n=(0,g.Z)(C);-1===t?n.push(e.value):n.splice(t,1),"value"in v||$(n),null==m||m(n.filter(e=>E.includes(e)).sort((e,t)=>{let n=k.findIndex(t=>t.value===e),r=k.findIndex(e=>e.value===t);return n-r}))},value:C,disabled:v.disabled,name:v.name,registerValue:e=>{S(t=>[].concat((0,g.Z)(t),[e]))},cancelValue:e=>{S(t=>t.filter(t=>t!==e))}},T=l()(N,{[`${N}-rtl`]:"rtl"===w},s,f,R);return O(a.createElement("div",Object.assign({className:T,style:p},I,{ref:t}),a.createElement(u.Provider,{value:P},j)))});var y=a.memo(v);h.Group=y,h.__ANT_CHECKBOX=!0;var w=h},61607:function(e,t,n){n.d(t,{Z:function(){return tq}});var r,l={},o="rc-table-internal-hook",a=n(97685),i=n(66680),c=n(8410),s=n(91881),u=n(67294),d=n(73935);function f(e,t){var n=(0,i.Z)("function"==typeof t?t:function(e){if(void 0===t)return e;if(!Array.isArray(t))return e[t];var n={};return t.forEach(function(t){n[t]=e[t]}),n}),r=u.useContext(null==e?void 0:e.Context),l=r||{},o=l.listeners,d=l.getValue,f=u.useRef();f.current=n(r?d():null==e?void 0:e.defaultValue);var p=u.useState({}),m=(0,a.Z)(p,2)[1];return(0,c.Z)(function(){if(r)return o.add(e),function(){o.delete(e)};function e(e){var t=n(e);(0,s.Z)(f.current,t,!0)||m({})}},[r]),f.current}var p=n(87462),m=n(42550),h=function(){var e=u.createContext(null);function t(){return u.useContext(e)}return{makeImmutable:function(n,r){var l=(0,m.Yr)(n),o=function(o,a){var i=l?{ref:a}:{},c=u.useRef(0),s=u.useRef(o);return null!==t()?u.createElement(n,(0,p.Z)({},o,i)):((!r||r(s.current,o))&&(c.current+=1),s.current=o,u.createElement(e.Provider,{value:c.current},u.createElement(n,(0,p.Z)({},o,i))))};return l?u.forwardRef(o):o},responseImmutable:function(e,n){var r=(0,m.Yr)(e),l=function(n,l){var o=r?{ref:l}:{};return t(),u.createElement(e,(0,p.Z)({},n,o))};return r?u.memo(u.forwardRef(l),n):u.memo(l,n)},useImmutableMark:t}}(),g=h.makeImmutable,x=h.responseImmutable,b=h.useImmutableMark,v={Context:r=u.createContext(void 0),Provider:function(e){var t=e.value,n=e.children,l=u.useRef(t);l.current=t;var o=u.useState(function(){return{getValue:function(){return l.current},listeners:new Set}}),i=(0,a.Z)(o,1)[0];return(0,c.Z)(function(){(0,d.unstable_batchedUpdates)(function(){i.listeners.forEach(function(e){e(t)})})},[t]),u.createElement(r.Provider,{value:i},n)},defaultValue:void 0};u.memo(function(){var e,t,n,r,l,o,a=(n=u.useRef(0),n.current+=1,r=u.useRef(e),l=[],Object.keys(e||{}).map(function(t){var n;(null==e?void 0:e[t])!==(null===(n=r.current)||void 0===n?void 0:n[t])&&l.push(t)}),r.current=e,o=u.useRef([]),l.length&&(o.current=l),u.useDebugValue(n.current),u.useDebugValue(o.current.join(", ")),t&&console.log("".concat(t,":"),n.current,o.current),n.current);return u.createElement("h1",null,"Render Times: ",a)}).displayName="RenderBlock";var y=n(71002),w=n(1413),C=n(4942),$=n(94184),E=n.n($),S=n(56982),k=n(88306);n(80334);var Z=u.createContext({renderWithProps:!1});function N(e){var t=[],n={};return e.forEach(function(e){for(var r=e||{},l=r.key,o=r.dataIndex,a=l||(null==o?[]:Array.isArray(o)?o:[o]).join("-")||"RC_TABLE_KEY";n[a];)a="".concat(a,"_next");n[a]=!0,t.push(a)}),t}var O=function(e){var t,n=e.ellipsis,r=e.rowType,l=e.children,o=!0===n?{showTitle:!0}:n;return o&&(o.showTitle||"header"===r)&&("string"==typeof l||"number"==typeof l?t=l.toString():u.isValidElement(l)&&"string"==typeof l.props.children&&(t=l.props.children)),t},R=u.memo(function(e){var t,n,r,l,o,i,c,d,m,h,g=e.component,x=e.children,$=e.ellipsis,N=e.scope,R=e.prefixCls,I=e.className,j=e.align,P=e.record,T=e.render,z=e.dataIndex,M=e.renderIndex,H=e.shouldCellUpdate,L=e.index,B=e.rowType,A=e.colSpan,_=e.rowSpan,F=e.fixLeft,W=e.fixRight,D=e.firstFixLeft,K=e.lastFixLeft,V=e.firstFixRight,X=e.lastFixRight,U=e.appendNode,G=e.additionalProps,Y=void 0===G?{}:G,J=e.isSticky,q="".concat(R,"-cell"),Q=f(v,["supportSticky","allColumnsFixedLeft"]),ee=Q.supportSticky,et=Q.allColumnsFixedLeft,en=(t=u.useContext(Z),n=b(),(0,S.Z)(function(){if(null!=x)return[x];var e=null==z||""===z?[]:Array.isArray(z)?z:[z],n=(0,k.Z)(P,e),r=n,l=void 0;if(T){var o=T(n,P,M);!o||"object"!==(0,y.Z)(o)||Array.isArray(o)||u.isValidElement(o)?r=o:(r=o.children,l=o.props,t.renderWithProps=!0)}return[r,l]},[n,P,x,z,T,M],function(e,n){if(H){var r=(0,a.Z)(e,2)[1];return H((0,a.Z)(n,2)[1],r)}return!!t.renderWithProps||!(0,s.Z)(e,n,!0)})),er=(0,a.Z)(en,2),el=er[0],eo=er[1],ea={},ei="number"==typeof F&&ee,ec="number"==typeof W&ⅇei&&(ea.position="sticky",ea.left=F),ec&&(ea.position="sticky",ea.right=W);var es=null!==(r=null!==(l=null!==(o=null==eo?void 0:eo.colSpan)&&void 0!==o?o:Y.colSpan)&&void 0!==l?l:A)&&void 0!==r?r:1,eu=null!==(i=null!==(c=null!==(d=null==eo?void 0:eo.rowSpan)&&void 0!==d?d:Y.rowSpan)&&void 0!==c?c:_)&&void 0!==i?i:1,ed=f(v,function(e){var t,n;return[(t=eu||1,n=e.hoverStartRow,L<=e.hoverEndRow&&L+t-1>=n),e.onHover]}),ef=(0,a.Z)(ed,2),ep=ef[0],em=ef[1];if(0===es||0===eu)return null;var eh=null!==(m=Y.title)&&void 0!==m?m:O({rowType:B,ellipsis:$,children:el}),eg=E()(q,I,(h={},(0,C.Z)(h,"".concat(q,"-fix-left"),ei&&ee),(0,C.Z)(h,"".concat(q,"-fix-left-first"),D&&ee),(0,C.Z)(h,"".concat(q,"-fix-left-last"),K&&ee),(0,C.Z)(h,"".concat(q,"-fix-left-all"),K&&et&&ee),(0,C.Z)(h,"".concat(q,"-fix-right"),ec&&ee),(0,C.Z)(h,"".concat(q,"-fix-right-first"),V&&ee),(0,C.Z)(h,"".concat(q,"-fix-right-last"),X&&ee),(0,C.Z)(h,"".concat(q,"-ellipsis"),$),(0,C.Z)(h,"".concat(q,"-with-append"),U),(0,C.Z)(h,"".concat(q,"-fix-sticky"),(ei||ec)&&J&&ee),(0,C.Z)(h,"".concat(q,"-row-hover"),!eo&&ep),h),Y.className,null==eo?void 0:eo.className),ex={};j&&(ex.textAlign=j);var eb=(0,w.Z)((0,w.Z)((0,w.Z)((0,w.Z)({},Y.style),ex),ea),null==eo?void 0:eo.style),ev=el;return"object"!==(0,y.Z)(ev)||Array.isArray(ev)||u.isValidElement(ev)||(ev=null),$&&(K||V)&&(ev=u.createElement("span",{className:"".concat(q,"-content")},ev)),u.createElement(g,(0,p.Z)({},eo,Y,{className:eg,style:eb,title:eh,scope:N,onMouseEnter:function(e){var t;P&&em(L,L+eu-1),null==Y||null===(t=Y.onMouseEnter)||void 0===t||t.call(Y,e)},onMouseLeave:function(e){var t;P&&em(-1,-1),null==Y||null===(t=Y.onMouseLeave)||void 0===t||t.call(Y,e)},colSpan:1!==es?es:null,rowSpan:1!==eu?eu:null}),U,ev)});function I(e,t,n,r,l,o){var a,i,c=n[e]||{},s=n[t]||{};"left"===c.fixed?a=r.left["rtl"===l?t:e]:"right"===s.fixed&&(i=r.right["rtl"===l?e:t]);var u=!1,d=!1,f=!1,p=!1,m=n[t+1],h=n[e-1],g=!(null!=o&&o.children);return"rtl"===l?void 0!==a?p=!(h&&"left"===h.fixed)&&g:void 0!==i&&(f=!(m&&"right"===m.fixed)&&g):void 0!==a?u=!(m&&"left"===m.fixed)&&g:void 0!==i&&(d=!(h&&"right"===h.fixed)&&g),{fixLeft:a,fixRight:i,lastFixLeft:u,firstFixRight:d,lastFixRight:f,firstFixLeft:p,isSticky:r.isSticky}}var j=u.createContext({}),P=n(45987),T=["children"];function z(e){return e.children}z.Row=function(e){var t=e.children,n=(0,P.Z)(e,T);return u.createElement("tr",n,t)},z.Cell=function(e){var t=e.className,n=e.index,r=e.children,l=e.colSpan,o=void 0===l?1:l,a=e.rowSpan,i=e.align,c=f(v,["prefixCls","direction"]),s=c.prefixCls,d=c.direction,m=u.useContext(j),h=m.scrollColumnIndex,g=m.stickyOffsets,x=m.flattenColumns,b=m.columns,y=n+o-1+1===h?o+1:o,w=I(n,n+y-1,x,g,d,null==b?void 0:b[n]);return u.createElement(R,(0,p.Z)({className:t,index:n,component:"td",prefixCls:s,record:null,dataIndex:null,align:i,colSpan:y,rowSpan:a,render:function(){return r}},w))};var M=x(function(e){var t=e.children,n=e.stickyOffsets,r=e.flattenColumns,l=e.columns,o=f(v,"prefixCls"),a=r.length-1,i=r[a],c=u.useMemo(function(){return{stickyOffsets:n,flattenColumns:r,scrollColumnIndex:null!=i&&i.scrollbar?a:null,columns:l}},[i,r,a,n,l]);return u.createElement(j.Provider,{value:c},u.createElement("tfoot",{className:"".concat(o,"-summary")},t))}),H=n(9220),L=n(5110),B=n(98924),A=function(e){if((0,B.Z)()&&window.document.documentElement){var t=Array.isArray(e)?e:[e],n=window.document.documentElement;return t.some(function(e){return e in n.style})}return!1},_=function(e,t){if(!A(e))return!1;var n=document.createElement("div"),r=n.style[e];return n.style[e]=t,n.style[e]!==r},F=n(74204),W=n(64217),D=n(74902),K=function(e){var t=e.prefixCls,n=e.children,r=e.component,l=e.cellComponent,o=e.className,a=e.expanded,i=e.colSpan,c=e.isEmpty,s=f(v,["scrollbarSize","fixHeader","fixColumn","componentWidth","horizonScroll"]),d=s.scrollbarSize,p=s.fixHeader,m=s.fixColumn,h=s.componentWidth,g=s.horizonScroll,x=n;return(c?g:m)&&(x=u.createElement("div",{style:{width:h-(p?d:0),position:"sticky",left:0,overflow:"hidden"},className:"".concat(t,"-expanded-row-fixed")},0!==h&&x)),u.createElement(r,{className:o,style:{display:a?null:"none"}},u.createElement(R,{component:l,prefixCls:t,colSpan:i},x))};function V(e){var t,n,r=e.className,l=e.style,o=e.record,i=e.index,c=e.renderIndex,s=e.rowKey,d=e.rowExpandable,m=e.expandedKeys,h=e.onRow,g=e.indent,x=void 0===g?0:g,b=e.rowComponent,y=e.cellComponent,C=e.scopeCellComponent,$=e.childrenColumnName,S=f(v,["prefixCls","fixedInfoList","flattenColumns","expandableType","expandRowByClick","onTriggerExpand","rowClassName","expandedRowClassName","indentSize","expandIcon","expandedRowRender","expandIconColumnIndex"]),k=S.prefixCls,Z=S.fixedInfoList,O=S.flattenColumns,I=S.expandableType,j=S.expandRowByClick,P=S.onTriggerExpand,T=S.rowClassName,z=S.expandedRowClassName,M=S.indentSize,H=S.expandIcon,L=S.expandedRowRender,B=S.expandIconColumnIndex,A=u.useState(!1),_=(0,a.Z)(A,2),F=_[0],W=_[1],D=m&&m.has(s);u.useEffect(function(){D&&W(!0)},[D]);var V="row"===I&&(!d||d(o)),X="nest"===I,U=$&&o&&o[$],G=V||X,Y=u.useRef(P);Y.current=P;var J=function(){Y.current.apply(Y,arguments)},q=null==h?void 0:h(o,i);"string"==typeof T?t=T:"function"==typeof T&&(t=T(o,i,x));var Q=N(O),ee=u.createElement(b,(0,p.Z)({},q,{"data-row-key":s,className:E()(r,"".concat(k,"-row"),"".concat(k,"-row-level-").concat(x),t,q&&q.className),style:(0,w.Z)((0,w.Z)({},l),q?q.style:null),onClick:function(e){var t;j&&G&&J(o,e);for(var n=arguments.length,r=Array(n>1?n-1:0),l=1;l=0;i-=1){var c=t[i],s=n&&n[i],d=s&&s[Q];if(c||d||a){var f=d||{},m=(f.columnType,(0,P.Z)(f,ee));l.unshift(u.createElement("col",(0,p.Z)({key:i,style:{width:c}},m))),a=!0}}return u.createElement("colgroup",null,l)},en=["className","noData","columns","flattenColumns","colWidths","columCount","stickyOffsets","direction","fixHeader","stickyTopOffset","stickyBottomOffset","stickyClassName","onScroll","maxContentScroll","children"],er=u.forwardRef(function(e,t){var n=e.className,r=e.noData,l=e.columns,o=e.flattenColumns,a=e.colWidths,i=e.columCount,c=e.stickyOffsets,s=e.direction,d=e.fixHeader,p=e.stickyTopOffset,h=e.stickyBottomOffset,g=e.stickyClassName,x=e.onScroll,b=e.maxContentScroll,y=e.children,$=(0,P.Z)(e,en),S=f(v,["prefixCls","scrollbarSize","isSticky"]),k=S.prefixCls,Z=S.scrollbarSize,N=S.isSticky,O=N&&!d?0:Z,R=u.useRef(null),I=u.useCallback(function(e){(0,m.mH)(t,e),(0,m.mH)(R,e)},[]);u.useEffect(function(){var e;function t(e){var t=e.currentTarget,n=e.deltaX;n&&(x({currentTarget:t,scrollLeft:t.scrollLeft+n}),e.preventDefault())}return null===(e=R.current)||void 0===e||e.addEventListener("wheel",t),function(){var e;null===(e=R.current)||void 0===e||e.removeEventListener("wheel",t)}},[]);var j=u.useMemo(function(){return o.every(function(e){return e.width>=0})},[o]),T=o[o.length-1],z={fixed:T?T.fixed:null,scrollbar:!0,onHeaderCell:function(){return{className:"".concat(k,"-cell-scrollbar")}}},M=(0,u.useMemo)(function(){return O?[].concat((0,D.Z)(l),[z]):l},[O,l]),H=(0,u.useMemo)(function(){return O?[].concat((0,D.Z)(o),[z]):o},[O,o]),L=(0,u.useMemo)(function(){var e=c.right,t=c.left;return(0,w.Z)((0,w.Z)({},c),{},{left:"rtl"===s?[].concat((0,D.Z)(t.map(function(e){return e+O})),[0]):t,right:"rtl"===s?e:[].concat((0,D.Z)(e.map(function(e){return e+O})),[0]),isSticky:N})},[O,c,N]),B=(0,u.useMemo)(function(){for(var e=[],t=0;t1?"colgroup":"col":null,ellipsis:o.ellipsis,align:o.align,component:o.title?a:i,prefixCls:m,key:g[t]},c,{additionalProps:n,rowType:"header"}))}))}eo.displayName="HeaderRow";var ea=x(function(e){var t=e.stickyOffsets,n=e.columns,r=e.flattenColumns,l=e.onHeaderRow,o=f(v,["prefixCls","getComponent"]),a=o.prefixCls,i=o.getComponent,c=u.useMemo(function(){return function(e){var t=[];!function e(n,r){var l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;t[l]=t[l]||[];var o=r;return n.filter(Boolean).map(function(n){var r={key:n.key,className:n.className||"",children:n.title,column:n,colStart:o},a=1,i=n.children;return i&&i.length>0&&(a=e(i,o,l+1).reduce(function(e,t){return e+t},0),r.hasSubColumns=!0),"colSpan"in n&&(a=n.colSpan),"rowSpan"in n&&(r.rowSpan=n.rowSpan),r.colSpan=a,r.colEnd=r.colStart+a-1,t[l].push(r),o+=a,a})}(e,0);for(var n=t.length,r=function(e){t[e].forEach(function(t){("rowSpan"in t)||t.hasSubColumns||(t.rowSpan=n-e)})},l=0;l0?[].concat((0,D.Z)(e),(0,D.Z)(ed(l).map(function(e){return(0,w.Z)({fixed:r},e)}))):[].concat((0,D.Z)(e),[(0,w.Z)((0,w.Z)({},t),{},{fixed:r})])},[])}var ef=function(e,t){var n=e.prefixCls,r=e.columns,o=e.children,a=e.expandable,i=e.expandedKeys,c=e.columnTitle,s=e.getRowKey,d=e.onTriggerExpand,f=e.expandIcon,p=e.rowExpandable,m=e.expandIconColumnIndex,h=e.direction,g=e.expandRowByClick,x=e.columnWidth,b=e.fixed,v=u.useMemo(function(){return r||eu(o)},[r,o]),y=u.useMemo(function(){if(a){var e,t,r=v.slice();if(!r.includes(l)){var o=m||0;o>=0&&r.splice(o,0,l)}var h=r.indexOf(l);r=r.filter(function(e,t){return e!==l||t===h});var y=v[h];t=("left"===b||b)&&!m?"left":("right"===b||b)&&m===v.length?"right":y?y.fixed:null;var w=(e={},(0,C.Z)(e,Q,{className:"".concat(n,"-expand-icon-col"),columnType:"EXPAND_COLUMN"}),(0,C.Z)(e,"title",c),(0,C.Z)(e,"fixed",t),(0,C.Z)(e,"className","".concat(n,"-row-expand-icon-cell")),(0,C.Z)(e,"width",x),(0,C.Z)(e,"render",function(e,t,r){var l=s(t,r),o=f({prefixCls:n,expanded:i.has(l),expandable:!p||p(t),record:t,onExpand:d});return g?u.createElement("span",{onClick:function(e){return e.stopPropagation()}},o):o}),e);return r.map(function(e){return e===l?w:e})}return v.filter(function(e){return e!==l})},[a,v,s,i,f,h]),$=u.useMemo(function(){var e=y;return t&&(e=t(e)),e.length||(e=[{render:function(){return null}}]),e},[t,y,h]),E=u.useMemo(function(){return"rtl"===h?ed($).map(function(e){var t=e.fixed,n=(0,P.Z)(e,es),r=t;return"left"===t?r="right":"right"===t&&(r="left"),(0,w.Z)({fixed:r},n)}):ed($)},[$,h]);return[$,E]};function ep(e){var t,n=e.prefixCls,r=e.record,l=e.onExpand,o=e.expanded,a=e.expandable,i="".concat(n,"-row-expand-icon");return a?u.createElement("span",{className:E()(i,(t={},(0,C.Z)(t,"".concat(n,"-row-expanded"),o),(0,C.Z)(t,"".concat(n,"-row-collapsed"),!o),t)),onClick:function(e){l(r,e),e.stopPropagation()}}):u.createElement("span",{className:E()(i,"".concat(n,"-row-spaced"))})}function em(e){var t=(0,u.useRef)(e),n=(0,u.useState)({}),r=(0,a.Z)(n,2)[1],l=(0,u.useRef)(null),o=(0,u.useRef)([]);return(0,u.useEffect)(function(){return function(){l.current=null}},[]),[t.current,function(e){o.current.push(e);var n=Promise.resolve();l.current=n,n.then(function(){if(l.current===n){var e=o.current,a=t.current;o.current=[],e.forEach(function(e){t.current=e(t.current)}),l.current=null,a!==t.current&&r({})}})}]}var eh=(0,B.Z)()?window:null,eg=function(e){var t=e.className,n=e.children;return u.createElement("div",{className:t},n)},ex=n(64019),eb=n(27678),ev=u.forwardRef(function(e,t){var n,r,l=e.scrollBodyRef,o=e.onScroll,i=e.offsetScroll,c=e.container,s=f(v,"prefixCls"),d=(null===(n=l.current)||void 0===n?void 0:n.scrollWidth)||0,p=(null===(r=l.current)||void 0===r?void 0:r.clientWidth)||0,m=d&&p*(p/d),h=u.useRef(),g=em({scrollLeft:0,isHiddenScrollBar:!1}),x=(0,a.Z)(g,2),b=x[0],y=x[1],$=u.useRef({delta:0,x:0}),S=u.useState(!1),k=(0,a.Z)(S,2),Z=k[0],N=k[1],O=function(){N(!1)},R=function(e){var t,n=(e||(null===(t=window)||void 0===t?void 0:t.event)).buttons;if(!Z||0===n){Z&&N(!1);return}var r=$.current.x+e.pageX-$.current.x-$.current.delta;r<=0&&(r=0),r+m>=p&&(r=p-m),o({scrollLeft:r/p*(d+2)}),$.current.x=e.pageX},I=function(){if(l.current){var e=(0,eb.os)(l.current).top,t=e+l.current.offsetHeight,n=c===window?document.documentElement.scrollTop+window.innerHeight:(0,eb.os)(c).top+c.clientHeight;t-(0,F.Z)()<=n||e>=n-i?y(function(e){return(0,w.Z)((0,w.Z)({},e),{},{isHiddenScrollBar:!0})}):y(function(e){return(0,w.Z)((0,w.Z)({},e),{},{isHiddenScrollBar:!1})})}},j=function(e){y(function(t){return(0,w.Z)((0,w.Z)({},t),{},{scrollLeft:e/d*p||0})})};return(u.useImperativeHandle(t,function(){return{setScrollLeft:j}}),u.useEffect(function(){var e=(0,ex.Z)(document.body,"mouseup",O,!1),t=(0,ex.Z)(document.body,"mousemove",R,!1);return I(),function(){e.remove(),t.remove()}},[m,Z]),u.useEffect(function(){var e=(0,ex.Z)(c,"scroll",I,!1),t=(0,ex.Z)(window,"resize",I,!1);return function(){e.remove(),t.remove()}},[c]),u.useEffect(function(){b.isHiddenScrollBar||y(function(e){var t=l.current;return t?(0,w.Z)((0,w.Z)({},e),{},{scrollLeft:t.scrollLeft/t.scrollWidth*t.clientWidth}):e})},[b.isHiddenScrollBar]),d<=p||!m||b.isHiddenScrollBar)?null:u.createElement("div",{style:{height:(0,F.Z)(),width:p,bottom:i},className:"".concat(s,"-sticky-scroll")},u.createElement("div",{onMouseDown:function(e){e.persist(),$.current.delta=e.pageX-b.scrollLeft,$.current.x=0,N(!0),e.preventDefault()},ref:h,className:E()("".concat(s,"-sticky-scroll-bar"),(0,C.Z)({},"".concat(s,"-sticky-scroll-bar-active"),Z)),style:{width:"".concat(m,"px"),transform:"translate3d(".concat(b.scrollLeft,"px, 0, 0)")}}))}),ey=[],ew={};function eC(){return"No Data"}function e$(e){var t,n=(0,w.Z)({rowKey:"key",prefixCls:"rc-table",emptyText:eC},e),r=n.prefixCls,l=n.className,c=n.rowClassName,d=n.style,f=n.data,m=n.rowKey,h=n.scroll,g=n.tableLayout,x=n.direction,b=n.title,$=n.footer,Z=n.summary,O=n.caption,R=n.id,j=n.showHeader,T=n.components,B=n.emptyText,K=n.onRow,V=n.onHeaderRow,X=n.internalHooks,U=n.transformColumns,G=n.internalRefs,Y=n.sticky,Q=f||ey,ee=!!Q.length,en=u.useCallback(function(e,t){return(0,k.Z)(T,e)||t},[T]),er=u.useMemo(function(){return"function"==typeof m?m:function(e){return e&&e[m]}},[m]),eo=(tz=u.useState(-1),tH=(tM=(0,a.Z)(tz,2))[0],tL=tM[1],tB=u.useState(-1),t_=(tA=(0,a.Z)(tB,2))[0],tF=tA[1],[tH,t_,u.useCallback(function(e,t){tL(e),tF(t)},[])]),ei=(0,a.Z)(eo,3),ec=ei[0],es=ei[1],eu=ei[2],ed=(tD=n.expandable,tK=(0,P.Z)(n,q),!1===(tW="expandable"in n?(0,w.Z)((0,w.Z)({},tK),tD):tK).showExpandColumn&&(tW.expandIconColumnIndex=-1),tV=tW.expandIcon,tX=tW.expandedRowKeys,tU=tW.defaultExpandedRowKeys,tG=tW.defaultExpandAllRows,tY=tW.expandedRowRender,tJ=tW.onExpand,tq=tW.onExpandedRowsChange,tQ=tW.childrenColumnName||"children",t0=u.useMemo(function(){return tY?"row":!!(n.expandable&&n.internalHooks===o&&n.expandable.__PARENT_RENDER_ICON__||Q.some(function(e){return e&&"object"===(0,y.Z)(e)&&e[tQ]}))&&"nest"},[!!tY,Q]),t1=u.useState(function(){if(tU)return tU;if(tG){var e;return e=[],function t(n){(n||[]).forEach(function(n,r){e.push(er(n,r)),t(n[tQ])})}(Q),e}return[]}),t8=(t2=(0,a.Z)(t1,2))[0],t3=t2[1],t4=u.useMemo(function(){return new Set(tX||t8||[])},[tX,t8]),t5=u.useCallback(function(e){var t,n=er(e,Q.indexOf(e)),r=t4.has(n);r?(t4.delete(n),t=(0,D.Z)(t4)):t=[].concat((0,D.Z)(t4),[n]),t3(t),tJ&&tJ(!r,e),tq&&tq(t)},[er,t4,Q,tJ,tq]),[tW,t0,t4,tV||ep,tQ,t5]),ex=(0,a.Z)(ed,6),eb=ex[0],e$=ex[1],eE=ex[2],eS=ex[3],ek=ex[4],eZ=ex[5],eN=u.useState(0),eO=(0,a.Z)(eN,2),eR=eO[0],eI=eO[1],ej=ef((0,w.Z)((0,w.Z)((0,w.Z)({},n),eb),{},{expandable:!!eb.expandedRowRender,columnTitle:eb.columnTitle,expandedKeys:eE,getRowKey:er,onTriggerExpand:eZ,expandIcon:eS,expandIconColumnIndex:eb.expandIconColumnIndex,direction:x}),X===o?U:null),eP=(0,a.Z)(ej,2),eT=eP[0],ez=eP[1],eM=u.useMemo(function(){return{columns:eT,flattenColumns:ez}},[eT,ez]),eH=u.useRef(),eL=u.useRef(),eB=u.useRef(),eA=u.useRef(),e_=u.useRef(),eF=u.useState(!1),eW=(0,a.Z)(eF,2),eD=eW[0],eK=eW[1],eV=u.useState(!1),eX=(0,a.Z)(eV,2),eU=eX[0],eG=eX[1],eY=em(new Map),eJ=(0,a.Z)(eY,2),eq=eJ[0],eQ=eJ[1],e0=N(ez).map(function(e){return eq.get(e)}),e1=u.useMemo(function(){return e0},[e0.join("_")]),e2=(t7=ez.length,(0,u.useMemo)(function(){for(var e=[],t=[],n=0,r=0,l=0;l0)):(eK(o>0),eG(o{let{_renderTimes:n}=e,{_renderTimes:r}=t;return n!==r});function ez(e,t){return"key"in e&&void 0!==e.key&&null!==e.key?e.key:e.dataIndex?Array.isArray(e.dataIndex)?e.dataIndex.join("."):e.dataIndex:t}function eM(e,t){return t?`${t}-${e}`:`${e}`}function eH(e,t){return"function"==typeof e?e(t):e}var eL={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z"}}]},name:"filter",theme:"filled"},eB=n(84089),eA=u.forwardRef(function(e,t){return u.createElement(eB.Z,(0,p.Z)({},e,{ref:t,icon:eL}))}),e_=n(57838),eF=n(71577),eW=n(84567),eD=n(85418),eK=n(32983),eV=n(82610),eX=n(76529),eU=n(78045),eG=n(57346),eY=n(68795),eJ=n(59566),eq=function(e){let{value:t,onChange:n,filterSearch:r,tablePrefixCls:l,locale:o}=e;return r?u.createElement("div",{className:`${l}-filter-dropdown-search`},u.createElement(eJ.default,{prefix:u.createElement(eY.Z,null),placeholder:o.filterSearchPlaceholder,onChange:n,value:t,htmlSize:1,className:`${l}-filter-dropdown-search-input`})):null},eQ=n(15105);let e0=e=>{let{keyCode:t}=e;t===eQ.Z.ENTER&&e.stopPropagation()},e1=u.forwardRef((e,t)=>u.createElement("div",{className:e.className,onClick:e=>e.stopPropagation(),onKeyDown:e0,ref:t},e.children));function e2(e){let t=[];return(e||[]).forEach(e=>{let{value:n,children:r}=e;t.push(n),r&&(t=[].concat((0,D.Z)(t),(0,D.Z)(e2(r))))}),t}function e8(e,t){return("string"==typeof t||"number"==typeof t)&&(null==t?void 0:t.toString().toLowerCase().includes(e.trim().toLowerCase()))}var e3=function(e){var t,n;let r,l;let{tablePrefixCls:o,prefixCls:a,column:i,dropdownPrefixCls:c,columnKey:d,filterMultiple:f,filterMode:p="menu",filterSearch:m=!1,filterState:h,triggerFilter:g,locale:x,children:b,getPopupContainer:v}=e,{filterDropdownOpen:y,onFilterDropdownOpenChange:w,filterResetToDefaultFilteredValue:C,defaultFilteredValue:$,filterDropdownVisible:S,onFilterDropdownVisibleChange:k}=i,[Z,N]=u.useState(!1),O=!!(h&&((null===(t=h.filteredKeys)||void 0===t?void 0:t.length)||h.forceFiltered)),R=e=>{N(e),null==w||w(e),null==k||k(e)},I=null!==(n=null!=y?y:S)&&void 0!==n?n:Z,j=null==h?void 0:h.filteredKeys,[P,T]=function(e){let t=u.useRef(e),n=(0,e_.Z)();return[()=>t.current,e=>{t.current=e,n()}]}(j||[]),z=e=>{let{selectedKeys:t}=e;T(t)};u.useEffect(()=>{Z&&z({selectedKeys:j||[]})},[j]);let[M,H]=u.useState([]),[L,B]=u.useState(""),A=e=>{let{value:t}=e.target;B(t)};u.useEffect(()=>{Z||B("")},[Z]);let _=e=>{let t=e&&e.length?e:null;if(null===t&&(!h||!h.filteredKeys)||(0,s.Z)(t,null==h?void 0:h.filteredKeys,!0))return null;g({column:i,key:d,filteredKeys:t})},F=()=>{R(!1),_(P())},W=function(){let{confirm:e,closeDropdown:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{confirm:!1,closeDropdown:!1};e&&_([]),t&&R(!1),B(""),C?T(($||[]).map(e=>String(e))):T([])},D=E()({[`${c}-menu-without-submenu`]:!(i.filters||[]).some(e=>{let{children:t}=e;return t})}),K=e=>{let{filters:t}=e;return(t||[]).map((e,t)=>{let n=String(e.value),r={title:e.text,key:void 0!==e.value?n:t};return e.children&&(r.children=K({filters:e.children})),r})},V=e=>{var t;return Object.assign(Object.assign({},e),{text:e.title,value:e.key,children:(null===(t=e.children)||void 0===t?void 0:t.map(e=>V(e)))||[]})};if("function"==typeof i.filterDropdown)r=i.filterDropdown({prefixCls:`${c}-custom`,setSelectedKeys:e=>z({selectedKeys:e}),selectedKeys:P(),confirm:function(){let{closeDropdown:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{closeDropdown:!0};e&&R(!1),_(P())},clearFilters:W,filters:i.filters,visible:I,close:()=>{R(!1)}});else if(i.filterDropdown)r=i.filterDropdown;else{let e=P()||[];r=u.createElement(u.Fragment,null,0===(i.filters||[]).length?u.createElement(eK.Z,{image:eK.Z.PRESENTED_IMAGE_SIMPLE,description:x.filterEmptyText,imageStyle:{height:24},style:{margin:0,padding:"16px 0"}}):"tree"===p?u.createElement(u.Fragment,null,u.createElement(eq,{filterSearch:m,value:L,onChange:A,tablePrefixCls:o,locale:x}),u.createElement("div",{className:`${o}-filter-dropdown-tree`},f?u.createElement(eW.Z,{checked:e.length===e2(i.filters).length,indeterminate:e.length>0&&e.length{if(e.target.checked){let e=e2(null==i?void 0:i.filters).map(e=>String(e));T(e)}else T([])}},x.filterCheckall):null,u.createElement(eG.Z,{checkable:!0,selectable:!1,blockNode:!0,multiple:f,checkStrictly:!f,className:`${c}-menu`,onCheck:(e,t)=>{let{node:n,checked:r}=t;f?z({selectedKeys:e}):z({selectedKeys:r&&n.key?[n.key]:[]})},checkedKeys:e,selectedKeys:e,showIcon:!1,treeData:K({filters:i.filters}),autoExpandParent:!0,defaultExpandAll:!0,filterTreeNode:L.trim()?e=>"function"==typeof m?m(L,V(e)):e8(L,e.title):void 0}))):u.createElement(u.Fragment,null,u.createElement(eq,{filterSearch:m,value:L,onChange:A,tablePrefixCls:o,locale:x}),u.createElement(eV.Z,{selectable:!0,multiple:f,prefixCls:`${c}-menu`,className:D,onSelect:z,onDeselect:z,selectedKeys:e,getPopupContainer:v,openKeys:M,onOpenChange:e=>{H(e)},items:function e(t){let{filters:n,prefixCls:r,filteredKeys:l,filterMultiple:o,searchValue:a,filterSearch:i}=t;return n.map((t,n)=>{let c=String(t.value);if(t.children)return{key:c||n,label:t.text,popupClassName:`${r}-dropdown-submenu`,children:e({filters:t.children,prefixCls:r,filteredKeys:l,filterMultiple:o,searchValue:a,filterSearch:i})};let s=o?eW.Z:eU.ZP,d={key:void 0!==t.value?c:n,label:u.createElement(u.Fragment,null,u.createElement(s,{checked:l.includes(c)}),u.createElement("span",null,t.text))};return a.trim()?"function"==typeof i?i(a,t)?d:null:e8(a,t.text)?d:null:d})}({filters:i.filters||[],filterSearch:m,prefixCls:a,filteredKeys:P(),filterMultiple:f,searchValue:L})})),u.createElement("div",{className:`${a}-dropdown-btns`},u.createElement(eF.ZP,{type:"link",size:"small",disabled:C?(0,s.Z)(($||[]).map(e=>String(e)),e,!0):0===e.length,onClick:()=>W()},x.filterReset),u.createElement(eF.ZP,{type:"primary",size:"small",onClick:F},x.filterConfirm)))}i.filterDropdown&&(r=u.createElement(eX.J,{selectable:void 0},r)),l="function"==typeof i.filterIcon?i.filterIcon(O):i.filterIcon?i.filterIcon:u.createElement(eA,null);let{direction:X}=u.useContext(eZ.E_);return u.createElement("div",{className:`${a}-column`},u.createElement("span",{className:`${o}-column-title`},b),u.createElement(eD.Z,{dropdownRender:()=>u.createElement(e1,{className:`${a}-dropdown`},r),trigger:["click"],open:I,onOpenChange:e=>{e&&void 0!==j&&T(j||[]),R(e),e||i.filterDropdown||F()},getPopupContainer:v,placement:"rtl"===X?"bottomLeft":"bottomRight"},u.createElement("span",{role:"button",tabIndex:-1,className:E()(`${a}-trigger`,{active:O}),onClick:e=>{e.stopPropagation()}},l)))};function e4(e,t,n){let r=[];return(e||[]).forEach((e,l)=>{var o;let a=eM(l,n);if(e.filters||"filterDropdown"in e||"onFilter"in e){if("filteredValue"in e){let t=e.filteredValue;"filterDropdown"in e||(t=null!==(o=null==t?void 0:t.map(String))&&void 0!==o?o:t),r.push({column:e,key:ez(e,a),filteredKeys:t,forceFiltered:e.filtered})}else r.push({column:e,key:ez(e,a),filteredKeys:t&&e.defaultFilteredValue?e.defaultFilteredValue:void 0,forceFiltered:e.filtered})}"children"in e&&(r=[].concat((0,D.Z)(r),(0,D.Z)(e4(e.children,t,a))))}),r}function e5(e){let t={};return e.forEach(e=>{let{key:n,filteredKeys:r,column:l}=e,{filters:o,filterDropdown:a}=l;if(a)t[n]=r||null;else if(Array.isArray(r)){let e=e2(o);t[n]=e.filter(e=>r.includes(String(e)))}else t[n]=null}),t}function e7(e,t){return t.reduce((e,t)=>{let{column:{onFilter:n,filters:r},filteredKeys:l}=t;return n&&l&&l.length?e.filter(e=>l.some(t=>{let l=e2(r),o=l.findIndex(e=>String(e)===String(t)),a=-1!==o?l[o]:t;return n(a,e)})):e},e)}let e6=e=>e.flatMap(e=>"children"in e?[e].concat((0,D.Z)(e6(e.children||[]))):[e]);var e9=function(e){let{prefixCls:t,dropdownPrefixCls:n,mergedColumns:r,onFilterChange:l,getPopupContainer:o,locale:a}=e,i=u.useMemo(()=>e6(r||[]),[r]),[c,s]=u.useState(()=>e4(i,!0)),d=u.useMemo(()=>{let e=e4(i,!1);if(0===e.length)return e;let t=!0;if(e.forEach(e=>{let{filteredKeys:n}=e;void 0!==n&&(t=!1)}),t){let e=(i||[]).map((e,t)=>ez(e,eM(t)));return c.filter(t=>{let{key:n}=t;return e.includes(n)}).map(t=>{let n=i[e.findIndex(e=>e===t.key)];return Object.assign(Object.assign({},t),{column:Object.assign(Object.assign({},t.column),n),forceFiltered:n.filtered})})}return e},[i,c]),f=u.useMemo(()=>e5(d),[d]),p=e=>{let t=d.filter(t=>{let{key:n}=t;return n!==e.key});t.push(e),s(t),l(e5(t),t)};return[e=>(function e(t,n,r,l,o,a,i,c){return r.map((r,s)=>{let d=eM(s,c),{filterMultiple:f=!0,filterMode:p,filterSearch:m}=r,h=r;if(h.filters||h.filterDropdown){let e=ez(h,d),c=l.find(t=>{let{key:n}=t;return e===n});h=Object.assign(Object.assign({},h),{title:l=>u.createElement(e3,{tablePrefixCls:t,prefixCls:`${t}-filter`,dropdownPrefixCls:n,column:h,columnKey:e,filterState:c,filterMultiple:f,filterMode:p,filterSearch:m,triggerFilter:a,locale:o,getPopupContainer:i},eH(r.title,l))})}return"children"in h&&(h=Object.assign(Object.assign({},h),{children:e(t,n,h.children,l,o,a,i,d)})),h})})(t,n,e,d,a,p,o),d,f]},te=n(38780),tt=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var l=0,r=Object.getOwnPropertySymbols(e);lt.indexOf(r[l])&&Object.prototype.propertyIsEnumerable.call(e,r[l])&&(n[r[l]]=e[r[l]]);return n},tn=function(e,t,n){let r=n&&"object"==typeof n?n:{},{total:l=0}=r,o=tt(r,["total"]),[a,i]=(0,u.useState)(()=>({current:"defaultCurrent"in o?o.defaultCurrent:1,pageSize:"defaultPageSize"in o?o.defaultPageSize:10})),c=(0,te.Z)(a,o,{total:l>0?l:e}),s=Math.ceil((l||e)/c.pageSize);c.current>s&&(c.current=s||1);let d=(e,t)=>{i({current:null!=e?e:1,pageSize:t||c.pageSize})};return!1===n?[{},()=>{}]:[Object.assign(Object.assign({},c),{onChange:(e,r)=>{var l;n&&(null===(l=n.onChange)||void 0===l||l.call(n,e,r)),d(e,r),t(e,r||(null==c?void 0:c.pageSize))}}),d]},tr=n(80882),tl=n(10225),to=n(17341),ta=n(1089),ti=n(21770);let tc={},ts="SELECT_ALL",tu="SELECT_INVERT",td="SELECT_NONE",tf=[],tp=(e,t)=>{let n=[];return(t||[]).forEach(t=>{n.push(t),t&&"object"==typeof t&&e in t&&(n=[].concat((0,D.Z)(n),(0,D.Z)(tp(e,t[e]))))}),n};var tm=(e,t)=>{let{preserveSelectedRowKeys:n,selectedRowKeys:r,defaultSelectedRowKeys:l,getCheckboxProps:o,onChange:a,onSelect:i,onSelectAll:c,onSelectInvert:s,onSelectNone:d,onSelectMultiple:f,columnWidth:p,type:m,selections:h,fixed:g,renderCell:x,hideSelectAll:b,checkStrictly:v=!0}=t||{},{prefixCls:y,data:w,pageData:C,getRecordByKey:$,getRowKey:S,expandType:k,childrenColumnName:Z,locale:N,getPopupContainer:O}=e,[R,I]=(0,ti.Z)(r||l||tf,{value:r}),j=u.useRef(new Map),P=(0,u.useCallback)(e=>{if(n){let t=new Map;e.forEach(e=>{let n=$(e);!n&&j.current.has(e)&&(n=j.current.get(e)),t.set(e,n)}),j.current=t}},[$,n]);u.useEffect(()=>{P(R)},[R]);let{keyEntities:T}=(0,u.useMemo)(()=>{if(v)return{keyEntities:null};let e=w;if(n){let t=new Set(w.map((e,t)=>S(e,t))),n=Array.from(j.current).reduce((e,n)=>{let[r,l]=n;return t.has(r)?e:e.concat(l)},[]);e=[].concat((0,D.Z)(e),(0,D.Z)(n))}return(0,ta.I8)(e,{externalGetKey:S,childrenPropName:Z})},[w,S,v,Z,n]),z=(0,u.useMemo)(()=>tp(Z,C),[Z,C]),M=(0,u.useMemo)(()=>{let e=new Map;return z.forEach((t,n)=>{let r=S(t,n),l=(o?o(t):null)||{};e.set(r,l)}),e},[z,S,o]),H=(0,u.useCallback)(e=>{var t;return!!(null===(t=M.get(S(e)))||void 0===t?void 0:t.disabled)},[M,S]),[L,B]=(0,u.useMemo)(()=>{if(v)return[R||[],[]];let{checkedKeys:e,halfCheckedKeys:t}=(0,to.S)(R,!0,T,H);return[e||[],t]},[R,v,T,H]),A=(0,u.useMemo)(()=>{let e="radio"===m?L.slice(0,1):L;return new Set(e)},[L,m]),_=(0,u.useMemo)(()=>"radio"===m?new Set:new Set(B),[B,m]),[F,W]=(0,u.useState)(null);u.useEffect(()=>{t||I(tf)},[!!t]);let K=(0,u.useCallback)((e,t)=>{let r,l;P(e),n?(r=e,l=e.map(e=>j.current.get(e))):(r=[],l=[],e.forEach(e=>{let t=$(e);void 0!==t&&(r.push(e),l.push(t))})),I(r),null==a||a(r,l,{type:t})},[I,$,a,n]),V=(0,u.useCallback)((e,t,n,r)=>{if(i){let l=n.map(e=>$(e));i($(e),t,l,r)}K(n,"single")},[i,$,K]),X=(0,u.useMemo)(()=>{if(!h||b)return null;let e=!0===h?[ts,tu,td]:h;return e.map(e=>e===ts?{key:"all",text:N.selectionAll,onSelect(){K(w.map((e,t)=>S(e,t)).filter(e=>{let t=M.get(e);return!(null==t?void 0:t.disabled)||A.has(e)}),"all")}}:e===tu?{key:"invert",text:N.selectInvert,onSelect(){let e=new Set(A);C.forEach((t,n)=>{let r=S(t,n),l=M.get(r);(null==l?void 0:l.disabled)||(e.has(r)?e.delete(r):e.add(r))});let t=Array.from(e);s&&s(t),K(t,"invert")}}:e===td?{key:"none",text:N.selectNone,onSelect(){null==d||d(),K(Array.from(A).filter(e=>{let t=M.get(e);return null==t?void 0:t.disabled}),"none")}}:e).map(e=>Object.assign(Object.assign({},e),{onSelect:function(){for(var t,n=arguments.length,r=Array(n),l=0;l{var n;let r,l;if(!t)return e.filter(e=>e!==tc);let o=(0,D.Z)(e),a=new Set(A),i=z.map(S).filter(e=>!M.get(e).disabled),s=i.every(e=>a.has(e)),d=i.some(e=>a.has(e));if("radio"!==m){let e;if(X){let t={getPopupContainer:O,items:X.map((e,t)=>{let{key:n,text:r,onSelect:l}=e;return{key:null!=n?n:t,onClick:()=>{null==l||l(i)},label:r}})};e=u.createElement("div",{className:`${y}-selection-extra`},u.createElement(eD.Z,{menu:t,getPopupContainer:O},u.createElement("span",null,u.createElement(tr.Z,null))))}let t=z.map((e,t)=>{let n=S(e,t),r=M.get(n)||{};return Object.assign({checked:a.has(n)},r)}).filter(e=>{let{disabled:t}=e;return t}),n=!!t.length&&t.length===z.length,l=n&&t.every(e=>{let{checked:t}=e;return t}),o=n&&t.some(e=>{let{checked:t}=e;return t});r=!b&&u.createElement("div",{className:`${y}-selection`},u.createElement(eW.Z,{checked:n?l:!!z.length&&s,indeterminate:n?!l&&o:!s&&d,onChange:()=>{let e=[];s?i.forEach(t=>{a.delete(t),e.push(t)}):i.forEach(t=>{a.has(t)||(a.add(t),e.push(t))});let t=Array.from(a);null==c||c(!s,t.map(e=>$(e)),e.map(e=>$(e))),K(t,"all"),W(null)},disabled:0===z.length||n,"aria-label":e?"Custom selection":"Select all",skipGroup:!0}),e)}if(l="radio"===m?(e,t,n)=>{let r=S(t,n),l=a.has(r);return{node:u.createElement(eU.ZP,Object.assign({},M.get(r),{checked:l,onClick:e=>e.stopPropagation(),onChange:e=>{a.has(r)||V(r,!0,[r],e.nativeEvent)}})),checked:l}}:(e,t,n)=>{var r;let l;let o=S(t,n),c=a.has(o),s=_.has(o),d=M.get(o);return l="nest"===k?s:null!==(r=null==d?void 0:d.indeterminate)&&void 0!==r?r:s,{node:u.createElement(eW.Z,Object.assign({},d,{indeterminate:l,checked:c,skipGroup:!0,onClick:e=>e.stopPropagation(),onChange:e=>{let{nativeEvent:t}=e,{shiftKey:n}=t,r=-1,l=-1;if(n&&v){let e=new Set([F,o]);i.some((t,n)=>{if(e.has(t)){if(-1!==r)return l=n,!0;r=n}return!1})}if(-1!==l&&r!==l&&v){let e=i.slice(r,l+1),t=[];c?e.forEach(e=>{a.has(e)&&(t.push(e),a.delete(e))}):e.forEach(e=>{a.has(e)||(t.push(e),a.add(e))});let n=Array.from(a);null==f||f(!c,n.map(e=>$(e)),t.map(e=>$(e))),K(n,"multiple")}else if(v){let e=c?(0,tl._5)(L,o):(0,tl.L0)(L,o);V(o,!c,e,t)}else{let e=(0,to.S)([].concat((0,D.Z)(L),[o]),!0,T,H),{checkedKeys:n,halfCheckedKeys:r}=e,l=n;if(c){let e=new Set(n);e.delete(o),l=(0,to.S)(Array.from(e),{checked:!1,halfCheckedKeys:r},T,H).checkedKeys}V(o,!c,l,t)}c?W(null):W(o)}})),checked:c}},!o.includes(tc)){if(0===o.findIndex(e=>{var t;return(null===(t=e[Q])||void 0===t?void 0:t.columnType)==="EXPAND_COLUMN"})){let[e,...t]=o;o=[e,tc].concat((0,D.Z)(t))}else o=[tc].concat((0,D.Z)(o))}let w=o.indexOf(tc);o=o.filter((e,t)=>e!==tc||t===w);let C=o[w-1],Z=o[w+1],N=g;void 0===N&&((null==Z?void 0:Z.fixed)!==void 0?N=Z.fixed:(null==C?void 0:C.fixed)!==void 0&&(N=C.fixed)),N&&C&&(null===(n=C[Q])||void 0===n?void 0:n.columnType)==="EXPAND_COLUMN"&&void 0===C.fixed&&(C.fixed=N);let R=E()(`${y}-selection-col`,{[`${y}-selection-col-with-dropdown`]:h&&"checkbox"===m}),I={fixed:N,width:p,className:`${y}-selection-column`,title:t.columnTitle||r,render:(e,t,n)=>{let{node:r,checked:o}=l(e,t,n);return x?x(o,t,n,r):r},onCell:t.onCell,[Q]:{className:R}};return o.map(e=>e===tc?I:e)},[S,z,t,L,A,_,p,X,k,F,M,f,V,H]);return[U,A]},th={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z"}}]},name:"caret-down",theme:"outlined"},tg=u.forwardRef(function(e,t){return u.createElement(eB.Z,(0,p.Z)({},e,{ref:t,icon:th}))}),tx={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z"}}]},name:"caret-up",theme:"outlined"},tb=u.forwardRef(function(e,t){return u.createElement(eB.Z,(0,p.Z)({},e,{ref:t,icon:tx}))}),tv=n(83062);let ty="ascend",tw="descend";function tC(e){return"object"==typeof e.sorter&&"number"==typeof e.sorter.multiple&&e.sorter.multiple}function t$(e){return"function"==typeof e?e:!!e&&"object"==typeof e&&!!e.compare&&e.compare}function tE(e,t,n){let r=[];function l(e,t){r.push({column:e,key:ez(e,t),multiplePriority:tC(e),sortOrder:e.sortOrder})}return(e||[]).forEach((e,o)=>{let a=eM(o,n);e.children?("sortOrder"in e&&l(e,a),r=[].concat((0,D.Z)(r),(0,D.Z)(tE(e.children,t,a)))):e.sorter&&("sortOrder"in e?l(e,a):t&&e.defaultSortOrder&&r.push({column:e,key:ez(e,a),multiplePriority:tC(e),sortOrder:e.defaultSortOrder}))}),r}function tS(e){let{column:t,sortOrder:n}=e;return{column:t,order:n,field:t.dataIndex,columnKey:t.key}}function tk(e){let t=e.filter(e=>{let{sortOrder:t}=e;return t}).map(tS);return 0===t.length&&e.length?Object.assign(Object.assign({},tS(e[e.length-1])),{column:void 0}):t.length<=1?t[0]||{}:t}function tZ(e,t,n){let r=t.slice().sort((e,t)=>t.multiplePriority-e.multiplePriority),l=e.slice(),o=r.filter(e=>{let{column:{sorter:t},sortOrder:n}=e;return t$(t)&&n});return o.length?l.sort((e,t)=>{for(let n=0;n{let r=e[n];return r?Object.assign(Object.assign({},e),{[n]:tZ(r,t,n)}):e}):l}var tN=n(10274),tO=n(14747),tR=n(67968),tI=n(45503),tj=e=>{let{componentCls:t}=e,n=`${e.lineWidth}px ${e.lineType} ${e.tableBorderColor}`,r=(n,r,l)=>({[`&${t}-${n}`]:{[`> ${t}-container`]:{[`> ${t}-content, > ${t}-body`]:{[` + > table > tbody > tr > th, + > table > tbody > tr > td + `]:{[`> ${t}-expanded-row-fixed`]:{margin:`-${r}px -${l+e.lineWidth}px`}}}}}});return{[`${t}-wrapper`]:{[`${t}${t}-bordered`]:Object.assign(Object.assign(Object.assign({[`> ${t}-title`]:{border:n,borderBottom:0},[`> ${t}-container`]:{borderInlineStart:n,borderTop:n,[` + > ${t}-content, + > ${t}-header, + > ${t}-body, + > ${t}-summary + `]:{"> table":{[` + > thead > tr > th, + > thead > tr > td, + > tbody > tr > th, + > tbody > tr > td, + > tfoot > tr > th, + > tfoot > tr > td + `]:{borderInlineEnd:n},"> thead":{"> tr:not(:last-child) > th":{borderBottom:n},"> tr > th::before":{backgroundColor:"transparent !important"}},[` + > thead > tr, + > tbody > tr, + > tfoot > tr + `]:{[`> ${t}-cell-fix-right-first::after`]:{borderInlineEnd:n}},[` + > tbody > tr > th, + > tbody > tr > td + `]:{[`> ${t}-expanded-row-fixed`]:{margin:`-${e.tablePaddingVertical}px -${e.tablePaddingHorizontal+e.lineWidth}px`,"&::after":{position:"absolute",top:0,insetInlineEnd:e.lineWidth,bottom:0,borderInlineEnd:n,content:'""'}}}}}},[`&${t}-scroll-horizontal`]:{[`> ${t}-container > ${t}-body`]:{"> table > tbody":{[` + > tr${t}-expanded-row, + > tr${t}-placeholder + `]:{"> th, > td":{borderInlineEnd:0}}}}}},r("middle",e.tablePaddingVerticalMiddle,e.tablePaddingHorizontalMiddle)),r("small",e.tablePaddingVerticalSmall,e.tablePaddingHorizontalSmall)),{[`> ${t}-footer`]:{border:n,borderTop:0}}),[`${t}-cell`]:{[`${t}-container:first-child`]:{borderTop:0},"&-scrollbar:not([rowspan])":{boxShadow:`0 ${e.lineWidth}px 0 ${e.lineWidth}px ${e.tableHeaderBg}`}},[`${t}-bordered ${t}-cell-scrollbar`]:{borderInlineEnd:n}}}},tP=e=>{let{componentCls:t}=e;return{[`${t}-wrapper`]:{[`${t}-cell-ellipsis`]:Object.assign(Object.assign({},tO.vS),{wordBreak:"keep-all",[` + &${t}-cell-fix-left-last, + &${t}-cell-fix-right-first + `]:{overflow:"visible",[`${t}-cell-content`]:{display:"block",overflow:"hidden",textOverflow:"ellipsis"}},[`${t}-column-title`]:{overflow:"hidden",textOverflow:"ellipsis",wordBreak:"keep-all"}})}}},tT=e=>{let{componentCls:t}=e;return{[`${t}-wrapper`]:{[`${t}-tbody > tr${t}-placeholder`]:{textAlign:"center",color:e.colorTextDisabled,[` + &:hover > th, + &:hover > td, + `]:{background:e.colorBgContainer}}}}};let tz=e=>({color:e.colorLink,textDecoration:"none",outline:"none",cursor:"pointer",transition:`color ${e.motionDurationSlow}`,"&:focus, &:hover":{color:e.colorLinkHover},"&:active":{color:e.colorLinkActive}});var tM=e=>{let{componentCls:t,antCls:n,controlInteractiveSize:r,motionDurationSlow:l,lineWidth:o,paddingXS:a,lineType:i,tableBorderColor:c,tableExpandIconBg:s,tableExpandColumnWidth:u,borderRadius:d,fontSize:f,fontSizeSM:p,lineHeight:m,tablePaddingVertical:h,tablePaddingHorizontal:g,tableExpandedRowBg:x,paddingXXS:b}=e,v=r/2-o,y=2*v+3*o,w=`${o}px ${i} ${c}`,C=b-o;return{[`${t}-wrapper`]:{[`${t}-expand-icon-col`]:{width:u},[`${t}-row-expand-icon-cell`]:{textAlign:"center",[`${t}-row-expand-icon`]:{display:"inline-flex",float:"none",verticalAlign:"sub"}},[`${t}-row-indent`]:{height:1,float:"left"},[`${t}-row-expand-icon`]:Object.assign(Object.assign({},tz(e)),{position:"relative",float:"left",boxSizing:"border-box",width:y,height:y,padding:0,color:"inherit",lineHeight:`${y}px`,background:s,border:w,borderRadius:d,transform:`scale(${r/y})`,transition:`all ${l}`,userSelect:"none","&:focus, &:hover, &:active":{borderColor:"currentcolor"},"&::before, &::after":{position:"absolute",background:"currentcolor",transition:`transform ${l} ease-out`,content:'""'},"&::before":{top:v,insetInlineEnd:C,insetInlineStart:C,height:o},"&::after":{top:C,bottom:C,insetInlineStart:v,width:o,transform:"rotate(90deg)"},"&-collapsed::before":{transform:"rotate(-180deg)"},"&-collapsed::after":{transform:"rotate(0deg)"},"&-spaced":{"&::before, &::after":{display:"none",content:"none"},background:"transparent",border:0,visibility:"hidden"}}),[`${t}-row-indent + ${t}-row-expand-icon`]:{marginTop:(f*m-3*o)/2-Math.ceil((1.4*p-3*o)/2),marginInlineEnd:a},[`tr${t}-expanded-row`]:{"&, &:hover":{"> th, > td":{background:x}},[`${n}-descriptions-view`]:{display:"flex",table:{flex:"auto",width:"auto"}}},[`${t}-expanded-row-fixed`]:{position:"relative",margin:`-${h}px -${g}px`,padding:`${h}px ${g}px`}}}},tH=e=>{let{componentCls:t,antCls:n,iconCls:r,tableFilterDropdownWidth:l,tableFilterDropdownSearchWidth:o,paddingXXS:a,paddingXS:i,colorText:c,lineWidth:s,lineType:u,tableBorderColor:d,tableHeaderIconColor:f,fontSizeSM:p,tablePaddingHorizontal:m,borderRadius:h,motionDurationSlow:g,colorTextDescription:x,colorPrimary:b,tableHeaderFilterActiveBg:v,colorTextDisabled:y,tableFilterDropdownBg:w,tableFilterDropdownHeight:C,controlItemBgHover:$,controlItemBgActive:E,boxShadowSecondary:S}=e,k=`${n}-dropdown`,Z=`${t}-filter-dropdown`,N=`${n}-tree`,O=`${s}px ${u} ${d}`;return[{[`${t}-wrapper`]:{[`${t}-filter-column`]:{display:"flex",justifyContent:"space-between"},[`${t}-filter-trigger`]:{position:"relative",display:"flex",alignItems:"center",marginBlock:-a,marginInline:`${a}px ${-m/2}px`,padding:`0 ${a}px`,color:f,fontSize:p,borderRadius:h,cursor:"pointer",transition:`all ${g}`,"&:hover":{color:x,background:v},"&.active":{color:b}}}},{[`${n}-dropdown`]:{[Z]:Object.assign(Object.assign({},(0,tO.Wf)(e)),{minWidth:l,backgroundColor:w,borderRadius:h,boxShadow:S,overflow:"hidden",[`${k}-menu`]:{maxHeight:C,overflowX:"hidden",border:0,boxShadow:"none",borderRadius:"unset","&:empty::after":{display:"block",padding:`${i}px 0`,color:y,fontSize:p,textAlign:"center",content:'"Not Found"'}},[`${Z}-tree`]:{paddingBlock:`${i}px 0`,paddingInline:i,[N]:{padding:0},[`${N}-treenode ${N}-node-content-wrapper:hover`]:{backgroundColor:$},[`${N}-treenode-checkbox-checked ${N}-node-content-wrapper`]:{"&, &:hover":{backgroundColor:E}}},[`${Z}-search`]:{padding:i,borderBottom:O,"&-input":{input:{minWidth:o},[r]:{color:y}}},[`${Z}-checkall`]:{width:"100%",marginBottom:a,marginInlineStart:a},[`${Z}-btns`]:{display:"flex",justifyContent:"space-between",padding:`${i-s}px ${i}px`,overflow:"hidden",borderTop:O}})}},{[`${n}-dropdown ${Z}, ${Z}-submenu`]:{[`${n}-checkbox-wrapper + span`]:{paddingInlineStart:i,color:c},"> ul":{maxHeight:"calc(100vh - 130px)",overflowX:"hidden",overflowY:"auto"}}}]},tL=e=>{let{componentCls:t,lineWidth:n,colorSplit:r,motionDurationSlow:l,zIndexTableFixed:o,tableBg:a,zIndexTableSticky:i}=e;return{[`${t}-wrapper`]:{[` + ${t}-cell-fix-left, + ${t}-cell-fix-right + `]:{position:"sticky !important",zIndex:o,background:a},[` + ${t}-cell-fix-left-first::after, + ${t}-cell-fix-left-last::after + `]:{position:"absolute",top:0,right:{_skip_check_:!0,value:0},bottom:-n,width:30,transform:"translateX(100%)",transition:`box-shadow ${l}`,content:'""',pointerEvents:"none"},[`${t}-cell-fix-left-all::after`]:{display:"none"},[` + ${t}-cell-fix-right-first::after, + ${t}-cell-fix-right-last::after + `]:{position:"absolute",top:0,bottom:-n,left:{_skip_check_:!0,value:0},width:30,transform:"translateX(-100%)",transition:`box-shadow ${l}`,content:'""',pointerEvents:"none"},[`${t}-container`]:{"&::before, &::after":{position:"absolute",top:0,bottom:0,zIndex:i+1,width:30,transition:`box-shadow ${l}`,content:'""',pointerEvents:"none"},"&::before":{insetInlineStart:0},"&::after":{insetInlineEnd:0}},[`${t}-ping-left`]:{[`&:not(${t}-has-fix-left) ${t}-container`]:{position:"relative","&::before":{boxShadow:`inset 10px 0 8px -8px ${r}`}},[` + ${t}-cell-fix-left-first::after, + ${t}-cell-fix-left-last::after + `]:{boxShadow:`inset 10px 0 8px -8px ${r}`},[`${t}-cell-fix-left-last::before`]:{backgroundColor:"transparent !important"}},[`${t}-ping-right`]:{[`&:not(${t}-has-fix-right) ${t}-container`]:{position:"relative","&::after":{boxShadow:`inset -10px 0 8px -8px ${r}`}},[` + ${t}-cell-fix-right-first::after, + ${t}-cell-fix-right-last::after + `]:{boxShadow:`inset -10px 0 8px -8px ${r}`}}}}},tB=e=>{let{componentCls:t,antCls:n}=e;return{[`${t}-wrapper`]:{[`${t}-pagination${n}-pagination`]:{margin:`${e.margin}px 0`},[`${t}-pagination`]:{display:"flex",flexWrap:"wrap",rowGap:e.paddingXS,"> *":{flex:"none"},"&-left":{justifyContent:"flex-start"},"&-center":{justifyContent:"center"},"&-right":{justifyContent:"flex-end"}}}}},tA=e=>{let{componentCls:t,tableRadius:n}=e;return{[`${t}-wrapper`]:{[t]:{[`${t}-title, ${t}-header`]:{borderRadius:`${n}px ${n}px 0 0`},[`${t}-title + ${t}-container`]:{borderStartStartRadius:0,borderStartEndRadius:0,[`${t}-header, table`]:{borderRadius:0},"table > thead > tr:first-child":{"th:first-child, th:last-child, td:first-child, td:last-child":{borderRadius:0}}},"&-container":{borderStartStartRadius:n,borderStartEndRadius:n,"table > thead > tr:first-child":{"> *:first-child":{borderStartStartRadius:n},"> *:last-child":{borderStartEndRadius:n}}},"&-footer":{borderRadius:`0 0 ${n}px ${n}px`}}}}},t_=e=>{let{componentCls:t}=e;return{[`${t}-wrapper-rtl`]:{direction:"rtl",table:{direction:"rtl"},[`${t}-pagination-left`]:{justifyContent:"flex-end"},[`${t}-pagination-right`]:{justifyContent:"flex-start"},[`${t}-row-expand-icon`]:{float:"right","&::after":{transform:"rotate(-90deg)"},"&-collapsed::before":{transform:"rotate(180deg)"},"&-collapsed::after":{transform:"rotate(0deg)"}},[`${t}-container`]:{"&::before":{insetInlineStart:"unset",insetInlineEnd:0},"&::after":{insetInlineStart:0,insetInlineEnd:"unset"},[`${t}-row-indent`]:{float:"right"}}}}},tF=e=>{let{componentCls:t,antCls:n,iconCls:r,fontSizeIcon:l,padding:o,paddingXS:a,tableHeaderIconColor:i,tableHeaderIconColorHover:c,tableSelectionColumnWidth:s}=e;return{[`${t}-wrapper`]:{[`${t}-selection-col`]:{width:s,[`&${t}-selection-col-with-dropdown`]:{width:s+l+o/4}},[`${t}-bordered ${t}-selection-col`]:{width:s+2*a,[`&${t}-selection-col-with-dropdown`]:{width:s+l+o/4+2*a}},[` + table tr th${t}-selection-column, + table tr td${t}-selection-column + `]:{paddingInlineEnd:e.paddingXS,paddingInlineStart:e.paddingXS,textAlign:"center",[`${n}-radio-wrapper`]:{marginInlineEnd:0}},[`table tr th${t}-selection-column${t}-cell-fix-left`]:{zIndex:e.zIndexTableFixed+1},[`table tr th${t}-selection-column::after`]:{backgroundColor:"transparent !important"},[`${t}-selection`]:{position:"relative",display:"inline-flex",flexDirection:"column"},[`${t}-selection-extra`]:{position:"absolute",top:0,zIndex:1,cursor:"pointer",transition:`all ${e.motionDurationSlow}`,marginInlineStart:"100%",paddingInlineStart:`${e.tablePaddingHorizontal/4}px`,[r]:{color:i,fontSize:l,verticalAlign:"baseline","&:hover":{color:c}}}}}},tW=e=>{let{componentCls:t}=e,n=(n,r,l,o)=>({[`${t}${t}-${n}`]:{fontSize:o,[` + ${t}-title, + ${t}-footer, + ${t}-thead > tr > th, + ${t}-tbody > tr > th, + ${t}-tbody > tr > td, + tfoot > tr > th, + tfoot > tr > td + `]:{padding:`${r}px ${l}px`},[`${t}-filter-trigger`]:{marginInlineEnd:`-${l/2}px`},[`${t}-expanded-row-fixed`]:{margin:`-${r}px -${l}px`},[`${t}-tbody`]:{[`${t}-wrapper:only-child ${t}`]:{marginBlock:`-${r}px`,marginInline:`${e.tableExpandColumnWidth-l}px -${l}px`}},[`${t}-selection-column`]:{paddingInlineStart:`${l/4}px`}}});return{[`${t}-wrapper`]:Object.assign(Object.assign({},n("middle",e.tablePaddingVerticalMiddle,e.tablePaddingHorizontalMiddle,e.tableFontSizeMiddle)),n("small",e.tablePaddingVerticalSmall,e.tablePaddingHorizontalSmall,e.tableFontSizeSmall))}},tD=e=>{let{componentCls:t,marginXXS:n,fontSizeIcon:r,tableHeaderIconColor:l,tableHeaderIconColorHover:o}=e;return{[`${t}-wrapper`]:{[`${t}-thead th${t}-column-has-sorters`]:{outline:"none",cursor:"pointer",transition:`all ${e.motionDurationSlow}`,"&:hover":{background:e.tableHeaderSortHoverBg,"&::before":{backgroundColor:"transparent !important"}},"&:focus-visible":{color:e.colorPrimary},[` + &${t}-cell-fix-left:hover, + &${t}-cell-fix-right:hover + `]:{background:e.tableFixedHeaderSortActiveBg}},[`${t}-thead th${t}-column-sort`]:{background:e.tableHeaderSortBg,"&::before":{backgroundColor:"transparent !important"}},[`td${t}-column-sort`]:{background:e.tableBodySortBg},[`${t}-column-title`]:{position:"relative",zIndex:1,flex:1},[`${t}-column-sorters`]:{display:"flex",flex:"auto",alignItems:"center",justifyContent:"space-between","&::after":{position:"absolute",inset:0,width:"100%",height:"100%",content:'""'}},[`${t}-column-sorter`]:{marginInlineStart:n,color:l,fontSize:0,transition:`color ${e.motionDurationSlow}`,"&-inner":{display:"inline-flex",flexDirection:"column",alignItems:"center"},"&-up, &-down":{fontSize:r,"&.active":{color:e.colorPrimary}},[`${t}-column-sorter-up + ${t}-column-sorter-down`]:{marginTop:"-0.3em"}},[`${t}-column-sorters:hover ${t}-column-sorter`]:{color:o}}}},tK=e=>{let{componentCls:t,opacityLoading:n,tableScrollThumbBg:r,tableScrollThumbBgHover:l,tableScrollThumbSize:o,tableScrollBg:a,zIndexTableSticky:i}=e,c=`${e.lineWidth}px ${e.lineType} ${e.tableBorderColor}`;return{[`${t}-wrapper`]:{[`${t}-sticky`]:{"&-holder":{position:"sticky",zIndex:i,background:e.colorBgContainer},"&-scroll":{position:"sticky",bottom:0,height:`${o}px !important`,zIndex:i,display:"flex",alignItems:"center",background:a,borderTop:c,opacity:n,"&:hover":{transformOrigin:"center bottom"},"&-bar":{height:o,backgroundColor:r,borderRadius:100,transition:`all ${e.motionDurationSlow}, transform none`,position:"absolute",bottom:0,"&:hover, &-active":{backgroundColor:l}}}}}}},tV=e=>{let{componentCls:t,lineWidth:n,tableBorderColor:r}=e,l=`${n}px ${e.lineType} ${r}`;return{[`${t}-wrapper`]:{[`${t}-summary`]:{position:"relative",zIndex:e.zIndexTableFixed,background:e.tableBg,"> tr":{"> th, > td":{borderBottom:l}}},[`div${t}-summary`]:{boxShadow:`0 -${n}px 0 ${r}`}}}};let tX=e=>{let{componentCls:t,fontWeightStrong:n,tablePaddingVertical:r,tablePaddingHorizontal:l,lineWidth:o,lineType:a,tableBorderColor:i,tableFontSize:c,tableBg:s,tableRadius:u,tableHeaderTextColor:d,motionDurationMid:f,tableHeaderBg:p,tableHeaderCellSplitColor:m,tableRowHoverBg:h,tableSelectedRowBg:g,tableSelectedRowHoverBg:x,tableFooterTextColor:b,tableFooterBg:v,paddingContentVerticalLG:y}=e,w=`${o}px ${a} ${i}`;return{[`${t}-wrapper`]:Object.assign(Object.assign({clear:"both",maxWidth:"100%"},(0,tO.dF)()),{[t]:Object.assign(Object.assign({},(0,tO.Wf)(e)),{fontSize:c,background:s,borderRadius:`${u}px ${u}px 0 0`}),table:{width:"100%",textAlign:"start",borderRadius:`${u}px ${u}px 0 0`,borderCollapse:"separate",borderSpacing:0},[` + ${t}-thead > tr > th, + ${t}-tbody > tr > th, + ${t}-tbody > tr > td, + tfoot > tr > th, + tfoot > tr > td + `]:{position:"relative",padding:`${y}px ${l}px`,overflowWrap:"break-word"},[`${t}-title`]:{padding:`${r}px ${l}px`},[`${t}-thead`]:{[` + > tr > th, + > tr > td + `]:{position:"relative",color:d,fontWeight:n,textAlign:"start",background:p,borderBottom:w,transition:`background ${f} ease`,"&[colspan]:not([colspan='1'])":{textAlign:"center"},[`&:not(:last-child):not(${t}-selection-column):not(${t}-row-expand-icon-cell):not([colspan])::before`]:{position:"absolute",top:"50%",insetInlineEnd:0,width:1,height:"1.6em",backgroundColor:m,transform:"translateY(-50%)",transition:`background-color ${f}`,content:'""'}},"> tr:not(:last-child) > th[colspan]":{borderBottom:0}},[`${t}-tbody`]:{"> tr":{"> th, > td":{transition:`background ${f}, border-color ${f}`,borderBottom:w,[` + > ${t}-wrapper:only-child, + > ${t}-expanded-row-fixed > ${t}-wrapper:only-child + `]:{[t]:{marginBlock:`-${r}px`,marginInline:`${e.tableExpandColumnWidth-l}px -${l}px`,[`${t}-tbody > tr:last-child > td`]:{borderBottom:0,"&:first-child, &:last-child":{borderRadius:0}}}}},"> th":{position:"relative",color:d,fontWeight:n,textAlign:"start",background:p,borderBottom:w,transition:`background ${f} ease`},[` + &${t}-row:hover > th, + &${t}-row:hover > td, + > th${t}-cell-row-hover, + > td${t}-cell-row-hover + `]:{background:h},[`&${t}-row-selected`]:{"> th, > td":{background:g},"&:hover > th, &:hover > td":{background:x}}}},[`${t}-footer`]:{padding:`${r}px ${l}px`,color:b,background:v}})}};var tU=(0,tR.Z)("Table",e=>{let{controlItemBgActive:t,controlItemBgActiveHover:n,colorTextPlaceholder:r,colorTextHeading:l,colorSplit:o,colorBorderSecondary:a,fontSize:i,padding:c,paddingXS:s,paddingSM:u,controlHeight:d,colorFillAlter:f,colorIcon:p,colorIconHover:m,opacityLoading:h,colorBgContainer:g,borderRadiusLG:x,colorFillContent:b,colorFillSecondary:v,controlInteractiveSize:y}=e,w=new tN.C(p),C=new tN.C(m),$=new tN.C(v).onBackground(g).toHexShortString(),E=new tN.C(b).onBackground(g).toHexShortString(),S=new tN.C(f).onBackground(g).toHexShortString(),k=(0,tI.TS)(e,{tableFontSize:i,tableBg:g,tableRadius:x,tablePaddingVertical:c,tablePaddingHorizontal:c,tablePaddingVerticalMiddle:u,tablePaddingHorizontalMiddle:s,tablePaddingVerticalSmall:s,tablePaddingHorizontalSmall:s,tableBorderColor:a,tableHeaderTextColor:l,tableHeaderBg:S,tableFooterTextColor:l,tableFooterBg:S,tableHeaderCellSplitColor:a,tableHeaderSortBg:$,tableHeaderSortHoverBg:E,tableHeaderIconColor:w.clone().setAlpha(w.getAlpha()*h).toRgbString(),tableHeaderIconColorHover:C.clone().setAlpha(C.getAlpha()*h).toRgbString(),tableBodySortBg:S,tableFixedHeaderSortActiveBg:$,tableHeaderFilterActiveBg:b,tableFilterDropdownBg:g,tableRowHoverBg:S,tableSelectedRowBg:t,tableSelectedRowHoverBg:n,zIndexTableFixed:2,zIndexTableSticky:3,tableFontSizeMiddle:i,tableFontSizeSmall:i,tableSelectionColumnWidth:d,tableExpandIconBg:g,tableExpandColumnWidth:y+2*e.padding,tableExpandedRowBg:f,tableFilterDropdownWidth:120,tableFilterDropdownHeight:264,tableFilterDropdownSearchWidth:140,tableScrollThumbSize:8,tableScrollThumbBg:r,tableScrollThumbBgHover:l,tableScrollBg:o});return[tX(k),tB(k),tV(k),tD(k),tH(k),tj(k),tA(k),tM(k),tV(k),tT(k),tF(k),tL(k),tK(k),tP(k),tW(k),t_(k)]});let tG=[];var tY=u.forwardRef((e,t)=>{let n,r,l;let{prefixCls:a,className:i,rootClassName:c,style:s,size:d,bordered:f,dropdownPrefixCls:p,dataSource:m,pagination:h,rowSelection:g,rowKey:x="key",rowClassName:b,columns:v,children:y,childrenColumnName:w,onChange:C,getPopupContainer:$,loading:S,expandIcon:k,expandable:Z,expandedRowRender:N,expandIconColumnIndex:O,indentSize:R,scroll:I,sortDirections:j,locale:P,showSorterTooltip:T=!0}=e,z=u.useMemo(()=>v||eu(y),[v,y]),M=u.useMemo(()=>z.some(e=>e.responsive),[z]),H=(0,eR.Z)(M),L=u.useMemo(()=>{let e=new Set(Object.keys(H).filter(e=>H[e]));return z.filter(t=>!t.responsive||t.responsive.some(t=>e.has(t)))},[z,H]),B=(0,eS.Z)(e,["className","style","columns"]),{locale:A=eI.Z,direction:_,table:F,renderEmpty:W,getPrefixCls:K,getPopupContainer:V}=u.useContext(eZ.E_),X=(0,eO.Z)(d),U=Object.assign(Object.assign({},A.Table),P),G=m||tG,Y=K("table",a),J=K("dropdown",p),q=Object.assign({childrenColumnName:w,expandIconColumnIndex:O},Z),{childrenColumnName:Q="children"}=q,ee=u.useMemo(()=>G.some(e=>null==e?void 0:e[Q])?"nest":N||Z&&Z.expandedRowRender?"row":null,[G]),et={body:u.useRef()},en=u.useMemo(()=>"function"==typeof x?x:e=>null==e?void 0:e[x],[x]),[er]=function(e,t,n){let r=u.useRef({});return[function(l){if(!r.current||r.current.data!==e||r.current.childrenColumnName!==t||r.current.getRowKey!==n){let l=new Map;!function e(r){r.forEach((r,o)=>{let a=n(r,o);l.set(a,r),r&&"object"==typeof r&&t in r&&e(r[t]||[])})}(e),r.current={data:e,childrenColumnName:t,kvMap:l,getRowKey:n}}return r.current.kvMap.get(l)}]}(G,Q,en),el={},eo=function(e,t){var n,r,l;let o=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=Object.assign(Object.assign({},el),e);o&&(null===(n=el.resetPagination)||void 0===n||n.call(el),(null===(r=a.pagination)||void 0===r?void 0:r.current)&&(a.pagination.current=1),h&&h.onChange&&h.onChange(1,null===(l=a.pagination)||void 0===l?void 0:l.pageSize)),I&&!1!==I.scrollToFirstRowOnChange&&et.body.current&&(0,ek.Z)(0,{getContainer:()=>et.body.current}),null==C||C(a.pagination,a.filters,a.sorter,{currentDataSource:e7(tZ(G,a.sorterStates,Q),a.filterStates),action:t})},[ea,ei,ec,es]=function(e){let{prefixCls:t,mergedColumns:n,onSorterChange:r,sortDirections:l,tableLocale:o,showSorterTooltip:a}=e,[i,c]=u.useState(tE(n,!0)),s=u.useMemo(()=>{let e=!0,t=tE(n,!1);if(!t.length)return i;let r=[];function l(t){e?r.push(t):r.push(Object.assign(Object.assign({},t),{sortOrder:null}))}let o=null;return t.forEach(t=>{null===o?(l(t),t.sortOrder&&(!1===t.multiplePriority?e=!1:o=!0)):(o&&!1!==t.multiplePriority||(e=!1),l(t))}),r},[n,i]),d=u.useMemo(()=>{let e=s.map(e=>{let{column:t,sortOrder:n}=e;return{column:t,order:n}});return{sortColumns:e,sortColumn:e[0]&&e[0].column,sortOrder:e[0]&&e[0].order}},[s]);function f(e){let t;c(t=!1!==e.multiplePriority&&s.length&&!1!==s[0].multiplePriority?[].concat((0,D.Z)(s.filter(t=>{let{key:n}=t;return n!==e.key})),[e]):[e]),r(tk(t),t)}return[e=>(function e(t,n,r,l,o,a,i,c){return(n||[]).map((n,s)=>{let d=eM(s,c),f=n;if(f.sorter){let e;let c=f.sortDirections||o,s=void 0===f.showSorterTooltip?i:f.showSorterTooltip,p=ez(f,d),m=r.find(e=>{let{key:t}=e;return t===p}),h=m?m.sortOrder:null,g=h?c[c.indexOf(h)+1]:c[0];if(n.sortIcon)e=n.sortIcon({sortOrder:h});else{let n=c.includes(ty)&&u.createElement(tb,{className:E()(`${t}-column-sorter-up`,{active:h===ty})}),r=c.includes(tw)&&u.createElement(tg,{className:E()(`${t}-column-sorter-down`,{active:h===tw})});e=u.createElement("span",{className:E()(`${t}-column-sorter`,{[`${t}-column-sorter-full`]:!!(n&&r)})},u.createElement("span",{className:`${t}-column-sorter-inner`,"aria-hidden":"true"},n,r))}let{cancelSort:x,triggerAsc:b,triggerDesc:v}=a||{},y=x;g===tw?y=v:g===ty&&(y=b);let w="object"==typeof s?s:{title:y};f=Object.assign(Object.assign({},f),{className:E()(f.className,{[`${t}-column-sort`]:h}),title:r=>{let l=u.createElement("div",{className:`${t}-column-sorters`},u.createElement("span",{className:`${t}-column-title`},eH(n.title,r)),e);return s?u.createElement(tv.Z,Object.assign({},w),l):l},onHeaderCell:e=>{let r=n.onHeaderCell&&n.onHeaderCell(e)||{},o=r.onClick,a=r.onKeyDown;r.onClick=e=>{l({column:n,key:p,sortOrder:g,multiplePriority:tC(n)}),null==o||o(e)},r.onKeyDown=e=>{e.keyCode===eQ.Z.ENTER&&(l({column:n,key:p,sortOrder:g,multiplePriority:tC(n)}),null==a||a(e))};let i=function(e,t){let n=eH(e,t);return"[object Object]"===Object.prototype.toString.call(n)?"":n}(n.title,{}),c=null==i?void 0:i.toString();return h?r["aria-sort"]="ascend"===h?"ascending":"descending":r["aria-label"]=c||"",r.className=E()(r.className,`${t}-column-has-sorters`),r.tabIndex=0,n.ellipsis&&(r.title=(null!=i?i:"").toString()),r}})}return"children"in f&&(f=Object.assign(Object.assign({},f),{children:e(t,f.children,r,l,o,a,i,d)})),f})})(t,e,s,f,l,o,a),s,d,()=>tk(s)]}({prefixCls:Y,mergedColumns:L,onSorterChange:(e,t)=>{eo({sorter:e,sorterStates:t},"sort",!1)},sortDirections:j||["ascend","descend"],tableLocale:U,showSorterTooltip:T}),ed=u.useMemo(()=>tZ(G,ei,Q),[G,ei]);el.sorter=es(),el.sorterStates=ei;let[ef,ep,em]=e9({prefixCls:Y,locale:U,dropdownPrefixCls:J,mergedColumns:L,onFilterChange:(e,t)=>{eo({filters:e,filterStates:t},"filter",!0)},getPopupContainer:$||V}),eh=e7(ed,ep);el.filters=em,el.filterStates=ep;let eg=u.useMemo(()=>{let e={};return Object.keys(em).forEach(t=>{null!==em[t]&&(e[t]=em[t])}),Object.assign(Object.assign({},ec),{filters:e})},[ec,em]),[ex]=function(e){let t=u.useCallback(t=>(function e(t,n){return t.map(t=>{let r=Object.assign({},t);return r.title=eH(t.title,n),"children"in r&&(r.children=e(r.children,n)),r})})(t,e),[e]);return[t]}(eg),[eb,ev]=tn(eh.length,(e,t)=>{eo({pagination:Object.assign(Object.assign({},el.pagination),{current:e,pageSize:t})},"paginate")},h);el.pagination=!1===h?{}:function(e,t){let n={current:e.current,pageSize:e.pageSize},r=t&&"object"==typeof t?t:{};return Object.keys(r).forEach(t=>{let r=e[t];"function"!=typeof r&&(n[t]=r)}),n}(eb,h),el.resetPagination=ev;let ey=u.useMemo(()=>{if(!1===h||!eb.pageSize)return eh;let{current:e=1,total:t,pageSize:n=10}=eb;return eh.lengthn?eh.slice((e-1)*n,e*n):eh:eh.slice((e-1)*n,e*n)},[!!h,eh,eb&&eb.current,eb&&eb.pageSize,eb&&eb.total]),[ew,eC]=tm({prefixCls:Y,data:eh,pageData:ey,getRowKey:en,getRecordByKey:er,expandType:ee,childrenColumnName:Q,locale:U,getPopupContainer:$||V},g);q.__PARENT_RENDER_ICON__=q.expandIcon,q.expandIcon=q.expandIcon||k||function(e){let{prefixCls:t,onExpand:n,record:r,expanded:l,expandable:o}=e,a=`${t}-row-expand-icon`;return u.createElement("button",{type:"button",onClick:e=>{n(r,e),e.stopPropagation()},className:E()(a,{[`${a}-spaced`]:!o,[`${a}-expanded`]:o&&l,[`${a}-collapsed`]:o&&!l}),"aria-label":l?U.collapse:U.expand,"aria-expanded":l})},"nest"===ee&&void 0===q.expandIconColumnIndex?q.expandIconColumnIndex=g?1:0:q.expandIconColumnIndex>0&&g&&(q.expandIconColumnIndex-=1),"number"!=typeof q.indentSize&&(q.indentSize="number"==typeof R?R:15);let e$=u.useCallback(e=>ex(ew(ef(ea(e)))),[ea,ef,ew]);if(!1!==h&&(null==eb?void 0:eb.total)){let e;e=eb.size?eb.size:"small"===X||"middle"===X?"small":void 0;let t=t=>u.createElement(ej.Z,Object.assign({},eb,{className:E()(`${Y}-pagination ${Y}-pagination-${t}`,eb.className),size:e})),l="rtl"===_?"left":"right",{position:o}=eb;if(null!==o&&Array.isArray(o)){let e=o.find(e=>e.includes("top")),a=o.find(e=>e.includes("bottom")),i=o.every(e=>"none"==`${e}`);e||a||i||(r=t(l)),e&&(n=t(e.toLowerCase().replace("top",""))),a&&(r=t(a.toLowerCase().replace("bottom","")))}else r=t(l)}"boolean"==typeof S?l={spinning:S}:"object"==typeof S&&(l=Object.assign({spinning:!0},S));let[eE,eL]=tU(Y),eB=E()(`${Y}-wrapper`,null==F?void 0:F.className,{[`${Y}-wrapper-rtl`]:"rtl"===_},i,c,eL),eA=Object.assign(Object.assign({},null==F?void 0:F.style),s),e_=P&&P.emptyText||(null==W?void 0:W("Table"))||u.createElement(eN.Z,{componentName:"Table"});return eE(u.createElement("div",{ref:t,className:eB,style:eA},u.createElement(eP.Z,Object.assign({spinning:!1},l),n,u.createElement(eT,Object.assign({},B,{columns:L,direction:_,expandable:q,prefixCls:Y,className:E()({[`${Y}-middle`]:"middle"===X,[`${Y}-small`]:"small"===X,[`${Y}-bordered`]:f,[`${Y}-empty`]:0===G.length}),data:ey,rowKey:en,rowClassName:(e,t,n)=>{let r;return r="function"==typeof b?E()(b(e,t,n)):E()(b),E()({[`${Y}-row-selected`]:eC.has(en(e,t))},r)},emptyText:e_,internalHooks:o,internalRefs:et,transformColumns:e$})),r)))});let tJ=u.forwardRef((e,t)=>{let n=u.useRef(0);return n.current+=1,u.createElement(tY,Object.assign({},e,{ref:t,_renderTimes:n.current}))});tJ.SELECTION_COLUMN=tc,tJ.EXPAND_COLUMN=l,tJ.SELECTION_ALL=ts,tJ.SELECTION_INVERT=tu,tJ.SELECTION_NONE=td,tJ.Column=function(e){return null},tJ.ColumnGroup=function(e){return null},tJ.Summary=z;var tq=tJ},64019:function(e,t,n){n.d(t,{Z:function(){return l}});var r=n(73935);function l(e,t,n,l){var o=r.unstable_batchedUpdates?function(e){r.unstable_batchedUpdates(n,e)}:n;return null!=e&&e.addEventListener&&e.addEventListener(t,o,l),{remove:function(){null!=e&&e.removeEventListener&&e.removeEventListener(t,o,l)}}}},27678:function(e,t,n){function r(){return{width:document.documentElement.clientWidth,height:window.innerHeight||document.documentElement.clientHeight}}function l(e){var t=e.getBoundingClientRect(),n=document.documentElement;return{left:t.left+(window.pageXOffset||n.scrollLeft)-(n.clientLeft||document.body.clientLeft||0),top:t.top+(window.pageYOffset||n.scrollTop)-(n.clientTop||document.body.clientTop||0)}}n.d(t,{g1:function(){return r},os:function(){return l}})}}]); \ No newline at end of file diff --git a/pilot/server/static/_next/static/chunks/61-d2f6cba798a49339.js b/pilot/server/static/_next/static/chunks/61-d2f6cba798a49339.js deleted file mode 100644 index 524c29660..000000000 --- a/pilot/server/static/_next/static/chunks/61-d2f6cba798a49339.js +++ /dev/null @@ -1,10 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[61],{64938:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o.createSvgIcon}});var o=n(52869)},52869:function(e,t,n){"use strict";n.r(t),n.d(t,{capitalize:function(){return r.Z},createChainedFunction:function(){return a},createSvgIcon:function(){return i.Z},debounce:function(){return d},deprecatedPropType:function(){return c},isMuiElement:function(){return l},ownerDocument:function(){return s},ownerWindow:function(){return u},requirePropFactory:function(){return p},setRef:function(){return f},unstable_ClassNameGenerator:function(){return x},unstable_useEnhancedEffect:function(){return h},unstable_useId:function(){return g},unsupportedProp:function(){return v},useControlled:function(){return y},useEventCallback:function(){return b},useForkRef:function(){return k},useIsFocusVisible:function(){return m}});var o=n(37078),r=n(98216),a=function(...e){return e.reduce((e,t)=>null==t?e:function(...n){e.apply(this,n),t.apply(this,n)},()=>{})},i=n(34678),d=n(39336).Z,c=function(e,t){return()=>null},l=n(18719).Z,s=n(82690).Z,u=n(74161).Z;n(87462);var p=function(e,t){return()=>null},f=n(7960).Z,h=n(73546).Z,g=n(92996).Z,v=function(e,t,n,o,r){return null},y=n(19032).Z,b=n(59948).Z,k=n(33703).Z,m=n(99962).Z;let x={configure:e=>{o.Z.configure(e)}}},63185:function(e,t,n){"use strict";n.d(t,{C2:function(){return d}});var o=n(14747),r=n(45503),a=n(67968);let i=e=>{let{checkboxCls:t}=e,n=`${t}-wrapper`;return[{[`${t}-group`]:Object.assign(Object.assign({},(0,o.Wf)(e)),{display:"inline-flex",flexWrap:"wrap",columnGap:e.marginXS,[`> ${e.antCls}-row`]:{flex:1}}),[n]:Object.assign(Object.assign({},(0,o.Wf)(e)),{display:"inline-flex",alignItems:"baseline",cursor:"pointer","&:after":{display:"inline-block",width:0,overflow:"hidden",content:"'\\a0'"},[`& + ${n}`]:{marginInlineStart:0},[`&${n}-in-form-item`]:{'input[type="checkbox"]':{width:14,height:14}}}),[t]:Object.assign(Object.assign({},(0,o.Wf)(e)),{position:"relative",whiteSpace:"nowrap",lineHeight:1,cursor:"pointer",borderRadius:e.borderRadiusSM,alignSelf:"center",[`${t}-input`]:{position:"absolute",inset:0,zIndex:1,cursor:"pointer",opacity:0,margin:0,[`&:focus-visible + ${t}-inner`]:Object.assign({},(0,o.oN)(e))},[`${t}-inner`]:{boxSizing:"border-box",position:"relative",top:0,insetInlineStart:0,display:"block",width:e.checkboxSize,height:e.checkboxSize,direction:"ltr",backgroundColor:e.colorBgContainer,border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,borderRadius:e.borderRadiusSM,borderCollapse:"separate",transition:`all ${e.motionDurationSlow}`,"&:after":{boxSizing:"border-box",position:"absolute",top:"50%",insetInlineStart:"21.5%",display:"table",width:e.checkboxSize/14*5,height:e.checkboxSize/14*8,border:`${e.lineWidthBold}px solid ${e.colorWhite}`,borderTop:0,borderInlineStart:0,transform:"rotate(45deg) scale(0) translate(-50%,-50%)",opacity:0,content:'""',transition:`all ${e.motionDurationFast} ${e.motionEaseInBack}, opacity ${e.motionDurationFast}`}},"& + span":{paddingInlineStart:e.paddingXS,paddingInlineEnd:e.paddingXS}})},{[` - ${n}:not(${n}-disabled), - ${t}:not(${t}-disabled) - `]:{[`&:hover ${t}-inner`]:{borderColor:e.colorPrimary}},[`${n}:not(${n}-disabled)`]:{[`&:hover ${t}-checked:not(${t}-disabled) ${t}-inner`]:{backgroundColor:e.colorPrimaryHover,borderColor:"transparent"},[`&:hover ${t}-checked:not(${t}-disabled):after`]:{borderColor:e.colorPrimaryHover}}},{[`${t}-checked`]:{[`${t}-inner`]:{backgroundColor:e.colorPrimary,borderColor:e.colorPrimary,"&:after":{opacity:1,transform:"rotate(45deg) scale(1) translate(-50%,-50%)",transition:`all ${e.motionDurationMid} ${e.motionEaseOutBack} ${e.motionDurationFast}`}}},[` - ${n}-checked:not(${n}-disabled), - ${t}-checked:not(${t}-disabled) - `]:{[`&:hover ${t}-inner`]:{backgroundColor:e.colorPrimaryHover,borderColor:"transparent"}}},{[t]:{"&-indeterminate":{[`${t}-inner`]:{backgroundColor:e.colorBgContainer,borderColor:e.colorBorder,"&:after":{top:"50%",insetInlineStart:"50%",width:e.fontSizeLG/2,height:e.fontSizeLG/2,backgroundColor:e.colorPrimary,border:0,transform:"translate(-50%, -50%) scale(1)",opacity:1,content:'""'}}}}},{[`${n}-disabled`]:{cursor:"not-allowed"},[`${t}-disabled`]:{[`&, ${t}-input`]:{cursor:"not-allowed",pointerEvents:"none"},[`${t}-inner`]:{background:e.colorBgContainerDisabled,borderColor:e.colorBorder,"&:after":{borderColor:e.colorTextDisabled}},"&:after":{display:"none"},"& + span":{color:e.colorTextDisabled},[`&${t}-indeterminate ${t}-inner::after`]:{background:e.colorTextDisabled}}}]};function d(e,t){let n=(0,r.TS)(t,{checkboxCls:`.${e}`,checkboxSize:t.controlInteractiveSize});return[i(n)]}t.ZP=(0,a.Z)("Checkbox",(e,t)=>{let{prefixCls:n}=t;return[d(n,e)]})},57346:function(e,t,n){"use strict";n.d(t,{Z:function(){return eT}});var o,r,a=n(87462),i=n(4942),d=n(71002),c=n(1413),l=n(74902),s=n(15671),u=n(43144),p=n(97326),f=n(32531),h=n(73568),g=n(67294),v=n(15105),y=n(80334),b=n(64217),k=n(94184),m=n.n(k),x=n(27822),K=n(10225),N=n(1089);function E(e){if(null==e)throw TypeError("Cannot destructure "+e)}var S=n(97685),C=n(45987),w=n(8410),D=n(85344),Z=n(82225),$=n(86128),O=["className","style","motion","motionNodes","motionType","onMotionStart","onMotionEnd","active","treeNodeRequiredProps"],P=function(e,t){var n,o,r,i,d,c=e.className,l=e.style,s=e.motion,u=e.motionNodes,p=e.motionType,f=e.onMotionStart,h=e.onMotionEnd,v=e.active,y=e.treeNodeRequiredProps,b=(0,C.Z)(e,O),k=g.useState(!0),K=(0,S.Z)(k,2),D=K[0],P=K[1],L=g.useContext(x.k).prefixCls,T=u&&"hide"!==p;(0,w.Z)(function(){u&&T!==D&&P(T)},[u]);var I=g.useRef(!1),M=function(){u&&!I.current&&(I.current=!0,h())};return(n=function(){u&&f()},o=g.useState(!1),i=(r=(0,S.Z)(o,2))[0],d=r[1],g.useLayoutEffect(function(){if(i)return n(),function(){M()}},[i]),g.useLayoutEffect(function(){return d(!0),function(){d(!1)}},[]),u)?g.createElement(Z.ZP,(0,a.Z)({ref:t,visible:D},s,{motionAppear:"show"===p,onVisibleChanged:function(e){T===e&&M()}}),function(e,t){var n=e.className,o=e.style;return g.createElement("div",{ref:t,className:m()("".concat(L,"-treenode-motion"),n),style:o},u.map(function(e){var t=(0,a.Z)({},(E(e.data),e.data)),n=e.title,o=e.key,r=e.isStart,i=e.isEnd;delete t.children;var d=(0,N.H8)(o,y);return g.createElement($.Z,(0,a.Z)({},t,d,{title:n,active:v,data:e.data,key:o,isStart:r,isEnd:i}))}))}):g.createElement($.Z,(0,a.Z)({domRef:t,className:c,style:l},b,{active:v}))};P.displayName="MotionTreeNode";var L=g.forwardRef(P);function T(e,t,n){var o=e.findIndex(function(e){return e.key===n}),r=e[o+1],a=t.findIndex(function(e){return e.key===n});if(r){var i=t.findIndex(function(e){return e.key===r.key});return t.slice(a+1,i)}return t.slice(a+1)}var I=["prefixCls","data","selectable","checkable","expandedKeys","selectedKeys","checkedKeys","loadedKeys","loadingKeys","halfCheckedKeys","keyEntities","disabled","dragging","dragOverNodeKey","dropPosition","motion","height","itemHeight","virtual","focusable","activeItem","focused","tabIndex","onKeyDown","onFocus","onBlur","onActiveChange","onListChangeStart","onListChangeEnd"],M={width:0,height:0,display:"flex",overflow:"hidden",opacity:0,border:0,padding:0,margin:0},R=function(){},A="RC_TREE_MOTION_".concat(Math.random()),H={key:A},j={key:A,level:0,index:0,pos:"0",node:H,nodes:[H]},z={parent:null,children:[],pos:j.pos,data:H,title:null,key:A,isStart:[],isEnd:[]};function B(e,t,n,o){return!1!==t&&n?e.slice(0,Math.ceil(n/o)+1):e}function F(e){var t=e.key,n=e.pos;return(0,N.km)(t,n)}var _=g.forwardRef(function(e,t){var n=e.prefixCls,o=e.data,r=(e.selectable,e.checkable,e.expandedKeys),i=e.selectedKeys,d=e.checkedKeys,c=e.loadedKeys,l=e.loadingKeys,s=e.halfCheckedKeys,u=e.keyEntities,p=e.disabled,f=e.dragging,h=e.dragOverNodeKey,v=e.dropPosition,y=e.motion,b=e.height,k=e.itemHeight,m=e.virtual,x=e.focusable,K=e.activeItem,Z=e.focused,$=e.tabIndex,O=e.onKeyDown,P=e.onFocus,H=e.onBlur,j=e.onActiveChange,_=e.onListChangeStart,W=e.onListChangeEnd,G=(0,C.Z)(e,I),V=g.useRef(null),U=g.useRef(null);g.useImperativeHandle(t,function(){return{scrollTo:function(e){V.current.scrollTo(e)},getIndentWidth:function(){return U.current.offsetWidth}}});var q=g.useState(r),X=(0,S.Z)(q,2),Y=X[0],J=X[1],Q=g.useState(o),ee=(0,S.Z)(Q,2),et=ee[0],en=ee[1],eo=g.useState(o),er=(0,S.Z)(eo,2),ea=er[0],ei=er[1],ed=g.useState([]),ec=(0,S.Z)(ed,2),el=ec[0],es=ec[1],eu=g.useState(null),ep=(0,S.Z)(eu,2),ef=ep[0],eh=ep[1],eg=g.useRef(o);function ev(){var e=eg.current;en(e),ei(e),es([]),eh(null),W()}eg.current=o,(0,w.Z)(function(){J(r);var e=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=e.length,o=t.length;if(1!==Math.abs(n-o))return{add:!1,key:null};function r(e,t){var n=new Map;e.forEach(function(e){n.set(e,!0)});var o=t.filter(function(e){return!n.has(e)});return 1===o.length?o[0]:null}return n ").concat(t);return t}(K)),g.createElement("div",null,g.createElement("input",{style:M,disabled:!1===x||p,tabIndex:!1!==x?$:null,onKeyDown:O,onFocus:P,onBlur:H,value:"",onChange:R,"aria-label":"for screen reader"})),g.createElement("div",{className:"".concat(n,"-treenode"),"aria-hidden":!0,style:{position:"absolute",pointerEvents:"none",visibility:"hidden",height:0,overflow:"hidden",border:0,padding:0}},g.createElement("div",{className:"".concat(n,"-indent")},g.createElement("div",{ref:U,className:"".concat(n,"-indent-unit")}))),g.createElement(D.Z,(0,a.Z)({},G,{data:ey,itemKey:F,height:b,fullHeight:!1,virtual:m,itemHeight:k,prefixCls:"".concat(n,"-list"),ref:V,onVisibleChange:function(e,t){var n=new Set(e);t.filter(function(e){return!n.has(e)}).some(function(e){return F(e)===A})&&ev()}}),function(e){var t=e.pos,n=(0,a.Z)({},(E(e.data),e.data)),o=e.title,r=e.key,i=e.isStart,d=e.isEnd,c=(0,N.km)(r,t);delete n.key,delete n.children;var l=(0,N.H8)(c,eb);return g.createElement(L,(0,a.Z)({},n,l,{title:o,active:!!K&&r===K.key,pos:t,data:e.data,isStart:i,isEnd:d,motion:y,motionNodes:r===A?el:null,motionType:ef,onMotionStart:_,onMotionEnd:ev,treeNodeRequiredProps:eb,onMouseMove:function(){j(null)}}))}))});_.displayName="NodeList";var W=n(17341),G=function(e){(0,f.Z)(n,e);var t=(0,h.Z)(n);function n(){var e;(0,s.Z)(this,n);for(var o=arguments.length,r=Array(o),a=0;a2&&void 0!==arguments[2]&&arguments[2],a=e.state,i=a.dragChildrenKeys,d=a.dropPosition,l=a.dropTargetKey,s=a.dropTargetPos;if(a.dropAllowed){var u=e.props.onDrop;if(e.setState({dragOverNodeKey:null}),e.cleanDragState(),null!==l){var p=(0,c.Z)((0,c.Z)({},(0,N.H8)(l,e.getTreeNodeRequiredProps())),{},{active:(null===(o=e.getActiveItem())||void 0===o?void 0:o.key)===l,data:e.state.keyEntities[l].node}),f=-1!==i.indexOf(l);(0,y.ZP)(!f,"Can not drop to dragNode's children node. This is a bug of rc-tree. Please report an issue.");var h=(0,K.yx)(s),g={event:t,node:(0,N.F)(p),dragNode:e.dragNode?(0,N.F)(e.dragNode.props):null,dragNodesKeys:[e.dragNode.props.eventKey].concat(i),dropToGap:0!==d,dropPosition:d+Number(h[h.length-1])};r||null==u||u(g),e.dragNode=null}}},e.cleanDragState=function(){null!==e.state.draggingNodeKey&&e.setState({draggingNodeKey:null,dropPosition:null,dropContainerKey:null,dropTargetKey:null,dropLevelOffset:null,dropAllowed:!0,dragOverNodeKey:null}),e.dragStartMousePosition=null,e.currentMouseOverDroppableNodeKey=null},e.triggerExpandActionExpand=function(t,n){var o=e.state,r=o.expandedKeys,a=o.flattenNodes,i=n.expanded,d=n.key;if(!n.isLeaf&&!t.shiftKey&&!t.metaKey&&!t.ctrlKey){var l=a.filter(function(e){return e.key===d})[0],s=(0,N.F)((0,c.Z)((0,c.Z)({},(0,N.H8)(d,e.getTreeNodeRequiredProps())),{},{data:l.data}));e.setExpandedKeys(i?(0,K._5)(r,d):(0,K.L0)(r,d)),e.onNodeExpand(t,s)}},e.onNodeClick=function(t,n){var o=e.props,r=o.onClick;"click"===o.expandAction&&e.triggerExpandActionExpand(t,n),null==r||r(t,n)},e.onNodeDoubleClick=function(t,n){var o=e.props,r=o.onDoubleClick;"doubleClick"===o.expandAction&&e.triggerExpandActionExpand(t,n),null==r||r(t,n)},e.onNodeSelect=function(t,n){var o=e.state.selectedKeys,r=e.state,a=r.keyEntities,i=r.fieldNames,d=e.props,c=d.onSelect,l=d.multiple,s=n.selected,u=n[i.key],p=!s,f=(o=p?l?(0,K.L0)(o,u):[u]:(0,K._5)(o,u)).map(function(e){var t=a[e];return t?t.node:null}).filter(function(e){return e});e.setUncontrolledState({selectedKeys:o}),null==c||c(o,{event:"select",selected:p,node:n,selectedNodes:f,nativeEvent:t.nativeEvent})},e.onNodeCheck=function(t,n,o){var r,a=e.state,i=a.keyEntities,d=a.checkedKeys,c=a.halfCheckedKeys,s=e.props,u=s.checkStrictly,p=s.onCheck,f=n.key,h={event:"check",node:n,checked:o,nativeEvent:t.nativeEvent};if(u){var g=o?(0,K.L0)(d,f):(0,K._5)(d,f);r={checked:g,halfChecked:(0,K._5)(c,f)},h.checkedNodes=g.map(function(e){return i[e]}).filter(function(e){return e}).map(function(e){return e.node}),e.setUncontrolledState({checkedKeys:g})}else{var v=(0,W.S)([].concat((0,l.Z)(d),[f]),!0,i),y=v.checkedKeys,b=v.halfCheckedKeys;if(!o){var k=new Set(y);k.delete(f);var m=(0,W.S)(Array.from(k),{checked:!1,halfCheckedKeys:b},i);y=m.checkedKeys,b=m.halfCheckedKeys}r=y,h.checkedNodes=[],h.checkedNodesPositions=[],h.halfCheckedKeys=b,y.forEach(function(e){var t=i[e];if(t){var n=t.node,o=t.pos;h.checkedNodes.push(n),h.checkedNodesPositions.push({node:n,pos:o})}}),e.setUncontrolledState({checkedKeys:y},!1,{halfCheckedKeys:b})}null==p||p(r,h)},e.onNodeLoad=function(t){var n=t.key,o=new Promise(function(o,r){e.setState(function(a){var i=a.loadedKeys,d=a.loadingKeys,c=void 0===d?[]:d,l=e.props,s=l.loadData,u=l.onLoad;return s&&-1===(void 0===i?[]:i).indexOf(n)&&-1===c.indexOf(n)?(s(t).then(function(){var r=e.state.loadedKeys,a=(0,K.L0)(r,n);null==u||u(a,{event:"load",node:t}),e.setUncontrolledState({loadedKeys:a}),e.setState(function(e){return{loadingKeys:(0,K._5)(e.loadingKeys,n)}}),o()}).catch(function(t){if(e.setState(function(e){return{loadingKeys:(0,K._5)(e.loadingKeys,n)}}),e.loadingRetryTimes[n]=(e.loadingRetryTimes[n]||0)+1,e.loadingRetryTimes[n]>=10){var a=e.state.loadedKeys;(0,y.ZP)(!1,"Retry for `loadData` many times but still failed. No more retry."),e.setUncontrolledState({loadedKeys:(0,K.L0)(a,n)}),o()}r(t)}),{loadingKeys:(0,K.L0)(c,n)}):null})});return o.catch(function(){}),o},e.onNodeMouseEnter=function(t,n){var o=e.props.onMouseEnter;null==o||o({event:t,node:n})},e.onNodeMouseLeave=function(t,n){var o=e.props.onMouseLeave;null==o||o({event:t,node:n})},e.onNodeContextMenu=function(t,n){var o=e.props.onRightClick;o&&(t.preventDefault(),o({event:t,node:n}))},e.onFocus=function(){var t=e.props.onFocus;e.setState({focused:!0});for(var n=arguments.length,o=Array(n),r=0;r1&&void 0!==arguments[1]&&arguments[1],o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(!e.destroyed){var r=!1,a=!0,i={};Object.keys(t).forEach(function(n){if(n in e.props){a=!1;return}r=!0,i[n]=t[n]}),r&&(!n||a)&&e.setState((0,c.Z)((0,c.Z)({},i),o))}},e.scrollTo=function(t){e.listRef.current.scrollTo(t)},e}return(0,u.Z)(n,[{key:"componentDidMount",value:function(){this.destroyed=!1,this.onUpdated()}},{key:"componentDidUpdate",value:function(){this.onUpdated()}},{key:"onUpdated",value:function(){var e=this.props.activeKey;void 0!==e&&e!==this.state.activeKey&&(this.setState({activeKey:e}),null!==e&&this.scrollTo({key:e}))}},{key:"componentWillUnmount",value:function(){window.removeEventListener("dragend",this.onWindowDragEnd),this.destroyed=!0}},{key:"resetDragState",value:function(){this.setState({dragOverNodeKey:null,dropPosition:null,dropLevelOffset:null,dropTargetKey:null,dropContainerKey:null,dropTargetPos:null,dropAllowed:!1})}},{key:"render",value:function(){var e,t,n=this.state,o=n.focused,r=n.flattenNodes,c=n.keyEntities,l=n.draggingNodeKey,s=n.activeKey,u=n.dropLevelOffset,p=n.dropContainerKey,f=n.dropTargetKey,h=n.dropPosition,v=n.dragOverNodeKey,y=n.indent,k=this.props,K=k.prefixCls,N=k.className,E=k.style,S=k.showLine,C=k.focusable,w=k.tabIndex,D=k.selectable,Z=k.showIcon,$=k.icon,O=k.switcherIcon,P=k.draggable,L=k.checkable,T=k.checkStrictly,I=k.disabled,M=k.motion,R=k.loadData,A=k.filterTreeNode,H=k.height,j=k.itemHeight,z=k.virtual,B=k.titleRender,F=k.dropIndicatorRender,W=k.onContextMenu,G=k.onScroll,V=k.direction,U=k.rootClassName,q=k.rootStyle,X=(0,b.Z)(this.props,{aria:!0,data:!0});return P&&(t="object"===(0,d.Z)(P)?P:"function"==typeof P?{nodeDraggable:P}:{}),g.createElement(x.k.Provider,{value:{prefixCls:K,selectable:D,showIcon:Z,icon:$,switcherIcon:O,draggable:t,draggingNodeKey:l,checkable:L,checkStrictly:T,disabled:I,keyEntities:c,dropLevelOffset:u,dropContainerKey:p,dropTargetKey:f,dropPosition:h,dragOverNodeKey:v,indent:y,direction:V,dropIndicatorRender:F,loadData:R,filterTreeNode:A,titleRender:B,onNodeClick:this.onNodeClick,onNodeDoubleClick:this.onNodeDoubleClick,onNodeExpand:this.onNodeExpand,onNodeSelect:this.onNodeSelect,onNodeCheck:this.onNodeCheck,onNodeLoad:this.onNodeLoad,onNodeMouseEnter:this.onNodeMouseEnter,onNodeMouseLeave:this.onNodeMouseLeave,onNodeContextMenu:this.onNodeContextMenu,onNodeDragStart:this.onNodeDragStart,onNodeDragEnter:this.onNodeDragEnter,onNodeDragOver:this.onNodeDragOver,onNodeDragLeave:this.onNodeDragLeave,onNodeDragEnd:this.onNodeDragEnd,onNodeDrop:this.onNodeDrop}},g.createElement("div",{role:"tree",className:m()(K,N,U,(e={},(0,i.Z)(e,"".concat(K,"-show-line"),S),(0,i.Z)(e,"".concat(K,"-focused"),o),(0,i.Z)(e,"".concat(K,"-active-focused"),null!==s),e)),style:q},g.createElement(_,(0,a.Z)({ref:this.listRef,prefixCls:K,style:E,data:r,disabled:I,selectable:D,checkable:!!L,motion:M,dragging:null!==l,height:H,itemHeight:j,virtual:z,focusable:C,focused:o,tabIndex:void 0===w?0:w,activeItem:this.getActiveItem(),onFocus:this.onFocus,onBlur:this.onBlur,onKeyDown:this.onKeyDown,onActiveChange:this.onActiveChange,onListChangeStart:this.onListChangeStart,onListChangeEnd:this.onListChangeEnd,onContextMenu:W,onScroll:G},this.getTreeNodeRequiredProps(),X))))}}],[{key:"getDerivedStateFromProps",value:function(e,t){var n,o,r=t.prevProps,a={prevProps:e};function d(t){return!r&&t in e||r&&r[t]!==e[t]}var l=t.fieldNames;if(d("fieldNames")&&(l=(0,N.w$)(e.fieldNames),a.fieldNames=l),d("treeData")?n=e.treeData:d("children")&&((0,y.ZP)(!1,"`children` of Tree is deprecated. Please use `treeData` instead."),n=(0,N.zn)(e.children)),n){a.treeData=n;var s=(0,N.I8)(n,{fieldNames:l});a.keyEntities=(0,c.Z)((0,i.Z)({},A,j),s.keyEntities)}var u=a.keyEntities||t.keyEntities;if(d("expandedKeys")||r&&d("autoExpandParent"))a.expandedKeys=e.autoExpandParent||!r&&e.defaultExpandParent?(0,K.r7)(e.expandedKeys,u):e.expandedKeys;else if(!r&&e.defaultExpandAll){var p=(0,c.Z)({},u);delete p[A],a.expandedKeys=Object.keys(p).map(function(e){return p[e].key})}else!r&&e.defaultExpandedKeys&&(a.expandedKeys=e.autoExpandParent||e.defaultExpandParent?(0,K.r7)(e.defaultExpandedKeys,u):e.defaultExpandedKeys);if(a.expandedKeys||delete a.expandedKeys,n||a.expandedKeys){var f=(0,N.oH)(n||t.treeData,a.expandedKeys||t.expandedKeys,l);a.flattenNodes=f}if(e.selectable&&(d("selectedKeys")?a.selectedKeys=(0,K.BT)(e.selectedKeys,e):!r&&e.defaultSelectedKeys&&(a.selectedKeys=(0,K.BT)(e.defaultSelectedKeys,e))),e.checkable&&(d("checkedKeys")?o=(0,K.E6)(e.checkedKeys)||{}:!r&&e.defaultCheckedKeys?o=(0,K.E6)(e.defaultCheckedKeys)||{}:n&&(o=(0,K.E6)(e.checkedKeys)||{checkedKeys:t.checkedKeys,halfCheckedKeys:t.halfCheckedKeys}),o)){var h=o,g=h.checkedKeys,v=void 0===g?[]:g,b=h.halfCheckedKeys,k=void 0===b?[]:b;if(!e.checkStrictly){var m=(0,W.S)(v,!0,u);v=m.checkedKeys,k=m.halfCheckedKeys}a.checkedKeys=v,a.halfCheckedKeys=k}return d("loadedKeys")&&(a.loadedKeys=e.loadedKeys),a}}]),n}(g.Component);G.defaultProps={prefixCls:"rc-tree",showLine:!1,showIcon:!0,selectable:!0,multiple:!1,checkable:!1,disabled:!1,checkStrictly:!1,draggable:!1,defaultExpandParent:!0,autoExpandParent:!1,defaultExpandAll:!1,defaultExpandedKeys:[],defaultCheckedKeys:[],defaultSelectedKeys:[],dropIndicatorRender:function(e){var t=e.dropPosition,n=e.dropLevelOffset,o=e.indent,r={pointerEvents:"none",position:"absolute",right:0,backgroundColor:"red",height:2};switch(t){case -1:r.top=0,r.left=-n*o;break;case 1:r.bottom=0,r.left=-n*o;break;case 0:r.bottom=0,r.left=o}return g.createElement("div",{style:r})},allowDrop:function(){return!0},expandAction:!1},G.TreeNode=$.Z;var V={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494z"}}]},name:"file",theme:"outlined"},U=n(84089),q=g.forwardRef(function(e,t){return g.createElement(U.Z,(0,a.Z)({},e,{ref:t,icon:V}))}),X={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M928 444H820V330.4c0-17.7-14.3-32-32-32H473L355.7 186.2a8.15 8.15 0 00-5.5-2.2H96c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h698c13 0 24.8-7.9 29.7-20l134-332c1.5-3.8 2.3-7.9 2.3-12 0-17.7-14.3-32-32-32zM136 256h188.5l119.6 114.4H748V444H238c-13 0-24.8 7.9-29.7 20L136 643.2V256zm635.3 512H159l103.3-256h612.4L771.3 768z"}}]},name:"folder-open",theme:"outlined"},Y=g.forwardRef(function(e,t){return g.createElement(U.Z,(0,a.Z)({},e,{ref:t,icon:X}))}),J={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880 298.4H521L403.7 186.2a8.15 8.15 0 00-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z"}}]},name:"folder",theme:"outlined"},Q=g.forwardRef(function(e,t){return g.createElement(U.Z,(0,a.Z)({},e,{ref:t,icon:J}))}),ee=n(53124),et={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M300 276.5a56 56 0 1056-97 56 56 0 00-56 97zm0 284a56 56 0 1056-97 56 56 0 00-56 97zM640 228a56 56 0 10112 0 56 56 0 00-112 0zm0 284a56 56 0 10112 0 56 56 0 00-112 0zM300 844.5a56 56 0 1056-97 56 56 0 00-56 97zM640 796a56 56 0 10112 0 56 56 0 00-112 0z"}}]},name:"holder",theme:"outlined"},en=g.forwardRef(function(e,t){return g.createElement(U.Z,(0,a.Z)({},e,{ref:t,icon:et}))}),eo=n(33603),er=n(23183),ea=n(63185),ei=n(14747),ed=n(33507),ec=n(45503),el=n(67968);let es=new er.E4("ant-tree-node-fx-do-not-use",{"0%":{opacity:0},"100%":{opacity:1}}),eu=(e,t)=>({[`.${e}-switcher-icon`]:{display:"inline-block",fontSize:10,verticalAlign:"baseline",svg:{transition:`transform ${t.motionDurationSlow}`}}}),ep=(e,t)=>({[`.${e}-drop-indicator`]:{position:"absolute",zIndex:1,height:2,backgroundColor:t.colorPrimary,borderRadius:1,pointerEvents:"none","&:after":{position:"absolute",top:-3,insetInlineStart:-6,width:8,height:8,backgroundColor:"transparent",border:`${t.lineWidthBold}px solid ${t.colorPrimary}`,borderRadius:"50%",content:'""'}}}),ef=(e,t)=>{let{treeCls:n,treeNodeCls:o,treeNodePadding:r,treeTitleHeight:a}=t,i=t.paddingXS;return{[n]:Object.assign(Object.assign({},(0,ei.Wf)(t)),{background:t.colorBgContainer,borderRadius:t.borderRadius,transition:`background-color ${t.motionDurationSlow}`,[`&${n}-rtl`]:{[`${n}-switcher`]:{"&_close":{[`${n}-switcher-icon`]:{svg:{transform:"rotate(90deg)"}}}}},[`&-focused:not(:hover):not(${n}-active-focused)`]:Object.assign({},(0,ei.oN)(t)),[`${n}-list-holder-inner`]:{alignItems:"flex-start"},[`&${n}-block-node`]:{[`${n}-list-holder-inner`]:{alignItems:"stretch",[`${n}-node-content-wrapper`]:{flex:"auto"},[`${o}.dragging`]:{position:"relative","&:after":{position:"absolute",top:0,insetInlineEnd:0,bottom:r,insetInlineStart:0,border:`1px solid ${t.colorPrimary}`,opacity:0,animationName:es,animationDuration:t.motionDurationSlow,animationPlayState:"running",animationFillMode:"forwards",content:'""',pointerEvents:"none"}}}},[`${o}`]:{display:"flex",alignItems:"flex-start",padding:`0 0 ${r}px 0`,outline:"none","&-rtl":{direction:"rtl"},"&-disabled":{[`${n}-node-content-wrapper`]:{color:t.colorTextDisabled,cursor:"not-allowed","&:hover":{background:"transparent"}}},[`&-active ${n}-node-content-wrapper`]:Object.assign({},(0,ei.oN)(t)),[`&:not(${o}-disabled).filter-node ${n}-title`]:{color:"inherit",fontWeight:500},"&-draggable":{[`${n}-draggable-icon`]:{flexShrink:0,width:a,lineHeight:`${a}px`,textAlign:"center",visibility:"visible",opacity:.2,transition:`opacity ${t.motionDurationSlow}`,[`${o}:hover &`]:{opacity:.45}},[`&${o}-disabled`]:{[`${n}-draggable-icon`]:{visibility:"hidden"}}}},[`${n}-indent`]:{alignSelf:"stretch",whiteSpace:"nowrap",userSelect:"none","&-unit":{display:"inline-block",width:a}},[`${n}-draggable-icon`]:{visibility:"hidden"},[`${n}-switcher`]:Object.assign(Object.assign({},eu(e,t)),{position:"relative",flex:"none",alignSelf:"stretch",width:a,margin:0,lineHeight:`${a}px`,textAlign:"center",cursor:"pointer",userSelect:"none","&-noop":{cursor:"default"},"&_close":{[`${n}-switcher-icon`]:{svg:{transform:"rotate(-90deg)"}}},"&-loading-icon":{color:t.colorPrimary},"&-leaf-line":{position:"relative",zIndex:1,display:"inline-block",width:"100%",height:"100%","&:before":{position:"absolute",top:0,insetInlineEnd:a/2,bottom:-r,marginInlineStart:-1,borderInlineEnd:`1px solid ${t.colorBorder}`,content:'""'},"&:after":{position:"absolute",width:a/2*.8,height:a/2,borderBottom:`1px solid ${t.colorBorder}`,content:'""'}}}),[`${n}-checkbox`]:{top:"initial",marginInlineEnd:i},[`${n}-node-content-wrapper, ${n}-checkbox + span`]:{position:"relative",zIndex:"auto",minHeight:a,margin:0,padding:`0 ${t.paddingXS/2}px`,color:"inherit",lineHeight:`${a}px`,background:"transparent",borderRadius:t.borderRadius,cursor:"pointer",transition:`all ${t.motionDurationMid}, border 0s, line-height 0s, box-shadow 0s`,"&:hover":{backgroundColor:t.controlItemBgHover},[`&${n}-node-selected`]:{backgroundColor:t.controlItemBgActive},[`${n}-iconEle`]:{display:"inline-block",width:a,height:a,lineHeight:`${a}px`,textAlign:"center",verticalAlign:"top","&:empty":{display:"none"}}},[`${n}-unselectable ${n}-node-content-wrapper:hover`]:{backgroundColor:"transparent"},[`${n}-node-content-wrapper`]:Object.assign({lineHeight:`${a}px`,userSelect:"none"},ep(e,t)),[`${o}.drop-container`]:{"> [draggable]":{boxShadow:`0 0 0 2px ${t.colorPrimary}`}},"&-show-line":{[`${n}-indent`]:{"&-unit":{position:"relative",height:"100%","&:before":{position:"absolute",top:0,insetInlineEnd:a/2,bottom:-r,borderInlineEnd:`1px solid ${t.colorBorder}`,content:'""'},"&-end":{"&:before":{display:"none"}}}},[`${n}-switcher`]:{background:"transparent","&-line-icon":{verticalAlign:"-0.15em"}}},[`${o}-leaf-last`]:{[`${n}-switcher`]:{"&-leaf-line":{"&:before":{top:"auto !important",bottom:"auto !important",height:`${a/2}px !important`}}}}})}},eh=e=>{let{treeCls:t,treeNodeCls:n,treeNodePadding:o}=e;return{[`${t}${t}-directory`]:{[n]:{position:"relative","&:before":{position:"absolute",top:0,insetInlineEnd:0,bottom:o,insetInlineStart:0,transition:`background-color ${e.motionDurationMid}`,content:'""',pointerEvents:"none"},"&:hover":{"&:before":{background:e.controlItemBgHover}},"> *":{zIndex:1},[`${t}-switcher`]:{transition:`color ${e.motionDurationMid}`},[`${t}-node-content-wrapper`]:{borderRadius:0,userSelect:"none","&:hover":{background:"transparent"},[`&${t}-node-selected`]:{color:e.colorTextLightSolid,background:"transparent"}},"&-selected":{[` - &:hover::before, - &::before - `]:{background:e.colorPrimary},[`${t}-switcher`]:{color:e.colorTextLightSolid},[`${t}-node-content-wrapper`]:{color:e.colorTextLightSolid,background:"transparent"}}}}}},eg=(e,t)=>{let n=`.${e}`,o=`${n}-treenode`,r=t.paddingXS/2,a=t.controlHeightSM,i=(0,ec.TS)(t,{treeCls:n,treeNodeCls:o,treeNodePadding:r,treeTitleHeight:a});return[ef(e,i),eh(i)]};var ev=(0,el.Z)("Tree",(e,t)=>{let{prefixCls:n}=t;return[{[e.componentCls]:(0,ea.C2)(`${n}-checkbox`,e)},eg(n,e),(0,ed.Z)(e)]});function ey(e){let{dropPosition:t,dropLevelOffset:n,prefixCls:o,indent:r,direction:a="ltr"}=e,i="ltr"===a?"left":"right",d={[i]:-n*r+4,["ltr"===a?"right":"left"]:0};switch(t){case -1:d.top=-3;break;case 1:d.bottom=-3;break;default:d.bottom=-3,d[i]=r+4}return g.createElement("div",{style:d,className:`${o}-drop-indicator`})}var eb={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z"}}]},name:"caret-down",theme:"filled"},ek=g.forwardRef(function(e,t){return g.createElement(U.Z,(0,a.Z)({},e,{ref:t,icon:eb}))}),em=n(50888),ex={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M328 544h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z"}},{tag:"path",attrs:{d:"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"}}]},name:"minus-square",theme:"outlined"},eK=g.forwardRef(function(e,t){return g.createElement(U.Z,(0,a.Z)({},e,{ref:t,icon:ex}))}),eN={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M328 544h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z"}},{tag:"path",attrs:{d:"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"}}]},name:"plus-square",theme:"outlined"},eE=g.forwardRef(function(e,t){return g.createElement(U.Z,(0,a.Z)({},e,{ref:t,icon:eN}))}),eS=n(96159),eC=e=>{let t;let{prefixCls:n,switcherIcon:o,treeNodeProps:r,showLine:a}=e,{isLeaf:i,expanded:d,loading:c}=r;if(c)return g.createElement(em.Z,{className:`${n}-switcher-loading-icon`});if(a&&"object"==typeof a&&(t=a.showLeafIcon),i){if(!a)return null;if("boolean"!=typeof t&&t){let e="function"==typeof t?t(r):t,o=`${n}-switcher-line-custom-icon`;return(0,eS.l$)(e)?(0,eS.Tm)(e,{className:m()(e.props.className||"",o)}):e}return t?g.createElement(q,{className:`${n}-switcher-line-icon`}):g.createElement("span",{className:`${n}-switcher-leaf-line`})}let l=`${n}-switcher-icon`,s="function"==typeof o?o(r):o;return(0,eS.l$)(s)?(0,eS.Tm)(s,{className:m()(s.props.className||"",l)}):void 0!==s?s:a?d?g.createElement(eK,{className:`${n}-switcher-line-icon`}):g.createElement(eE,{className:`${n}-switcher-line-icon`}):g.createElement(ek,{className:l})};let ew=g.forwardRef((e,t)=>{let{getPrefixCls:n,direction:o,virtual:r,tree:a}=g.useContext(ee.E_),{prefixCls:i,className:d,showIcon:c=!1,showLine:l,switcherIcon:s,blockNode:u=!1,children:p,checkable:f=!1,selectable:h=!0,draggable:v,motion:y,style:b}=e,k=n("tree",i),x=n(),K=null!=y?y:Object.assign(Object.assign({},(0,eo.Z)(x)),{motionAppear:!1}),N=Object.assign(Object.assign({},e),{checkable:f,selectable:h,showIcon:c,motion:K,blockNode:u,showLine:!!l,dropIndicatorRender:ey}),[E,S]=ev(k),C=g.useMemo(()=>{if(!v)return!1;let e={};switch(typeof v){case"function":e.nodeDraggable=v;break;case"object":e=Object.assign({},v)}return!1!==e.icon&&(e.icon=e.icon||g.createElement(en,null)),e},[v]);return E(g.createElement(G,Object.assign({itemHeight:20,ref:t,virtual:r},N,{style:Object.assign(Object.assign({},null==a?void 0:a.style),b),prefixCls:k,className:m()({[`${k}-icon-hide`]:!c,[`${k}-block-node`]:u,[`${k}-unselectable`]:!h,[`${k}-rtl`]:"rtl"===o},null==a?void 0:a.className,d,S),direction:o,checkable:f?g.createElement("span",{className:`${k}-checkbox-inner`}):f,selectable:h,switcherIcon:e=>g.createElement(eC,{prefixCls:k,switcherIcon:s,treeNodeProps:e,showLine:l}),draggable:C}),p))});function eD(e,t){e.forEach(function(e){let{key:n,children:o}=e;!1!==t(n,e)&&eD(o||[],t)})}function eZ(e,t){let n=(0,l.Z)(t),o=[];return eD(e,(e,t)=>{let r=n.indexOf(e);return -1!==r&&(o.push(t),n.splice(r,1)),!!n.length}),o}(o=r||(r={}))[o.None=0]="None",o[o.Start=1]="Start",o[o.End=2]="End";var e$=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&0>t.indexOf(o)&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,o=Object.getOwnPropertySymbols(e);rt.indexOf(o[r])&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};function eO(e){let{isLeaf:t,expanded:n}=e;return t?g.createElement(q,null):n?g.createElement(Y,null):g.createElement(Q,null)}function eP(e){let{treeData:t,children:n}=e;return t||(0,N.zn)(n)}let eL=g.forwardRef((e,t)=>{var{defaultExpandAll:n,defaultExpandParent:o,defaultExpandedKeys:a}=e,i=e$(e,["defaultExpandAll","defaultExpandParent","defaultExpandedKeys"]);let d=g.useRef(),c=g.useRef(),s=()=>{let{keyEntities:e}=(0,N.I8)(eP(i));return n?Object.keys(e):o?(0,K.r7)(i.expandedKeys||a||[],e):i.expandedKeys||a},[u,p]=g.useState(i.selectedKeys||i.defaultSelectedKeys||[]),[f,h]=g.useState(()=>s());g.useEffect(()=>{"selectedKeys"in i&&p(i.selectedKeys)},[i.selectedKeys]),g.useEffect(()=>{"expandedKeys"in i&&h(i.expandedKeys)},[i.expandedKeys]);let{getPrefixCls:v,direction:y}=g.useContext(ee.E_),{prefixCls:b,className:k,showIcon:x=!0,expandAction:E="click"}=i,S=e$(i,["prefixCls","className","showIcon","expandAction"]),C=v("tree",b),w=m()(`${C}-directory`,{[`${C}-directory-rtl`]:"rtl"===y},k);return g.createElement(ew,Object.assign({icon:eO,ref:t,blockNode:!0},S,{showIcon:x,expandAction:E,prefixCls:C,className:w,expandedKeys:f,selectedKeys:u,onSelect:(e,t)=>{var n;let o;let{multiple:a}=i,{node:s,nativeEvent:u}=t,{key:h=""}=s,g=eP(i),v=Object.assign(Object.assign({},t),{selected:!0}),y=(null==u?void 0:u.ctrlKey)||(null==u?void 0:u.metaKey),b=null==u?void 0:u.shiftKey;a&&y?(o=e,d.current=h,c.current=o,v.selectedNodes=eZ(g,o)):a&&b?(o=Array.from(new Set([].concat((0,l.Z)(c.current||[]),(0,l.Z)(function(e){let{treeData:t,expandedKeys:n,startKey:o,endKey:a}=e,i=[],d=r.None;return o&&o===a?[o]:o&&a?(eD(t,e=>{if(d===r.End)return!1;if(e===o||e===a){if(i.push(e),d===r.None)d=r.Start;else if(d===r.Start)return d=r.End,!1}else d===r.Start&&i.push(e);return n.includes(e)}),i):[]}({treeData:g,expandedKeys:f,startKey:h,endKey:d.current}))))),v.selectedNodes=eZ(g,o)):(o=[h],d.current=h,c.current=o,v.selectedNodes=eZ(g,o)),null===(n=i.onSelect)||void 0===n||n.call(i,o,v),"selectedKeys"in i||p(o)},onExpand:(e,t)=>{var n;return"expandedKeys"in i||h(e),null===(n=i.onExpand)||void 0===n?void 0:n.call(i,e,t)}}))});ew.DirectoryTree=eL,ew.TreeNode=$.Z;var eT=ew},86128:function(e,t,n){"use strict";n.d(t,{Z:function(){return E}});var o=n(87462),r=n(4942),a=n(45987),i=n(1413),d=n(15671),c=n(43144),l=n(97326),s=n(32531),u=n(73568),p=n(94184),f=n.n(p),h=n(64217),g=n(67294),v=n(27822),y=g.memo(function(e){for(var t,n=e.prefixCls,o=e.level,a=e.isStart,i=e.isEnd,d="".concat(n,"-indent-unit"),c=[],l=0;l=0&&n.splice(o,1),n}function d(e,t){var n=(e||[]).slice();return -1===n.indexOf(t)&&n.push(t),n}function c(e){return e.split("-")}function l(e,t){var n=[];return!function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];t.forEach(function(t){var o=t.key,r=t.children;n.push(o),e(r)})}(t[e].children),n}function s(e,t,n,o,r,a,i,d,l,s){var u,p,f=e.clientX,h=e.clientY,g=e.target.getBoundingClientRect(),v=g.top,y=g.height,b=(("rtl"===s?-1:1)*(((null==r?void 0:r.x)||0)-f)-12)/o,k=d[n.props.eventKey];if(h-1.5?a({dragNode:w,dropNode:D,dropPosition:1})?E=1:Z=!1:a({dragNode:w,dropNode:D,dropPosition:0})?E=0:a({dragNode:w,dropNode:D,dropPosition:1})?E=1:Z=!1:a({dragNode:w,dropNode:D,dropPosition:1})?E=1:Z=!1,{dropPosition:E,dropLevelOffset:S,dropTargetKey:k.key,dropTargetPos:k.pos,dragOverNodeKey:N,dropContainerKey:0===E?null:(null===(p=k.parent)||void 0===p?void 0:p.key)||null,dropAllowed:Z}}function u(e,t){if(e)return t.multiple?e.slice():e.length?[e[0]]:e}function p(e){var t;if(!e)return null;if(Array.isArray(e))t={checkedKeys:e,halfCheckedKeys:void 0};else{if("object"!==(0,r.Z)(e))return(0,a.ZP)(!1,"`checkedKeys` is not an array or an object"),null;t={checkedKeys:e.checked||void 0,halfCheckedKeys:e.halfChecked||void 0}}return t}function f(e,t){var n=new Set;return(e||[]).forEach(function(e){!function e(o){if(!n.has(o)){var r=t[o];if(r){n.add(o);var a=r.parent;!r.node.disabled&&a&&e(a.key)}}}(e)}),(0,o.Z)(n)}n(86128),n(1089)},17341:function(e,t,n){"use strict";n.d(t,{S:function(){return i}});var o=n(80334);function r(e,t){var n=new Set;return e.forEach(function(e){t.has(e)||n.add(e)}),n}function a(e){var t=e||{},n=t.disabled,o=t.disableCheckbox,r=t.checkable;return!!(n||o)||!1===r}function i(e,t,n,i){var d,c=[];d=i||a;var l=new Set(e.filter(function(e){var t=!!n[e];return t||c.push(e),t})),s=new Map,u=0;return Object.keys(n).forEach(function(e){var t=n[e],o=t.level,r=s.get(o);r||(r=new Set,s.set(o,r)),r.add(t),u=Math.max(u,o)}),(0,o.ZP)(!c.length,"Tree missing follow keys: ".concat(c.slice(0,100).map(function(e){return"'".concat(e,"'")}).join(", "))),!0===t?function(e,t,n,o){for(var a=new Set(e),i=new Set,d=0;d<=n;d+=1)(t.get(d)||new Set).forEach(function(e){var t=e.key,n=e.node,r=e.children,i=void 0===r?[]:r;a.has(t)&&!o(n)&&i.filter(function(e){return!o(e.node)}).forEach(function(e){a.add(e.key)})});for(var c=new Set,l=n;l>=0;l-=1)(t.get(l)||new Set).forEach(function(e){var t=e.parent;if(!(o(e.node)||!e.parent||c.has(e.parent.key))){if(o(e.parent.node)){c.add(t.key);return}var n=!0,r=!1;(t.children||[]).filter(function(e){return!o(e.node)}).forEach(function(e){var t=e.key,o=a.has(t);n&&!o&&(n=!1),!r&&(o||i.has(t))&&(r=!0)}),n&&a.add(t.key),r&&i.add(t.key),c.add(t.key)}});return{checkedKeys:Array.from(a),halfCheckedKeys:Array.from(r(i,a))}}(l,s,u,d):function(e,t,n,o,a){for(var i=new Set(e),d=new Set(t),c=0;c<=o;c+=1)(n.get(c)||new Set).forEach(function(e){var t=e.key,n=e.node,o=e.children,r=void 0===o?[]:o;i.has(t)||d.has(t)||a(n)||r.filter(function(e){return!a(e.node)}).forEach(function(e){i.delete(e.key)})});d=new Set;for(var l=new Set,s=o;s>=0;s-=1)(n.get(s)||new Set).forEach(function(e){var t=e.parent;if(!(a(e.node)||!e.parent||l.has(e.parent.key))){if(a(e.parent.node)){l.add(t.key);return}var n=!0,o=!1;(t.children||[]).filter(function(e){return!a(e.node)}).forEach(function(e){var t=e.key,r=i.has(t);n&&!r&&(n=!1),!o&&(r||d.has(t))&&(o=!0)}),n||i.delete(t.key),o&&d.add(t.key),l.add(t.key)}});return{checkedKeys:Array.from(i),halfCheckedKeys:Array.from(r(d,i))}}(l,t.halfCheckedKeys,s,u,d)}},1089:function(e,t,n){"use strict";n.d(t,{F:function(){return b},H8:function(){return y},I8:function(){return v},km:function(){return p},oH:function(){return g},w$:function(){return f},zn:function(){return h}});var o=n(71002),r=n(74902),a=n(1413),i=n(45987),d=n(50344),c=n(98423),l=n(80334),s=["children"];function u(e,t){return"".concat(e,"-").concat(t)}function p(e,t){return null!=e?e:t}function f(e){var t=e||{},n=t.title,o=t._title,r=t.key,a=t.children,i=n||"title";return{title:i,_title:o||[i],key:r||"key",children:a||"children"}}function h(e){return function e(t){return(0,d.Z)(t).map(function(t){if(!(t&&t.type&&t.type.isTreeNode))return(0,l.ZP)(!t,"Tree/TreeNode can only accept TreeNode as children."),null;var n=t.key,o=t.props,r=o.children,d=(0,i.Z)(o,s),c=(0,a.Z)({key:n},d),u=e(r);return u.length&&(c.children=u),c}).filter(function(e){return e})}(e)}function g(e,t,n){var o=f(n),i=o._title,d=o.key,l=o.children,s=new Set(!0===t?[]:t),h=[];return!function e(n){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return n.map(function(f,g){for(var v,y=u(o?o.pos:"0",g),b=p(f[d],y),k=0;k1&&void 0!==arguments[1]?arguments[1]:{},y=v.initWrapper,b=v.processEntity,k=v.onProcessFinished,m=v.externalGetKey,x=v.childrenPropName,K=v.fieldNames,N=arguments.length>2?arguments[2]:void 0,E={},S={},C={posEntities:E,keyEntities:S};return y&&(C=y(C)||C),t=function(e){var t=e.node,n=e.index,o=e.pos,r=e.key,a=e.parentPos,i=e.level,d={node:t,nodes:e.nodes,index:n,key:r,pos:o,level:i},c=p(r,o);E[o]=d,S[c]=d,d.parent=E[a],d.parent&&(d.parent.children=d.parent.children||[],d.parent.children.push(d)),b&&b(d,C)},n={externalGetKey:m||N,childrenPropName:x,fieldNames:K},d=(i=("object"===(0,o.Z)(n)?n:{externalGetKey:n})||{}).childrenPropName,c=i.externalGetKey,s=(l=f(i.fieldNames)).key,h=l.children,g=d||h,c?"string"==typeof c?a=function(e){return e[c]}:"function"==typeof c&&(a=function(e){return c(e)}):a=function(e,t){return p(e[s],t)},function n(o,i,d,c){var l=o?o[g]:e,s=o?u(d.pos,i):"0",p=o?[].concat((0,r.Z)(c),[o]):[];if(o){var f=a(o,s);t({node:o,index:i,pos:s,key:f,parentPos:d.node?d.pos:null,level:d.level+1,nodes:p})}l&&l.forEach(function(e,t){n(e,t,{node:o,pos:s,level:d?d.level+1:-1},p)})}(null),k&&k(C),C}function y(e,t){var n=t.expandedKeys,o=t.selectedKeys,r=t.loadedKeys,a=t.loadingKeys,i=t.checkedKeys,d=t.halfCheckedKeys,c=t.dragOverNodeKey,l=t.dropPosition,s=t.keyEntities[e];return{eventKey:e,expanded:-1!==n.indexOf(e),selected:-1!==o.indexOf(e),loaded:-1!==r.indexOf(e),loading:-1!==a.indexOf(e),checked:-1!==i.indexOf(e),halfChecked:-1!==d.indexOf(e),pos:String(s?s.pos:""),dragOver:c===e&&0===l,dragOverGapTop:c===e&&-1===l,dragOverGapBottom:c===e&&1===l}}function b(e){var t=e.data,n=e.expanded,o=e.selected,r=e.checked,i=e.loaded,d=e.loading,c=e.halfChecked,s=e.dragOver,u=e.dragOverGapTop,p=e.dragOverGapBottom,f=e.pos,h=e.active,g=e.eventKey,v=(0,a.Z)((0,a.Z)({},t),{},{expanded:n,selected:o,checked:r,loaded:i,loading:d,halfChecked:c,dragOver:s,dragOverGapTop:u,dragOverGapBottom:p,pos:f,active:h,key:g});return"props"in v||Object.defineProperty(v,"props",{get:function(){return(0,l.ZP)(!1,"Second param return from event is node data instead of TreeNode instance. Please read value directly instead of reading from `props`."),e}}),v}},64836:function(e){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports}}]); \ No newline at end of file diff --git a/pilot/server/static/_next/static/chunks/64-91b49d45b9846775.js b/pilot/server/static/_next/static/chunks/64-91b49d45b9846775.js new file mode 100644 index 000000000..65b2267b2 --- /dev/null +++ b/pilot/server/static/_next/static/chunks/64-91b49d45b9846775.js @@ -0,0 +1,16 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64],{63606:function(e,t,r){r.d(t,{Z:function(){return i}});var n=r(87462),o=r(67294),a={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z"}}]},name:"check",theme:"outlined"},l=r(84089),i=o.forwardRef(function(e,t){return o.createElement(l.Z,(0,n.Z)({},e,{ref:t,icon:a}))})},99611:function(e,t,r){r.d(t,{Z:function(){return i}});var n=r(87462),o=r(67294),a={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z"}}]},name:"eye",theme:"outlined"},l=r(84089),i=o.forwardRef(function(e,t){return o.createElement(l.Z,(0,n.Z)({},e,{ref:t,icon:a}))})},68795:function(e,t,r){r.d(t,{Z:function(){return i}});var n=r(87462),o=r(67294),a={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z"}}]},name:"search",theme:"outlined"},l=r(84089),i=o.forwardRef(function(e,t){return o.createElement(l.Z,(0,n.Z)({},e,{ref:t,icon:a}))})},74443:function(e,t,r){r.d(t,{Z:function(){return s},c:function(){return a}});var n=r(67294),o=r(25976);let a=["xxl","xl","lg","md","sm","xs"],l=e=>({xs:`(max-width: ${e.screenXSMax}px)`,sm:`(min-width: ${e.screenSM}px)`,md:`(min-width: ${e.screenMD}px)`,lg:`(min-width: ${e.screenLG}px)`,xl:`(min-width: ${e.screenXL}px)`,xxl:`(min-width: ${e.screenXXL}px)`}),i=e=>{let t=[].concat(a).reverse();return t.forEach((r,n)=>{let o=r.toUpperCase(),a=`screen${o}Min`,l=`screen${o}`;if(!(e[a]<=e[l]))throw Error(`${a}<=${l} fails : !(${e[a]}<=${e[l]})`);if(n{let e=new Map,r=-1,n={};return{matchHandlers:{},dispatch:t=>(n=t,e.forEach(e=>e(n)),e.size>=1),subscribe(t){return e.size||this.register(),r+=1,e.set(r,t),t(n),r},unsubscribe(t){e.delete(t),e.size||this.unregister()},unregister(){Object.keys(t).forEach(e=>{let r=t[e],n=this.matchHandlers[r];null==n||n.mql.removeListener(null==n?void 0:n.listener)}),e.clear()},register(){Object.keys(t).forEach(e=>{let r=t[e],o=t=>{let{matches:r}=t;this.dispatch(Object.assign(Object.assign({},n),{[e]:r}))},a=window.matchMedia(r);a.addListener(o),this.matchHandlers[r]={mql:a,listener:o},o(a)})},responsiveMap:t}},[e])}},9708:function(e,t,r){r.d(t,{F:function(){return l},Z:function(){return a}});var n=r(94184),o=r.n(n);function a(e,t,r){return o()({[`${e}-status-success`]:"success"===t,[`${e}-status-warning`]:"warning"===t,[`${e}-status-error`]:"error"===t,[`${e}-status-validating`]:"validating"===t,[`${e}-has-feedback`]:r})}let l=(e,t)=>t||e},32983:function(e,t,r){r.d(t,{Z:function(){return v}});var n=r(94184),o=r.n(n),a=r(67294),l=r(53124),i=r(10110),s=r(10274),c=r(25976),d=r(67968),u=r(45503);let p=e=>{let{componentCls:t,margin:r,marginXS:n,marginXL:o,fontSize:a,lineHeight:l}=e;return{[t]:{marginInline:n,fontSize:a,lineHeight:l,textAlign:"center",[`${t}-image`]:{height:e.emptyImgHeight,marginBottom:n,opacity:e.opacityImage,img:{height:"100%"},svg:{maxWidth:"100%",height:"100%",margin:"auto"}},[`${t}-description`]:{color:e.colorText},[`${t}-footer`]:{marginTop:r},"&-normal":{marginBlock:o,color:e.colorTextDisabled,[`${t}-description`]:{color:e.colorTextDisabled},[`${t}-image`]:{height:e.emptyImgHeightMD}},"&-small":{marginBlock:n,color:e.colorTextDisabled,[`${t}-image`]:{height:e.emptyImgHeightSM}}}}};var f=(0,d.Z)("Empty",e=>{let{componentCls:t,controlHeightLG:r}=e,n=(0,u.TS)(e,{emptyImgCls:`${t}-img`,emptyImgHeight:2.5*r,emptyImgHeightMD:r,emptyImgHeightSM:.875*r});return[p(n)]}),g=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,n=Object.getOwnPropertySymbols(e);ot.indexOf(n[o])&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]]);return r};let m=a.createElement(()=>{let[,e]=(0,c.Z)(),t=new s.C(e.colorBgBase),r=t.toHsl().l<.5?{opacity:.65}:{};return a.createElement("svg",{style:r,width:"184",height:"152",viewBox:"0 0 184 152",xmlns:"http://www.w3.org/2000/svg"},a.createElement("g",{fill:"none",fillRule:"evenodd"},a.createElement("g",{transform:"translate(24 31.67)"},a.createElement("ellipse",{fillOpacity:".8",fill:"#F5F5F7",cx:"67.797",cy:"106.89",rx:"67.797",ry:"12.668"}),a.createElement("path",{d:"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z",fill:"#AEB8C2"}),a.createElement("path",{d:"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z",fill:"url(#linearGradient-1)",transform:"translate(13.56)"}),a.createElement("path",{d:"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z",fill:"#F5F5F7"}),a.createElement("path",{d:"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z",fill:"#DCE0E6"})),a.createElement("path",{d:"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z",fill:"#DCE0E6"}),a.createElement("g",{transform:"translate(149.65 15.383)",fill:"#FFF"},a.createElement("ellipse",{cx:"20.654",cy:"3.167",rx:"2.849",ry:"2.815"}),a.createElement("path",{d:"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z"}))))},null),b=a.createElement(()=>{let[,e]=(0,c.Z)(),{colorFill:t,colorFillTertiary:r,colorFillQuaternary:n,colorBgContainer:o}=e,{borderColor:l,shadowColor:i,contentColor:d}=(0,a.useMemo)(()=>({borderColor:new s.C(t).onBackground(o).toHexShortString(),shadowColor:new s.C(r).onBackground(o).toHexShortString(),contentColor:new s.C(n).onBackground(o).toHexShortString()}),[t,r,n,o]);return a.createElement("svg",{width:"64",height:"41",viewBox:"0 0 64 41",xmlns:"http://www.w3.org/2000/svg"},a.createElement("g",{transform:"translate(0 1)",fill:"none",fillRule:"evenodd"},a.createElement("ellipse",{fill:i,cx:"32",cy:"33",rx:"32",ry:"7"}),a.createElement("g",{fillRule:"nonzero",stroke:l},a.createElement("path",{d:"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z"}),a.createElement("path",{d:"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z",fill:d}))))},null),h=e=>{var{className:t,rootClassName:r,prefixCls:n,image:s=m,description:c,children:d,imageStyle:u,style:p}=e,h=g(e,["className","rootClassName","prefixCls","image","description","children","imageStyle","style"]);let{getPrefixCls:v,direction:x,empty:$}=a.useContext(l.E_),y=v("empty",n),[w,E]=f(y),[S]=(0,i.Z)("Empty"),C=void 0!==c?c:null==S?void 0:S.description,O="string"==typeof C?C:"empty",z=null;return z="string"==typeof s?a.createElement("img",{alt:O,src:s}):s,w(a.createElement("div",Object.assign({className:o()(E,y,null==$?void 0:$.className,{[`${y}-normal`]:s===b,[`${y}-rtl`]:"rtl"===x},t,r),style:Object.assign(Object.assign({},null==$?void 0:$.style),p)},h),a.createElement("div",{className:`${y}-image`,style:u},z),C&&a.createElement("div",{className:`${y}-description`},C),d&&a.createElement("div",{className:`${y}-footer`},d)))};h.PRESENTED_IMAGE_DEFAULT=m,h.PRESENTED_IMAGE_SIMPLE=b;var v=h},99134:function(e,t,r){var n=r(67294);let o=(0,n.createContext)({});t.Z=o},21584:function(e,t,r){var n=r(94184),o=r.n(n),a=r(67294),l=r(53124),i=r(99134),s=r(6999),c=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,n=Object.getOwnPropertySymbols(e);ot.indexOf(n[o])&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]]);return r};let d=["xs","sm","md","lg","xl","xxl"],u=a.forwardRef((e,t)=>{let{getPrefixCls:r,direction:n}=a.useContext(l.E_),{gutter:u,wrap:p,supportFlexGap:f}=a.useContext(i.Z),{prefixCls:g,span:m,order:b,offset:h,push:v,pull:x,className:$,children:y,flex:w,style:E}=e,S=c(e,["prefixCls","span","order","offset","push","pull","className","children","flex","style"]),C=r("col",g),[O,z]=(0,s.c)(C),R={};d.forEach(t=>{let r={},o=e[t];"number"==typeof o?r.span=o:"object"==typeof o&&(r=o||{}),delete S[t],R=Object.assign(Object.assign({},R),{[`${C}-${t}-${r.span}`]:void 0!==r.span,[`${C}-${t}-order-${r.order}`]:r.order||0===r.order,[`${C}-${t}-offset-${r.offset}`]:r.offset||0===r.offset,[`${C}-${t}-push-${r.push}`]:r.push||0===r.push,[`${C}-${t}-pull-${r.pull}`]:r.pull||0===r.pull,[`${C}-${t}-flex-${r.flex}`]:r.flex||"auto"===r.flex,[`${C}-rtl`]:"rtl"===n})});let j=o()(C,{[`${C}-${m}`]:void 0!==m,[`${C}-order-${b}`]:b,[`${C}-offset-${h}`]:h,[`${C}-push-${v}`]:v,[`${C}-pull-${x}`]:x},$,R,z),Z={};if(u&&u[0]>0){let e=u[0]/2;Z.paddingLeft=e,Z.paddingRight=e}if(u&&u[1]>0&&!f){let e=u[1]/2;Z.paddingTop=e,Z.paddingBottom=e}return w&&(Z.flex="number"==typeof w?`${w} ${w} auto`:/^\d+(\.\d+)?(px|em|rem|%)$/.test(w)?`0 0 ${w}`:w,!1!==p||Z.minWidth||(Z.minWidth=0)),O(a.createElement("div",Object.assign({},S,{style:Object.assign(Object.assign({},Z),E),className:j,ref:t}),y))});t.Z=u},92820:function(e,t,r){var n=r(94184),o=r.n(n),a=r(67294),l=r(53124),i=r(98082),s=r(74443),c=r(99134),d=r(6999),u=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,n=Object.getOwnPropertySymbols(e);ot.indexOf(n[o])&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]]);return r};function p(e,t){let[r,n]=a.useState("string"==typeof e?e:""),o=()=>{if("string"==typeof e&&n(e),"object"==typeof e)for(let r=0;r{o()},[JSON.stringify(e),t]),r}let f=a.forwardRef((e,t)=>{let{prefixCls:r,justify:n,align:f,className:g,style:m,children:b,gutter:h=0,wrap:v}=e,x=u(e,["prefixCls","justify","align","className","style","children","gutter","wrap"]),{getPrefixCls:$,direction:y}=a.useContext(l.E_),[w,E]=a.useState({xs:!0,sm:!0,md:!0,lg:!0,xl:!0,xxl:!0}),[S,C]=a.useState({xs:!1,sm:!1,md:!1,lg:!1,xl:!1,xxl:!1}),O=p(f,S),z=p(n,S),R=(0,i.Z)(),j=a.useRef(h),Z=(0,s.Z)();a.useEffect(()=>{let e=Z.subscribe(e=>{C(e);let t=j.current||0;(!Array.isArray(t)&&"object"==typeof t||Array.isArray(t)&&("object"==typeof t[0]||"object"==typeof t[1]))&&E(e)});return()=>Z.unsubscribe(e)},[]);let I=$("row",r),[H,M]=(0,d.V)(I),P=(()=>{let e=[void 0,void 0],t=Array.isArray(h)?h:[h,void 0];return t.forEach((t,r)=>{if("object"==typeof t)for(let n=0;n0?-(P[0]/2):void 0,B=null!=P[1]&&P[1]>0?-(P[1]/2):void 0;A&&(k.marginLeft=A,k.marginRight=A),R?[,k.rowGap]=P:B&&(k.marginTop=B,k.marginBottom=B);let[T,W]=P,L=a.useMemo(()=>({gutter:[T,W],wrap:v,supportFlexGap:R}),[T,W,v,R]);return H(a.createElement(c.Z.Provider,{value:L},a.createElement("div",Object.assign({},x,{className:N,style:Object.assign(Object.assign({},k),m),ref:t}),b)))});t.Z=f},6999:function(e,t,r){r.d(t,{V:function(){return d},c:function(){return u}});var n=r(67968),o=r(45503);let a=e=>{let{componentCls:t}=e;return{[t]:{display:"flex",flexFlow:"row wrap",minWidth:0,"&::before, &::after":{display:"flex"},"&-no-wrap":{flexWrap:"nowrap"},"&-start":{justifyContent:"flex-start"},"&-center":{justifyContent:"center"},"&-end":{justifyContent:"flex-end"},"&-space-between":{justifyContent:"space-between"},"&-space-around":{justifyContent:"space-around"},"&-space-evenly":{justifyContent:"space-evenly"},"&-top":{alignItems:"flex-start"},"&-middle":{alignItems:"center"},"&-bottom":{alignItems:"flex-end"}}}},l=e=>{let{componentCls:t}=e;return{[t]:{position:"relative",maxWidth:"100%",minHeight:1}}},i=(e,t)=>{let{componentCls:r,gridColumns:n}=e,o={};for(let e=n;e>=0;e--)0===e?(o[`${r}${t}-${e}`]={display:"none"},o[`${r}-push-${e}`]={insetInlineStart:"auto"},o[`${r}-pull-${e}`]={insetInlineEnd:"auto"},o[`${r}${t}-push-${e}`]={insetInlineStart:"auto"},o[`${r}${t}-pull-${e}`]={insetInlineEnd:"auto"},o[`${r}${t}-offset-${e}`]={marginInlineStart:0},o[`${r}${t}-order-${e}`]={order:0}):(o[`${r}${t}-${e}`]=[{"--ant-display":"block",display:"block"},{display:"var(--ant-display)",flex:`0 0 ${e/n*100}%`,maxWidth:`${e/n*100}%`}],o[`${r}${t}-push-${e}`]={insetInlineStart:`${e/n*100}%`},o[`${r}${t}-pull-${e}`]={insetInlineEnd:`${e/n*100}%`},o[`${r}${t}-offset-${e}`]={marginInlineStart:`${e/n*100}%`},o[`${r}${t}-order-${e}`]={order:e});return o},s=(e,t)=>i(e,t),c=(e,t,r)=>({[`@media (min-width: ${t}px)`]:Object.assign({},s(e,r))}),d=(0,n.Z)("Grid",e=>[a(e)]),u=(0,n.Z)("Grid",e=>{let t=(0,o.TS)(e,{gridColumns:24}),r={"-sm":t.screenSMMin,"-md":t.screenMDMin,"-lg":t.screenLGMin,"-xl":t.screenXLMin,"-xxl":t.screenXXLMin};return[l(t),s(t,""),s(t,"-xs"),Object.keys(r).map(e=>c(t,r[e],e)).reduce((e,t)=>Object.assign(Object.assign({},e),t),{})]})},59566:function(e,t,r){r.d(t,{default:function(){return er}});var n,o=r(94184),a=r.n(o),l=r(67294),i=r(53124),s=r(65223),c=r(47673),d=r(4340),u=r(67656),p=r(42550),f=r(9708),g=r(98866),m=r(98675),b=r(4173);function h(e,t){let r=(0,l.useRef)([]),n=()=>{r.current.push(setTimeout(()=>{var t,r,n,o;(null===(t=e.current)||void 0===t?void 0:t.input)&&(null===(r=e.current)||void 0===r?void 0:r.input.getAttribute("type"))==="password"&&(null===(n=e.current)||void 0===n?void 0:n.input.hasAttribute("value"))&&(null===(o=e.current)||void 0===o||o.input.removeAttribute("value"))}))};return(0,l.useEffect)(()=>(t&&n(),()=>r.current.forEach(e=>{e&&clearTimeout(e)})),[]),n}var v=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,n=Object.getOwnPropertySymbols(e);ot.indexOf(n[o])&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]]);return r};let x=(0,l.forwardRef)((e,t)=>{var r;let n;let{prefixCls:o,bordered:x=!0,status:$,size:y,disabled:w,onBlur:E,onFocus:S,suffix:C,allowClear:O,addonAfter:z,addonBefore:R,className:j,style:Z,styles:I,rootClassName:H,onChange:M,classNames:P}=e,N=v(e,["prefixCls","bordered","status","size","disabled","onBlur","onFocus","suffix","allowClear","addonAfter","addonBefore","className","style","styles","rootClassName","onChange","classNames"]),{getPrefixCls:k,direction:A,input:B}=l.useContext(i.E_),T=k("input",o),W=(0,l.useRef)(null),[L,D]=(0,c.ZP)(T),{compactSize:F,compactItemClassnames:V}=(0,b.ri)(T,A),X=(0,m.Z)(e=>{var t;return null!==(t=null!=y?y:F)&&void 0!==t?t:e}),G=l.useContext(g.Z),_=null!=w?w:G,{status:Q,hasFeedback:U,feedbackIcon:J}=(0,l.useContext)(s.aM),q=(0,f.F)(Q,$),K=!!(e.prefix||e.suffix||e.allowClear)||!!U,Y=(0,l.useRef)(K);(0,l.useEffect)(()=>{K&&Y.current,Y.current=K},[K]);let ee=h(W,!0),et=(U||C)&&l.createElement(l.Fragment,null,C,U&&J);return"object"==typeof O&&(null==O?void 0:O.clearIcon)?n=O:O&&(n={clearIcon:l.createElement(d.Z,null)}),L(l.createElement(u.Z,Object.assign({ref:(0,p.sQ)(t,W),prefixCls:T,autoComplete:null==B?void 0:B.autoComplete},N,{disabled:_,onBlur:e=>{ee(),null==E||E(e)},onFocus:e=>{ee(),null==S||S(e)},style:Object.assign(Object.assign({},null==B?void 0:B.style),Z),styles:Object.assign(Object.assign({},null==B?void 0:B.styles),I),suffix:et,allowClear:n,className:a()(j,H,V,null==B?void 0:B.className),onChange:e=>{ee(),null==M||M(e)},addonAfter:z&&l.createElement(b.BR,null,l.createElement(s.Ux,{override:!0,status:!0},z)),addonBefore:R&&l.createElement(b.BR,null,l.createElement(s.Ux,{override:!0,status:!0},R)),classNames:Object.assign(Object.assign(Object.assign({},P),null==B?void 0:B.classNames),{input:a()({[`${T}-sm`]:"small"===X,[`${T}-lg`]:"large"===X,[`${T}-rtl`]:"rtl"===A,[`${T}-borderless`]:!x},!K&&(0,f.Z)(T,q),null==P?void 0:P.input,null===(r=null==B?void 0:B.classNames)||void 0===r?void 0:r.input,D)}),classes:{affixWrapper:a()({[`${T}-affix-wrapper-sm`]:"small"===X,[`${T}-affix-wrapper-lg`]:"large"===X,[`${T}-affix-wrapper-rtl`]:"rtl"===A,[`${T}-affix-wrapper-borderless`]:!x},(0,f.Z)(`${T}-affix-wrapper`,q,U),D),wrapper:a()({[`${T}-group-rtl`]:"rtl"===A},D),group:a()({[`${T}-group-wrapper-sm`]:"small"===X,[`${T}-group-wrapper-lg`]:"large"===X,[`${T}-group-wrapper-rtl`]:"rtl"===A,[`${T}-group-wrapper-disabled`]:_},(0,f.Z)(`${T}-group-wrapper`,q,U),D)}})))});var $=r(87462),y={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M942.2 486.2Q889.47 375.11 816.7 305l-50.88 50.88C807.31 395.53 843.45 447.4 874.7 512 791.5 684.2 673.4 766 512 766q-72.67 0-133.87-22.38L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 000-51.5zm-63.57-320.64L836 122.88a8 8 0 00-11.32 0L715.31 232.2Q624.86 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 000 51.5q56.69 119.4 136.5 191.41L112.48 835a8 8 0 000 11.31L155.17 889a8 8 0 0011.31 0l712.15-712.12a8 8 0 000-11.32zM149.3 512C232.6 339.8 350.7 258 512 258c54.54 0 104.13 9.36 149.12 28.39l-70.3 70.3a176 176 0 00-238.13 238.13l-83.42 83.42C223.1 637.49 183.3 582.28 149.3 512zm246.7 0a112.11 112.11 0 01146.2-106.69L401.31 546.2A112 112 0 01396 512z"}},{tag:"path",attrs:{d:"M508 624c-3.46 0-6.87-.16-10.25-.47l-52.82 52.82a176.09 176.09 0 00227.42-227.42l-52.82 52.82c.31 3.38.47 6.79.47 10.25a111.94 111.94 0 01-112 112z"}}]},name:"eye-invisible",theme:"outlined"},w=r(84089),E=l.forwardRef(function(e,t){return l.createElement(w.Z,(0,$.Z)({},e,{ref:t,icon:y}))}),S=r(99611),C=r(98423),O=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,n=Object.getOwnPropertySymbols(e);ot.indexOf(n[o])&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]]);return r};let z=e=>e?l.createElement(S.Z,null):l.createElement(E,null),R={click:"onClick",hover:"onMouseOver"},j=l.forwardRef((e,t)=>{let{visibilityToggle:r=!0}=e,n="object"==typeof r&&void 0!==r.visible,[o,s]=(0,l.useState)(()=>!!n&&r.visible),c=(0,l.useRef)(null);l.useEffect(()=>{n&&s(r.visible)},[n,r]);let d=h(c),u=()=>{let{disabled:t}=e;t||(o&&d(),s(e=>{var t;let n=!e;return"object"==typeof r&&(null===(t=r.onVisibleChange)||void 0===t||t.call(r,n)),n}))},{className:f,prefixCls:g,inputPrefixCls:m,size:b}=e,v=O(e,["className","prefixCls","inputPrefixCls","size"]),{getPrefixCls:$}=l.useContext(i.E_),y=$("input",m),w=$("input-password",g),E=r&&(t=>{let{action:r="click",iconRender:n=z}=e,a=R[r]||"",i=n(o),s={[a]:u,className:`${t}-icon`,key:"passwordIcon",onMouseDown:e=>{e.preventDefault()},onMouseUp:e=>{e.preventDefault()}};return l.cloneElement(l.isValidElement(i)?i:l.createElement("span",null,i),s)})(w),S=a()(w,f,{[`${w}-${b}`]:!!b}),j=Object.assign(Object.assign({},(0,C.Z)(v,["suffix","iconRender","visibilityToggle"])),{type:o?"text":"password",className:S,prefixCls:y,suffix:E});return b&&(j.size=b),l.createElement(x,Object.assign({ref:(0,p.sQ)(t,c)},j))});var Z=r(68795),I=r(96159),H=r(71577),M=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,n=Object.getOwnPropertySymbols(e);ot.indexOf(n[o])&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]]);return r};let P=l.forwardRef((e,t)=>{let r;let{prefixCls:n,inputPrefixCls:o,className:s,size:c,suffix:d,enterButton:u=!1,addonAfter:f,loading:g,disabled:h,onSearch:v,onChange:$,onCompositionStart:y,onCompositionEnd:w}=e,E=M(e,["prefixCls","inputPrefixCls","className","size","suffix","enterButton","addonAfter","loading","disabled","onSearch","onChange","onCompositionStart","onCompositionEnd"]),{getPrefixCls:S,direction:C}=l.useContext(i.E_),O=l.useRef(!1),z=S("input-search",n),R=S("input",o),{compactSize:j}=(0,b.ri)(z,C),P=(0,m.Z)(e=>{var t;return null!==(t=null!=c?c:j)&&void 0!==t?t:e}),N=l.useRef(null),k=e=>{var t;document.activeElement===(null===(t=N.current)||void 0===t?void 0:t.input)&&e.preventDefault()},A=e=>{var t,r;v&&v(null===(r=null===(t=N.current)||void 0===t?void 0:t.input)||void 0===r?void 0:r.value,e)},B="boolean"==typeof u?l.createElement(Z.Z,null):null,T=`${z}-button`,W=u||{},L=W.type&&!0===W.type.__ANT_BUTTON;r=L||"button"===W.type?(0,I.Tm)(W,Object.assign({onMouseDown:k,onClick:e=>{var t,r;null===(r=null===(t=null==W?void 0:W.props)||void 0===t?void 0:t.onClick)||void 0===r||r.call(t,e),A(e)},key:"enterButton"},L?{className:T,size:P}:{})):l.createElement(H.ZP,{className:T,type:u?"primary":void 0,size:P,disabled:h,key:"enterButton",onMouseDown:k,onClick:A,loading:g,icon:B},u),f&&(r=[r,(0,I.Tm)(f,{key:"addonAfter"})]);let D=a()(z,{[`${z}-rtl`]:"rtl"===C,[`${z}-${P}`]:!!P,[`${z}-with-button`]:!!u},s);return l.createElement(x,Object.assign({ref:(0,p.sQ)(N,t),onPressEnter:e=>{O.current||g||A(e)}},E,{size:P,onCompositionStart:e=>{O.current=!0,null==y||y(e)},onCompositionEnd:e=>{O.current=!1,null==w||w(e)},prefixCls:R,addonAfter:r,suffix:d,onChange:e=>{e&&e.target&&"click"===e.type&&v&&v(e.target.value,e),$&&$(e)},className:D,disabled:h}))});var N=r(1413),k=r(4942),A=r(71002),B=r(97685),T=r(45987),W=r(74902),L=r(87887),D=r(21770),F=r(9220),V=r(8410),X=r(75164),G=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","font-variant","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing","word-break","white-space"],_={},Q=["prefixCls","onPressEnter","defaultValue","value","autoSize","onResize","className","style","disabled","onChange","onInternalAutoSize"],U=l.forwardRef(function(e,t){var r=e.prefixCls,o=(e.onPressEnter,e.defaultValue),i=e.value,s=e.autoSize,c=e.onResize,d=e.className,u=e.style,p=e.disabled,f=e.onChange,g=(e.onInternalAutoSize,(0,T.Z)(e,Q)),m=(0,D.Z)(o,{value:i,postState:function(e){return null!=e?e:""}}),b=(0,B.Z)(m,2),h=b[0],v=b[1],x=l.useRef();l.useImperativeHandle(t,function(){return{textArea:x.current}});var y=l.useMemo(function(){return s&&"object"===(0,A.Z)(s)?[s.minRows,s.maxRows]:[]},[s]),w=(0,B.Z)(y,2),E=w[0],S=w[1],C=!!s,O=function(){try{if(document.activeElement===x.current){var e=x.current,t=e.selectionStart,r=e.selectionEnd,n=e.scrollTop;x.current.setSelectionRange(t,r),x.current.scrollTop=n}}catch(e){}},z=l.useState(2),R=(0,B.Z)(z,2),j=R[0],Z=R[1],I=l.useState(),H=(0,B.Z)(I,2),M=H[0],P=H[1],W=function(){Z(0)};(0,V.Z)(function(){C&&W()},[i,E,S,C]),(0,V.Z)(function(){if(0===j)Z(1);else if(1===j){var e=function(e){var t,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;n||((n=document.createElement("textarea")).setAttribute("tab-index","-1"),n.setAttribute("aria-hidden","true"),document.body.appendChild(n)),e.getAttribute("wrap")?n.setAttribute("wrap",e.getAttribute("wrap")):n.removeAttribute("wrap");var l=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=e.getAttribute("id")||e.getAttribute("data-reactid")||e.getAttribute("name");if(t&&_[r])return _[r];var n=window.getComputedStyle(e),o=n.getPropertyValue("box-sizing")||n.getPropertyValue("-moz-box-sizing")||n.getPropertyValue("-webkit-box-sizing"),a=parseFloat(n.getPropertyValue("padding-bottom"))+parseFloat(n.getPropertyValue("padding-top")),l=parseFloat(n.getPropertyValue("border-bottom-width"))+parseFloat(n.getPropertyValue("border-top-width")),i={sizingStyle:G.map(function(e){return"".concat(e,":").concat(n.getPropertyValue(e))}).join(";"),paddingSize:a,borderSize:l,boxSizing:o};return t&&r&&(_[r]=i),i}(e,r),i=l.paddingSize,s=l.borderSize,c=l.boxSizing,d=l.sizingStyle;n.setAttribute("style","".concat(d,";").concat("\n min-height:0 !important;\n max-height:none !important;\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important;\n pointer-events: none !important;\n")),n.value=e.value||e.placeholder||"";var u=void 0,p=void 0,f=n.scrollHeight;if("border-box"===c?f+=s:"content-box"===c&&(f-=i),null!==o||null!==a){n.value=" ";var g=n.scrollHeight-i;null!==o&&(u=g*o,"border-box"===c&&(u=u+i+s),f=Math.max(u,f)),null!==a&&(p=g*a,"border-box"===c&&(p=p+i+s),t=f>p?"":"hidden",f=Math.min(p,f))}var m={height:f,overflowY:t,resize:"none"};return u&&(m.minHeight=u),p&&(m.maxHeight=p),m}(x.current,!1,E,S);Z(2),P(e)}else O()},[j]);var L=l.useRef(),U=function(){X.Z.cancel(L.current)};l.useEffect(function(){return U},[]);var J=C?M:null,q=(0,N.Z)((0,N.Z)({},u),J);return(0===j||1===j)&&(q.overflowY="hidden",q.overflowX="hidden"),l.createElement(F.Z,{onResize:function(e){2===j&&(null==c||c(e),s&&(U(),L.current=(0,X.Z)(function(){W()})))},disabled:!(s||c)},l.createElement("textarea",(0,$.Z)({},g,{ref:x,style:q,className:a()(r,d,(0,k.Z)({},"".concat(r,"-disabled"),p)),disabled:p,value:h,onChange:function(e){v(e.target.value),null==f||f(e)}})))}),J=["defaultValue","value","onFocus","onBlur","onChange","allowClear","maxLength","onCompositionStart","onCompositionEnd","suffix","prefixCls","classes","showCount","className","style","disabled","hidden","classNames","styles","onResize"];function q(e,t){return(0,W.Z)(e||"").slice(0,t).join("")}function K(e,t,r,n){var o=r;return e?o=q(r,n):(0,W.Z)(t||"").lengthn&&(o=t),o}var Y=l.forwardRef(function(e,t){var r,n,o=e.defaultValue,i=e.value,s=e.onFocus,c=e.onBlur,d=e.onChange,p=e.allowClear,f=e.maxLength,g=e.onCompositionStart,m=e.onCompositionEnd,b=e.suffix,h=e.prefixCls,v=void 0===h?"rc-textarea":h,x=e.classes,y=e.showCount,w=e.className,E=e.style,S=e.disabled,C=e.hidden,O=e.classNames,z=e.styles,R=e.onResize,j=(0,T.Z)(e,J),Z=(0,D.Z)(o,{value:i,defaultValue:o}),I=(0,B.Z)(Z,2),H=I[0],M=I[1],P=(0,l.useRef)(null),F=l.useState(!1),V=(0,B.Z)(F,2),X=V[0],G=V[1],_=l.useState(!1),Q=(0,B.Z)(_,2),Y=Q[0],ee=Q[1],et=l.useRef(),er=l.useRef(0),en=l.useState(null),eo=(0,B.Z)(en,2),ea=eo[0],el=eo[1],ei=function(){var e;null===(e=P.current)||void 0===e||e.textArea.focus()};(0,l.useImperativeHandle)(t,function(){return{resizableTextArea:P.current,focus:ei,blur:function(){var e;null===(e=P.current)||void 0===e||e.textArea.blur()}}}),(0,l.useEffect)(function(){G(function(e){return!S&&e})},[S]);var es=Number(f)>0,ec=(0,L.D7)(H);!Y&&es&&null==i&&(ec=q(ec,f));var ed=b;if(y){var eu=(0,W.Z)(ec).length;n="object"===(0,A.Z)(y)?y.formatter({value:ec,count:eu,maxLength:f}):"".concat(eu).concat(es?" / ".concat(f):""),ed=l.createElement(l.Fragment,null,ed,l.createElement("span",{className:a()("".concat(v,"-data-count"),null==O?void 0:O.count),style:null==z?void 0:z.count},n))}var ep=!j.autoSize&&!y&&!p;return l.createElement(u.Q,{value:ec,allowClear:p,handleReset:function(e){var t;M(""),ei(),(0,L.rJ)(null===(t=P.current)||void 0===t?void 0:t.textArea,e,d)},suffix:ed,prefixCls:v,classes:{affixWrapper:a()(null==x?void 0:x.affixWrapper,(r={},(0,k.Z)(r,"".concat(v,"-show-count"),y),(0,k.Z)(r,"".concat(v,"-textarea-allow-clear"),p),r))},disabled:S,focused:X,className:w,style:(0,N.Z)((0,N.Z)({},E),ea&&!ep?{height:"auto"}:{}),dataAttrs:{affixWrapper:{"data-count":"string"==typeof n?n:void 0}},hidden:C,inputElement:l.createElement(U,(0,$.Z)({},j,{onKeyDown:function(e){var t=j.onPressEnter,r=j.onKeyDown;"Enter"===e.key&&t&&t(e),null==r||r(e)},onChange:function(e){var t=e.target.value;!Y&&es&&(t=K(e.target.selectionStart>=f+1||e.target.selectionStart===t.length||!e.target.selectionStart,H,t,f)),M(t),(0,L.rJ)(e.currentTarget,e,d,t)},onFocus:function(e){G(!0),null==s||s(e)},onBlur:function(e){G(!1),null==c||c(e)},onCompositionStart:function(e){ee(!0),et.current=H,er.current=e.currentTarget.selectionStart,null==g||g(e)},onCompositionEnd:function(e){ee(!1);var t,r=e.currentTarget.value;es&&(r=K(er.current>=f+1||er.current===(null===(t=et.current)||void 0===t?void 0:t.length),et.current,r,f)),r!==H&&(M(r),(0,L.rJ)(e.currentTarget,e,d,r)),null==m||m(e)},className:null==O?void 0:O.textarea,style:(0,N.Z)((0,N.Z)({},null==z?void 0:z.textarea),{},{resize:null==E?void 0:E.resize}),disabled:S,prefixCls:v,onResize:function(e){var t;null==R||R(e),null!==(t=P.current)&&void 0!==t&&t.textArea.style.height&&el(!0)},ref:P}))})}),ee=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,n=Object.getOwnPropertySymbols(e);ot.indexOf(n[o])&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]]);return r};let et=(0,l.forwardRef)((e,t)=>{let r;let{prefixCls:n,bordered:o=!0,size:u,disabled:p,status:b,allowClear:h,showCount:v,classNames:x}=e,$=ee(e,["prefixCls","bordered","size","disabled","status","allowClear","showCount","classNames"]),{getPrefixCls:y,direction:w}=l.useContext(i.E_),E=(0,m.Z)(u),S=l.useContext(g.Z),{status:C,hasFeedback:O,feedbackIcon:z}=l.useContext(s.aM),R=(0,f.F)(C,b),j=l.useRef(null);l.useImperativeHandle(t,()=>{var e;return{resizableTextArea:null===(e=j.current)||void 0===e?void 0:e.resizableTextArea,focus:e=>{var t,r;!function(e,t){if(!e)return;e.focus(t);let{cursor:r}=t||{};if(r){let t=e.value.length;switch(r){case"start":e.setSelectionRange(0,0);break;case"end":e.setSelectionRange(t,t);break;default:e.setSelectionRange(0,t)}}}(null===(r=null===(t=j.current)||void 0===t?void 0:t.resizableTextArea)||void 0===r?void 0:r.textArea,e)},blur:()=>{var e;return null===(e=j.current)||void 0===e?void 0:e.blur()}}});let Z=y("input",n);"object"==typeof h&&(null==h?void 0:h.clearIcon)?r=h:h&&(r={clearIcon:l.createElement(d.Z,null)});let[I,H]=(0,c.ZP)(Z);return I(l.createElement(Y,Object.assign({},$,{disabled:null!=p?p:S,allowClear:r,classes:{affixWrapper:a()(`${Z}-textarea-affix-wrapper`,{[`${Z}-affix-wrapper-rtl`]:"rtl"===w,[`${Z}-affix-wrapper-borderless`]:!o,[`${Z}-affix-wrapper-sm`]:"small"===E,[`${Z}-affix-wrapper-lg`]:"large"===E,[`${Z}-textarea-show-count`]:v},(0,f.Z)(`${Z}-affix-wrapper`,R),H)},classNames:Object.assign(Object.assign({},x),{textarea:a()({[`${Z}-borderless`]:!o,[`${Z}-sm`]:"small"===E,[`${Z}-lg`]:"large"===E},(0,f.Z)(Z,R),H,null==x?void 0:x.textarea)}),prefixCls:Z,suffix:O&&l.createElement("span",{className:`${Z}-textarea-suffix`},z),showCount:v,ref:j})))});x.Group=e=>{let{getPrefixCls:t,direction:r}=(0,l.useContext)(i.E_),{prefixCls:n,className:o}=e,d=t("input-group",n),u=t("input"),[p,f]=(0,c.ZP)(u),g=a()(d,{[`${d}-lg`]:"large"===e.size,[`${d}-sm`]:"small"===e.size,[`${d}-compact`]:e.compact,[`${d}-rtl`]:"rtl"===r},f,o),m=(0,l.useContext)(s.aM),b=(0,l.useMemo)(()=>Object.assign(Object.assign({},m),{isFormItemInput:!1}),[m]);return p(l.createElement("span",{className:g,style:e.style,onMouseEnter:e.onMouseEnter,onMouseLeave:e.onMouseLeave,onFocus:e.onFocus,onBlur:e.onBlur},l.createElement(s.aM.Provider,{value:b},e.children)))},x.Search=P,x.TextArea=et,x.Password=j;var er=x},47673:function(e,t,r){r.d(t,{M1:function(){return c},Xy:function(){return d},bi:function(){return f},e5:function(){return y},ik:function(){return g},nz:function(){return i},pU:function(){return s},s7:function(){return m},x0:function(){return p}});var n=r(14747),o=r(80110),a=r(45503),l=r(67968);let i=e=>({"&::-moz-placeholder":{opacity:1},"&::placeholder":{color:e,userSelect:"none"},"&:placeholder-shown":{textOverflow:"ellipsis"}}),s=e=>({borderColor:e.inputBorderHoverColor,borderInlineEndWidth:e.lineWidth}),c=e=>({borderColor:e.inputBorderHoverColor,boxShadow:`0 0 0 ${e.controlOutlineWidth}px ${e.controlOutline}`,borderInlineEndWidth:e.lineWidth,outline:0}),d=e=>({color:e.colorTextDisabled,backgroundColor:e.colorBgContainerDisabled,borderColor:e.colorBorder,boxShadow:"none",cursor:"not-allowed",opacity:1,"&:hover":Object.assign({},s((0,a.TS)(e,{inputBorderHoverColor:e.colorBorder})))}),u=e=>{let{inputPaddingVerticalLG:t,fontSizeLG:r,lineHeightLG:n,borderRadiusLG:o,inputPaddingHorizontalLG:a}=e;return{padding:`${t}px ${a}px`,fontSize:r,lineHeight:n,borderRadius:o}},p=e=>({padding:`${e.inputPaddingVerticalSM}px ${e.controlPaddingHorizontalSM-1}px`,borderRadius:e.borderRadiusSM}),f=(e,t)=>{let{componentCls:r,colorError:n,colorWarning:o,colorErrorOutline:l,colorWarningOutline:i,colorErrorBorderHover:s,colorWarningBorderHover:d}=e;return{[`&-status-error:not(${t}-disabled):not(${t}-borderless)${t}`]:{borderColor:n,"&:hover":{borderColor:s},"&:focus, &-focused":Object.assign({},c((0,a.TS)(e,{inputBorderActiveColor:n,inputBorderHoverColor:n,controlOutline:l}))),[`${r}-prefix, ${r}-suffix`]:{color:n}},[`&-status-warning:not(${t}-disabled):not(${t}-borderless)${t}`]:{borderColor:o,"&:hover":{borderColor:d},"&:focus, &-focused":Object.assign({},c((0,a.TS)(e,{inputBorderActiveColor:o,inputBorderHoverColor:o,controlOutline:i}))),[`${r}-prefix, ${r}-suffix`]:{color:o}}}},g=e=>Object.assign(Object.assign({position:"relative",display:"inline-block",width:"100%",minWidth:0,padding:`${e.inputPaddingVertical}px ${e.inputPaddingHorizontal}px`,color:e.colorText,fontSize:e.fontSize,lineHeight:e.lineHeight,backgroundColor:e.colorBgContainer,backgroundImage:"none",borderWidth:e.lineWidth,borderStyle:e.lineType,borderColor:e.colorBorder,borderRadius:e.borderRadius,transition:`all ${e.motionDurationMid}`},i(e.colorTextPlaceholder)),{"&:hover":Object.assign({},s(e)),"&:focus, &-focused":Object.assign({},c(e)),"&-disabled, &[disabled]":Object.assign({},d(e)),"&-borderless":{"&, &:hover, &:focus, &-focused, &-disabled, &[disabled]":{backgroundColor:"transparent",border:"none",boxShadow:"none"}},"textarea&":{maxWidth:"100%",height:"auto",minHeight:e.controlHeight,lineHeight:e.lineHeight,verticalAlign:"bottom",transition:`all ${e.motionDurationSlow}, height 0s`,resize:"vertical"},"&-lg":Object.assign({},u(e)),"&-sm":Object.assign({},p(e)),"&-rtl":{direction:"rtl"},"&-textarea-rtl":{direction:"rtl"}}),m=e=>{let{componentCls:t,antCls:r}=e;return{position:"relative",display:"table",width:"100%",borderCollapse:"separate",borderSpacing:0,"&[class*='col-']":{paddingInlineEnd:e.paddingXS,"&:last-child":{paddingInlineEnd:0}},[`&-lg ${t}, &-lg > ${t}-group-addon`]:Object.assign({},u(e)),[`&-sm ${t}, &-sm > ${t}-group-addon`]:Object.assign({},p(e)),[`&-lg ${r}-select-single ${r}-select-selector`]:{height:e.controlHeightLG},[`&-sm ${r}-select-single ${r}-select-selector`]:{height:e.controlHeightSM},[`> ${t}`]:{display:"table-cell","&:not(:first-child):not(:last-child)":{borderRadius:0}},[`${t}-group`]:{"&-addon, &-wrap":{display:"table-cell",width:1,whiteSpace:"nowrap",verticalAlign:"middle","&:not(:first-child):not(:last-child)":{borderRadius:0}},"&-wrap > *":{display:"block !important"},"&-addon":{position:"relative",padding:`0 ${e.inputPaddingHorizontal}px`,color:e.colorText,fontWeight:"normal",fontSize:e.fontSize,textAlign:"center",backgroundColor:e.colorFillAlter,border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,borderRadius:e.borderRadius,transition:`all ${e.motionDurationSlow}`,lineHeight:1,[`${r}-select`]:{margin:`-${e.inputPaddingVertical+1}px -${e.inputPaddingHorizontal}px`,[`&${r}-select-single:not(${r}-select-customize-input)`]:{[`${r}-select-selector`]:{backgroundColor:"inherit",border:`${e.lineWidth}px ${e.lineType} transparent`,boxShadow:"none"}},"&-open, &-focused":{[`${r}-select-selector`]:{color:e.colorPrimary}}},[`${r}-cascader-picker`]:{margin:`-9px -${e.inputPaddingHorizontal}px`,backgroundColor:"transparent",[`${r}-cascader-input`]:{textAlign:"start",border:0,boxShadow:"none"}}},"&-addon:first-child":{borderInlineEnd:0},"&-addon:last-child":{borderInlineStart:0}},[`${t}`]:{width:"100%",marginBottom:0,textAlign:"inherit","&:focus":{zIndex:1,borderInlineEndWidth:1},"&:hover":{zIndex:1,borderInlineEndWidth:1,[`${t}-search-with-button &`]:{zIndex:0}}},[`> ${t}:first-child, ${t}-group-addon:first-child`]:{borderStartEndRadius:0,borderEndEndRadius:0,[`${r}-select ${r}-select-selector`]:{borderStartEndRadius:0,borderEndEndRadius:0}},[`> ${t}-affix-wrapper`]:{[`&:not(:first-child) ${t}`]:{borderStartStartRadius:0,borderEndStartRadius:0},[`&:not(:last-child) ${t}`]:{borderStartEndRadius:0,borderEndEndRadius:0}},[`> ${t}:last-child, ${t}-group-addon:last-child`]:{borderStartStartRadius:0,borderEndStartRadius:0,[`${r}-select ${r}-select-selector`]:{borderStartStartRadius:0,borderEndStartRadius:0}},[`${t}-affix-wrapper`]:{"&:not(:last-child)":{borderStartEndRadius:0,borderEndEndRadius:0,[`${t}-search &`]:{borderStartStartRadius:e.borderRadius,borderEndStartRadius:e.borderRadius}},[`&:not(:first-child), ${t}-search &:not(:first-child)`]:{borderStartStartRadius:0,borderEndStartRadius:0}},[`&${t}-group-compact`]:Object.assign(Object.assign({display:"block"},(0,n.dF)()),{[`${t}-group-addon, ${t}-group-wrap, > ${t}`]:{"&:not(:first-child):not(:last-child)":{borderInlineEndWidth:e.lineWidth,"&:hover":{zIndex:1},"&:focus":{zIndex:1}}},"& > *":{display:"inline-block",float:"none",verticalAlign:"top",borderRadius:0},[` + & > ${t}-affix-wrapper, + & > ${t}-number-affix-wrapper, + & > ${r}-picker-range + `]:{display:"inline-flex"},"& > *:not(:last-child)":{marginInlineEnd:-e.lineWidth,borderInlineEndWidth:e.lineWidth},[`${t}`]:{float:"none"},[`& > ${r}-select > ${r}-select-selector, + & > ${r}-select-auto-complete ${t}, + & > ${r}-cascader-picker ${t}, + & > ${t}-group-wrapper ${t}`]:{borderInlineEndWidth:e.lineWidth,borderRadius:0,"&:hover":{zIndex:1},"&:focus":{zIndex:1}},[`& > ${r}-select-focused`]:{zIndex:1},[`& > ${r}-select > ${r}-select-arrow`]:{zIndex:1},[`& > *:first-child, + & > ${r}-select:first-child > ${r}-select-selector, + & > ${r}-select-auto-complete:first-child ${t}, + & > ${r}-cascader-picker:first-child ${t}`]:{borderStartStartRadius:e.borderRadius,borderEndStartRadius:e.borderRadius},[`& > *:last-child, + & > ${r}-select:last-child > ${r}-select-selector, + & > ${r}-cascader-picker:last-child ${t}, + & > ${r}-cascader-picker-focused:last-child ${t}`]:{borderInlineEndWidth:e.lineWidth,borderStartEndRadius:e.borderRadius,borderEndEndRadius:e.borderRadius},[`& > ${r}-select-auto-complete ${t}`]:{verticalAlign:"top"},[`${t}-group-wrapper + ${t}-group-wrapper`]:{marginInlineStart:-e.lineWidth,[`${t}-affix-wrapper`]:{borderRadius:0}},[`${t}-group-wrapper:not(:last-child)`]:{[`&${t}-search > ${t}-group`]:{[`& > ${t}-group-addon > ${t}-search-button`]:{borderRadius:0},[`& > ${t}`]:{borderStartStartRadius:e.borderRadius,borderStartEndRadius:0,borderEndEndRadius:0,borderEndStartRadius:e.borderRadius}}}})}},b=e=>{let{componentCls:t,controlHeightSM:r,lineWidth:o}=e,a=(r-2*o-16)/2;return{[t]:Object.assign(Object.assign(Object.assign(Object.assign({},(0,n.Wf)(e)),g(e)),f(e,t)),{'&[type="color"]':{height:e.controlHeight,[`&${t}-lg`]:{height:e.controlHeightLG},[`&${t}-sm`]:{height:r,paddingTop:a,paddingBottom:a}},'&[type="search"]::-webkit-search-cancel-button, &[type="search"]::-webkit-search-decoration':{"-webkit-appearance":"none"}})}},h=e=>{let{componentCls:t}=e;return{[`${t}-clear-icon`]:{margin:0,color:e.colorTextQuaternary,fontSize:e.fontSizeIcon,verticalAlign:-1,cursor:"pointer",transition:`color ${e.motionDurationSlow}`,"&:hover":{color:e.colorTextTertiary},"&:active":{color:e.colorText},"&-hidden":{visibility:"hidden"},"&-has-suffix":{margin:`0 ${e.inputAffixPadding}px`}}}},v=e=>{let{componentCls:t,inputAffixPadding:r,colorTextDescription:n,motionDurationSlow:o,colorIcon:a,colorIconHover:l,iconCls:i}=e;return{[`${t}-affix-wrapper`]:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},g(e)),{display:"inline-flex",[`&:not(${t}-affix-wrapper-disabled):hover`]:Object.assign(Object.assign({},s(e)),{zIndex:1,[`${t}-search-with-button &`]:{zIndex:0}}),"&-focused, &:focus":{zIndex:1},"&-disabled":{[`${t}[disabled]`]:{background:"transparent"}},[`> input${t}`]:{padding:0,fontSize:"inherit",border:"none",borderRadius:0,outline:"none","&::-ms-reveal":{display:"none"},"&:focus":{boxShadow:"none !important"}},"&::before":{display:"inline-block",width:0,visibility:"hidden",content:'"\\a0"'},[`${t}`]:{"&-prefix, &-suffix":{display:"flex",flex:"none",alignItems:"center","> *:not(:last-child)":{marginInlineEnd:e.paddingXS}},"&-show-count-suffix":{color:n},"&-show-count-has-suffix":{marginInlineEnd:e.paddingXXS},"&-prefix":{marginInlineEnd:r},"&-suffix":{marginInlineStart:r}}}),h(e)),{[`${i}${t}-password-icon`]:{color:a,cursor:"pointer",transition:`all ${o}`,"&:hover":{color:l}}}),f(e,`${t}-affix-wrapper`))}},x=e=>{let{componentCls:t,colorError:r,colorWarning:o,borderRadiusLG:a,borderRadiusSM:l}=e;return{[`${t}-group`]:Object.assign(Object.assign(Object.assign({},(0,n.Wf)(e)),m(e)),{"&-rtl":{direction:"rtl"},"&-wrapper":{display:"inline-block",width:"100%",textAlign:"start",verticalAlign:"top","&-rtl":{direction:"rtl"},"&-lg":{[`${t}-group-addon`]:{borderRadius:a,fontSize:e.fontSizeLG}},"&-sm":{[`${t}-group-addon`]:{borderRadius:l}},"&-status-error":{[`${t}-group-addon`]:{color:r,borderColor:r}},"&-status-warning":{[`${t}-group-addon`]:{color:o,borderColor:o}},"&-disabled":{[`${t}-group-addon`]:Object.assign({},d(e))},[`&:not(${t}-compact-first-item):not(${t}-compact-last-item)${t}-compact-item`]:{[`${t}, ${t}-group-addon`]:{borderRadius:0}},[`&:not(${t}-compact-last-item)${t}-compact-first-item`]:{[`${t}, ${t}-group-addon`]:{borderStartEndRadius:0,borderEndEndRadius:0}},[`&:not(${t}-compact-first-item)${t}-compact-last-item`]:{[`${t}, ${t}-group-addon`]:{borderStartStartRadius:0,borderEndStartRadius:0}}}})}},$=e=>{let{componentCls:t,antCls:r}=e,n=`${t}-search`;return{[n]:{[`${t}`]:{"&:hover, &:focus":{borderColor:e.colorPrimaryHover,[`+ ${t}-group-addon ${n}-button:not(${r}-btn-primary)`]:{borderInlineStartColor:e.colorPrimaryHover}}},[`${t}-affix-wrapper`]:{borderRadius:0},[`${t}-lg`]:{lineHeight:e.lineHeightLG-2e-4},[`> ${t}-group`]:{[`> ${t}-group-addon:last-child`]:{insetInlineStart:-1,padding:0,border:0,[`${n}-button`]:{paddingTop:0,paddingBottom:0,borderStartStartRadius:0,borderStartEndRadius:e.borderRadius,borderEndEndRadius:e.borderRadius,borderEndStartRadius:0},[`${n}-button:not(${r}-btn-primary)`]:{color:e.colorTextDescription,"&:hover":{color:e.colorPrimaryHover},"&:active":{color:e.colorPrimaryActive},[`&${r}-btn-loading::before`]:{insetInlineStart:0,insetInlineEnd:0,insetBlockStart:0,insetBlockEnd:0}}}},[`${n}-button`]:{height:e.controlHeight,"&:hover, &:focus":{zIndex:1}},[`&-large ${n}-button`]:{height:e.controlHeightLG},[`&-small ${n}-button`]:{height:e.controlHeightSM},"&-rtl":{direction:"rtl"},[`&${t}-compact-item`]:{[`&:not(${t}-compact-last-item)`]:{[`${t}-group-addon`]:{[`${t}-search-button`]:{marginInlineEnd:-e.lineWidth,borderRadius:0}}},[`&:not(${t}-compact-first-item)`]:{[`${t},${t}-affix-wrapper`]:{borderRadius:0}},[`> ${t}-group-addon ${t}-search-button, + > ${t}, + ${t}-affix-wrapper`]:{"&:hover,&:focus,&:active":{zIndex:2}},[`> ${t}-affix-wrapper-focused`]:{zIndex:2}}}}};function y(e){return(0,a.TS)(e,{inputAffixPadding:e.paddingXXS,inputPaddingVertical:Math.max(Math.round((e.controlHeight-e.fontSize*e.lineHeight)/2*10)/10-e.lineWidth,3),inputPaddingVerticalLG:Math.ceil((e.controlHeightLG-e.fontSizeLG*e.lineHeightLG)/2*10)/10-e.lineWidth,inputPaddingVerticalSM:Math.max(Math.round((e.controlHeightSM-e.fontSize*e.lineHeight)/2*10)/10-e.lineWidth,0),inputPaddingHorizontal:e.paddingSM-e.lineWidth,inputPaddingHorizontalSM:e.paddingXS-e.lineWidth,inputPaddingHorizontalLG:e.controlPaddingHorizontal-e.lineWidth,inputBorderHoverColor:e.colorPrimaryHover,inputBorderActiveColor:e.colorPrimaryHover})}let w=e=>{let{componentCls:t,paddingLG:r}=e,n=`${t}-textarea`;return{[n]:{position:"relative","&-show-count":{[`> ${t}`]:{height:"100%"},[`${t}-data-count`]:{position:"absolute",bottom:-e.fontSize*e.lineHeight,insetInlineEnd:0,color:e.colorTextDescription,whiteSpace:"nowrap",pointerEvents:"none"}},"&-allow-clear":{[`> ${t}`]:{paddingInlineEnd:r}},[`&-affix-wrapper${n}-has-feedback`]:{[`${t}`]:{paddingInlineEnd:r}},[`&-affix-wrapper${t}-affix-wrapper`]:{padding:0,[`> textarea${t}`]:{fontSize:"inherit",border:"none",outline:"none","&:focus":{boxShadow:"none !important"}},[`${t}-suffix`]:{margin:0,"> *:not(:last-child)":{marginInline:0},[`${t}-clear-icon`]:{position:"absolute",insetInlineEnd:e.paddingXS,insetBlockStart:e.paddingXS},[`${n}-suffix`]:{position:"absolute",top:0,insetInlineEnd:e.inputPaddingHorizontal,bottom:0,zIndex:1,display:"inline-flex",alignItems:"center",margin:"auto",pointerEvents:"none"}}}}}};t.ZP=(0,l.Z)("Input",e=>{let t=y(e);return[b(t),w(t),v(t),x(t),$(t),(0,o.c)(t)]})},67656:function(e,t,r){r.d(t,{Q:function(){return u},Z:function(){return v}});var n=r(87462),o=r(1413),a=r(4942),l=r(71002),i=r(94184),s=r.n(i),c=r(67294),d=r(87887),u=function(e){var t=e.inputElement,r=e.prefixCls,i=e.prefix,u=e.suffix,p=e.addonBefore,f=e.addonAfter,g=e.className,m=e.style,b=e.disabled,h=e.readOnly,v=e.focused,x=e.triggerFocus,$=e.allowClear,y=e.value,w=e.handleReset,E=e.hidden,S=e.classes,C=e.classNames,O=e.dataAttrs,z=e.styles,R=e.components,j=(null==R?void 0:R.affixWrapper)||"span",Z=(null==R?void 0:R.groupWrapper)||"span",I=(null==R?void 0:R.wrapper)||"span",H=(null==R?void 0:R.groupAddon)||"span",M=(0,c.useRef)(null),P=(0,c.cloneElement)(t,{value:y,hidden:E,className:s()(null===(N=t.props)||void 0===N?void 0:N.className,!(0,d.X3)(e)&&!(0,d.He)(e)&&g)||null,style:(0,o.Z)((0,o.Z)({},null===(k=t.props)||void 0===k?void 0:k.style),(0,d.X3)(e)||(0,d.He)(e)?{}:m)});if((0,d.X3)(e)){var N,k,A,B="".concat(r,"-affix-wrapper"),T=s()(B,(A={},(0,a.Z)(A,"".concat(B,"-disabled"),b),(0,a.Z)(A,"".concat(B,"-focused"),v),(0,a.Z)(A,"".concat(B,"-readonly"),h),(0,a.Z)(A,"".concat(B,"-input-with-clear-btn"),u&&$&&y),A),!(0,d.He)(e)&&g,null==S?void 0:S.affixWrapper,null==C?void 0:C.affixWrapper),W=(u||$)&&c.createElement("span",{className:s()("".concat(r,"-suffix"),null==C?void 0:C.suffix),style:null==z?void 0:z.suffix},function(){if(!$)return null;var e,t=!b&&!h&&y,n="".concat(r,"-clear-icon"),o="object"===(0,l.Z)($)&&null!=$&&$.clearIcon?$.clearIcon:"✖";return c.createElement("span",{onClick:w,onMouseDown:function(e){return e.preventDefault()},className:s()(n,(e={},(0,a.Z)(e,"".concat(n,"-hidden"),!t),(0,a.Z)(e,"".concat(n,"-has-suffix"),!!u),e)),role:"button",tabIndex:-1},o)}(),u);P=c.createElement(j,(0,n.Z)({className:T,style:(0,o.Z)((0,o.Z)({},(0,d.He)(e)?void 0:m),null==z?void 0:z.affixWrapper),hidden:!(0,d.He)(e)&&E,onClick:function(e){var t;null!==(t=M.current)&&void 0!==t&&t.contains(e.target)&&(null==x||x())}},null==O?void 0:O.affixWrapper,{ref:M}),i&&c.createElement("span",{className:s()("".concat(r,"-prefix"),null==C?void 0:C.prefix),style:null==z?void 0:z.prefix},i),(0,c.cloneElement)(t,{value:y,hidden:null}),W)}if((0,d.He)(e)){var L="".concat(r,"-group"),D="".concat(L,"-addon"),F=s()("".concat(r,"-wrapper"),L,null==S?void 0:S.wrapper),V=s()("".concat(r,"-group-wrapper"),g,null==S?void 0:S.group);return c.createElement(Z,{className:V,style:m,hidden:E},c.createElement(I,{className:F},p&&c.createElement(H,{className:D},p),(0,c.cloneElement)(P,{hidden:null}),f&&c.createElement(H,{className:D},f)))}return P},p=r(74902),f=r(97685),g=r(45987),m=r(21770),b=r(98423),h=["autoComplete","onChange","onFocus","onBlur","onPressEnter","onKeyDown","prefixCls","disabled","htmlSize","className","maxLength","suffix","showCount","type","classes","classNames","styles"],v=(0,c.forwardRef)(function(e,t){var r,i=e.autoComplete,v=e.onChange,x=e.onFocus,$=e.onBlur,y=e.onPressEnter,w=e.onKeyDown,E=e.prefixCls,S=void 0===E?"rc-input":E,C=e.disabled,O=e.htmlSize,z=e.className,R=e.maxLength,j=e.suffix,Z=e.showCount,I=e.type,H=e.classes,M=e.classNames,P=e.styles,N=(0,g.Z)(e,h),k=(0,m.Z)(e.defaultValue,{value:e.value}),A=(0,f.Z)(k,2),B=A[0],T=A[1],W=(0,c.useState)(!1),L=(0,f.Z)(W,2),D=L[0],F=L[1],V=(0,c.useRef)(null),X=function(e){V.current&&(0,d.nH)(V.current,e)};return(0,c.useImperativeHandle)(t,function(){return{focus:X,blur:function(){var e;null===(e=V.current)||void 0===e||e.blur()},setSelectionRange:function(e,t,r){var n;null===(n=V.current)||void 0===n||n.setSelectionRange(e,t,r)},select:function(){var e;null===(e=V.current)||void 0===e||e.select()},input:V.current}}),(0,c.useEffect)(function(){F(function(e){return(!e||!C)&&e})},[C]),c.createElement(u,(0,n.Z)({},N,{prefixCls:S,className:z,inputElement:(r=(0,b.Z)(e,["prefixCls","onPressEnter","addonBefore","addonAfter","prefix","suffix","allowClear","defaultValue","showCount","classes","htmlSize","styles","classNames"]),c.createElement("input",(0,n.Z)({autoComplete:i},r,{onChange:function(t){void 0===e.value&&T(t.target.value),V.current&&(0,d.rJ)(V.current,t,v)},onFocus:function(e){F(!0),null==x||x(e)},onBlur:function(e){F(!1),null==$||$(e)},onKeyDown:function(e){y&&"Enter"===e.key&&y(e),null==w||w(e)},className:s()(S,(0,a.Z)({},"".concat(S,"-disabled"),C),null==M?void 0:M.input),style:null==P?void 0:P.input,ref:V,size:O,type:void 0===I?"text":I}))),handleReset:function(e){T(""),X(),V.current&&(0,d.rJ)(V.current,e,v)},value:(0,d.D7)(B),focused:D,triggerFocus:X,suffix:function(){var e=Number(R)>0;if(j||Z){var t=(0,d.D7)(B),r=(0,p.Z)(t).length,n="object"===(0,l.Z)(Z)?Z.formatter({value:t,count:r,maxLength:R}):"".concat(r).concat(e?" / ".concat(R):"");return c.createElement(c.Fragment,null,!!Z&&c.createElement("span",{className:s()("".concat(S,"-show-count-suffix"),(0,a.Z)({},"".concat(S,"-show-count-has-suffix"),!!j),null==M?void 0:M.count),style:(0,o.Z)({},null==P?void 0:P.count)},n),j)}return null}(),disabled:C,classes:H,classNames:M,styles:P}))})},87887:function(e,t,r){function n(e){return!!(e.addonBefore||e.addonAfter)}function o(e){return!!(e.prefix||e.suffix||e.allowClear)}function a(e,t,r,n){if(r){var o=t;if("click"===t.type){var a=e.cloneNode(!0);o=Object.create(t,{target:{value:a},currentTarget:{value:a}}),a.value="",r(o);return}if(void 0!==n){o=Object.create(t,{target:{value:e},currentTarget:{value:e}}),e.value=n,r(o);return}r(o)}}function l(e,t){if(e){e.focus(t);var r=(t||{}).cursor;if(r){var n=e.value.length;switch(r){case"start":e.setSelectionRange(0,0);break;case"end":e.setSelectionRange(n,n);break;default:e.setSelectionRange(0,n)}}}}function i(e){return null==e?"":String(e)}r.d(t,{D7:function(){return i},He:function(){return n},X3:function(){return o},nH:function(){return l},rJ:function(){return a}})}}]); \ No newline at end of file diff --git a/pilot/server/static/_next/static/chunks/643-d2492f894de95084.js b/pilot/server/static/_next/static/chunks/643-d2492f894de95084.js deleted file mode 100644 index 49b90fe89..000000000 --- a/pilot/server/static/_next/static/chunks/643-d2492f894de95084.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[643],{27704:function(e,t,n){n.d(t,{Z:function(){return i}});var a=n(87462),o=n(67294),r={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M864 256H736v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zm-200 0H360v-72h304v72z"}}]},name:"delete",theme:"filled"},l=n(84089),i=o.forwardRef(function(e,t){return o.createElement(l.Z,(0,a.Z)({},e,{ref:t,icon:r}))})},36531:function(e,t,n){n.d(t,{Z:function(){return i}});var a=n(87462),o=n(67294),r={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32zm-622.3-84c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 000-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 009.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9z"}}]},name:"edit",theme:"filled"},l=n(84089),i=o.forwardRef(function(e,t){return o.createElement(l.Z,(0,a.Z)({},e,{ref:t,icon:r}))})},2093:function(e,t,n){var a=n(97582),o=n(67294),r=n(92770);t.Z=function(e,t){(0,o.useEffect)(function(){var t=e(),n=!1;return!function(){(0,a.mG)(this,void 0,void 0,function(){return(0,a.Jh)(this,function(e){switch(e.label){case 0:if(!(0,r.mf)(t[Symbol.asyncIterator]))return[3,4];e.label=1;case 1:return[4,t.next()];case 2:if(e.sent().done||n)return[3,3];return[3,1];case 3:return[3,6];case 4:return[4,t];case 5:e.sent(),e.label=6;case 6:return[2]}})})}(),function(){n=!0}},t)}},85265:function(e,t,n){n.d(t,{Z:function(){return K}});var a=n(94184),o=n.n(a),r=n(1413),l=n(97685),i=n(67294),s=n(2788),c=n(8410),u=n(4942),d=n(87462),f=n(82225),m=n(15105),p=n(64217),v=i.createContext(null),h=function(e){var t=e.prefixCls,n=e.className,a=e.style,l=e.children,s=e.containerRef,c=e.onMouseEnter,u=e.onMouseOver,f=e.onMouseLeave,m=e.onClick,p=e.onKeyDown,v=e.onKeyUp;return i.createElement(i.Fragment,null,i.createElement("div",(0,d.Z)({className:o()("".concat(t,"-content"),n),style:(0,r.Z)({},a),"aria-modal":"true",role:"dialog",ref:s},{onMouseEnter:c,onMouseOver:u,onMouseLeave:f,onClick:m,onKeyDown:p,onKeyUp:v}),l))},b=n(80334);function x(e){return"string"==typeof e&&String(Number(e))===e?((0,b.ZP)(!1,"Invalid value type of `width` or `height` which should be number type instead."),Number(e)):e}var y={width:0,height:0,overflow:"hidden",outline:"none",position:"absolute"},g=i.forwardRef(function(e,t){var n,a,s,c,b=e.prefixCls,g=e.open,w=e.placement,C=e.inline,E=e.push,k=e.forceRender,$=e.autoFocus,S=e.keyboard,Z=e.rootClassName,N=e.rootStyle,O=e.zIndex,D=e.className,M=e.style,I=e.motion,R=e.width,z=e.height,L=e.children,K=e.contentWrapperStyle,P=e.mask,_=e.maskClosable,H=e.maskMotion,X=e.maskClassName,Y=e.maskStyle,U=e.afterOpenChange,j=e.onClose,B=e.onMouseEnter,W=e.onMouseOver,A=e.onMouseLeave,F=e.onClick,T=e.onKeyDown,V=e.onKeyUp,G=i.useRef(),J=i.useRef(),q=i.useRef();i.useImperativeHandle(t,function(){return G.current}),i.useEffect(function(){if(g&&$){var e;null===(e=G.current)||void 0===e||e.focus({preventScroll:!0})}},[g]);var Q=i.useState(!1),ee=(0,l.Z)(Q,2),et=ee[0],en=ee[1],ea=i.useContext(v),eo=null!==(n=null!==(a=null===(s=!1===E?{distance:0}:!0===E?{}:E||{})||void 0===s?void 0:s.distance)&&void 0!==a?a:null==ea?void 0:ea.pushDistance)&&void 0!==n?n:180,er=i.useMemo(function(){return{pushDistance:eo,push:function(){en(!0)},pull:function(){en(!1)}}},[eo]);i.useEffect(function(){var e,t;g?null==ea||null===(e=ea.push)||void 0===e||e.call(ea):null==ea||null===(t=ea.pull)||void 0===t||t.call(ea)},[g]),i.useEffect(function(){return function(){var e;null==ea||null===(e=ea.pull)||void 0===e||e.call(ea)}},[]);var el=P&&i.createElement(f.ZP,(0,d.Z)({key:"mask"},H,{visible:g}),function(e,t){var n=e.className,a=e.style;return i.createElement("div",{className:o()("".concat(b,"-mask"),n,X),style:(0,r.Z)((0,r.Z)({},a),Y),onClick:_&&g?j:void 0,ref:t})}),ei="function"==typeof I?I(w):I,es={};if(et&&eo)switch(w){case"top":es.transform="translateY(".concat(eo,"px)");break;case"bottom":es.transform="translateY(".concat(-eo,"px)");break;case"left":es.transform="translateX(".concat(eo,"px)");break;default:es.transform="translateX(".concat(-eo,"px)")}"left"===w||"right"===w?es.width=x(R):es.height=x(z);var ec={onMouseEnter:B,onMouseOver:W,onMouseLeave:A,onClick:F,onKeyDown:T,onKeyUp:V},eu=i.createElement(f.ZP,(0,d.Z)({key:"panel"},ei,{visible:g,forceRender:k,onVisibleChanged:function(e){null==U||U(e)},removeOnLeave:!1,leavedClassName:"".concat(b,"-content-wrapper-hidden")}),function(t,n){var a=t.className,l=t.style;return i.createElement("div",(0,d.Z)({className:o()("".concat(b,"-content-wrapper"),a),style:(0,r.Z)((0,r.Z)((0,r.Z)({},es),l),K)},(0,p.Z)(e,{data:!0})),i.createElement(h,(0,d.Z)({containerRef:n,prefixCls:b,className:D,style:M},ec),L))}),ed=(0,r.Z)({},N);return O&&(ed.zIndex=O),i.createElement(v.Provider,{value:er},i.createElement("div",{className:o()(b,"".concat(b,"-").concat(w),Z,(c={},(0,u.Z)(c,"".concat(b,"-open"),g),(0,u.Z)(c,"".concat(b,"-inline"),C),c)),style:ed,tabIndex:-1,ref:G,onKeyDown:function(e){var t,n,a=e.keyCode,o=e.shiftKey;switch(a){case m.Z.TAB:a===m.Z.TAB&&(o||document.activeElement!==q.current?o&&document.activeElement===J.current&&(null===(n=q.current)||void 0===n||n.focus({preventScroll:!0})):null===(t=J.current)||void 0===t||t.focus({preventScroll:!0}));break;case m.Z.ESC:j&&S&&(e.stopPropagation(),j(e))}}},el,i.createElement("div",{tabIndex:0,ref:J,style:y,"aria-hidden":"true","data-sentinel":"start"}),eu,i.createElement("div",{tabIndex:0,ref:q,style:y,"aria-hidden":"true","data-sentinel":"end"})))}),w=function(e){var t=e.open,n=e.prefixCls,a=e.placement,o=e.autoFocus,u=e.keyboard,d=e.width,f=e.mask,m=void 0===f||f,p=e.maskClosable,v=e.getContainer,h=e.forceRender,b=e.afterOpenChange,x=e.destroyOnClose,y=e.onMouseEnter,w=e.onMouseOver,C=e.onMouseLeave,E=e.onClick,k=e.onKeyDown,$=e.onKeyUp,S=i.useState(!1),Z=(0,l.Z)(S,2),N=Z[0],O=Z[1],D=i.useState(!1),M=(0,l.Z)(D,2),I=M[0],R=M[1];(0,c.Z)(function(){R(!0)},[]);var z=!!I&&void 0!==t&&t,L=i.useRef(),K=i.useRef();if((0,c.Z)(function(){z&&(K.current=document.activeElement)},[z]),!h&&!N&&!z&&x)return null;var P=(0,r.Z)((0,r.Z)({},e),{},{open:z,prefixCls:void 0===n?"rc-drawer":n,placement:void 0===a?"right":a,autoFocus:void 0===o||o,keyboard:void 0===u||u,width:void 0===d?378:d,mask:m,maskClosable:void 0===p||p,inline:!1===v,afterOpenChange:function(e){var t,n;O(e),null==b||b(e),e||!K.current||(null===(t=L.current)||void 0===t?void 0:t.contains(K.current))||null===(n=K.current)||void 0===n||n.focus({preventScroll:!0})},ref:L},{onMouseEnter:y,onMouseOver:w,onMouseLeave:C,onClick:E,onKeyDown:k,onKeyUp:$});return i.createElement(s.Z,{open:z||h||N,autoDestroy:!1,getContainer:v,autoLock:m&&(z||N)},i.createElement(g,P))},C=n(33603),E=n(53124),k=n(65223),$=n(69760),S=e=>{let{prefixCls:t,title:n,footer:a,extra:r,closeIcon:l,closable:s,onClose:c,headerStyle:u,drawerStyle:d,bodyStyle:f,footerStyle:m,children:p}=e,v=i.useCallback(e=>i.createElement("button",{type:"button",onClick:c,"aria-label":"Close",className:`${t}-close`},e),[c]),[h,b]=(0,$.Z)(s,l,v,void 0,!0),x=i.useMemo(()=>n||h?i.createElement("div",{style:u,className:o()(`${t}-header`,{[`${t}-header-close-only`]:h&&!n&&!r})},i.createElement("div",{className:`${t}-header-title`},b,n&&i.createElement("div",{className:`${t}-title`},n)),r&&i.createElement("div",{className:`${t}-extra`},r)):null,[h,b,r,u,t,n]),y=i.useMemo(()=>{if(!a)return null;let e=`${t}-footer`;return i.createElement("div",{className:e,style:m},a)},[a,m,t]);return i.createElement("div",{className:`${t}-wrapper-body`,style:d},x,i.createElement("div",{className:`${t}-body`,style:f},p),y)},Z=n(4173),N=n(67968),O=n(45503),D=e=>{let{componentCls:t,motionDurationSlow:n}=e,a={"&-enter, &-appear, &-leave":{"&-start":{transition:"none"},"&-active":{transition:`all ${n}`}}};return{[t]:{[`${t}-mask-motion`]:{"&-enter, &-appear, &-leave":{"&-active":{transition:`all ${n}`}},"&-enter, &-appear":{opacity:0,"&-active":{opacity:1}},"&-leave":{opacity:1,"&-active":{opacity:0}}},[`${t}-panel-motion`]:{"&-left":[a,{"&-enter, &-appear":{"&-start":{transform:"translateX(-100%) !important"},"&-active":{transform:"translateX(0)"}},"&-leave":{transform:"translateX(0)","&-active":{transform:"translateX(-100%)"}}}],"&-right":[a,{"&-enter, &-appear":{"&-start":{transform:"translateX(100%) !important"},"&-active":{transform:"translateX(0)"}},"&-leave":{transform:"translateX(0)","&-active":{transform:"translateX(100%)"}}}],"&-top":[a,{"&-enter, &-appear":{"&-start":{transform:"translateY(-100%) !important"},"&-active":{transform:"translateY(0)"}},"&-leave":{transform:"translateY(0)","&-active":{transform:"translateY(-100%)"}}}],"&-bottom":[a,{"&-enter, &-appear":{"&-start":{transform:"translateY(100%) !important"},"&-active":{transform:"translateY(0)"}},"&-leave":{transform:"translateY(0)","&-active":{transform:"translateY(100%)"}}}]}}}};let M=e=>{let{componentCls:t,zIndexPopup:n,colorBgMask:a,colorBgElevated:o,motionDurationSlow:r,motionDurationMid:l,padding:i,paddingLG:s,fontSizeLG:c,lineHeightLG:u,lineWidth:d,lineType:f,colorSplit:m,marginSM:p,colorIcon:v,colorIconHover:h,colorText:b,fontWeightStrong:x,footerPaddingBlock:y,footerPaddingInline:g}=e,w=`${t}-content-wrapper`;return{[t]:{position:"fixed",inset:0,zIndex:n,pointerEvents:"none","&-pure":{position:"relative",background:o,[`&${t}-left`]:{boxShadow:e.boxShadowDrawerLeft},[`&${t}-right`]:{boxShadow:e.boxShadowDrawerRight},[`&${t}-top`]:{boxShadow:e.boxShadowDrawerUp},[`&${t}-bottom`]:{boxShadow:e.boxShadowDrawerDown}},"&-inline":{position:"absolute"},[`${t}-mask`]:{position:"absolute",inset:0,zIndex:n,background:a,pointerEvents:"auto"},[w]:{position:"absolute",zIndex:n,maxWidth:"100vw",transition:`all ${r}`,"&-hidden":{display:"none"}},[`&-left > ${w}`]:{top:0,bottom:0,left:{_skip_check_:!0,value:0},boxShadow:e.boxShadowDrawerLeft},[`&-right > ${w}`]:{top:0,right:{_skip_check_:!0,value:0},bottom:0,boxShadow:e.boxShadowDrawerRight},[`&-top > ${w}`]:{top:0,insetInline:0,boxShadow:e.boxShadowDrawerUp},[`&-bottom > ${w}`]:{bottom:0,insetInline:0,boxShadow:e.boxShadowDrawerDown},[`${t}-content`]:{width:"100%",height:"100%",overflow:"auto",background:o,pointerEvents:"auto"},[`${t}-wrapper-body`]:{display:"flex",flexDirection:"column",width:"100%",height:"100%"},[`${t}-header`]:{display:"flex",flex:0,alignItems:"center",padding:`${i}px ${s}px`,fontSize:c,lineHeight:u,borderBottom:`${d}px ${f} ${m}`,"&-title":{display:"flex",flex:1,alignItems:"center",minWidth:0,minHeight:0}},[`${t}-extra`]:{flex:"none"},[`${t}-close`]:{display:"inline-block",marginInlineEnd:p,color:v,fontWeight:x,fontSize:c,fontStyle:"normal",lineHeight:1,textAlign:"center",textTransform:"none",textDecoration:"none",background:"transparent",border:0,outline:0,cursor:"pointer",transition:`color ${l}`,textRendering:"auto","&:focus, &:hover":{color:h,textDecoration:"none"}},[`${t}-title`]:{flex:1,margin:0,color:b,fontWeight:e.fontWeightStrong,fontSize:c,lineHeight:u},[`${t}-body`]:{flex:1,minWidth:0,minHeight:0,padding:s,overflow:"auto"},[`${t}-footer`]:{flexShrink:0,padding:`${y}px ${g}px`,borderTop:`${d}px ${f} ${m}`},"&-rtl":{direction:"rtl"}}}};var I=(0,N.Z)("Drawer",e=>{let t=(0,O.TS)(e,{});return[M(t),D(t)]},e=>({zIndexPopup:e.zIndexPopupBase,footerPaddingBlock:e.paddingXS,footerPaddingInline:e.padding})),R=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&0>t.indexOf(a)&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,a=Object.getOwnPropertySymbols(e);ot.indexOf(a[o])&&Object.prototype.propertyIsEnumerable.call(e,a[o])&&(n[a[o]]=e[a[o]]);return n};let z={distance:180},L=e=>{let{rootClassName:t,width:n,height:a,size:r="default",mask:l=!0,push:s=z,open:c,afterOpenChange:u,onClose:d,prefixCls:f,getContainer:m,style:p,className:v,visible:h,afterVisibleChange:b}=e,x=R(e,["rootClassName","width","height","size","mask","push","open","afterOpenChange","onClose","prefixCls","getContainer","style","className","visible","afterVisibleChange"]),{getPopupContainer:y,getPrefixCls:g,direction:$,drawer:N}=i.useContext(E.E_),O=g("drawer",f),[D,M]=I(O),L=o()({"no-mask":!l,[`${O}-rtl`]:"rtl"===$},t,M),K=i.useMemo(()=>null!=n?n:"large"===r?736:378,[n,r]),P=i.useMemo(()=>null!=a?a:"large"===r?736:378,[a,r]),_={motionName:(0,C.m)(O,"mask-motion"),motionAppear:!0,motionEnter:!0,motionLeave:!0,motionDeadline:500};return D(i.createElement(Z.BR,null,i.createElement(k.Ux,{status:!0,override:!0},i.createElement(w,Object.assign({prefixCls:O,onClose:d,maskMotion:_,motion:e=>({motionName:(0,C.m)(O,`panel-motion-${e}`),motionAppear:!0,motionEnter:!0,motionLeave:!0,motionDeadline:500})},x,{open:null!=c?c:h,mask:l,push:s,width:K,height:P,style:Object.assign(Object.assign({},null==N?void 0:N.style),p),className:o()(null==N?void 0:N.className,v),rootClassName:L,getContainer:void 0===m&&y?()=>y(document.body):m,afterOpenChange:null!=u?u:b}),i.createElement(S,Object.assign({prefixCls:O},x,{onClose:d}))))))};L._InternalPanelDoNotUseOrYouWillBeFired=e=>{let{prefixCls:t,style:n,className:a,placement:r="right"}=e,l=R(e,["prefixCls","style","className","placement"]),{getPrefixCls:s}=i.useContext(E.E_),c=s("drawer",t),[u,d]=I(c),f=o()(c,`${c}-pure`,`${c}-${r}`,d,a);return u(i.createElement("div",{className:f,style:n},i.createElement(S,Object.assign({prefixCls:c},l))))};var K=L}}]); \ No newline at end of file diff --git a/pilot/server/static/_next/static/chunks/207.60c86d63a2e1860f.js b/pilot/server/static/_next/static/chunks/739.82283c4d1eea95ee.js similarity index 53% rename from pilot/server/static/_next/static/chunks/207.60c86d63a2e1860f.js rename to pilot/server/static/_next/static/chunks/739.82283c4d1eea95ee.js index 54fabbb53..bfdc3e13b 100644 --- a/pilot/server/static/_next/static/chunks/207.60c86d63a2e1860f.js +++ b/pilot/server/static/_next/static/chunks/739.82283c4d1eea95ee.js @@ -1,9 +1,9 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[207],{96991:function(e,t,i){"use strict";i.d(t,{Z:function(){return a}});var n=i(87462),r=i(67294),o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M864 144H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm0 400H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zM464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm0 400H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16z"}}]},name:"appstore",theme:"filled"},s=i(84089),a=r.forwardRef(function(e,t){return r.createElement(s.Z,(0,n.Z)({},e,{ref:t,icon:o}))})},29158:function(e,t,i){"use strict";i.d(t,{Z:function(){return a}});var n=i(87462),r=i(67294),o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M574 665.4a8.03 8.03 0 00-11.3 0L446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3l-39.8-39.8a8.03 8.03 0 00-11.3 0L191.4 526.5c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3L574 665.4zm258.6-474c-84.6-84.6-221.5-84.6-306 0L410.3 307.6a8.03 8.03 0 000 11.3l39.7 39.7c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204L665.3 562.6a8.03 8.03 0 000 11.3l39.8 39.8c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c84.5-84.6 84.5-221.5 0-306.1zM610.1 372.3a8.03 8.03 0 00-11.3 0L372.3 598.7a8.03 8.03 0 000 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l226.4-226.4c3.1-3.1 3.1-8.2 0-11.3l-39.5-39.6z"}}]},name:"link",theme:"outlined"},s=i(84089),a=r.forwardRef(function(e,t){return r.createElement(s.Z,(0,n.Z)({},e,{ref:t,icon:o}))})},49591:function(e,t,i){"use strict";i.d(t,{Z:function(){return a}});var n=i(87462),r=i(67294),o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h360c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H184V184h656v320c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V144c0-17.7-14.3-32-32-32zM653.3 599.4l52.2-52.2a8.01 8.01 0 00-4.7-13.6l-179.4-21c-5.1-.6-9.5 3.7-8.9 8.9l21 179.4c.8 6.6 8.9 9.4 13.6 4.7l52.4-52.4 256.2 256.2c3.1 3.1 8.2 3.1 11.3 0l42.4-42.4c3.1-3.1 3.1-8.2 0-11.3L653.3 599.4z"}}]},name:"select",theme:"outlined"},s=i(84089),a=r.forwardRef(function(e,t){return r.createElement(s.Z,(0,n.Z)({},e,{ref:t,icon:o}))})},88484:function(e,t,i){"use strict";i.d(t,{Z:function(){return a}});var n=i(87462),r=i(67294),o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 00-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z"}}]},name:"upload",theme:"outlined"},s=i(84089),a=r.forwardRef(function(e,t){return r.createElement(s.Z,(0,n.Z)({},e,{ref:t,icon:o}))})},90494:function(e,t){"use strict";var i=function(){function e(){this._events={}}return e.prototype.on=function(e,t,i){return this._events[e]||(this._events[e]=[]),this._events[e].push({callback:t,once:!!i}),this},e.prototype.once=function(e,t){return this.on(e,t,!0)},e.prototype.emit=function(e){for(var t=this,i=[],n=1;n=0&&t._call.call(null,e),t=t._next;--u}()}finally{u=0,function(){for(var e,t,i=n,o=1/0;i;)i._call?(o>i._time&&(o=i._time),e=i,i=i._next):(t=i._next,i._next=null,i=e?e._next=t:n=t);r=e,b(o)}(),p=0}}function T(){var e=m.now(),t=e-g;t>1e3&&(f-=t,g=e)}function b(e){!u&&(d&&(d=clearTimeout(d)),e-p>24?(e<1/0&&(d=setTimeout(y,e-m.now()-f)),c&&(c=clearInterval(c))):(c||(g=m.now(),c=setInterval(T,1e3)),u=1,v(y)))}function A(e,t,i){e.prototype=t.prototype=i,i.constructor=e}function R(e,t){var i=Object.create(e.prototype);for(var n in t)i[n]=t[n];return i}function L(){}C.prototype=S.prototype={constructor:C,restart:function(e,t,i){if("function"!=typeof e)throw TypeError("callback is not a function");i=(null==i?E():+i)+(null==t?0:+t),this._next||r===this||(r?r._next=this:n=this,r=this),this._call=e,this._time=i,b()},stop:function(){this._call&&(this._call=null,this._time=1/0,b())}};var N="\\s*([+-]?\\d+)\\s*",I="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",w="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",O=/^#([0-9a-f]{3,8})$/,x=RegExp(`^rgb\\(${N},${N},${N}\\)$`),D=RegExp(`^rgb\\(${w},${w},${w}\\)$`),M=RegExp(`^rgba\\(${N},${N},${N},${I}\\)$`),k=RegExp(`^rgba\\(${w},${w},${w},${I}\\)$`),P=RegExp(`^hsl\\(${I},${w},${w}\\)$`),F=RegExp(`^hsla\\(${I},${w},${w},${I}\\)$`),B={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function U(){return this.rgb().formatHex()}function H(){return this.rgb().formatRgb()}function V(e){var t,i;return e=(e+"").trim().toLowerCase(),(t=O.exec(e))?(i=t[1].length,t=parseInt(t[1],16),6===i?W(t):3===i?new Y(t>>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===i?G(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===i?G(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=x.exec(e))?new Y(t[1],t[2],t[3],1):(t=D.exec(e))?new Y(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=M.exec(e))?G(t[1],t[2],t[3],t[4]):(t=k.exec(e))?G(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=P.exec(e))?Z(t[1],t[2]/100,t[3]/100,1):(t=F.exec(e))?Z(t[1],t[2]/100,t[3]/100,t[4]):B.hasOwnProperty(e)?W(B[e]):"transparent"===e?new Y(NaN,NaN,NaN,0):null}function W(e){return new Y(e>>16&255,e>>8&255,255&e,1)}function G(e,t,i,n){return n<=0&&(e=t=i=NaN),new Y(e,t,i,n)}function z(e,t,i,n){var r;return 1==arguments.length?((r=e)instanceof L||(r=V(r)),r)?(r=r.rgb(),new Y(r.r,r.g,r.b,r.opacity)):new Y:new Y(e,t,i,null==n?1:n)}function Y(e,t,i,n){this.r=+e,this.g=+t,this.b=+i,this.opacity=+n}function K(){return`#${q(this.r)}${q(this.g)}${q(this.b)}`}function $(){let e=X(this.opacity);return`${1===e?"rgb(":"rgba("}${j(this.r)}, ${j(this.g)}, ${j(this.b)}${1===e?")":`, ${e})`}`}function X(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function j(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function q(e){return((e=j(e))<16?"0":"")+e.toString(16)}function Z(e,t,i,n){return n<=0?e=t=i=NaN:i<=0||i>=1?e=t=NaN:t<=0&&(e=NaN),new Q(e,t,i,n)}function J(e){if(e instanceof Q)return new Q(e.h,e.s,e.l,e.opacity);if(e instanceof L||(e=V(e)),!e)return new Q;if(e instanceof Q)return e;var t=(e=e.rgb()).r/255,i=e.g/255,n=e.b/255,r=Math.min(t,i,n),o=Math.max(t,i,n),s=NaN,a=o-r,l=(o+r)/2;return a?(s=t===o?(i-n)/a+(i0&&l<1?0:s,new Q(s,a,l,e.opacity)}function Q(e,t,i,n){this.h=+e,this.s=+t,this.l=+i,this.opacity=+n}function ee(e){return(e=(e||0)%360)<0?e+360:e}function et(e){return Math.max(0,Math.min(1,e||0))}function ei(e,t,i){return(e<60?t+(i-t)*e/60:e<180?i:e<240?t+(i-t)*(240-e)/60:t)*255}function en(e,t,i,n,r){var o=e*e,s=o*e;return((1-3*e+3*o-s)*t+(4-6*o+3*s)*i+(1+3*e+3*o-3*s)*n+s*r)/6}A(L,V,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:U,formatHex:U,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return J(this).formatHsl()},formatRgb:H,toString:H}),A(Y,z,R(L,{brighter(e){return e=null==e?1.4285714285714286:Math.pow(1.4285714285714286,e),new Y(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=null==e?.7:Math.pow(.7,e),new Y(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Y(j(this.r),j(this.g),j(this.b),X(this.opacity))},displayable(){return -.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:K,formatHex:K,formatHex8:function(){return`#${q(this.r)}${q(this.g)}${q(this.b)}${q((isNaN(this.opacity)?1:this.opacity)*255)}`},formatRgb:$,toString:$})),A(Q,function(e,t,i,n){return 1==arguments.length?J(e):new Q(e,t,i,null==n?1:n)},R(L,{brighter(e){return e=null==e?1.4285714285714286:Math.pow(1.4285714285714286,e),new Q(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=null==e?.7:Math.pow(.7,e),new Q(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,i=this.l,n=i+(i<.5?i:1-i)*t,r=2*i-n;return new Y(ei(e>=240?e-240:e+120,r,n),ei(e,r,n),ei(e<120?e+240:e-120,r,n),this.opacity)},clamp(){return new Q(ee(this.h),et(this.s),et(this.l),X(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=X(this.opacity);return`${1===e?"hsl(":"hsla("}${ee(this.h)}, ${100*et(this.s)}%, ${100*et(this.l)}%${1===e?")":`, ${e})`}`}}));var er=e=>()=>e;function eo(e,t){var i=t-e;return i?function(t){return e+t*i}:er(isNaN(e)?t:e)}var es=function e(t){var i,n=1==(i=+(i=t))?eo:function(e,t){var n,r,o;return t-e?(n=e,r=t,n=Math.pow(n,o=i),r=Math.pow(r,o)-n,o=1/o,function(e){return Math.pow(n+e*r,o)}):er(isNaN(e)?t:e)};function r(e,t){var i=n((e=z(e)).r,(t=z(t)).r),r=n(e.g,t.g),o=n(e.b,t.b),s=eo(e.opacity,t.opacity);return function(t){return e.r=i(t),e.g=r(t),e.b=o(t),e.opacity=s(t),e+""}}return r.gamma=e,r}(1);function ea(e){return function(t){var i,n,r=t.length,o=Array(r),s=Array(r),a=Array(r);for(i=0;i=1?(i=1,t-1):Math.floor(i*t),r=e[n],o=e[n+1],s=n>0?e[n-1]:2*r-o,a=na&&(s=t.slice(a,s),h[l]?h[l]+=s:h[++l]=s),(r=r[0])===(o=o[0])?h[l]?h[l]+=o:h[++l]=o:(h[++l]=null,u.push({i:l,x:ec(r,o)})),a=ef.lastIndex;return a0){for(var o=n.animators.length-1;o>=0;o--){if((e=n.animators[o]).destroyed){n.removeAnimator(o);continue}if(!e.isAnimatePaused()){t=e.get("animations");for(var s=t.length-1;s>=0;s--)(function(e,t,i){var n,r=t.startTime;if(id.length?(u=e_.parsePathString(s[a]),d=e_.parsePathString(o[a]),d=e_.fillPathByDiff(d,u),d=e_.formatPath(d,u),t.fromAttrs.path=d,t.toAttrs.path=u):t.pathFormatted||(u=e_.parsePathString(s[a]),d=e_.parsePathString(o[a]),d=e_.formatPath(d,u),t.fromAttrs.path=d,t.toAttrs.path=u,t.pathFormatted=!0),r[a]=[];for(var c=0;c120||h*h+u*u>40?a&&a.get("draggable")?((o=this.mousedownShape).set("capture",!1),this.draggingShape=o,this.dragging=!0,this._emitEvent("dragstart",i,e,o),this.mousedownShape=null,this.mousedownPoint=null):!a&&n.get("draggable")?(this.dragging=!0,this._emitEvent("dragstart",i,e,null),this.mousedownShape=null,this.mousedownPoint=null):(this._emitMouseoverEvents(i,e,r,t),this._emitEvent("mousemove",i,e,t)):(this._emitMouseoverEvents(i,e,r,t),this._emitEvent("mousemove",i,e,t))}else this._emitMouseoverEvents(i,e,r,t),this._emitEvent("mousemove",i,e,t)}},e.prototype._emitEvent=function(e,t,i,n,r,o){var s=this._getEventObj(e,t,i,n,r,o);if(n){s.shape=n,eb(n,e,s);for(var a=n.getParent();a;)a.emitDelegation(e,s),s.propagationStopped||function(e,t,i){if(i.bubbles){var n=void 0,r=!1;if("mouseenter"===t?(n=i.fromShape,r=!0):"mouseleave"===t&&(r=!0,n=i.toShape),!e.isCanvas()||!r){if(n&&(0,l.UY)(e,n)){i.bubbles=!1;return}i.name=t,i.currentTarget=e,i.delegateTarget=e,e.emit(t,i)}}}(a,e,s),s.propagationPath.push(a),a=a.getParent()}else eb(this.canvas,e,s)},e.prototype.destroy=function(){this._clearEvents(),this.canvas=null,this.currentShape=null,this.draggingShape=null,this.mousedownPoint=null,this.mousedownShape=null,this.mousedownTimeStamp=null},e}(),eR=(0,s.qY)(),eL=eR&&"firefox"===eR.name,eN=function(e){function t(t){var i=e.call(this,t)||this;return i.initContainer(),i.initDom(),i.initEvents(),i.initTimeline(),i}return(0,o.ZT)(t,e),t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return t.cursor="default",t.supportCSSTransform=!1,t},t.prototype.initContainer=function(){var e=this.get("container");(0,l.HD)(e)&&(e=document.getElementById(e),this.set("container",e))},t.prototype.initDom=function(){var e=this.createDom();this.set("el",e),this.get("container").appendChild(e),this.setDOMSize(this.get("width"),this.get("height"))},t.prototype.initEvents=function(){var e=new eA({canvas:this});e.init(),this.set("eventController",e)},t.prototype.initTimeline=function(){var e=new eS(this);this.set("timeline",e)},t.prototype.setDOMSize=function(e,t){var i=this.get("el");l.jU&&(i.style.width=e+"px",i.style.height=t+"px")},t.prototype.changeSize=function(e,t){this.setDOMSize(e,t),this.set("width",e),this.set("height",t),this.onCanvasChange("changeSize")},t.prototype.getRenderer=function(){return this.get("renderer")},t.prototype.getCursor=function(){return this.get("cursor")},t.prototype.setCursor=function(e){this.set("cursor",e);var t=this.get("el");l.jU&&t&&(t.style.cursor=e)},t.prototype.getPointByEvent=function(e){if(this.get("supportCSSTransform")){if(eL&&!(0,l.kK)(e.layerX)&&e.layerX!==e.offsetX)return{x:e.layerX,y:e.layerY};if(!(0,l.kK)(e.offsetX))return{x:e.offsetX,y:e.offsetY}}var t=this.getClientByEvent(e),i=t.x,n=t.y;return this.getPointByClient(i,n)},t.prototype.getClientByEvent=function(e){var t=e;return e.touches&&(t="touchend"===e.type?e.changedTouches[0]:e.touches[0]),{x:t.clientX,y:t.clientY}},t.prototype.getPointByClient=function(e,t){var i=this.get("el").getBoundingClientRect();return{x:e-i.left,y:t-i.top}},t.prototype.getClientByPoint=function(e,t){var i=this.get("el").getBoundingClientRect();return{x:e+i.left,y:t+i.top}},t.prototype.draw=function(){},t.prototype.removeDom=function(){var e=this.get("el");e.parentNode.removeChild(e)},t.prototype.clearEvents=function(){this.get("eventController").destroy()},t.prototype.isCanvas=function(){return!0},t.prototype.getParent=function(){return null},t.prototype.destroy=function(){var t=this.get("timeline");this.get("destroyed")||(this.clear(),t&&t.stop(),this.clearEvents(),this.removeDom(),e.prototype.destroy.call(this))},t}(a.Z)},37153:function(e,t,i){"use strict";var n=i(97582),r=i(29881),o=i(77341),s={},a="_INDEX",l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,n.ZT)(t,e),t.prototype.isCanvas=function(){return!1},t.prototype.getBBox=function(){var e=1/0,t=-1/0,i=1/0,n=-1/0,r=this.getChildren().filter(function(e){return e.get("visible")&&(!e.isGroup()||e.isGroup()&&e.getChildren().length>0)});return r.length>0?(0,o.S6)(r,function(r){var o=r.getBBox(),s=o.minX,a=o.maxX,l=o.minY,h=o.maxY;st&&(t=a),ln&&(n=h)}):(e=0,t=0,i=0,n=0),{x:e,y:i,minX:e,minY:i,maxX:t,maxY:n,width:t-e,height:n-i}},t.prototype.getCanvasBBox=function(){var e=1/0,t=-1/0,i=1/0,n=-1/0,r=this.getChildren().filter(function(e){return e.get("visible")&&(!e.isGroup()||e.isGroup()&&e.getChildren().length>0)});return r.length>0?(0,o.S6)(r,function(r){var o=r.getCanvasBBox(),s=o.minX,a=o.maxX,l=o.minY,h=o.maxY;st&&(t=a),ln&&(n=h)}):(e=0,t=0,i=0,n=0),{x:e,y:i,minX:e,minY:i,maxX:t,maxY:n,width:t-e,height:n-i}},t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return t.children=[],t},t.prototype.onAttrChange=function(t,i,n){if(e.prototype.onAttrChange.call(this,t,i,n),"matrix"===t){var r=this.getTotalMatrix();this._applyChildrenMarix(r)}},t.prototype.applyMatrix=function(t){var i=this.getTotalMatrix();e.prototype.applyMatrix.call(this,t);var n=this.getTotalMatrix();n!==i&&this._applyChildrenMarix(n)},t.prototype._applyChildrenMarix=function(e){var t=this.getChildren();(0,o.S6)(t,function(t){t.applyMatrix(e)})},t.prototype.addShape=function(){for(var e=[],t=0;t=0;s--){var a=e[s];if((0,o.pP)(a)&&(a.isGroup()?r=a.getShape(t,i,n):a.isHit(t,i)&&(r=a)),r)break}return r},t.prototype.add=function(e){var t=this.getCanvas(),i=this.getChildren(),n=this.get("timeline"),r=e.getParent();r&&(e.set("parent",null),e.set("canvas",null),(0,o.As)(r.getChildren(),e)),e.set("parent",this),t&&function e(t,i){if(t.set("canvas",i),t.isGroup()){var n=t.get("children");n.length&&n.forEach(function(t){e(t,i)})}}(e,t),n&&function e(t,i){if(t.set("timeline",i),t.isGroup()){var n=t.get("children");n.length&&n.forEach(function(t){e(t,i)})}}(e,n),i.push(e),e.onCanvasChange("add"),this._applyElementMatrix(e)},t.prototype._applyElementMatrix=function(e){var t=this.getTotalMatrix();t&&e.applyMatrix(t)},t.prototype.getChildren=function(){return this.get("children")},t.prototype.sort=function(){var e=this.getChildren();(0,o.S6)(e,function(e,t){return e[a]=t,e}),e.sort(function(e,t){var i=e.get("zIndex")-t.get("zIndex");return 0===i?e[a]-t[a]:i}),this.onCanvasChange("sort")},t.prototype.clear=function(){if(this.set("clearing",!0),!this.destroyed){for(var e=this.getChildren(),t=e.length-1;t>=0;t--)e[t].destroy();this.set("children",[]),this.onCanvasChange("clear"),this.set("clearing",!1)}},t.prototype.destroy=function(){this.get("destroyed")||(this.clear(),e.prototype.destroy.call(this))},t.prototype.getFirst=function(){return this.getChildByIndex(0)},t.prototype.getLast=function(){var e=this.getChildren();return this.getChildByIndex(e.length-1)},t.prototype.getChildByIndex=function(e){return this.getChildren()[e]},t.prototype.getCount=function(){return this.getChildren().length},t.prototype.contain=function(e){return this.getChildren().indexOf(e)>-1},t.prototype.removeChild=function(e,t){void 0===t&&(t=!0),this.contain(e)&&e.remove(t)},t.prototype.findAll=function(e){var t=[],i=this.getChildren();return(0,o.S6)(i,function(i){e(i)&&t.push(i),i.isGroup()&&(t=t.concat(i.findAll(e)))}),t},t.prototype.find=function(e){var t=null,i=this.getChildren();return(0,o.S6)(i,function(i){if(e(i)?t=i:i.isGroup()&&(t=i.find(e)),t)return!1}),t},t.prototype.findById=function(e){return this.find(function(t){return t.get("id")===e})},t.prototype.findByClassName=function(e){return this.find(function(t){return t.get("className")===e})},t.prototype.findAllByName=function(e){return this.findAll(function(t){return t.get("name")===e})},t}(r.Z);t.Z=l},29881:function(e,t,i){"use strict";var n=i(97582),r=i(21030),o=i(31506),s=i(77341),a=i(41482),l=i(2667),h=o.vs,u="matrix",d=["zIndex","capture","visible","type"],c=["repeat"],g=function(e){function t(t){var i=e.call(this,t)||this;i.attrs={};var n=i.getDefaultAttrs();return(0,r.CD)(n,t.attrs),i.attrs=n,i.initAttrs(n),i.initAnimate(),i}return(0,n.ZT)(t,e),t.prototype.getDefaultCfg=function(){return{visible:!0,capture:!0,zIndex:0}},t.prototype.getDefaultAttrs=function(){return{matrix:this.getDefaultMatrix(),opacity:1}},t.prototype.onCanvasChange=function(e){},t.prototype.initAttrs=function(e){},t.prototype.initAnimate=function(){this.set("animable",!0),this.set("animating",!1)},t.prototype.isGroup=function(){return!1},t.prototype.getParent=function(){return this.get("parent")},t.prototype.getCanvas=function(){return this.get("canvas")},t.prototype.attr=function(){for(var e,t=[],i=0;i0?g=function(e,t){if(t.onFrame)return e;var i=t.startTime,n=t.delay,o=t.duration,s=Object.prototype.hasOwnProperty;return(0,r.S6)(e,function(e){i+ne.delay&&(0,r.S6)(t.toAttrs,function(t,i){s.call(e.toAttrs,i)&&(delete e.toAttrs[i],delete e.fromAttrs[i])})}),e}(g,T):d.addAnimator(this),g.push(T),this.set("animations",g),this.set("_pause",{isPaused:!1})}},t.prototype.stopAnimate=function(e){var t=this;void 0===e&&(e=!0);var i=this.get("animations");(0,r.S6)(i,function(i){e&&(i.onFrame?t.attr(i.onFrame(1)):t.attr(i.toAttrs)),i.callback&&i.callback()}),this.set("animating",!1),this.set("animations",[])},t.prototype.pauseAnimate=function(){var e=this.get("timeline"),t=this.get("animations"),i=e.getTime();return(0,r.S6)(t,function(e){e._paused=!0,e._pauseTime=i,e.pauseCallback&&e.pauseCallback()}),this.set("_pause",{isPaused:!0,pauseTime:i}),this},t.prototype.resumeAnimate=function(){var e=this.get("timeline").getTime(),t=this.get("animations"),i=this.get("_pause").pauseTime;return(0,r.S6)(t,function(t){t.startTime=t.startTime+(e-i),t._paused=!1,t._pauseTime=null,t.resumeCallback&&t.resumeCallback()}),this.set("_pause",{isPaused:!1}),this.set("animations",t),this},t.prototype.emitDelegation=function(e,t){var i,n=this,o=t.propagationPath;this.getEvents(),"mouseenter"===e?i=t.fromShape:"mouseleave"===e&&(i=t.toShape);for(var a=this,l=0;l=e&&i.minY<=t&&i.maxY>=t},t.prototype.afterAttrsChange=function(t){e.prototype.afterAttrsChange.call(this,t),this.clearCacheBBox()},t.prototype.getBBox=function(){var e=this.cfg.bbox;return e||(e=this.calculateBBox(),this.set("bbox",e)),e},t.prototype.getCanvasBBox=function(){var e=this.cfg.canvasBBox;return e||(e=this.calculateCanvasBBox(),this.set("canvasBBox",e)),e},t.prototype.applyMatrix=function(t){e.prototype.applyMatrix.call(this,t),this.set("canvasBBox",null)},t.prototype.calculateCanvasBBox=function(){var e=this.getBBox(),t=this.getTotalMatrix(),i=e.minX,n=e.minY,r=e.maxX,s=e.maxY;if(t){var a=(0,o.rG)(t,[e.minX,e.minY]),l=(0,o.rG)(t,[e.maxX,e.minY]),h=(0,o.rG)(t,[e.minX,e.maxY]),u=(0,o.rG)(t,[e.maxX,e.maxY]);i=Math.min(a[0],l[0],h[0],u[0]),r=Math.max(a[0],l[0],h[0],u[0]),n=Math.min(a[1],l[1],h[1],u[1]),s=Math.max(a[1],l[1],h[1],u[1])}var d=this.attrs;if(d.shadowColor){var c=d.shadowBlur,g=void 0===c?0:c,p=d.shadowOffsetX,f=void 0===p?0:p,m=d.shadowOffsetY,v=void 0===m?0:m,E=i-g+f,_=r+g+f,C=n-g+v,S=s+g+v;i=Math.min(i,E),r=Math.max(r,_),n=Math.min(n,C),s=Math.max(s,S)}return{x:i,y:n,minX:i,minY:n,maxX:r,maxY:s,width:r-i,height:s-n}},t.prototype.clearCacheBBox=function(){this.set("bbox",null),this.set("canvasBBox",null)},t.prototype.isClipShape=function(){return this.get("isClipShape")},t.prototype.isInShape=function(e,t){return!1},t.prototype.isOnlyHitBox=function(){return!1},t.prototype.isHit=function(e,t){var i=this.get("startArrowShape"),n=this.get("endArrowShape"),r=[e,t,1],o=(r=this.invertFromMatrix(r))[0],s=r[1],a=this._isInBBox(o,s);return this.isOnlyHitBox()?a:!!(a&&!this.isClipped(o,s)&&(this.isInShape(o,s)||i&&i.isHit(o,s)||n&&n.isHit(o,s)))},t}(r.Z);t.Z=s},93924:function(e,t,i){"use strict";i.d(t,{_:function(){return $},C:function(){return X}});var n={};function r(e){return+e}function o(e){return e*e}function s(e){return e*(2-e)}function a(e){return((e*=2)<=1?e*e:--e*(2-e)+1)/2}function l(e){return e*e*e}function h(e){return--e*e*e+1}function u(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}i.r(n),i.d(n,{easeBack:function(){return V},easeBackIn:function(){return U},easeBackInOut:function(){return V},easeBackOut:function(){return H},easeBounce:function(){return F},easeBounceIn:function(){return P},easeBounceInOut:function(){return B},easeBounceOut:function(){return F},easeCircle:function(){return A},easeCircleIn:function(){return T},easeCircleInOut:function(){return A},easeCircleOut:function(){return b},easeCubic:function(){return u},easeCubicIn:function(){return l},easeCubicInOut:function(){return u},easeCubicOut:function(){return h},easeElastic:function(){return z},easeElasticIn:function(){return G},easeElasticInOut:function(){return Y},easeElasticOut:function(){return z},easeExp:function(){return y},easeExpIn:function(){return C},easeExpInOut:function(){return y},easeExpOut:function(){return S},easeLinear:function(){return r},easePoly:function(){return g},easePolyIn:function(){return d},easePolyInOut:function(){return g},easePolyOut:function(){return c},easeQuad:function(){return a},easeQuadIn:function(){return o},easeQuadInOut:function(){return a},easeQuadOut:function(){return s},easeSin:function(){return E},easeSinIn:function(){return m},easeSinInOut:function(){return E},easeSinOut:function(){return v}});var d=function e(t){function i(e){return Math.pow(e,t)}return t=+t,i.exponent=e,i}(3),c=function e(t){function i(e){return 1-Math.pow(1-e,t)}return t=+t,i.exponent=e,i}(3),g=function e(t){function i(e){return((e*=2)<=1?Math.pow(e,t):2-Math.pow(2-e,t))/2}return t=+t,i.exponent=e,i}(3),p=Math.PI,f=p/2;function m(e){return 1==+e?1:1-Math.cos(e*f)}function v(e){return Math.sin(e*f)}function E(e){return(1-Math.cos(p*e))/2}function _(e){return(Math.pow(2,-10*e)-9765625e-10)*1.0009775171065494}function C(e){return _(1-+e)}function S(e){return 1-_(e)}function y(e){return((e*=2)<=1?_(1-e):2-_(e-1))/2}function T(e){return 1-Math.sqrt(1-e*e)}function b(e){return Math.sqrt(1- --e*e)}function A(e){return((e*=2)<=1?1-Math.sqrt(1-e*e):Math.sqrt(1-(e-=2)*e)+1)/2}var R=4/11,L=6/11,N=8/11,I=3/4,w=9/11,O=10/11,x=15/16,D=21/22,M=63/64,k=1/(4/11)/(4/11);function P(e){return 1-F(1-e)}function F(e){return(e=+e)Math.PI/2?Math.PI-l:l))*(t/2*(1/Math.sin(a/2)))-t/2||0,yExtra:Math.cos((h=h>Math.PI/2?Math.PI-h:h)-a/2)*(t/2*(1/Math.sin(a/2)))-t/2||0}}r("rect",s),r("image",s),r("circle",a),r("marker",a),r("polyline",function(e){for(var t=e.attr().points,i=[],n=[],r=0;r["default","Event","Base","AbstractCanvas","AbstractGroup","AbstractShape","PathUtil","getBBoxMethod","registerBBox","getTextHeight","assembleFont","isAllowCapture","multiplyVec2","invert","getOffScreenContext","registerEasing","version"].indexOf(s)&&(o[s]=(function(e){return r[e]}).bind(0,s));i.d(t,o);var a=i(15294),o={};for(var s in a)0>["default","Event","Base","AbstractCanvas","AbstractGroup","AbstractShape","PathUtil","getBBoxMethod","registerBBox","getTextHeight","assembleFont","isAllowCapture","multiplyVec2","invert","getOffScreenContext","registerEasing","version"].indexOf(s)&&(o[s]=(function(e){return a[e]}).bind(0,s));i.d(t,o);var l=i(89473),h=i(2667),u=i(97050),d=i(31841),c=i(15032),g=i(46556),p=i(8723),f=i(77341),m=i(41482),v=i(67052),E=i(93924),_="0.5.11"},15294:function(){},52:function(){},41482:function(e,t,i){"use strict";function n(e,t){var i=[],n=e[0],r=e[1],o=e[2],s=e[3],a=e[4],l=e[5],h=e[6],u=e[7],d=e[8],c=t[0],g=t[1],p=t[2],f=t[3],m=t[4],v=t[5],E=t[6],_=t[7],C=t[8];return i[0]=c*n+g*s+p*h,i[1]=c*r+g*a+p*u,i[2]=c*o+g*l+p*d,i[3]=f*n+m*s+v*h,i[4]=f*r+m*a+v*u,i[5]=f*o+m*l+v*d,i[6]=E*n+_*s+C*h,i[7]=E*r+_*a+C*u,i[8]=E*o+_*l+C*d,i}function r(e,t){var i=[],n=t[0],r=t[1];return i[0]=e[0]*n+e[3]*r+e[6],i[1]=e[1]*n+e[4]*r+e[7],i}function o(e){var t=[],i=e[0],n=e[1],r=e[2],o=e[3],s=e[4],a=e[5],l=e[6],h=e[7],u=e[8],d=u*s-a*h,c=-u*o+a*l,g=h*o-s*l,p=i*d+n*c+r*g;return p?(p=1/p,t[0]=d*p,t[1]=(-u*n+r*h)*p,t[2]=(a*n-r*s)*p,t[3]=c*p,t[4]=(u*i-r*l)*p,t[5]=(-a*i+r*o)*p,t[6]=g*p,t[7]=(-h*i+n*l)*p,t[8]=(s*i-n*o)*p,t):null}i.d(t,{U_:function(){return o},rG:function(){return r},xq:function(){return n}})},67052:function(e,t,i){"use strict";i.d(t,{L:function(){return r}});var n=null;function r(){if(!n){var e=document.createElement("canvas");e.width=1,e.height=1,n=e.getContext("2d")}return n}},47575:function(e,t,i){"use strict";i.r(t),i.d(t,{catmullRomToBezier:function(){return l},fillPath:function(){return w},fillPathByDiff:function(){return D},formatPath:function(){return P},intersection:function(){return N},parsePathArray:function(){return m},parsePathString:function(){return a},pathToAbsolute:function(){return u},pathToCurve:function(){return p},rectPath:function(){return y}});var n=i(21030),r=" \n\v\f\r \xa0 ᠎              \u2028\u2029",o=RegExp("([a-z])["+r+",]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?["+r+"]*,?["+r+"]*)+)","ig"),s=RegExp("(-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)["+r+"]*,?["+r+"]*","ig"),a=function(e){if(!e)return null;if((0,n.kJ)(e))return e;var t={a:7,c:6,o:2,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,u:3,z:0},i=[];return String(e).replace(o,function(n,r,o){var a=[],l=r.toLowerCase();if(o.replace(s,function(e,t){t&&a.push(+t)}),"m"===l&&a.length>2&&(i.push([r].concat(a.splice(0,2))),l="l",r="m"===r?"l":"L"),"o"===l&&1===a.length&&i.push([r,a[0]]),"r"===l)i.push([r].concat(a));else for(;a.length>=t[l]&&(i.push([r].concat(a.splice(0,t[l]))),t[l]););return e}),i},l=function(e,t){for(var i=[],n=0,r=e.length;r-2*!t>n;n+=2){var o=[{x:+e[n-2],y:+e[n-1]},{x:+e[n],y:+e[n+1]},{x:+e[n+2],y:+e[n+3]},{x:+e[n+4],y:+e[n+5]}];t?n?r-4===n?o[3]={x:+e[0],y:+e[1]}:r-2===n&&(o[2]={x:+e[0],y:+e[1]},o[3]={x:+e[2],y:+e[3]}):o[0]={x:+e[r-2],y:+e[r-1]}:r-4===n?o[3]=o[2]:n||(o[0]={x:+e[n],y:+e[n+1]}),i.push(["C",(-o[0].x+6*o[1].x+o[2].x)/6,(-o[0].y+6*o[1].y+o[2].y)/6,(o[1].x+6*o[2].x-o[3].x)/6,(o[1].y+6*o[2].y-o[3].y)/6,o[2].x,o[2].y])}return i},h=function(e,t,i,n,r){var o=[];if(null===r&&null===n&&(n=i),e=+e,t=+t,i=+i,n=+n,null!==r){var s=Math.PI/180,a=e+i*Math.cos(-n*s),l=e+i*Math.cos(-r*s),h=t+i*Math.sin(-n*s),u=t+i*Math.sin(-r*s);o=[["M",a,h],["A",i,i,0,+(r-n>180),0,l,u]]}else o=[["M",e,t],["m",0,-n],["a",i,n,0,1,1,0,2*n],["a",i,n,0,1,1,0,-2*n],["z"]];return o},u=function(e){if(!(e=a(e))||!e.length)return[["M",0,0]];var t,i,n=[],r=0,o=0,s=0,u=0,d=0;"M"===e[0][0]&&(r=+e[0][1],o=+e[0][2],s=r,u=o,d++,n[0]=["M",r,o]);for(var c=3===e.length&&"M"===e[0][0]&&"R"===e[1][0].toUpperCase()&&"Z"===e[2][0].toUpperCase(),g=void 0,p=void 0,f=d,m=e.length;f1&&(i*=y=Math.sqrt(y),n*=y);var T=i*i,b=n*n,A=(o===s?-1:1)*Math.sqrt(Math.abs((T*b-T*S*S-b*C*C)/(T*S*S+b*C*C)));p=A*i*S/n+(e+a)/2,f=-(A*n)*C/i+(t+l)/2,d=Math.asin(((t-f)/n).toFixed(9)),c=Math.asin(((l-f)/n).toFixed(9)),d=ec&&(d-=2*Math.PI),!s&&c>d&&(c-=2*Math.PI)}var R=c-d;if(Math.abs(R)>m){var L=c,N=a,I=l;E=g(a=p+i*Math.cos(c=d+m*(s&&c>d?1:-1)),l=f+n*Math.sin(c),i,n,r,0,s,N,I,[c,L,p,f])}R=c-d;var w=Math.cos(d),O=Math.cos(c),x=Math.tan(R/4),D=4/3*i*x,M=4/3*n*x,k=[e,t],P=[e+D*Math.sin(d),t-M*w],F=[a+D*Math.sin(c),l-M*O],B=[a,l];if(P[0]=2*k[0]-P[0],P[1]=2*k[1]-P[1],h)return[P,F,B].concat(E);E=[P,F,B].concat(E).join().split(",");for(var U=[],H=0,V=E.length;H7){e[t].shift();for(var o=e[t];o.length;)a[t]="A",r&&(l[t]="A"),e.splice(t++,0,["C"].concat(o.splice(0,6)));e.splice(t,1),i=Math.max(n.length,r&&r.length||0)}},v=function(e,t,o,s,a){e&&t&&"M"===e[a][0]&&"M"!==t[a][0]&&(t.splice(a,0,["M",s.x,s.y]),o.bx=0,o.by=0,o.x=e[a][1],o.y=e[a][2],i=Math.max(n.length,r&&r.length||0))};i=Math.max(n.length,r&&r.length||0);for(var E=0;E1?1:l<0?0:l)/2,u=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],d=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],c=0,g=0;g<12;g++){var p=h*u[g]+h,f=v(p,e,i,r,s),m=v(p,t,n,o,a),E=f*f+m*m;c+=d[g]*Math.sqrt(E)}return h*c},_=function(e,t,i,n,r,o,s,a){for(var l,h,u,d,c,g=[],p=[[],[]],f=0;f<2;++f){if(0===f?(h=6*e-12*i+6*r,l=-3*e+9*i-9*r+3*s,u=3*i-3*e):(h=6*t-12*n+6*o,l=-3*t+9*n-9*o+3*a,u=3*n-3*t),1e-12>Math.abs(l)){if(1e-12>Math.abs(h))continue;(d=-u/h)>0&&d<1&&g.push(d);continue}var m=h*h-4*u*l,v=Math.sqrt(m);if(!(m<0)){var E=(-h+v)/(2*l);E>0&&E<1&&g.push(E);var _=(-h-v)/(2*l);_>0&&_<1&&g.push(_)}}for(var C=g.length,S=C;C--;)c=1-(d=g[C]),p[0][C]=c*c*c*e+3*c*c*d*i+3*c*d*d*r+d*d*d*s,p[1][C]=c*c*c*t+3*c*c*d*n+3*c*d*d*o+d*d*d*a;return p[0][S]=e,p[1][S]=t,p[0][S+1]=s,p[1][S+1]=a,p[0].length=p[1].length=S+2,{min:{x:Math.min.apply(0,p[0]),y:Math.min.apply(0,p[1])},max:{x:Math.max.apply(0,p[0]),y:Math.max.apply(0,p[1])}}},C=function(e,t,i,n,r,o,s,a){if(!(Math.max(e,i)Math.max(r,s)||Math.max(t,n)Math.max(o,a))){var l=(e-i)*(o-a)-(t-n)*(r-s);if(l){var h=((e*n-t*i)*(r-s)-(e-i)*(r*a-o*s))/l,u=((e*n-t*i)*(o-a)-(t-n)*(r*a-o*s))/l,d=+h.toFixed(2),c=+u.toFixed(2);if(!(d<+Math.min(e,i).toFixed(2)||d>+Math.max(e,i).toFixed(2)||d<+Math.min(r,s).toFixed(2)||d>+Math.max(r,s).toFixed(2)||c<+Math.min(t,n).toFixed(2)||c>+Math.max(t,n).toFixed(2)||c<+Math.min(o,a).toFixed(2)||c>+Math.max(o,a).toFixed(2)))return{x:h,y:u}}}},S=function(e,t,i){return t>=e.x&&t<=e.x+e.width&&i>=e.y&&i<=e.y+e.height},y=function(e,t,i,n,r){if(r)return[["M",+e+ +r,t],["l",i-2*r,0],["a",r,r,0,0,1,r,r],["l",0,n-2*r],["a",r,r,0,0,1,-r,r],["l",2*r-i,0],["a",r,r,0,0,1,-r,-r],["l",0,2*r-n],["a",r,r,0,0,1,r,-r],["z"]];var o=[["M",e,t],["l",i,0],["l",0,n],["l",-i,0],["z"]];return o.parsePathArray=m,o},T=function(e,t,i,n){return null===e&&(e=t=i=n=0),null===t&&(t=e.y,i=e.width,n=e.height,e=e.x),{x:e,y:t,width:i,w:i,height:n,h:n,x2:e+i,y2:t+n,cx:e+i/2,cy:t+n/2,r1:Math.min(i,n)/2,r2:Math.max(i,n)/2,r0:Math.sqrt(i*i+n*n)/2,path:y(e,t,i,n),vb:[e,t,i,n].join(" ")}},b=function(e,t,i,r,o,s,a,l){(0,n.kJ)(e)||(e=[e,t,i,r,o,s,a,l]);var h=_.apply(null,e);return T(h.min.x,h.min.y,h.max.x-h.min.x,h.max.y-h.min.y)},A=function(e,t,i,n,r,o,s,a,l){var h=1-l,u=Math.pow(h,3),d=Math.pow(h,2),c=l*l,g=c*l,p=e+2*l*(i-e)+c*(r-2*i+e),f=t+2*l*(n-t)+c*(o-2*n+t),m=i+2*l*(r-i)+c*(s-2*r+i),v=n+2*l*(o-n)+c*(a-2*o+n),E=90-180*Math.atan2(p-m,f-v)/Math.PI;return{x:u*e+3*d*l*i+3*h*l*l*r+g*s,y:u*t+3*d*l*n+3*h*l*l*o+g*a,m:{x:p,y:f},n:{x:m,y:v},start:{x:h*e+l*i,y:h*t+l*n},end:{x:h*r+l*s,y:h*o+l*a},alpha:E}},R=function(e,t,i){var n,r,o=b(e),s=b(t);if(n=o,r=s,n=T(n),!(S(r=T(r),n.x,n.y)||S(r,n.x2,n.y)||S(r,n.x,n.y2)||S(r,n.x2,n.y2)||S(n,r.x,r.y)||S(n,r.x2,r.y)||S(n,r.x,r.y2)||S(n,r.x2,r.y2))&&((!(n.xr.x))&&(!(r.xn.x))||(!(n.yr.y))&&(!(r.yn.y))))return i?0:[];for(var a=E.apply(0,e),l=E.apply(0,t),h=~~(a/8),u=~~(l/8),d=[],c=[],g={},p=i?0:[],f=0;fMath.abs(y.x-_.x)?"y":"x",I=.001>Math.abs(L.x-R.x)?"y":"x",w=C(_.x,_.y,y.x,y.y,R.x,R.y,L.x,L.y);if(w){if(g[w.x.toFixed(4)]===w.y.toFixed(4))continue;g[w.x.toFixed(4)]=w.y.toFixed(4);var O=_.t+Math.abs((w[N]-_[N])/(y[N]-_[N]))*(y.t-_.t),x=R.t+Math.abs((w[I]-R[I])/(L[I]-R[I]))*(L.t-R.t);O>=0&&O<=1&&x>=0&&x<=1&&(i?p+=1:p.push({x:w.x,y:w.y,t1:O,t2:x}))}}return p},L=function(e,t,i){e=p(e),t=p(t);for(var n,r,o,s,a,l,h,u,d,c,g=i?0:[],f=0,m=e.length;f=3&&(3===e.length&&t.push("Q"),t=t.concat(e[1])),2===e.length&&t.push("L"),t=t.concat(e[e.length-1])})}(e,t,i));else{var r=[].concat(e);"M"===r[0]&&(r[0]="L");for(var o=0;o<=i-1;o++)n.push(r)}return n},w=function(e,t){if(1===e.length)return e;var i=e.length-1,n=t.length-1,r=i/n,o=[];if(1===e.length&&"M"===e[0][0]){for(var s=0;s=0;l--)s=o[l].index,"add"===o[l].type?e.splice(s,0,[].concat(e[s])):e.splice(s,1)}var d=r-(n=e.length);if(n0)i=M(i,e[n-1],1);else{e[n]=t[n];break}}e[n]=["Q"].concat(i.reduce(function(e,t){return e.concat(t)},[]));break;case"T":e[n]=["T"].concat(i[0]);break;case"C":if(i.length<3){if(n>0)i=M(i,e[n-1],2);else{e[n]=t[n];break}}e[n]=["C"].concat(i.reduce(function(e,t){return e.concat(t)},[]));break;case"S":if(i.length<2){if(n>0)i=M(i,e[n-1],1);else{e[n]=t[n];break}}e[n]=["S"].concat(i.reduce(function(e,t){return e.concat(t)},[]));break;default:e[n]=t[n]}return e}},8723:function(e,t,i){"use strict";i.d(t,{$O:function(){return a},FE:function(){return o},mY:function(){return s}});var n=i(77341),r=i(67052);function o(e,t,i){var r=1;if((0,n.HD)(e)&&(r=e.split("\n").length),r>1)return t*r+(i?i-t:.14*t)*(r-1);return t}function s(e,t){var i=(0,r.L)(),o=0;if((0,n.kK)(e)||""===e)return o;if(i.save(),i.font=t,(0,n.HD)(e)&&e.includes("\n")){var s=e.split("\n");(0,n.S6)(s,function(e){var t=i.measureText(e).width;oMath.abs(e-t)}function a(e,t){var i=(0,r.VV)(e),n=(0,r.VV)(t);return{x:i,y:n,width:(0,r.Fp)(e)-i,height:(0,r.Fp)(t)-n}}function l(e,t,i,n){return{minX:(0,r.VV)([e,i]),maxX:(0,r.Fp)([e,i]),minY:(0,r.VV)([t,n]),maxY:(0,r.Fp)([t,n])}}function h(e){return(e+2*Math.PI)%(2*Math.PI)}var u=i(31437),d={box:function(e,t,i,n){return a([e,i],[t,n])},length:function(e,t,i,n){return o(e,t,i,n)},pointAt:function(e,t,i,n,r){return{x:(1-r)*e+r*i,y:(1-r)*t+r*n}},pointDistance:function(e,t,i,n,r,s){var a=(i-e)*(r-e)+(n-t)*(s-t);return a<0?o(e,t,r,s):a>(i-e)*(i-e)+(n-t)*(n-t)?o(i,n,r,s):this.pointToLine(e,t,i,n,r,s)},pointToLine:function(e,t,i,n,r,o){var s=[i-e,n-t];if(u.I6(s,[0,0]))return Math.sqrt((r-e)*(r-e)+(o-t)*(o-t));var a=[-s[1],s[0]];return u.Fv(a,a),Math.abs(u.AK([r-e,o-t],a))},tangentAngle:function(e,t,i,n){return Math.atan2(n-t,i-e)}};function c(e,t,i,n,r,s){var a,l=1/0,h=[i,n],u=20;s&&s>200&&(u=s/10);for(var d=1/u,c=d/10,g=0;g<=u;g++){var p=g*d,f=[r.apply(null,e.concat([p])),r.apply(null,t.concat([p]))],m=o(h[0],h[1],f[0],f[1]);m=0&&m=0?[r]:[]}function f(e,t,i,n){return 2*(1-n)*(t-e)+2*n*(i-t)}function m(e,t,i,n,r,o,s){var a=g(e,i,r,s),l=g(t,n,o,s),h=d.pointAt(e,t,i,n,s),u=d.pointAt(i,n,r,o,s);return[[e,t,h.x,h.y,a,l],[a,l,u.x,u.y,r,o]]}var v={box:function(e,t,i,n,r,o){var s=p(e,i,r)[0],l=p(t,n,o)[0],h=[e,r],u=[t,o];return void 0!==s&&h.push(g(e,i,r,s)),void 0!==l&&u.push(g(t,n,o,l)),a(h,u)},length:function(e,t,i,n,r,s){return function e(t,i,n,r,s,a,l){if(0===l)return(o(t,i,n,r)+o(n,r,s,a)+o(t,i,s,a))/2;var h=m(t,i,n,r,s,a,.5),u=h[0],d=h[1];return u.push(l-1),d.push(l-1),e.apply(null,u)+e.apply(null,d)}(e,t,i,n,r,s,3)},nearestPoint:function(e,t,i,n,r,o,s,a){return c([e,i,r],[t,n,o],s,a,g)},pointDistance:function(e,t,i,n,r,s,a,l){var h=this.nearestPoint(e,t,i,n,r,s,a,l);return o(h.x,h.y,a,l)},interpolationAt:g,pointAt:function(e,t,i,n,r,o,s){return{x:g(e,i,r,s),y:g(t,n,o,s)}},divide:function(e,t,i,n,r,o,s){return m(e,t,i,n,r,o,s)},tangentAngle:function(e,t,i,n,r,o,s){var a=f(e,i,r,s);return h(Math.atan2(f(t,n,o,s),a))}};function E(e,t,i,n,r){var o=1-r;return o*o*o*e+3*t*r*o*o+3*i*r*r*o+n*r*r*r}function _(e,t,i,n,r){var o=1-r;return 3*(o*o*(t-e)+2*o*r*(i-t)+r*r*(n-i))}function C(e,t,i,n){var r,o,a,l=-3*e+9*t-9*i+3*n,h=6*e-12*t+6*i,u=3*t-3*e,d=[];if(s(l,0))!s(h,0)&&(r=-u/h)>=0&&r<=1&&d.push(r);else{var c=h*h-4*l*u;s(c,0)?d.push(-h/(2*l)):c>0&&(r=(-h+(a=Math.sqrt(c)))/(2*l),o=(-h-a)/(2*l),r>=0&&r<=1&&d.push(r),o>=0&&o<=1&&d.push(o))}return d}function S(e,t,i,n,r,o,s,a,l){var h=E(e,i,r,s,l),u=E(t,n,o,a,l),c=d.pointAt(e,t,i,n,l),g=d.pointAt(i,n,r,o,l),p=d.pointAt(r,o,s,a,l),f=d.pointAt(c.x,c.y,g.x,g.y,l),m=d.pointAt(g.x,g.y,p.x,p.y,l);return[[e,t,c.x,c.y,f.x,f.y,h,u],[h,u,m.x,m.y,p.x,p.y,s,a]]}var y={extrema:C,box:function(e,t,i,n,r,o,s,l){for(var h=[e,s],u=[t,l],d=C(e,i,r,s),c=C(t,n,o,l),g=0;g0?i:-1*i}var b={box:function(e,t,i,n){return{x:e-i,y:t-n,width:2*i,height:2*n}},length:function(e,t,i,n){return Math.PI*(3*(i+n)-Math.sqrt((3*i+n)*(i+3*n)))},nearestPoint:function(e,t,i,n,r,o){if(0===i||0===n)return{x:e,y:t};for(var s,a,l=r-e,h=o-t,u=Math.abs(l),d=Math.abs(h),c=i*i,g=n*n,p=Math.PI/4,f=0;f<4;f++){s=i*Math.cos(p),a=n*Math.sin(p);var m=(c-g)*Math.pow(Math.cos(p),3)/i,v=(g-c)*Math.pow(Math.sin(p),3)/n,E=s-m,_=a-v,C=u-m,S=d-v,y=Math.hypot(_,E),b=Math.hypot(S,C);p+=y*Math.asin((E*S-_*C)/(y*b))/Math.sqrt(c+g-s*s-a*a),p=Math.min(Math.PI/2,Math.max(0,p))}return{x:e+T(s,l),y:t+T(a,h)}},pointDistance:function(e,t,i,n,r,s){var a=this.nearestPoint(e,t,i,n,r,s);return o(a.x,a.y,r,s)},pointAt:function(e,t,i,n,r){var o=2*Math.PI*r;return{x:e+i*Math.cos(o),y:t+n*Math.sin(o)}},tangentAngle:function(e,t,i,n,r){var o=2*Math.PI*r;return h(Math.atan2(n*Math.cos(o),-i*Math.sin(o)))}};function A(e,t,i,n,r,o){return i*Math.cos(r)*Math.cos(o)-n*Math.sin(r)*Math.sin(o)+e}function R(e,t,i,n,r,o){return i*Math.sin(r)*Math.cos(o)+n*Math.cos(r)*Math.sin(o)+t}function L(e,t,i){return{x:e*Math.cos(i),y:t*Math.sin(i)}}function N(e,t,i){var n=Math.cos(i),r=Math.sin(i);return[e*n-t*r,e*r+t*n]}var I={box:function(e,t,i,n,r,o,s){for(var a=Math.atan(-n/i*Math.tan(r)),l=1/0,h=-1/0,u=[o,s],d=-(2*Math.PI);d<=2*Math.PI;d+=Math.PI){var c=a+d;oh&&(h=g)}for(var p=Math.atan(n/(i*Math.tan(r))),f=1/0,m=-1/0,v=[o,s],d=-(2*Math.PI);d<=2*Math.PI;d+=Math.PI){var E=p+d;om&&(m=_)}return{x:l,y:f,width:h-l,height:m-f}},length:function(e,t,i,n,r,o,s){},nearestPoint:function(e,t,i,n,r,o,s,a,l){var h,u=N(a-e,l-t,-r),d=u[0],c=u[1],g=b.nearestPoint(0,0,i,n,d,c),p=(h=g.x,(Math.atan2(g.y*i,h*n)+2*Math.PI)%(2*Math.PI));ps&&(g=L(i,n,s));var f=N(g.x,g.y,r);return{x:f[0]+e,y:f[1]+t}},pointDistance:function(e,t,i,n,r,s,a,l,h){var u=this.nearestPoint(e,t,i,n,l,h);return o(u.x,u.y,l,h)},pointAt:function(e,t,i,n,r,o,s,a){var l=(s-o)*a+o;return{x:A(e,t,i,n,r,l),y:R(e,t,i,n,r,l)}},tangentAngle:function(e,t,i,n,r,o,s,a){var l=(s-o)*a+o,u=-1*i*Math.cos(r)*Math.sin(l)-n*Math.sin(r)*Math.cos(l);return h(Math.atan2(-1*i*Math.sin(r)*Math.sin(l)+n*Math.cos(r)*Math.cos(l),u))}};function w(e){for(var t=0,i=[],n=0;n1||t<0||e.length<2)return null;var i=w(e),n=i.segments,r=i.totalLength;if(0===r)return{x:e[0][0],y:e[0][1]};for(var o=0,s=null,a=0;a=o&&t<=o+c){var g=(t-o)/c;s=d.pointAt(h[0],h[1],u[0],u[1],g);break}o+=c}return s}(e,t)},pointDistance:function(e,t,i){return function(e,t,i){for(var n=1/0,r=0;r1||t<0||e.length<2)return 0;for(var i=w(e),n=i.segments,r=i.totalLength,o=0,s=0,a=0;a=o&&t<=o+d){s=Math.atan2(u[1]-h[1],u[0]-h[0]);break}o+=d}return s}(e,t)}}},75227:function(e,t,i){"use strict";i.d(t,{sg:function(){return d0},x1:function(){return c1}});var n,r,o,s,a,l,h,u,d,c,g,p,f,m,v,E,_,C,S,y,T,b,A,R,L,N,I,w,O,x,D,M,k,P,F,B,U,H,V,W,G,z,Y,K,$,X,j,q,Z,J,Q,ee,et,ei={};i.r(ei),i.d(ei,{assign:function(){return to},default:function(){return tA},defaultI18n:function(){return th},format:function(){return tT},parse:function(){return tb},setGlobalDateI18n:function(){return td},setGlobalDateMasks:function(){return ty}});var en={};i.r(en),i.d(en,{Arc:function(){return iU},DataMarker:function(){return iW},DataRegion:function(){return iG},Html:function(){return iX},Image:function(){return iV},Line:function(){return iF},Region:function(){return iH},RegionFilter:function(){return iz},Shape:function(){return iY},Text:function(){return iB}});var er={};i.r(er),i.d(er,{ellipsisHead:function(){return iQ},ellipsisMiddle:function(){return i1},ellipsisTail:function(){return i0},getDefault:function(){return iJ}});var eo={};i.r(eo),i.d(eo,{equidistance:function(){return ne},equidistanceWithReverseBoth:function(){return nt},getDefault:function(){return i3},reserveBoth:function(){return i8},reserveFirst:function(){return i9},reserveLast:function(){return i7}});var es={};i.r(es),i.d(es,{fixedAngle:function(){return nr},getDefault:function(){return nn},unfixedAngle:function(){return no}});var ea={};i.r(ea),i.d(ea,{autoEllipsis:function(){return er},autoHide:function(){return eo},autoRotate:function(){return es}});var el={};i.r(el),i.d(el,{Base:function(){return nl},Circle:function(){return nu},Html:function(){return nf},Line:function(){return nh}});var eh={};i.r(eh),i.d(eh,{CONTAINER_CLASS:function(){return nL},CROSSHAIR_X:function(){return nM},CROSSHAIR_Y:function(){return nk},LIST_CLASS:function(){return nI},LIST_ITEM_CLASS:function(){return nw},MARKER_CLASS:function(){return nO},NAME_CLASS:function(){return nD},TITLE_CLASS:function(){return nN},VALUE_CLASS:function(){return nx}});var eu={};i.r(eu),i.d(eu,{Base:function(){return sF},Circle:function(){return sB},Ellipse:function(){return sU},Image:function(){return sV},Line:function(){return sz},Marker:function(){return sK},Path:function(){return s0},Polygon:function(){return s2},Polyline:function(){return s4},Rect:function(){return s5},Text:function(){return s6}});var ed={};i.r(ed),i.d(ed,{Canvas:function(){return s7},Group:function(){return sP},Shape:function(){return eu},getArcParams:function(){return sC},version:function(){return s8}});var ec={};i.r(ec),i.d(ec,{Base:function(){return au},Circle:function(){return ad},Dom:function(){return ac},Ellipse:function(){return ag},Image:function(){return ap},Line:function(){return af},Marker:function(){return aE},Path:function(){return a_},Polygon:function(){return aC},Polyline:function(){return aS},Rect:function(){return ay},Text:function(){return aL}});var eg={};i.r(eg),i.d(eg,{Canvas:function(){return aV},Group:function(){return ah},Shape:function(){return ec},version:function(){return aW}});var ep={};i.r(ep),i.d(ep,{cluster:function(){return vy},hierarchy:function(){return fC},pack:function(){return ff},packEnclose:function(){return p8},packSiblings:function(){return fu},partition:function(){return vm},stratify:function(){return vL},tree:function(){return vx},treemap:function(){return vF},treemapBinary:function(){return vB},treemapDice:function(){return vf},treemapResquarify:function(){return vH},treemapSlice:function(){return vD},treemapSliceDice:function(){return vU},treemapSquarify:function(){return vP}});var ef=i(97582),em=i(21030);(n=O||(O={})).FORE="fore",n.MID="mid",n.BG="bg",(r=x||(x={})).TOP="top",r.TOP_LEFT="top-left",r.TOP_RIGHT="top-right",r.RIGHT="right",r.RIGHT_TOP="right-top",r.RIGHT_BOTTOM="right-bottom",r.LEFT="left",r.LEFT_TOP="left-top",r.LEFT_BOTTOM="left-bottom",r.BOTTOM="bottom",r.BOTTOM_LEFT="bottom-left",r.BOTTOM_RIGHT="bottom-right",r.RADIUS="radius",r.CIRCLE="circle",r.NONE="none",(o=D||(D={})).AXIS="axis",o.GRID="grid",o.LEGEND="legend",o.TOOLTIP="tooltip",o.ANNOTATION="annotation",o.SLIDER="slider",o.SCROLLBAR="scrollbar",o.OTHER="other";var ev={FORE:3,MID:2,BG:1};(s=M||(M={})).BEFORE_RENDER="beforerender",s.AFTER_RENDER="afterrender",s.BEFORE_PAINT="beforepaint",s.AFTER_PAINT="afterpaint",s.BEFORE_CHANGE_DATA="beforechangedata",s.AFTER_CHANGE_DATA="afterchangedata",s.BEFORE_CLEAR="beforeclear",s.AFTER_CLEAR="afterclear",s.BEFORE_DESTROY="beforedestroy",s.BEFORE_CHANGE_SIZE="beforechangesize",s.AFTER_CHANGE_SIZE="afterchangesize",(a=k||(k={})).BEFORE_DRAW_ANIMATE="beforeanimate",a.AFTER_DRAW_ANIMATE="afteranimate",(l=P||(P={})).MOUSE_ENTER="plot:mouseenter",l.MOUSE_DOWN="plot:mousedown",l.MOUSE_MOVE="plot:mousemove",l.MOUSE_UP="plot:mouseup",l.MOUSE_LEAVE="plot:mouseleave",l.TOUCH_START="plot:touchstart",l.TOUCH_MOVE="plot:touchmove",l.TOUCH_END="plot:touchend",l.TOUCH_CANCEL="plot:touchcancel",l.CLICK="plot:click",l.DBLCLICK="plot:dblclick",l.CONTEXTMENU="plot:contextmenu",l.LEAVE="plot:leave",l.ENTER="plot:enter",(h=F||(F={})).ACTIVE="active",h.INACTIVE="inactive",h.SELECTED="selected",h.DEFAULT="default";var eE=["color","shape","size"],e_="_origin",eC={};function eS(e){B||(B=document.createElement("table"),U=document.createElement("tr"),H=/^\s*<(\w+|!)[^>]*>/,V={tr:document.createElement("tbody"),tbody:B,thead:B,tfoot:B,td:U,th:U,"*":document.createElement("div")});var t=H.test(e)&&RegExp.$1;t&&t in V||(t="*");var i=V[t];e="string"==typeof e?e.replace(/(^\s*)|(\s*$)/g,""):e,i.innerHTML=""+e;var n=i.childNodes[0];return n&&i.contains(n)&&i.removeChild(n),n}function ey(e,t){if(e)for(var i in t)t.hasOwnProperty(i)&&(e.style[i]=t[i]);return e}function eT(e){return"number"==typeof e&&!isNaN(e)}function eb(e,t,i,n){var r=i,o=n;if(t){var s,a=(s=getComputedStyle(e),{width:(e.clientWidth||parseInt(s.width,10))-parseInt(s.paddingLeft,10)-parseInt(s.paddingRight,10),height:(e.clientHeight||parseInt(s.height,10))-parseInt(s.paddingTop,10)-parseInt(s.paddingBottom,10)});r=a.width?a.width:r,o=a.height?a.height:o}return{width:Math.max(eT(r)?r:1,1),height:Math.max(eT(o)?o:1,1)}}var eA=i(90494),eR=function(e){function t(t){var i=e.call(this)||this;i.destroyed=!1;var n=t.visible;return i.visible=void 0===n||n,i}return(0,ef.ZT)(t,e),t.prototype.show=function(){this.visible||this.changeVisible(!0)},t.prototype.hide=function(){this.visible&&this.changeVisible(!1)},t.prototype.destroy=function(){this.off(),this.destroyed=!0},t.prototype.changeVisible=function(e){this.visible!==e&&(this.visible=e)},t}(eA.Z),eL=i(98190),eN=function(){function e(e){var t=e.xField,i=e.yField,n=e.adjustNames,r=e.dimValuesMap;this.adjustNames=void 0===n?["x","y"]:n,this.xField=t,this.yField=i,this.dimValuesMap=r}return e.prototype.isAdjust=function(e){return this.adjustNames.indexOf(e)>=0},e.prototype.getAdjustRange=function(e,t,i){var n,r,o=this.yField,s=i.indexOf(t),a=i.length;return!o&&this.isAdjust("y")?(n=0,r=1):a>1?(n=i[0===s?0:s-1],r=i[s===a-1?a-1:s+1],0!==s?n+=(t-n)/2:n-=(r-t)/2,s!==a-1?r-=(r-t)/2:r+=(t-i[a-2])/2):(n=0===t?0:t-.5,r=0===t?1:t+.5),{pre:n,next:r}},e.prototype.adjustData=function(e,t){var i=this,n=this.getDimValues(t);em.S6(e,function(e,t){em.S6(n,function(n,r){i.adjustDim(r,n,e,t)})})},e.prototype.groupData=function(e,t){return em.S6(e,function(e){void 0===e[t]&&(e[t]=0)}),em.vM(e,t)},e.prototype.adjustDim=function(e,t,i,n){},e.prototype.getDimValues=function(e){var t=this.xField,i=this.yField,n=em.f0({},this.dimValuesMap),r=[];return t&&this.isAdjust("x")&&r.push(t),i&&this.isAdjust("y")&&r.push(i),r.forEach(function(t){n&&n[t]||(n[t]=em.I(e,t).sort(function(e,t){return e-t}))}),!i&&this.isAdjust("y")&&(n.y=[0,1]),n},e}(),eI={},ew=function(e){return eI[e.toLowerCase()]},eO=function(e,t){if(ew(e))throw Error("Adjust type '"+e+"' existed.");eI[e.toLowerCase()]=t},ex=function(e,t){return(ex=Object.setPrototypeOf||({__proto__:[]})instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)};function eD(e,t){function i(){this.constructor=e}ex(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}var eM=function(){return(eM=Object.assign||function(e){for(var t,i=1,n=arguments.length;i=0){var d=this.getIntervalOnlyOffset(i,t);n=l+d}else if(!em.UM(a)&&em.UM(s)&&a>=0){var d=this.getDodgeOnlyOffset(i,t);n=l+d}else if(!em.UM(s)&&!em.UM(a)&&s>=0&&a>=0){var d=this.getIntervalAndDodgeOffset(i,t);n=l+d}else{var c=u*r/i,g=o*c,d=.5*(u-i*c-(i-1)*g)+((t+1)*c+t*g)-.5*c-.5*u;n=(l+h)/2+d}return n},t.prototype.getIntervalOnlyOffset=function(e,t){var i=this.defaultSize,n=this.intervalPadding,r=this.xDimensionLegenth,o=this.groupNum,s=this.dodgeRatio,a=this.maxColumnWidth,l=this.minColumnWidth,h=this.columnWidthRatio,u=n/r,d=(1-(o-1)*u)/o*s/(e-1),c=((1-u*(o-1))/o-d*(e-1))/e;return c=em.UM(h)?c:1/o/e*h,em.UM(a)||(c=Math.min(c,a/r)),em.UM(l)||(c=Math.max(c,l/r)),d=((1-(o-1)*u)/o-e*(c=i?i/r:c))/(e-1),((.5+t)*c+t*d+.5*u)*o-u/2},t.prototype.getDodgeOnlyOffset=function(e,t){var i=this.defaultSize,n=this.dodgePadding,r=this.xDimensionLegenth,o=this.groupNum,s=this.marginRatio,a=this.maxColumnWidth,l=this.minColumnWidth,h=this.columnWidthRatio,u=n/r,d=1*s/(o-1),c=((1-d*(o-1))/o-u*(e-1))/e;return c=h?1/o/e*h:c,em.UM(a)||(c=Math.min(c,a/r)),em.UM(l)||(c=Math.max(c,l/r)),d=(1-((c=i?i/r:c)*e+u*(e-1))*o)/(o-1),((.5+t)*c+t*u+.5*d)*o-d/2},t.prototype.getIntervalAndDodgeOffset=function(e,t){var i=this.intervalPadding,n=this.dodgePadding,r=this.xDimensionLegenth,o=this.groupNum,s=i/r,a=n/r;return((.5+t)*(((1-s*(o-1))/o-a*(e-1))/e)+t*a+.5*s)*o-s/2},t.prototype.getDistribution=function(e){var t=this.adjustDataArray,i=this.cacheMap,n=i[e];return n||(n={},em.S6(t,function(t,i){var r=em.I(t,e);r.length||r.push(0),em.S6(r,function(e){n[e]||(n[e]=[]),n[e].push(i)})}),i[e]=n),n},t}(eN),eP=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return eD(t,e),t.prototype.process=function(e){var t=em.d9(e),i=em.xH(t);return this.adjustData(t,i),t},t.prototype.adjustDim=function(e,t,i){var n=this,r=this.groupData(i,e);return em.S6(r,function(i,r){return n.adjustGroup(i,e,parseFloat(r),t)})},t.prototype.getAdjustOffset=function(e){var t,i=e.pre,n=e.next,r=(n-i)*.05;return t=i+r,(n-r-t)*Math.random()+t},t.prototype.adjustGroup=function(e,t,i,n){var r=this,o=this.getAdjustRange(t,i,n);return em.S6(e,function(e){e[t]=r.getAdjustOffset(o)}),e},t}(eN),eF=em.Ct,eB=function(e){function t(t){var i=e.call(this,t)||this,n=t.adjustNames,r=t.height,o=void 0===r?NaN:r,s=t.size,a=t.reverseOrder;return i.adjustNames=void 0===n?["y"]:n,i.height=o,i.size=void 0===s?10:s,i.reverseOrder=void 0!==a&&a,i}return eD(t,e),t.prototype.process=function(e){var t=this.yField,i=this.reverseOrder,n=t?this.processStack(e):this.processOneDimStack(e);return i?this.reverse(n):n},t.prototype.reverse=function(e){return e.slice(0).reverse()},t.prototype.processStack=function(e){var t=this.xField,i=this.yField,n=this.reverseOrder?this.reverse(e):e,r=new eF,o=new eF;return n.map(function(e){return e.map(function(e){var n,s=em.U2(e,t,0),a=em.U2(e,[i]),l=s.toString();if(a=em.kJ(a)?a[1]:a,!em.UM(a)){var h=a>=0?r:o;h.has(l)||h.set(l,0);var u=h.get(l),d=a+u;return h.set(l,d),eM(eM({},e),((n={})[i]=[u,d],n))}return e})})},t.prototype.processOneDimStack=function(e){var t=this,i=this.xField,n=this.height,r=this.reverseOrder?this.reverse(e):e,o=new eF;return r.map(function(e){return e.map(function(e){var r,s=t.size,a=e[i],l=2*s/n;o.has(a)||o.set(a,l/2);var h=o.get(a);return o.set(a,h+l),eM(eM({},e),((r={}).y=h,r))})})},t}(eN),eU=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return eD(t,e),t.prototype.process=function(e){var t=em.xH(e),i=this.xField,n=this.yField,r=this.getXValuesMaxMap(t),o=Math.max.apply(Math,Object.keys(r).map(function(e){return r[e]}));return em.UI(e,function(e){return em.UI(e,function(e){var t,s,a=e[n],l=e[i];if(em.kJ(a)){var h=(o-r[l])/2;return eM(eM({},e),((t={})[n]=em.UI(a,function(e){return h+e}),t))}var u=(o-a)/2;return eM(eM({},e),((s={})[n]=[u,a+u],s))})})},t.prototype.getXValuesMaxMap=function(e){var t=this,i=this.xField,n=this.yField,r=em.vM(e,function(e){return e[i]});return em.Q8(r,function(e){return t.getDimMaxValue(e,n)})},t.prototype.getDimMaxValue=function(e,t){var i=em.UI(e,function(e){return em.U2(e,t,[])}),n=em.xH(i);return Math.max.apply(Math,n)},t}(eN);eO("Dodge",ek),eO("Jitter",eP),eO("Stack",eB),eO("Symmetric",eU);var eH=function(e,t){return(0,em.HD)(t)?t:e.invert(e.scale(t))},eV=function(){function e(e){this.names=[],this.scales=[],this.linear=!1,this.values=[],this.callback=function(){return[]},this._parseCfg(e)}return e.prototype.mapping=function(){for(var e=this,t=[],i=0;i1?1:Number(t),n=e.length-1,r=Math.floor(n*i),o=n*i-r,s=e[r],a=r===n?s:e[r+1];return eX([e$(s,a,o,0),e$(s,a,o,1),e$(s,a,o,2)])},eJ=function(e){if("#"===e[0]&&7===e.length)return e;W||(W=eK()),W.style.color=e;var t=document.defaultView.getComputedStyle(W,"").getPropertyValue("color");return eX(eW.exec(t)[1].split(/\s*,\s*/).map(function(e){return Number(e)}))},eQ={rgb2arr:ej,gradient:function(e){var t=(0,em.HD)(e)?e.split("-"):e,i=(0,em.UI)(t,function(e){return ej(-1===e.indexOf("#")?eJ(e):e)});return function(e){return eZ(i,e)}},toRGB:(0,em.HP)(eJ),toCSSGradient:function(e){if(/^[r,R,L,l]{1}[\s]*\(/.test(e)){var t,i=void 0;if("l"===e[0]){var n=eG.exec(e),r=+n[1]+90;i=n[2],t="linear-gradient("+r+"deg, "}else if("r"===e[0]){t="radial-gradient(";var n=ez.exec(e);i=n[4]}var o=i.match(eY);return(0,em.S6)(o,function(e,i){var n=e.split(":");t+=n[1]+" "+100*n[0]+"%",i!==o.length-1&&(t+=", ")}),t+=")"}return e}},e0=function(e){function t(t){var i=e.call(this,t)||this;return i.type="color",i.names=["color"],(0,em.HD)(i.values)&&(i.linear=!0),i.gradient=eQ.gradient(i.values),i}return(0,ef.ZT)(t,e),t.prototype.getLinearValue=function(e){return this.gradient(e)},t}(eV),e1=function(e){function t(t){var i=e.call(this,t)||this;return i.type="opacity",i.names=["opacity"],i}return(0,ef.ZT)(t,e),t}(eV),e2=function(e){function t(t){var i=e.call(this,t)||this;return i.names=["x","y"],i.type="position",i}return(0,ef.ZT)(t,e),t.prototype.mapping=function(e,t){var i=this.scales,n=i[0],r=i[1];return(0,em.UM)(e)||(0,em.UM)(t)?[]:[(0,em.kJ)(e)?e.map(function(e){return n.scale(e)}):n.scale(e),(0,em.kJ)(t)?t.map(function(e){return r.scale(e)}):r.scale(t)]},t}(eV),e4=function(e){function t(t){var i=e.call(this,t)||this;return i.type="shape",i.names=["shape"],i}return(0,ef.ZT)(t,e),t.prototype.getLinearValue=function(e){var t=Math.round((this.values.length-1)*e);return this.values[t]},t}(eV),e5=function(e){function t(t){var i=e.call(this,t)||this;return i.type="size",i.names=["size"],i}return(0,ef.ZT)(t,e),t}(eV),e6={},e3=function(){function e(e){this.type="base",this.isCategory=!1,this.isLinear=!1,this.isContinuous=!1,this.isIdentity=!1,this.values=[],this.range=[0,1],this.ticks=[],this.__cfg__=e,this.initCfg(),this.init()}return e.prototype.translate=function(e){return e},e.prototype.change=function(e){(0,em.f0)(this.__cfg__,e),this.init()},e.prototype.clone=function(){return this.constructor(this.__cfg__)},e.prototype.getTicks=function(){var e=this;return(0,em.UI)(this.ticks,function(t,i){return(0,em.Kn)(t)?t:{text:e.getText(t,i),tickValue:t,value:e.scale(t)}})},e.prototype.getText=function(e,t){var i=this.formatter,n=i?i(e,t):e;return(0,em.UM)(n)||!(0,em.mf)(n.toString)?"":n.toString()},e.prototype.getConfig=function(e){return this.__cfg__[e]},e.prototype.init=function(){(0,em.f0)(this,this.__cfg__),this.setDomain(),(0,em.xb)(this.getConfig("ticks"))&&(this.ticks=this.calculateTicks())},e.prototype.initCfg=function(){},e.prototype.setDomain=function(){},e.prototype.calculateTicks=function(){var e=this.tickMethod,t=[];if((0,em.HD)(e)){var i=e6[e];if(!i)throw Error("There is no method to to calculate ticks!");t=i(this)}else(0,em.mf)(e)&&(t=e(this));return t},e.prototype.rangeMin=function(){return this.range[0]},e.prototype.rangeMax=function(){return this.range[1]},e.prototype.calcPercent=function(e,t,i){return(0,em.hj)(e)?(e-t)/(i-t):NaN},e.prototype.calcValue=function(e,t,i){return t+e*(i-t)},e}(),e9=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="cat",t.isCategory=!0,t}return(0,ef.ZT)(t,e),t.prototype.buildIndexMap=function(){if(!this.translateIndexMap){this.translateIndexMap=new Map;for(var e=0;ethis.max?NaN:this.values[t]},t.prototype.getText=function(t){for(var i=[],n=1;n1?e-1:e}this.translateIndexMap&&(this.translateIndexMap=void 0)},t}(e3),e7=/d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|Z|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,e8="\\d\\d?",te="\\d\\d",tt="[^\\s]+",ti=/\[([^]*?)\]/gm;function tn(e,t){for(var i=[],n=0,r=e.length;n-1?n:null}};function to(e){for(var t=[],i=1;i3?0:(e-e%10!=10?1:0)*e%10]}},tu=to({},th),td=function(e){return tu=to(tu,e)},tc=function(e){return e.replace(/[|\\{()[^$+*?.-]/g,"\\$&")},tg=function(e,t){for(void 0===t&&(t=2),e=String(e);e.lengthe.getHours()?t.amPm[0]:t.amPm[1]},A:function(e,t){return 12>e.getHours()?t.amPm[0].toUpperCase():t.amPm[1].toUpperCase()},ZZ:function(e){var t=e.getTimezoneOffset();return(t>0?"-":"+")+tg(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4)},Z:function(e){var t=e.getTimezoneOffset();return(t>0?"-":"+")+tg(Math.floor(Math.abs(t)/60),2)+":"+tg(Math.abs(t)%60,2)}},tf=function(e){return+e-1},tm=[null,e8],tv=[null,tt],tE=["isPm",tt,function(e,t){var i=e.toLowerCase();return i===t.amPm[0]?0:i===t.amPm[1]?1:null}],t_=["timezoneOffset","[^\\s]*?[\\+\\-]\\d\\d:?\\d\\d|[^\\s]*?Z?",function(e){var t=(e+"").match(/([+-]|\d\d)/gi);if(t){var i=60*+t[1]+parseInt(t[2],10);return"+"===t[0]?i:-i}return 0}],tC={D:["day",e8],DD:["day",te],Do:["day",e8+tt,function(e){return parseInt(e,10)}],M:["month",e8,tf],MM:["month",te,tf],YY:["year",te,function(e){var t=+(""+new Date().getFullYear()).substr(0,2);return+(""+(+e>68?t-1:t)+e)}],h:["hour",e8,void 0,"isPm"],hh:["hour",te,void 0,"isPm"],H:["hour",e8],HH:["hour",te],m:["minute",e8],mm:["minute",te],s:["second",e8],ss:["second",te],YYYY:["year","\\d{4}"],S:["millisecond","\\d",function(e){return 100*+e}],SS:["millisecond",te,function(e){return 10*+e}],SSS:["millisecond","\\d{3}"],d:tm,dd:tm,ddd:tv,dddd:tv,MMM:["month",tt,tr("monthNamesShort")],MMMM:["month",tt,tr("monthNames")],a:tE,A:tE,ZZ:t_,Z:t_},tS={default:"ddd MMM DD YYYY HH:mm:ss",shortDate:"M/D/YY",mediumDate:"MMM D, YYYY",longDate:"MMMM D, YYYY",fullDate:"dddd, MMMM D, YYYY",isoDate:"YYYY-MM-DD",isoDateTime:"YYYY-MM-DDTHH:mm:ssZ",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},ty=function(e){return to(tS,e)},tT=function(e,t,i){if(void 0===t&&(t=tS.default),void 0===i&&(i={}),"number"==typeof e&&(e=new Date(e)),"[object Date]"!==Object.prototype.toString.call(e)||isNaN(e.getTime()))throw Error("Invalid Date pass to format");t=tS[t]||t;var n=[];t=t.replace(ti,function(e,t){return n.push(t),"@@@"});var r=to(to({},tu),i);return(t=t.replace(e7,function(t){return tp[t](e,r)})).replace(/@@@/g,function(){return n.shift()})};function tb(e,t,i){if(void 0===i&&(i={}),"string"!=typeof t)throw Error("Invalid format in fecha parse");if(t=tS[t]||t,e.length>1e3)return null;var n,r={year:new Date().getFullYear(),month:0,day:1,hour:0,minute:0,second:0,millisecond:0,isPm:null,timezoneOffset:null},o=[],s=[],a=t.replace(ti,function(e,t){return s.push(tc(t)),"@@@"}),l={},h={};a=tc(a).replace(e7,function(e){var t=tC[e],i=t[0],n=t[1],r=t[3];if(l[i])throw Error("Invalid format. "+i+" specified twice in format");return l[i]=!0,r&&(h[r]=!0),o.push(t),"("+n+")"}),Object.keys(h).forEach(function(e){if(!l[e])throw Error("Invalid format. "+e+" is required in specified format")}),a=a.replace(/@@@/g,function(){return s.shift()});var u=e.match(RegExp(a,"i"));if(!u)return null;for(var d=to(to({},tu),i),c=1;c11||r.month<0||r.day>31||r.day<1||r.hour>23||r.hour<0||r.minute>59||r.minute<0||r.second>59||r.second<0)return null;return n}var tA={format:tT,parse:tb,defaultI18n:th,setGlobalDateI18n:td,setGlobalDateMasks:ty},tR="format";function tL(e,t){return(ei[tR]||tA[tR])(e,t)}function tN(e){return(0,em.HD)(e)&&(e=e.indexOf("T")>0?new Date(e).getTime():new Date(e.replace(/-/gi,"/")).getTime()),(0,em.J_)(e)&&(e=e.getTime()),e}var tI=[["HH:mm:ss",1e3],["HH:mm:ss",1e4],["HH:mm:ss",3e4],["HH:mm",6e4],["HH:mm",6e5],["HH:mm",18e5],["HH",36e5],["HH",216e5],["HH",432e5],["YYYY-MM-DD",864e5],["YYYY-MM-DD",3456e5],["YYYY-WW",6048e5],["YYYY-MM",26784e5],["YYYY-MM",107136e5],["YYYY-MM",160704e5],["YYYY",32832e6]],tw=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="timeCat",t}return(0,ef.ZT)(t,e),t.prototype.translate=function(e){e=tN(e);var t=this.values.indexOf(e);return -1===t&&(t=(0,em.hj)(e)&&e-1){var n=this.values[i],r=this.formatter;return r?r(n,t):tL(n,this.mask)}return e},t.prototype.initCfg=function(){this.tickMethod="time-cat",this.mask="YYYY-MM-DD",this.tickCount=7},t.prototype.setDomain=function(){var t=this.values;(0,em.S6)(t,function(e,i){t[i]=tN(e)}),t.sort(function(e,t){return e-t}),e.prototype.setDomain.call(this)},t}(e9),tO=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.isContinuous=!0,t}return(0,ef.ZT)(t,e),t.prototype.scale=function(e){if((0,em.UM)(e))return NaN;var t=this.rangeMin(),i=this.rangeMax();return this.max===this.min?t:t+this.getScalePercent(e)*(i-t)},t.prototype.init=function(){e.prototype.init.call(this);var t=this.ticks,i=(0,em.YM)(t),n=(0,em.Z$)(t);ithis.max&&(this.max=n),(0,em.UM)(this.minLimit)||(this.min=i),(0,em.UM)(this.maxLimit)||(this.max=n)},t.prototype.setDomain=function(){var e=(0,em.rx)(this.values),t=e.min,i=e.max;(0,em.UM)(this.min)&&(this.min=t),(0,em.UM)(this.max)&&(this.max=i),this.min>this.max&&(this.min=t,this.max=i)},t.prototype.calculateTicks=function(){var t=this,i=e.prototype.calculateTicks.call(this);return this.nice||(i=(0,em.hX)(i,function(e){return e>=t.min&&e<=t.max})),i},t.prototype.getScalePercent=function(e){var t=this.max,i=this.min;return(e-i)/(t-i)},t.prototype.getInvertPercent=function(e){return(e-this.rangeMin())/(this.rangeMax()-this.rangeMin())},t}(e3),tx=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="linear",t.isLinear=!0,t}return(0,ef.ZT)(t,e),t.prototype.invert=function(e){var t=this.getInvertPercent(e);return this.min+t*(this.max-this.min)},t.prototype.initCfg=function(){this.tickMethod="wilkinson-extended",this.nice=!1},t}(tO);function tD(e,t){var i=Math.E;return t>=0?Math.pow(i,Math.log(t)/e):-1*Math.pow(i,Math.log(-t)/e)}function tM(e,t){return 1===e?1:Math.log(t)/Math.log(e)}function tk(e,t,i){(0,em.UM)(i)&&(i=Math.max.apply(null,e));var n=i;return(0,em.S6)(e,function(e){e>0&&e1&&(n=1),n}var tP=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="log",t}return(0,ef.ZT)(t,e),t.prototype.invert=function(e){var t,i=this.base,n=tM(i,this.max),r=this.rangeMin(),o=this.rangeMax()-r,s=this.positiveMin;if(s){if(0===e)return 0;var a=1/(n-(t=tM(i,s/i)))*o;if(e=0?1:-1)},t.prototype.initCfg=function(){this.tickMethod="pow",this.exponent=2,this.tickCount=5,this.nice=!0},t.prototype.getScalePercent=function(e){var t=this.max,i=this.min;if(t===i)return 0;var n=this.exponent;return(tD(n,e)-tD(n,i))/(tD(n,t)-tD(n,i))},t}(tO),tB=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="time",t}return(0,ef.ZT)(t,e),t.prototype.getText=function(e,t){var i=this.translate(e),n=this.formatter;return n?n(i,t):tL(i,this.mask)},t.prototype.scale=function(t){var i=t;return((0,em.HD)(i)||(0,em.J_)(i))&&(i=this.translate(i)),e.prototype.scale.call(this,i)},t.prototype.translate=function(e){return tN(e)},t.prototype.initCfg=function(){this.tickMethod="time-pretty",this.mask="YYYY-MM-DD",this.tickCount=7,this.nice=!1},t.prototype.setDomain=function(){var e=this.values,t=this.getConfig("min"),i=this.getConfig("max");if((0,em.UM)(t)&&(0,em.hj)(t)||(this.min=this.translate(this.min)),(0,em.UM)(i)&&(0,em.hj)(i)||(this.max=this.translate(this.max)),e&&e.length){var n=[],r=1/0,o=1/0,s=0;(0,em.S6)(e,function(e){var t=tN(e);if(isNaN(t))throw TypeError("Invalid Time: "+e+" in time scale!");r>t?(o=r,r=t):o>t&&(o=t),s1&&(this.minTickInterval=o-r),(0,em.UM)(t)&&(this.min=r),(0,em.UM)(i)&&(this.max=s)}},t}(tx),tU=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="quantize",t}return(0,ef.ZT)(t,e),t.prototype.invert=function(e){var t=this.ticks,i=t.length,n=this.getInvertPercent(e),r=Math.floor(n*(i-1));if(r>=i-1)return(0,em.Z$)(t);if(r<0)return(0,em.YM)(t);var o=t[r],s=t[r+1],a=r/(i-1);return o+(n-a)/((r+1)/(i-1)-a)*(s-o)},t.prototype.initCfg=function(){this.tickMethod="r-pretty",this.tickCount=5,this.nice=!0},t.prototype.calculateTicks=function(){var t=e.prototype.calculateTicks.call(this);return this.nice||((0,em.Z$)(t)!==this.max&&t.push(this.max),(0,em.YM)(t)!==this.min&&t.unshift(this.min)),t},t.prototype.getScalePercent=function(e){var t=this.ticks;if(e<(0,em.YM)(t))return 0;if(e>(0,em.Z$)(t))return 1;var i=0;return(0,em.S6)(t,function(t,n){if(!(e>=t))return!1;i=n}),i/(t.length-1)},t}(tO),tH=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="quantile",t}return(0,ef.ZT)(t,e),t.prototype.initCfg=function(){this.tickMethod="quantile",this.tickCount=5,this.nice=!0},t}(tU),tV={};function tW(e,t){if(tV[e])throw Error("type '"+e+"' existed.");tV[e]=t}var tG=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="identity",t.isIdentity=!0,t}return(0,ef.ZT)(t,e),t.prototype.calculateTicks=function(){return this.values},t.prototype.scale=function(e){return this.values[0]!==e&&(0,em.hj)(e)?e:this.range[0]},t.prototype.invert=function(e){var t=this.range;return et[1]?NaN:this.values[0]},t}(e3);function tz(e){var t=e.values,i=e.tickInterval,n=e.tickCount,r=e.showLast;if((0,em.hj)(i)){var o=(0,em.hX)(t,function(e,t){return t%i==0}),s=(0,em.Z$)(t);return r&&(0,em.Z$)(o)!==s&&o.push(s),o}var a=t.length,l=e.min,h=e.max;if((0,em.UM)(l)&&(l=0),(0,em.UM)(h)&&(h=t.length-1),!(0,em.hj)(n)||n>=a)return t.slice(l,h+1);if(n<=0||h<=0)return[];for(var u=1===n?a:Math.floor(a/(n-1)),d=[],c=l,g=0;g=h);g++)c=Math.min(l+g*u,h),g===n-1&&r?d.push(t[h]):d.push(t[c]);return d}var tY=Math.sqrt(50),tK=Math.sqrt(10),t$=Math.sqrt(2),tX=function(){function e(){this._domain=[0,1]}return e.prototype.domain=function(e){return e?(this._domain=Array.from(e,Number),this):this._domain.slice()},e.prototype.nice=function(e){void 0===e&&(e=5);var t,i,n,r=this._domain.slice(),o=0,s=this._domain.length-1,a=this._domain[o],l=this._domain[s];return l0?n=tj(a=Math.floor(a/n)*n,l=Math.ceil(l/n)*n,e):n<0&&(n=tj(a=Math.ceil(a*n)/n,l=Math.floor(l*n)/n,e)),n>0?(r[o]=Math.floor(a/n)*n,r[s]=Math.ceil(l/n)*n,this.domain(r)):n<0&&(r[o]=Math.ceil(a*n)/n,r[s]=Math.floor(l*n)/n,this.domain(r)),this},e.prototype.ticks=function(e){return void 0===e&&(e=5),function(e,t,i){var n,r,o,s,a=-1;if(i=+i,(e=+e)==(t=+t)&&i>0)return[e];if((n=t0)for(e=Math.ceil(e/s),o=Array(r=Math.ceil((t=Math.floor(t/s))-e+1));++a=0?(o>=tY?10:o>=tK?5:o>=t$?2:1)*Math.pow(10,r):-Math.pow(10,-r)/(o>=tY?10:o>=tK?5:o>=t$?2:1)}function tq(e,t,i){return("ceil"===i?Math.ceil(e/t):"floor"===i?Math.floor(e/t):Math.round(e/t))*t}function tZ(e,t,i){var n=tq(e,i,"floor"),r=tq(t,i,"ceil");n=(0,em.ri)(n,i),r=(0,em.ri)(r,i);for(var o=[],s=Math.max((r-n)/4095,i),a=n;a<=r;a+=s){var l=(0,em.ri)(a,s);o.push(l)}return{min:n,max:r,ticks:o}}function tJ(e,t,i){var n,r=e.minLimit,o=e.maxLimit,s=e.min,a=e.max,l=e.tickCount,h=void 0===l?5:l,u=(0,em.UM)(r)?(0,em.UM)(t)?s:t:r,d=(0,em.UM)(o)?(0,em.UM)(i)?a:i:o;if(u>d&&(d=(n=[u,d])[0],u=n[1]),h<=2)return[u,d];for(var c=(d-u)/(h-1),g=[],p=0;pMath.abs(e)?e:parseFloat(e.toFixed(15))}var t0=[1,5,2,2.5,4,3],t1=100*Number.EPSILON;function t2(e,t,i){if(void 0===i&&(i=5),e===t)return{max:t,min:e,ticks:[e]};var n=i<0?0:Math.round(i);if(0===n)return{max:t,min:e,ticks:[]};var r=(t-e)/n,o=Math.pow(10,Math.floor(Math.log10(r))),s=o;2*o-r<1.5*(r-s)&&(s=2*o,5*o-r<2.75*(r-s)&&(s=5*o,10*o-r<1.5*(r-s)&&(s=10*o)));for(var a=Math.ceil(t/s),l=Math.floor(e/s),h=Math.max(a*s,t),u=Math.min(l*s,e),d=Math.floor((h-u)/s)+1,c=Array(d),g=0;g1e148){var a=i||5,l=(t-e)/a;return{min:e,max:t,ticks:Array(a).fill(null).map(function(t,i){return tQ(e+l*i)})}}for(var h={score:-2,lmin:0,lmax:0,lstep:0},u=1;u<1/0;){for(var d=0;d=s?2-(y-1)/(s-1):1;if(o[0]*g+o[1]+o[2]*f+o[3]n?1-Math.pow((i-n)/2,2)/Math.pow(.1*n,2):1}(e,t,v*(p-1));if(o[0]*g+o[1]*E+o[2]*f+o[3]=0&&(l=1),1-a/(s-1)-i+l}(c,r,u,T,b,v),R=1-.5*(Math.pow(t-b,2)+Math.pow(e-T,2))/Math.pow(.1*(t-e),2),L=function(e,t,i,n,r,o){var s=(e-1)/(o-r),a=(t-1)/(Math.max(o,n)-Math.min(i,r));return 2-Math.max(s/a,a/s)}(p,s,e,t,T,b),N=o[0]*A+o[1]*R+o[2]*L+1*o[3];N>h.score&&(!n||T<=e&&b>=t)&&(h.lmin=T,h.lmax=b,h.lstep=v,h.score=N)}m+=1}p+=1}}u+=1}var I=tQ(h.lmax),w=tQ(h.lmin),O=tQ(h.lstep),x=Math.floor(Math.round(1e12*((I-w)/O))/1e12)+1,D=Array(x);D[0]=tQ(w);for(var d=1;d>>1;e[s][1]>t?o=s:r=s+1}return r}(tI,(i-t)/(s=o))-1,l=tI[a],a<0?l=tI[0]:a>=tI.length&&(l=(0,em.Z$)(tI)),l)[1];var s,a,l,h=(i-t)/r/o;h>1&&(r*=Math.ceil(h)),n&&r31536e6)for(var l,h=t4(i),u=Math.ceil(o/31536e6),d=a;d<=h+u;d+=u)s.push((l=d,new Date(l,0,1).getTime()));else if(o>26784e5)for(var c,g,p,f,m=Math.ceil(o/26784e5),v=t5(t),E=(c=t4(t),g=t4(i),p=t5(t),(g-c)*12+(t5(i)-p)%12),d=0;d<=E+m;d+=m)s.push((f=d+v,new Date(a,f,1).getTime()));else if(o>864e5)for(var _=new Date(t),C=_.getFullYear(),S=_.getMonth(),y=_.getDate(),T=Math.ceil(o/864e5),b=Math.ceil((i-t)/864e5),d=0;d36e5)for(var _=new Date(t),C=_.getFullYear(),S=_.getMonth(),T=_.getDate(),A=_.getHours(),R=Math.ceil(o/36e5),L=Math.ceil((i-t)/36e5),d=0;d<=L+R;d+=R)s.push(new Date(C,S,T,A+d).getTime());else if(o>6e4)for(var N=Math.ceil((i-t)/6e4),I=Math.ceil(o/6e4),d=0;d<=N+I;d+=I)s.push(t+6e4*d);else{var w=o;w<1e3&&(w=1e3);for(var O=1e3*Math.floor(t/1e3),x=Math.ceil((i-t)/1e3),D=Math.ceil(w/1e3),d=0;d=512&&console.warn("Notice: current ticks length("+s.length+') >= 512, may cause performance issues, even out of memory. Because of the configure "tickInterval"(in milliseconds, current is '+o+") is too small, increase the value to solve the problem!"),s},e6.log=function(e){var t,i=e.base,n=e.tickCount,r=e.min,o=e.max,s=e.values,a=tM(i,o);if(r>0)t=Math.floor(tM(i,r));else{var l=tk(s,i,o);t=Math.floor(tM(i,l))}for(var h=Math.ceil((a-t)/n),u=[],d=t;d=0?1:-1)})},e6.quantile=function(e){var t=e.tickCount,i=e.values;if(!i||!i.length)return[];for(var n=i.slice().sort(function(e,t){return e-t}),r=[],o=0;o=0&&this.radius<=1&&(i*=this.radius),this.d=Math.floor(i*(1-this.innerRadius)/t),this.a=this.d/(2*Math.PI),this.x={start:this.startAngle,end:this.endAngle},this.y={start:this.innerRadius*i,end:this.innerRadius*i+.99*this.d}},t.prototype.convertPoint=function(e){var t,i=e.x,n=e.y;this.isTransposed&&(i=(t=[n,i])[0],n=t[1]);var r=this.convertDim(i,"x"),o=this.a*r,s=this.convertDim(n,"y");return{x:this.center.x+Math.cos(r)*(o+s),y:this.center.y+Math.sin(r)*(o+s)}},t.prototype.invertPoint=function(e){var t,i=this.d+this.y.start,n=io.$X([0,0],[e.x,e.y],[this.center.x,this.center.y]),r=it.Dg(n,[1,0],!0),o=r*this.a;io.kE(n)this.width/n?(t=this.width/n,this.circleCenter={x:this.center.x-(.5-o)*this.width,y:this.center.y-(.5-s)*t*r}):(t=this.height/r,this.circleCenter={x:this.center.x-(.5-o)*t*n,y:this.center.y-(.5-s)*this.height}),this.polarRadius=this.radius,this.radius?this.radius>0&&this.radius<=1?this.polarRadius=t*this.radius:(this.radius<=0||this.radius>t)&&(this.polarRadius=t):this.polarRadius=t,this.x={start:this.startAngle,end:this.endAngle},this.y={start:this.innerRadius*this.polarRadius,end:this.polarRadius}},t.prototype.getRadius=function(){return this.polarRadius},t.prototype.convertPoint=function(e){var t,i=this.getCenter(),n=e.x,r=e.y;return this.isTransposed&&(n=(t=[r,n])[0],r=t[1]),n=this.convertDim(n,"x"),r=this.convertDim(r,"y"),{x:i.x+Math.cos(n)*r,y:i.y+Math.sin(n)*r}},t.prototype.invertPoint=function(e){var t,i=this.getCenter(),n=[e.x-i.x,e.y-i.y],r=this.startAngle,o=this.endAngle;this.isReflect("x")&&(r=(t=[o,r])[0],o=t[1]);var s=[1,0,0,0,1,0,0,0,1];it.zu(s,s,r);var a=[1,0,0];t8(a,a,s);var l=[a[0],a[1]],h=it.Dg(l,n,o0?d:-d;var c=this.invertDim(u,"y"),g={x:0,y:0};return g.x=this.isTransposed?c:d,g.y=this.isTransposed?d:c,g},t.prototype.getCenter=function(){return this.circleCenter},t.prototype.getOneBox=function(){var e=this.startAngle,t=this.endAngle;if(Math.abs(t-e)>=2*Math.PI)return{minX:-1,maxX:1,minY:-1,maxY:1};for(var i=[0,Math.cos(e),Math.cos(t)],n=[0,Math.sin(e),Math.sin(t)],r=Math.min(e,t);r=0;n--)e.removeChild(t[n])}function iC(e){var t=e.start,i=e.end,n=Math.min(t.x,i.x),r=Math.min(t.y,i.y),o=Math.max(t.x,i.x),s=Math.max(t.y,i.y);return{x:n,y:r,minX:n,minY:r,maxX:o,maxY:s,width:o-n,height:s-r}}function iS(e,t,i,n){var r=e+i,o=t+n;return{x:e,y:t,width:i,height:n,minX:e,minY:t,maxX:isNaN(r)?0:r,maxY:isNaN(o)?0:o}}function iy(e,t,i){return{x:e.x+Math.cos(i)*t,y:e.y+Math.sin(i)*t}}var iT=function(e,t,i){return void 0===i&&(i=Math.pow(Number.EPSILON,.5)),[e,t].includes(1/0)?Math.abs(e)===Math.abs(t):Math.abs(e-t)0?(0,em.S6)(c,function(t){if(t.get("visible")){if(t.isGroup()&&0===t.get("children").length)return!0;var i=e(t),n=t.applyToMatrix([i.minX,i.minY,1]),r=t.applyToMatrix([i.minX,i.maxY,1]),o=t.applyToMatrix([i.maxX,i.minY,1]),s=t.applyToMatrix([i.maxX,i.maxY,1]),a=Math.min(n[0],r[0],o[0],s[0]),c=Math.max(n[0],r[0],o[0],s[0]),g=Math.min(n[1],r[1],o[1],s[1]),p=Math.max(n[1],r[1],o[1],s[1]);ah&&(h=c),gd&&(d=p)}}):(l=0,h=0,u=0,d=0),o=iS(l,u,h-l,d-u)}else o=t.getBBox();return a?iS(n=Math.max((i=o).minX,a.minX),r=Math.max(i.minY,a.minY),Math.min(i.maxX,a.maxX)-n,Math.min(i.maxY,a.maxY)-r):o}(e)),e},t.prototype.addGroup=function(e,t){this.appendDelegateObject(e,t);var i=e.addGroup(t);return this.get("isRegister")&&this.registerElement(i),i},t.prototype.addShape=function(e,t){this.appendDelegateObject(e,t);var i=e.addShape(t);return this.get("isRegister")&&this.registerElement(i),i},t.prototype.addComponent=function(e,t){var i=t.id,n=t.component,r=(0,ef._T)(t,["id","component"]),o=new n((0,ef.pi)((0,ef.pi)({},r),{id:i,container:e,updateAutoRender:this.get("updateAutoRender")}));return o.init(),o.render(),this.get("isRegister")&&this.registerElement(o.get("group")),o},t.prototype.initEvent=function(){},t.prototype.removeEvent=function(){this.get("group").off()},t.prototype.getElementId=function(e){return this.get("id")+"-"+this.get("name")+"-"+e},t.prototype.registerElement=function(e){var t=e.get("id");this.get("shapesMap")[t]=e},t.prototype.unregisterElement=function(e){var t=e.get("id");delete this.get("shapesMap")[t]},t.prototype.moveElementTo=function(e,t){var i=ig(t);e.attr("matrix",i)},t.prototype.addAnimation=function(e,t,i){var n=t.attr("opacity");(0,em.UM)(n)&&(n=1),t.attr("opacity",0),t.animate({opacity:n},i)},t.prototype.removeAnimation=function(e,t,i){t.animate({opacity:0},i)},t.prototype.updateAnimation=function(e,t,i,n){t.animate(i,n)},t.prototype.updateElements=function(e,t){var i,n=this,r=this.get("animate"),o=this.get("animateOption"),s=e.getChildren().slice(0);(0,em.S6)(s,function(e){var s=e.get("id"),a=n.getElementById(s),l=e.get("name");if(a){if(e.get("isComponent")){var h=e.get("component"),u=a.get("component"),d=(0,em.ei)(h.cfg,(0,em.e5)((0,em.XP)(h.cfg),iw));u.update(d),a.set(iN,"update")}else{var c=n.getReplaceAttrs(a,e);r&&o.update?n.updateAnimation(l,a,c,o.update):a.attr(c),e.isGroup()&&n.updateElements(e,a),(0,em.S6)(iI,function(t){a.set(t,e.get(t))}),function(e,t){if(e.getClip()||t.getClip()){var i=t.getClip();if(!i){e.setClip(null);return}var n={type:i.get("type"),attrs:i.attr()};e.setClip(n)}}(a,e),i=a,a.set(iN,"update")}}else{t.add(e);var g=t.getChildren();if(g.splice(g.length-1,1),i){var p=g.indexOf(i);g.splice(p+1,0,e)}else g.unshift(e);if(n.registerElement(e),e.set(iN,"add"),e.get("isComponent")){var h=e.get("component");h.set("container",t)}else e.isGroup()&&n.registerNewGroup(e);if(i=e,r){var f=n.get("isInit")?o.appear:o.enter;f&&n.addAnimation(l,e,f)}}})},t.prototype.clearUpdateStatus=function(e){var t=e.getChildren();(0,em.S6)(t,function(e){e.set(iN,null)})},t.prototype.clearOffScreenCache=function(){var e=this.get("offScreenGroup");e&&e.destroy(),this.set("offScreenGroup",null),this.set("offScreenBBox",null)},t.prototype.getDelegateObject=function(){var e,t=this.get("name");return(e={})[t]=this,e.component=this,e},t.prototype.appendDelegateObject=function(e,t){var i=e.get("delegateObject");t.delegateObject||(t.delegateObject={}),(0,em.CD)(t.delegateObject,i)},t.prototype.getReplaceAttrs=function(e,t){var i=e.attr(),n=t.attr();return(0,em.S6)(i,function(e,t){void 0===n[t]&&(n[t]=void 0)}),n},t.prototype.registerNewGroup=function(e){var t=this,i=e.getChildren();(0,em.S6)(i,function(e){t.registerElement(e),e.set(iN,"add"),e.isGroup()&&t.registerNewGroup(e)})},t.prototype.deleteElements=function(){var e=this,t=this.get("shapesMap"),i=[];(0,em.S6)(t,function(e,t){!e.get(iN)||e.destroyed?i.push([t,e]):e.set(iN,null)});var n=this.get("animate"),r=this.get("animateOption");(0,em.S6)(i,function(i){var o=i[0],s=i[1];if(!s.destroyed){var a=s.get("name");if(n&&r.leave){var l=(0,em.CD)({callback:function(){e.removeElement(s)}},r.leave);e.removeAnimation(a,s,l)}else e.removeElement(s)}delete t[o]})},t.prototype.removeElement=function(e){if(e.get("isGroup")){var t=e.get("component");t&&t.destroy()}e.remove()},t}(iL);function ix(e,t){return e.charCodeAt(t)>0&&128>e.charCodeAt(t)?1:2}function iD(e){if(e.length>400)return function(e){for(var t=e.map(function(e){var t=e.attr("text");return(0,em.UM)(t)?"":""+t}),i=0,n=0,r=0;r=19968&&a<=40869?o+=2:o+=1}o>i&&(i=o,n=r)}return e[n].getBBox().width}(e);var t=0;return(0,em.S6)(e,function(e){var i=e.getBBox().width;t=0?function(e,t,i){void 0===i&&(i="tail");var n=e.length,r="";if("tail"===i){for(var o=0,s=0;o1||n<0)&&(n=1),{x:(r=e.x,o=t.x,(1-(s=n))*r+o*s),y:(a=e.y,l=t.y,(1-(h=n))*a+l*h)}},t.prototype.renderLabel=function(e){var t=this.get("text"),i=this.get("start"),n=this.get("end"),r=t.position,o=t.content,s=t.style,a=t.offsetX,l=t.offsetY,h=t.autoRotate,u=t.maxLength,d=t.autoEllipsis,c=t.ellipsisPosition,g=t.background,p=t.isVertical,f=this.getLabelPoint(i,n,r),m=f.x+a,v=f.y+l,E={id:this.getElementId("line-text"),name:"annotation-line-text",x:m,y:v,content:o,style:s,maxLength:u,autoEllipsis:d,ellipsisPosition:c,background:g,isVertical:void 0!==p&&p};if(h){var _=[n.x-i.x,n.y-i.y];E.rotate=Math.atan2(_[1],_[0])}ik(e,E)},t}(iO),iB=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return(0,ef.pi)((0,ef.pi)({},t),{name:"annotation",type:"text",locationType:"point",x:0,y:0,content:"",rotate:null,style:{},background:null,maxLength:null,autoEllipsis:!0,isVertical:!1,ellipsisPosition:"tail",defaultCfg:{style:{fill:iP.textColor,fontSize:12,textAlign:"center",textBaseline:"middle",fontFamily:iP.fontFamily}}})},t.prototype.setLocation=function(e){this.set("x",e.x),this.set("y",e.y),this.resetLocation()},t.prototype.renderInner=function(e){var t=this.getLocation(),i=t.x,n=t.y,r=this.get("content"),o=this.get("style");ik(e,{id:this.getElementId("text"),name:this.get("name")+"-text",x:i,y:n,content:r,style:o,maxLength:this.get("maxLength"),autoEllipsis:this.get("autoEllipsis"),isVertical:this.get("isVertical"),ellipsisPosition:this.get("ellipsisPosition"),background:this.get("background"),rotate:this.get("rotate")})},t.prototype.resetLocation=function(){var e=this.getElementByLocalId("text-group");if(e){var t=this.getLocation(),i=t.x,n=t.y,r=this.get("rotate");iv(e,i,n),im(e,r,i,n)}},t}(iO),iU=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return(0,ef.pi)((0,ef.pi)({},t),{name:"annotation",type:"arc",locationType:"circle",center:null,radius:100,startAngle:-Math.PI/2,endAngle:3*Math.PI/2,style:{stroke:"#999",lineWidth:1}})},t.prototype.renderInner=function(e){this.renderArc(e)},t.prototype.getArcPath=function(){var e=this.getLocation(),t=e.center,i=e.radius,n=e.startAngle,r=e.endAngle,o=iy(t,i,n),s=iy(t,i,r),a=r-n>Math.PI?1:0,l=[["M",o.x,o.y]];if(r-n==2*Math.PI){var h=iy(t,i,n+Math.PI);l.push(["A",i,i,0,a,1,h.x,h.y]),l.push(["A",i,i,0,a,1,s.x,s.y])}else l.push(["A",i,i,0,a,1,s.x,s.y]);return l},t.prototype.renderArc=function(e){var t=this.getArcPath(),i=this.get("style");this.addShape(e,{type:"path",id:this.getElementId("arc"),name:"annotation-arc",attrs:(0,ef.pi)({path:t},i)})},t}(iO),iH=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return(0,ef.pi)((0,ef.pi)({},t),{name:"annotation",type:"region",locationType:"region",start:null,end:null,style:{},defaultCfg:{style:{lineWidth:0,fill:iP.regionColor,opacity:.4}}})},t.prototype.renderInner=function(e){this.renderRegion(e)},t.prototype.renderRegion=function(e){var t=this.get("start"),i=this.get("end"),n=this.get("style"),r=iC({start:t,end:i});this.addShape(e,{type:"rect",id:this.getElementId("region"),name:"annotation-region",attrs:(0,ef.pi)({x:r.x,y:r.y,width:r.width,height:r.height},n)})},t}(iO),iV=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return(0,ef.pi)((0,ef.pi)({},t),{name:"annotation",type:"image",locationType:"region",start:null,end:null,src:null,style:{}})},t.prototype.renderInner=function(e){this.renderImage(e)},t.prototype.getImageAttrs=function(){var e=this.get("start"),t=this.get("end"),i=this.get("style"),n=iC({start:e,end:t}),r=this.get("src");return(0,ef.pi)({x:n.x,y:n.y,img:r,width:n.width,height:n.height},i)},t.prototype.renderImage=function(e){this.addShape(e,{type:"image",id:this.getElementId("image"),name:"annotation-image",attrs:this.getImageAttrs()})},t}(iO),iW=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return(0,ef.pi)((0,ef.pi)({},t),{name:"annotation",type:"dataMarker",locationType:"point",x:0,y:0,point:{},line:{},text:{},direction:"upward",autoAdjust:!0,coordinateBBox:null,defaultCfg:{point:{display:!0,style:{r:3,fill:"#FFFFFF",stroke:"#1890FF",lineWidth:2}},line:{display:!0,length:20,style:{stroke:iP.lineColor,lineWidth:1}},text:{content:"",display:!0,style:{fill:iP.textColor,opacity:.65,fontSize:12,textAlign:"start",fontFamily:iP.fontFamily}}}})},t.prototype.renderInner=function(e){(0,em.U2)(this.get("line"),"display")&&this.renderLine(e),(0,em.U2)(this.get("text"),"display")&&this.renderText(e),(0,em.U2)(this.get("point"),"display")&&this.renderPoint(e),this.get("autoAdjust")&&this.autoAdjust(e)},t.prototype.applyOffset=function(){this.moveElementTo(this.get("group"),{x:this.get("x")+this.get("offsetX"),y:this.get("y")+this.get("offsetY")})},t.prototype.renderPoint=function(e){var t=this.getShapeAttrs().point;this.addShape(e,{type:"circle",id:this.getElementId("point"),name:"annotation-point",attrs:t})},t.prototype.renderLine=function(e){var t=this.getShapeAttrs().line;this.addShape(e,{type:"path",id:this.getElementId("line"),name:"annotation-line",attrs:t})},t.prototype.renderText=function(e){var t=this.getShapeAttrs().text,i=t.x,n=t.y,r=t.text,o=(0,ef._T)(t,["x","y","text"]),s=this.get("text"),a=s.background,l=s.maxLength,h=s.autoEllipsis,u=s.isVertival,d=s.ellipsisPosition;ik(e,{x:i,y:n,id:this.getElementId("text"),name:"annotation-text",content:r,style:o,background:a,maxLength:l,autoEllipsis:h,isVertival:u,ellipsisPosition:d})},t.prototype.autoAdjust=function(e){var t=this.get("direction"),i=this.get("x"),n=this.get("y"),r=(0,em.U2)(this.get("line"),"length",0),o=this.get("coordinateBBox"),s=e.getBBox(),a=s.minX,l=s.maxX,h=s.minY,u=s.maxY,d=e.findById(this.getElementId("text-group")),c=e.findById(this.getElementId("text")),g=e.findById(this.getElementId("line"));if(o&&d){var p=d.attr("x"),f=d.attr("y"),m=c.getCanvasBBox(),v=m.width,E=m.height,_=0,C=0;if(i+a<=o.minX){if("leftward"===t)_=1;else{var S=o.minX-(i+a);p=d.attr("x")+S}}else if(i+l>=o.maxX){if("rightward"===t)_=-1;else{var S=i+l-o.maxX;p=d.attr("x")-S}}if(_&&(g&&g.attr("path",[["M",0,0],["L",r*_,0]]),p=(r+2+v)*_),n+h<=o.minY){if("upward"===t)C=1;else{var S=o.minY-(n+h);f=d.attr("y")+S}}else if(n+u>=o.maxY){if("downward"===t)C=-1;else{var S=n+u-o.maxY;f=d.attr("y")-S}}C&&(g&&g.attr("path",[["M",0,0],["L",0,r*C]]),f=(r+2+E)*C),(p!==d.attr("x")||f!==d.attr("y"))&&iv(d,p,f)}},t.prototype.getShapeAttrs=function(){var e=(0,em.U2)(this.get("line"),"display"),t=(0,em.U2)(this.get("point"),"style",{}),i=(0,em.U2)(this.get("line"),"style",{}),n=(0,em.U2)(this.get("text"),"style",{}),r=this.get("direction"),o=e?(0,em.U2)(this.get("line"),"length",0):0,s=0,a=0,l="top",h="start";switch(r){case"upward":a=-1,l="bottom";break;case"downward":a=1,l="top";break;case"leftward":s=-1,h="end";break;case"rightward":s=1,h="start"}return{point:(0,ef.pi)({x:0,y:0},t),line:(0,ef.pi)({path:[["M",0,0],["L",o*s,o*a]]},i),text:(0,ef.pi)({x:(o+2)*s,y:(o+2)*a,text:(0,em.U2)(this.get("text"),"content",""),textBaseline:l,textAlign:h},n)}},t}(iO),iG=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return(0,ef.pi)((0,ef.pi)({},t),{name:"annotation",type:"dataRegion",locationType:"points",points:[],lineLength:0,region:{},text:{},defaultCfg:{region:{style:{lineWidth:0,fill:iP.regionColor,opacity:.4}},text:{content:"",style:{textAlign:"center",textBaseline:"bottom",fontSize:12,fill:iP.textColor,fontFamily:iP.fontFamily}}}})},t.prototype.renderInner=function(e){var t,i,n,r,o,s,a=(0,em.U2)(this.get("region"),"style",{});(0,em.U2)(this.get("text"),"style",{});var l=this.get("lineLength")||0,h=this.get("points");if(h.length){var u=(t=h.map(function(e){return e.x}),i=h.map(function(e){return e.y}),n=Math.min.apply(Math,t),r=Math.min.apply(Math,i),{x:n,y:r,minX:n,minY:r,maxX:o=Math.max.apply(Math,t),maxY:s=Math.max.apply(Math,i),width:o-n,height:s-r}),d=[];d.push(["M",h[0].x,u.minY-l]),h.forEach(function(e){d.push(["L",e.x,e.y])}),d.push(["L",h[h.length-1].x,h[h.length-1].y-l]),this.addShape(e,{type:"path",id:this.getElementId("region"),name:"annotation-region",attrs:(0,ef.pi)({path:d},a)}),ik(e,(0,ef.pi)({id:this.getElementId("text"),name:"annotation-text",x:(u.minX+u.maxX)/2,y:u.minY-l},this.get("text")))}},t}(iO),iz=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return(0,ef.pi)((0,ef.pi)({},t),{name:"annotation",type:"regionFilter",locationType:"region",start:null,end:null,color:null,shape:[]})},t.prototype.renderInner=function(e){var t=this,i=this.get("start"),n=this.get("end"),r=this.addGroup(e,{id:this.getElementId("region-filter"),capture:!1});(0,em.S6)(this.get("shapes"),function(e,i){var n=e.get("type"),o=(0,em.d9)(e.attr());t.adjustShapeAttrs(o),t.addShape(r,{id:t.getElementId("shape-"+n+"-"+i),capture:!1,type:n,attrs:o})});var o=iC({start:i,end:n});r.setClip({type:"rect",attrs:{x:o.minX,y:o.minY,width:o.width,height:o.height}})},t.prototype.adjustShapeAttrs=function(e){var t=this.get("color");e.fill&&(e.fill=e.fillStyle=t),e.stroke=e.strokeStyle=t},t}(iO),iY=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return(0,ef.pi)((0,ef.pi)({},t),{name:"annotation",type:"shape",draw:em.ZT})},t.prototype.renderInner=function(e){var t=this.get("render");(0,em.mf)(t)&&t(e)},t}(iO);function iK(e,t,i){var n;try{n=window.getComputedStyle?window.getComputedStyle(e,null)[t]:e.style[t]}catch(e){}finally{n=void 0===n?i:n}return n}var i$=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return(0,ef.pi)((0,ef.pi)({},t),{container:null,containerTpl:"
",updateAutoRender:!0,containerClassName:"",parent:null})},t.prototype.getContainer=function(){return this.get("container")},t.prototype.show=function(){this.get("container").style.display="",this.set("visible",!0)},t.prototype.hide=function(){this.get("container").style.display="none",this.set("visible",!1)},t.prototype.setCapture=function(e){var t=this.getContainer(),i=e?"auto":"none";t.style.pointerEvents=i,this.set("capture",e)},t.prototype.getBBox=function(){var e=this.getContainer();return iS(parseFloat(e.style.left)||0,parseFloat(e.style.top)||0,e.clientWidth,e.clientHeight)},t.prototype.clear=function(){i_(this.get("container"))},t.prototype.destroy=function(){this.removeEvent(),this.removeDom(),e.prototype.destroy.call(this)},t.prototype.init=function(){e.prototype.init.call(this),this.initContainer(),this.initDom(),this.resetStyles(),this.applyStyles(),this.initEvent(),this.initCapture(),this.initVisible()},t.prototype.initCapture=function(){this.setCapture(this.get("capture"))},t.prototype.initVisible=function(){this.get("visible")?this.show():this.hide()},t.prototype.initDom=function(){},t.prototype.initContainer=function(){var e=this.get("container");if((0,em.UM)(e)){e=this.createDom();var t=this.get("parent");(0,em.HD)(t)&&(t=document.getElementById(t),this.set("parent",t)),t.appendChild(e),this.get("containerId")&&e.setAttribute("id",this.get("containerId")),this.set("container",e)}else(0,em.HD)(e)&&(e=document.getElementById(e),this.set("container",e));this.get("parent")||this.set("parent",e.parentNode)},t.prototype.resetStyles=function(){var e=this.get("domStyles"),t=this.get("defaultStyles");e=e?(0,em.b$)({},t,e):t,this.set("domStyles",e)},t.prototype.applyStyles=function(){var e=this.get("domStyles");if(e){var t=this.getContainer();this.applyChildrenStyles(t,e);var i=this.get("containerClassName");i&&t.className.match(RegExp("(\\s|^)"+i+"(\\s|$)"))&&ey(t,e[i])}},t.prototype.applyChildrenStyles=function(e,t){(0,em.S6)(t,function(t,i){var n=e.getElementsByClassName(i);(0,em.S6)(n,function(e){ey(e,t)})})},t.prototype.applyStyle=function(e,t){ey(t,this.get("domStyles")[e])},t.prototype.createDom=function(){return eS(this.get("containerTpl"))},t.prototype.initEvent=function(){},t.prototype.removeDom=function(){var e=this.get("container");e&&e.parentNode&&e.parentNode.removeChild(e)},t.prototype.removeEvent=function(){},t.prototype.updateInner=function(e){(0,em.wH)(e,"domStyles")&&(this.resetStyles(),this.applyStyles()),this.resetPosition()},t.prototype.resetPosition=function(){},t}(iL),iX=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return(0,ef.pi)((0,ef.pi)({},t),{name:"annotation",type:"html",locationType:"point",x:0,y:0,containerTpl:'
',alignX:"left",alignY:"top",html:"",zIndex:7})},t.prototype.render=function(){var e=this.getContainer(),t=this.get("html");i_(e);var i=(0,em.mf)(t)?t(e):t;if((0,em.kK)(i))e.appendChild(i);else if((0,em.HD)(i)||(0,em.hj)(i)){var n=eS(""+i);n&&e.appendChild(n)}this.resetPosition()},t.prototype.resetPosition=function(){var e,t,i,n,r,o,s,a,l,h,u,d,c=this.getContainer(),g=this.getLocation(),p=g.x,f=g.y,m=this.get("alignX"),v=this.get("alignY"),E=this.get("offsetX"),_=this.get("offsetY"),C=("auto"===(e=iK(c,"width",void 0))&&(e=c.offsetWidth),t=parseFloat(e),i=parseFloat(iK(c,"borderLeftWidth"))||0,n=parseFloat(iK(c,"paddingLeft"))||0,r=parseFloat(iK(c,"paddingRight"))||0,o=parseFloat(iK(c,"borderRightWidth"))||0,s=parseFloat(iK(c,"marginRight"))||0,t+i+o+n+r+(parseFloat(iK(c,"marginLeft"))||0)+s),S=("auto"===(a=iK(c,"height",void 0))&&(a=c.offsetHeight),l=parseFloat(a),h=parseFloat(iK(c,"borderTopWidth"))||0,u=parseFloat(iK(c,"paddingTop"))||0,d=parseFloat(iK(c,"paddingBottom"))||0,l+h+(parseFloat(iK(c,"borderBottomWidth"))||0)+u+d+(parseFloat(iK(c,"marginTop"))||0)+(parseFloat(iK(c,"marginBottom"))||0)),y={x:p,y:f};"middle"===m?y.x-=Math.round(C/2):"right"===m&&(y.x-=Math.round(C)),"middle"===v?y.y-=Math.round(S/2):"bottom"===v&&(y.y-=Math.round(S)),E&&(y.x+=E),_&&(y.y+=_),ey(c,{position:"absolute",left:y.x+"px",top:y.y+"px",zIndex:this.get("zIndex")})},t}(i$);function ij(e,t,i){var n=t+"Style",r=null;return(0,em.S6)(i,function(t,i){e[i]&&t[n]&&(r||(r={}),(0,em.CD)(r,t[n]))}),r}var iq=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return(0,ef.pi)((0,ef.pi)({},t),{name:"axis",ticks:[],line:{},tickLine:{},subTickLine:null,title:null,label:{},verticalFactor:1,verticalLimitLength:null,overlapOrder:["autoRotate","autoEllipsis","autoHide"],tickStates:{},optimize:{},defaultCfg:{line:{style:{lineWidth:1,stroke:iP.lineColor}},tickLine:{style:{lineWidth:1,stroke:iP.lineColor},alignTick:!0,length:5,displayWithLabel:!0},subTickLine:{style:{lineWidth:1,stroke:iP.lineColor},count:4,length:2},label:{autoRotate:!0,autoHide:!1,autoEllipsis:!1,style:{fontSize:12,fill:iP.textColor,fontFamily:iP.fontFamily,fontWeight:"normal"},offset:10,offsetX:0,offsetY:0},title:{autoRotate:!0,spacing:5,position:"center",style:{fontSize:12,fill:iP.textColor,textBaseline:"middle",fontFamily:iP.fontFamily,textAlign:"center"},iconStyle:{fill:iP.descriptionIconFill,stroke:iP.descriptionIconStroke},description:""},tickStates:{active:{labelStyle:{fontWeight:500},tickLineStyle:{lineWidth:2}},inactive:{labelStyle:{fill:iP.uncheckedColor}}},optimize:{enable:!0,threshold:400}},theme:{}})},t.prototype.renderInner=function(e){this.get("line")&&this.drawLine(e),this.drawTicks(e),this.get("title")&&this.drawTitle(e)},t.prototype.isList=function(){return!0},t.prototype.getItems=function(){return this.get("ticks")},t.prototype.setItems=function(e){this.update({ticks:e})},t.prototype.updateItem=function(e,t){(0,em.CD)(e,t),this.clear(),this.render()},t.prototype.clearItems=function(){var e=this.getElementByLocalId("label-group");e&&e.clear()},t.prototype.setItemState=function(e,t,i){e[t]=i,this.updateTickStates(e)},t.prototype.hasState=function(e,t){return!!e[t]},t.prototype.getItemStates=function(e){var t=this.get("tickStates"),i=[];return(0,em.S6)(t,function(t,n){e[n]&&i.push(n)}),i},t.prototype.clearItemsState=function(e){var t=this,i=this.getItemsByState(e);(0,em.S6)(i,function(i){t.setItemState(i,e,!1)})},t.prototype.getItemsByState=function(e){var t=this,i=this.getItems();return(0,em.hX)(i,function(i){return t.hasState(i,e)})},t.prototype.getSidePoint=function(e,t){var i=this.getSideVector(t,e);return{x:e.x+i[0],y:e.y+i[1]}},t.prototype.getTextAnchor=function(e){var t;return(0,em.vQ)(e[0],0)?t="center":e[0]>0?t="start":e[0]<0&&(t="end"),t},t.prototype.getTextBaseline=function(e){var t;return(0,em.vQ)(e[1],0)?t="middle":e[1]>0?t="top":e[1]<0&&(t="bottom"),t},t.prototype.processOverlap=function(e){},t.prototype.drawLine=function(e){var t=this.getLinePath(),i=this.get("line");this.addShape(e,{type:"path",id:this.getElementId("line"),name:"axis-line",attrs:(0,em.CD)({path:t},i.style)})},t.prototype.getTickLineItems=function(e){var t=this,i=[],n=this.get("tickLine"),r=n.alignTick,o=n.length,s=1;return e.length>=2&&(s=e[1].value-e[0].value),(0,em.S6)(e,function(e){var n=e.point;r||(n=t.getTickPoint(e.value-s/2));var a=t.getSidePoint(n,o);i.push({startPoint:n,tickValue:e.value,endPoint:a,tickId:e.id,id:"tickline-"+e.id})}),i},t.prototype.getSubTickLineItems=function(e){var t=[],i=this.get("subTickLine"),n=i.count,r=e.length;if(r>=2)for(var o=0;o0){var i=(0,em.dp)(t);if(i>e.threshold){var n=Math.ceil(i/e.threshold),r=t.filter(function(e,t){return t%n==0});this.set("ticks",r),this.set("originalTicks",t)}}},t.prototype.getLabelAttrs=function(e,t,i){var n=this.get("label"),r=n.offset,o=n.offsetX,s=n.offsetY,a=n.rotate,l=n.formatter,h=this.getSidePoint(e.point,r),u=this.getSideVector(r,h),d=l?l(e.name,e,t):e.name,c=n.style;c=(0,em.mf)(c)?(0,em.U2)(this.get("theme"),["label","style"],{}):c;var g=(0,em.CD)({x:h.x+o,y:h.y+s,text:d,textAlign:this.getTextAnchor(u),textBaseline:this.getTextBaseline(u)},c);return a&&(g.matrix=ic(h,a)),g},t.prototype.drawLabels=function(e){var t=this,i=this.get("ticks"),n=this.addGroup(e,{name:"axis-label-group",id:this.getElementId("label-group")});(0,em.S6)(i,function(e,r){t.addShape(n,{type:"text",name:"axis-label",id:t.getElementId("label-"+e.id),attrs:t.getLabelAttrs(e,r,i),delegateObject:{tick:e,item:e,index:r}})}),this.processOverlap(n);var r=n.getChildren(),o=(0,em.U2)(this.get("theme"),["label","style"],{}),s=this.get("label"),a=s.style,l=s.formatter;if((0,em.mf)(a)){var h=r.map(function(e){return(0,em.U2)(e.get("delegateObject"),"tick")});(0,em.S6)(r,function(e,t){var i=e.get("delegateObject").tick,n=l?l(i.name,i,t):i.name,r=(0,em.CD)({},o,a(n,t,h));e.attr(r)})}},t.prototype.getTitleAttrs=function(){var e=this.get("title"),t=e.style,i=e.position,n=e.offset,r=e.spacing,o=void 0===r?0:r,s=e.autoRotate,a=t.fontSize,l=.5;"start"===i?l=0:"end"===i&&(l=1);var h=this.getTickPoint(l),u=this.getSidePoint(h,n||o+a/2),d=(0,em.CD)({x:u.x,y:u.y,text:e.text},t),c=e.rotate,g=c;if((0,em.UM)(c)&&s){var p=this.getAxisVector(h);g=it.Dg(p,[1,0],!0)}if(g){var f=ic(u,g);d.matrix=f}return d},t.prototype.drawTitle=function(e){var t,i=this.getTitleAttrs(),n=this.addShape(e,{type:"text",id:this.getElementId("title"),name:"axis-title",attrs:i});(null===(t=this.get("title"))||void 0===t?void 0:t.description)&&this.drawDescriptionIcon(e,n,i.matrix)},t.prototype.drawDescriptionIcon=function(e,t,i){var n=this.addGroup(e,{name:"axis-description",id:this.getElementById("description")}),r=t.getBBox(),o=r.maxX,s=r.maxY,a=r.height,l=this.get("title").iconStyle,h=a/2,u=h/6,d=o+4,c=s-a/2,g=[d+h,c-h],p=g[0],f=g[1],m=[p+h,f+h],v=m[0],E=m[1],_=[p,E+h],C=_[0],S=_[1],y=[d,f+h],T=y[0],b=y[1],A=[d+h,c-a/4],R=A[0],L=A[1],N=[R,L+u],I=N[0],w=N[1],O=[I,w+u],x=O[0],D=O[1],M=[x,D+3*h/4],k=M[0],P=M[1];this.addShape(n,{type:"path",id:this.getElementId("title-description-icon"),name:"axis-title-description-icon",attrs:(0,ef.pi)({path:[["M",p,f],["A",h,h,0,0,1,v,E],["A",h,h,0,0,1,C,S],["A",h,h,0,0,1,T,b],["A",h,h,0,0,1,p,f],["M",R,L],["L",I,w],["M",x,D],["L",k,P]],lineWidth:u,matrix:i},l)}),this.addShape(n,{type:"rect",id:this.getElementId("title-description-rect"),name:"axis-title-description-rect",attrs:{x:d,y:c-a/2,width:a,height:a,stroke:"#000",fill:"#000",opacity:0,matrix:i,cursor:"pointer"}})},t.prototype.applyTickStates=function(e,t){if(this.getItemStates(e).length){var i=this.get("tickStates"),n=this.getElementId("label-"+e.id),r=t.findById(n);if(r){var o=ij(e,"label",i);o&&r.attr(o)}var s=this.getElementId("tickline-"+e.id),a=t.findById(s);if(a){var l=ij(e,"tickLine",i);l&&a.attr(l)}}},t.prototype.updateTickStates=function(e){var t=this.getItemStates(e),i=this.get("tickStates"),n=this.get("label"),r=this.getElementByLocalId("label-"+e.id),o=this.get("tickLine"),s=this.getElementByLocalId("tickline-"+e.id);if(t.length){if(r){var a=ij(e,"label",i);a&&r.attr(a)}if(s){var l=ij(e,"tickLine",i);l&&s.attr(l)}}else r&&r.attr(n.style),s&&s.attr(o.style)},t}(iO);function iZ(e,t,i,n){var r=t.getChildren(),o=!1;return(0,em.S6)(r,function(t){var r=iM(e,t,i,n);o=o||r}),o}function iJ(){return i0}function iQ(e,t,i){return iZ(e,t,i,"head")}function i0(e,t,i){return iZ(e,t,i,"tail")}function i1(e,t,i){return iZ(e,t,i,"middle")}function i2(e){var t,i;return((t=e.attr("matrix"))&&1!==t[0]?(t8(i=[0,0,0],[1,0,0],e.attr("matrix")),Math.atan2(i[1],i[0])):0)%360}function i4(e,t,i,n){var r=!1,o=i2(t),s=e?Math.abs(i.attr("y")-t.attr("y")):Math.abs(i.attr("x")-t.attr("x")),a=(e?i.attr("y")>t.attr("y"):i.attr("x")>t.attr("x"))?t.getBBox():i.getBBox();if(e){var l=Math.abs(Math.cos(o));r=iT(l,0,Math.PI/180)?a.width+n>s:a.height/l+n>s}else{var l=Math.abs(Math.sin(o));r=iT(l,0,Math.PI/180)?a.width+n>s:a.height/l+n>s}return r}function i5(e,t,i,n){var r=(null==n?void 0:n.minGap)||0,o=t.getChildren().slice().filter(function(e){return e.get("visible")});if(!o.length)return!1;var s=!1;i&&o.reverse();for(var a=o.length,l=o[0],h=1;h1){c=Math.ceil(c);for(var f=0;f2){var s=r[0],a=r[r.length-1];!s.get("visible")&&(s.show(),i5(e,t,!1,n)&&(o=!0)),!a.get("visible")&&(a.show(),i5(e,t,!0,n)&&(o=!0))}return o}function ni(e,t,i,n){var r=t.getChildren();if(!r.length||!e&&r.length<2)return!1;var o=iD(r),s=!1;if(s=e?!!i&&o>i:o>Math.abs(r[1].attr("x")-r[0].attr("x"))){var a=n(i,o);(0,em.S6)(r,function(e){var t=ic({x:e.attr("x"),y:e.attr("y")},a);e.attr("matrix",t)})}return s}function nn(){return nr}function nr(e,t,i,n){return ni(e,t,i,function(){return(0,em.hj)(n)?n:e?iP.verticalAxisRotate:iP.horizontalAxisRotate})}function no(e,t,i){return ni(e,t,i,function(t,i){if(!t)return e?iP.verticalAxisRotate:iP.horizontalAxisRotate;if(e)return-Math.acos(t/i);var n=0;return t>i?n=Math.PI/4:(n=Math.asin(t/i))>Math.PI/4&&(n=Math.PI/4),n})}var ns=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return(0,ef.pi)((0,ef.pi)({},t),{type:"line",locationType:"region",start:null,end:null})},t.prototype.getLinePath=function(){var e=this.get("start"),t=this.get("end"),i=[];return i.push(["M",e.x,e.y]),i.push(["L",t.x,t.y]),i},t.prototype.getInnerLayoutBBox=function(){var t=this.get("start"),i=this.get("end"),n=e.prototype.getInnerLayoutBBox.call(this),r=Math.min(t.x,i.x,n.x),o=Math.min(t.y,i.y,n.y),s=Math.max(t.x,i.x,n.maxX),a=Math.max(t.y,i.y,n.maxY);return{x:r,y:o,minX:r,minY:o,maxX:s,maxY:a,width:s-r,height:a-o}},t.prototype.isVertical=function(){var e=this.get("start"),t=this.get("end");return(0,em.vQ)(e.x,t.x)},t.prototype.isHorizontal=function(){var e=this.get("start"),t=this.get("end");return(0,em.vQ)(e.y,t.y)},t.prototype.getTickPoint=function(e){var t=this.get("start"),i=this.get("end"),n=i.x-t.x,r=i.y-t.y;return{x:t.x+n*e,y:t.y+r*e}},t.prototype.getSideVector=function(e){var t=this.getAxisVector(),i=io.Fv([0,0],t),n=this.get("verticalFactor"),r=[i[1],-1*i[0]];return io.bA([0,0],r,e*n)},t.prototype.getAxisVector=function(){var e=this.get("start"),t=this.get("end");return[t.x-e.x,t.y-e.y]},t.prototype.processOverlap=function(e){var t=this,i=this.isVertical(),n=this.isHorizontal();if(i||n){var r=this.get("label"),o=this.get("title"),s=this.get("verticalLimitLength"),a=r.offset,l=s,h=0,u=0;o&&(h=o.style.fontSize,u=o.spacing),l&&(l=l-a-u-h);var d=this.get("overlapOrder");if((0,em.S6)(d,function(i){r[i]&&t.canProcessOverlap(i)&&t.autoProcessOverlap(i,r[i],e,l)}),o&&(0,em.UM)(o.offset)){var c=e.getCanvasBBox(),g=i?c.width:c.height;o.offset=a+g+u+h/2}}},t.prototype.canProcessOverlap=function(e){var t=this.get("label");return"autoRotate"!==e||(0,em.UM)(t.rotate)},t.prototype.autoProcessOverlap=function(e,t,i,n){var r=this,o=this.isVertical(),s=!1,a=ea[e];if(!0===t?(this.get("label"),s=a.getDefault()(o,i,n)):(0,em.mf)(t)?s=t(o,i,n):(0,em.Kn)(t)?a[t.type]&&(s=a[t.type](o,i,n,t.cfg)):a[t]&&(s=a[t](o,i,n)),"autoRotate"===e){if(s){var l=i.getChildren(),h=this.get("verticalFactor");(0,em.S6)(l,function(e){"center"===e.attr("textAlign")&&e.attr("textAlign",h>0?"end":"start")})}}else if("autoHide"===e){var u=i.getChildren().slice(0);(0,em.S6)(u,function(e){e.get("visible")||(r.get("isRegister")&&r.unregisterElement(e),e.remove())})}},t}(iq),na=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return(0,ef.pi)((0,ef.pi)({},t),{type:"circle",locationType:"circle",center:null,radius:null,startAngle:-Math.PI/2,endAngle:3*Math.PI/2})},t.prototype.getLinePath=function(){var e=this.get("center"),t=e.x,i=e.y,n=this.get("radius"),r=this.get("startAngle"),o=this.get("endAngle"),s=[];if(Math.abs(o-r)===2*Math.PI)s=[["M",t,i-n],["A",n,n,0,1,1,t,i+n],["A",n,n,0,1,1,t,i-n],["Z"]];else{var a=this.getCirclePoint(r),l=this.getCirclePoint(o),h=Math.abs(o-r)>Math.PI?1:0,u=r>o?0:1;s=[["M",t,i],["L",a.x,a.y],["A",n,n,0,h,u,l.x,l.y],["L",t,i]]}return s},t.prototype.getTickPoint=function(e){var t=this.get("startAngle"),i=this.get("endAngle");return this.getCirclePoint(t+(i-t)*e)},t.prototype.getSideVector=function(e,t){var i=this.get("center"),n=[t.x-i.x,t.y-i.y],r=this.get("verticalFactor"),o=io.kE(n);return io.bA(n,n,r*e/o),n},t.prototype.getAxisVector=function(e){var t=this.get("center"),i=[e.x-t.x,e.y-t.y];return[i[1],-1*i[0]]},t.prototype.getCirclePoint=function(e,t){var i=this.get("center");return t=t||this.get("radius"),{x:i.x+Math.cos(e)*t,y:i.y+Math.sin(e)*t}},t.prototype.canProcessOverlap=function(e){var t=this.get("label");return"autoRotate"!==e||(0,em.UM)(t.rotate)},t.prototype.processOverlap=function(e){var t=this,i=this.get("label"),n=this.get("title"),r=this.get("verticalLimitLength"),o=i.offset,s=r,a=0,l=0;n&&(a=n.style.fontSize,l=n.spacing),s&&(s=s-o-l-a);var h=this.get("overlapOrder");if((0,em.S6)(h,function(n){i[n]&&t.canProcessOverlap(n)&&t.autoProcessOverlap(n,i[n],e,s)}),n&&(0,em.UM)(n.offset)){var u=e.getCanvasBBox().height;n.offset=o+u+l+a/2}},t.prototype.autoProcessOverlap=function(e,t,i,n){var r=this,o=!1,s=ea[e];if(n>0&&(!0===t?o=s.getDefault()(!1,i,n):(0,em.mf)(t)?o=t(!1,i,n):(0,em.Kn)(t)?s[t.type]&&(o=s[t.type](!1,i,n,t.cfg)):s[t]&&(o=s[t](!1,i,n))),"autoRotate"===e){if(o){var a=i.getChildren(),l=this.get("verticalFactor");(0,em.S6)(a,function(e){"center"===e.attr("textAlign")&&e.attr("textAlign",l>0?"end":"start")})}}else if("autoHide"===e){var h=i.getChildren().slice(0);(0,em.S6)(h,function(e){e.get("visible")||(r.get("isRegister")&&r.unregisterElement(e),e.remove())})}},t}(iq),nl=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return(0,ef.pi)((0,ef.pi)({},t),{name:"crosshair",type:"base",line:{},text:null,textBackground:{},capture:!1,defaultCfg:{line:{style:{lineWidth:1,stroke:iP.lineColor}},text:{position:"start",offset:10,autoRotate:!1,content:null,style:{fill:iP.textColor,textAlign:"center",textBaseline:"middle",fontFamily:iP.fontFamily}},textBackground:{padding:5,style:{stroke:iP.lineColor}}}})},t.prototype.renderInner=function(e){this.get("line")&&this.renderLine(e),this.get("text")&&(this.renderText(e),this.renderBackground(e))},t.prototype.renderText=function(e){var t=this.get("text"),i=t.style,n=t.autoRotate,r=t.content;if(!(0,em.UM)(r)){var o=this.getTextPoint(),s=null;n&&(s=ic(o,this.getRotateAngle())),this.addShape(e,{type:"text",name:"crosshair-text",id:this.getElementId("text"),attrs:(0,ef.pi)((0,ef.pi)((0,ef.pi)({},o),{text:r,matrix:s}),i)})}},t.prototype.renderLine=function(e){var t=this.getLinePath(),i=this.get("line").style;this.addShape(e,{type:"path",name:"crosshair-line",id:this.getElementId("line"),attrs:(0,ef.pi)({path:t},i)})},t.prototype.renderBackground=function(e){var t=this.getElementId("text"),i=e.findById(t),n=this.get("textBackground");if(n&&i){var r=i.getBBox(),o=iE(n.padding),s=n.style;this.addShape(e,{type:"rect",name:"crosshair-text-background",id:this.getElementId("text-background"),attrs:(0,ef.pi)({x:r.x-o[3],y:r.y-o[0],width:r.width+o[1]+o[3],height:r.height+o[0]+o[2],matrix:i.attr("matrix")},s)}).toBack()}},t}(iO),nh=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return(0,ef.pi)((0,ef.pi)({},t),{type:"line",locationType:"region",start:null,end:null})},t.prototype.getRotateAngle=function(){var e=this.getLocation(),t=e.start,i=e.end,n=this.get("text").position,r=Math.atan2(i.y-t.y,i.x-t.x);return"start"===n?r-Math.PI/2:r+Math.PI/2},t.prototype.getTextPoint=function(){var e=this.getLocation(),t=e.start,i=e.end,n=this.get("text");return iA(t,i,n.position,n.offset)},t.prototype.getLinePath=function(){var e=this.getLocation(),t=e.start,i=e.end;return[["M",t.x,t.y],["L",i.x,i.y]]},t}(nl),nu=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return(0,ef.pi)((0,ef.pi)({},t),{type:"circle",locationType:"circle",center:null,radius:100,startAngle:-Math.PI/2,endAngle:3*Math.PI/2})},t.prototype.getRotateAngle=function(){var e=this.getLocation(),t=e.startAngle,i=e.endAngle;return"start"===this.get("text").position?t+Math.PI/2:i-Math.PI/2},t.prototype.getTextPoint=function(){var e=this.get("text"),t=e.position,i=e.offset,n=this.getLocation(),r=n.center,o=n.radius,s=n.startAngle,a=n.endAngle,l=this.getRotateAngle()-Math.PI,h=iy(r,o,"start"===t?s:a),u=Math.cos(l)*i,d=Math.sin(l)*i;return{x:h.x+u,y:h.y+d}},t.prototype.getLinePath=function(){var e=this.getLocation(),t=e.center,i=e.radius,n=e.startAngle,r=e.endAngle,o=null;if(r-n==2*Math.PI){var s=t.x,a=t.y;o=[["M",s,a-i],["A",i,i,0,1,1,s,a+i],["A",i,i,0,1,1,s,a-i],["Z"]]}else{var l=iy(t,i,n),h=iy(t,i,r),u=Math.abs(r-n)>Math.PI?1:0,d=n>r?0:1;o=[["M",l.x,l.y],["A",i,i,0,u,d,h.x,h.y]]}return o},t}(nl),nd="g2-crosshair",nc=nd+"-line",ng=nd+"-text",np=((G={})[""+nd]={position:"relative"},G[""+nc]={position:"absolute",backgroundColor:"rgba(0, 0, 0, 0.25)"},G[""+ng]={position:"absolute",color:iP.textColor,fontFamily:iP.fontFamily},G),nf=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return(0,ef.pi)((0,ef.pi)({},t),{name:"crosshair",type:"html",locationType:"region",start:{x:0,y:0},end:{x:0,y:0},capture:!1,text:null,containerTpl:'
',crosshairTpl:'
',textTpl:'{content}',domStyles:null,containerClassName:nd,defaultStyles:np,defaultCfg:{text:{position:"start",content:null,align:"center",offset:10}}})},t.prototype.render=function(){this.resetText(),this.resetPosition()},t.prototype.initCrossHair=function(){var e=this.getContainer(),t=eS(this.get("crosshairTpl"));e.appendChild(t),this.applyStyle(nc,t),this.set("crosshairEl",t)},t.prototype.getTextPoint=function(){var e=this.getLocation(),t=e.start,i=e.end,n=this.get("text");return iA(t,i,n.position,n.offset)},t.prototype.resetText=function(){var e=this.get("text"),t=this.get("textEl");if(e){var i=e.content;if(!t){var n=this.getContainer();t=eS((0,em.ng)(this.get("textTpl"),e)),n.appendChild(t),this.applyStyle(ng,t),this.set("textEl",t)}t.innerHTML=i}else t&&t.remove()},t.prototype.isVertical=function(e,t){return e.x===t.x},t.prototype.resetPosition=function(){var e=this.get("crosshairEl");e||(this.initCrossHair(),e=this.get("crosshairEl"));var t=this.get("start"),i=this.get("end"),n=Math.min(t.x,i.x),r=Math.min(t.y,i.y);this.isVertical(t,i)?ey(e,{width:"1px",height:ib(Math.abs(i.y-t.y))}):ey(e,{height:"1px",width:ib(Math.abs(i.x-t.x))}),ey(e,{top:ib(r),left:ib(n)}),this.alignText()},t.prototype.alignText=function(){var e=this.get("textEl");if(e){var t=this.get("text").align,i=e.clientWidth,n=this.getTextPoint();switch(t){case"center":n.x=n.x-i/2;break;case"right":n.x=n.x-i}ey(e,{top:ib(n.y),left:ib(n.x)})}},t.prototype.updateInner=function(t){(0,em.wH)(t,"text")&&this.resetText(),e.prototype.updateInner.call(this,t)},t}(i$),nm=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return(0,ef.pi)((0,ef.pi)({},t),{name:"grid",line:{},alternateColor:null,capture:!1,items:[],closed:!1,defaultCfg:{line:{type:"line",style:{lineWidth:1,stroke:iP.lineColor}}}})},t.prototype.getLineType=function(){return(this.get("line")||this.get("defaultCfg").line).type},t.prototype.renderInner=function(e){this.drawGrid(e)},t.prototype.getAlternatePath=function(e,t){var i=this.getGridPath(e),n=t.slice(0).reverse(),r=this.getGridPath(n,!0);return this.get("closed")?i=i.concat(r):(r[0][0]="L",(i=i.concat(r)).push(["Z"])),i},t.prototype.getPathStyle=function(){return this.get("line").style},t.prototype.drawGrid=function(e){var t=this,i=this.get("line"),n=this.get("items"),r=this.get("alternateColor"),o=null;(0,em.S6)(n,function(s,a){var l=s.id||a;if(i){var h=t.getPathStyle();h=(0,em.mf)(h)?h(s,a,n):h;var u=t.getElementId("line-"+l),d=t.getGridPath(s.points);t.addShape(e,{type:"path",name:"grid-line",id:u,attrs:(0,em.CD)({path:d},h)})}if(r&&a>0){var c=t.getElementId("region-"+l),g=a%2==0;if((0,em.HD)(r))g&&t.drawAlternateRegion(c,e,o.points,s.points,r);else{var p=g?r[1]:r[0];t.drawAlternateRegion(c,e,o.points,s.points,p)}}o=s})},t.prototype.drawAlternateRegion=function(e,t,i,n,r){var o=this.getAlternatePath(i,n);this.addShape(t,{type:"path",id:e,name:"grid-region",attrs:{path:o,fill:r}})},t}(iO),nv=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return(0,ef.pi)((0,ef.pi)({},t),{type:"circle",center:null,closed:!0})},t.prototype.getGridPath=function(e,t){var i=this.getLineType(),n=this.get("closed"),r=[];if(e.length){if("circle"===i){var o,s,a,l,h,u,d=this.get("center"),c=e[0],g=(o=d.x,s=d.y,a=c.x,l=c.y,Math.sqrt((h=a-o)*h+(u=l-s)*u)),p=t?0:1;n?(r.push(["M",d.x,d.y-g]),r.push(["A",g,g,0,0,p,d.x,d.y+g]),r.push(["A",g,g,0,0,p,d.x,d.y-g]),r.push(["Z"])):(0,em.S6)(e,function(e,t){0===t?r.push(["M",e.x,e.y]):r.push(["A",g,g,0,0,p,e.x,e.y])})}else(0,em.S6)(e,function(e,t){0===t?r.push(["M",e.x,e.y]):r.push(["L",e.x,e.y])}),n&&r.push(["Z"])}return r},t}(nm),nE=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return(0,ef.pi)((0,ef.pi)({},t),{type:"line"})},t.prototype.getGridPath=function(e){var t=[];return(0,em.S6)(e,function(e,i){0===i?t.push(["M",e.x,e.y]):t.push(["L",e.x,e.y])}),t},t}(nm),n_=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return(0,ef.pi)((0,ef.pi)({},t),{name:"legend",layout:"horizontal",locationType:"point",x:0,y:0,offsetX:0,offsetY:0,title:null,background:null})},t.prototype.getLayoutBBox=function(){var t=e.prototype.getLayoutBBox.call(this),i=this.get("maxWidth"),n=this.get("maxHeight"),r=t.width,o=t.height;return i&&(r=Math.min(r,i)),n&&(o=Math.min(o,n)),iS(t.minX,t.minY,r,o)},t.prototype.setLocation=function(e){this.set("x",e.x),this.set("y",e.y),this.resetLocation()},t.prototype.resetLocation=function(){var e=this.get("x"),t=this.get("y"),i=this.get("offsetX"),n=this.get("offsetY");this.moveElementTo(this.get("group"),{x:e+i,y:t+n})},t.prototype.applyOffset=function(){this.resetLocation()},t.prototype.getDrawPoint=function(){return this.get("currentPoint")},t.prototype.setDrawPoint=function(e){return this.set("currentPoint",e)},t.prototype.renderInner=function(e){this.resetDraw(),this.get("title")&&this.drawTitle(e),this.drawLegendContent(e),this.get("background")&&this.drawBackground(e)},t.prototype.drawBackground=function(e){var t=this.get("background"),i=e.getBBox(),n=iE(t.padding),r=(0,ef.pi)({x:0,y:0,width:i.width+n[1]+n[3],height:i.height+n[0]+n[2]},t.style);this.addShape(e,{type:"rect",id:this.getElementId("background"),name:"legend-background",attrs:r}).toBack()},t.prototype.drawTitle=function(e){var t=this.get("currentPoint"),i=this.get("title"),n=i.spacing,r=i.style,o=i.text,s=this.addShape(e,{type:"text",id:this.getElementId("title"),name:"legend-title",attrs:(0,ef.pi)({text:o,x:t.x,y:t.y},r)}).getBBox();this.set("currentPoint",{x:t.x,y:s.maxY+n})},t.prototype.resetDraw=function(){var e=this.get("background"),t={x:0,y:0};if(e){var i=iE(e.padding);t.x=i[3],t.y=i[0]}this.set("currentPoint",t)},t}(iO),nC={marker:{style:{inactiveFill:"#000",inactiveOpacity:.45,fill:"#000",opacity:1,size:12}},text:{style:{fill:"#ccc",fontSize:12}}},nS={fill:iP.textColor,fontSize:12,textAlign:"start",textBaseline:"middle",fontFamily:iP.fontFamily,fontWeight:"normal",lineHeight:12},ny="navigation-arrow-right",nT="navigation-arrow-left",nb={right:90*Math.PI/180,left:270*Math.PI/180,up:0,down:180*Math.PI/180},nA=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.currentPageIndex=1,t.totalPagesCnt=1,t.pageWidth=0,t.pageHeight=0,t.startX=0,t.startY=0,t.onNavigationBack=function(){var e=t.getElementByLocalId("item-group");if(t.currentPageIndex>1){t.currentPageIndex-=1,t.updateNavigation();var i=t.getCurrentNavigationMatrix();t.get("animate")?e.animate({matrix:i},100):e.attr({matrix:i})}},t.onNavigationAfter=function(){var e=t.getElementByLocalId("item-group");if(t.currentPageIndexp&&(p=E),"horizontal"===d?(f&&fa))&&(1===m&&(v=f.x+u,i.moveElementTo(g,{x:T,y:f.y+d/2-p.height/2-p.minY})),m+=1,f.x=n,f.y+=y),i.moveElementTo(e,f),e.getParent().setClip({type:"rect",attrs:{x:f.x,y:f.y,width:s+u,height:d}}),f.x+=s+u})}else{(0,em.S6)(s,function(e){var t=e.getBBox();t.width>E&&(E=t.width)}),_=E,E+=u,a&&(E=Math.min(a,E),_=Math.min(a,_)),this.pageWidth=E,this.pageHeight=l-Math.max(p.height,d+C);var b=Math.floor(this.pageHeight/(d+C));(0,em.S6)(s,function(e,t){0!==t&&t%b==0&&(m+=1,f.x+=E,f.y=r),i.moveElementTo(e,f),e.getParent().setClip({type:"rect",attrs:{x:f.x,y:f.y,width:E,height:d}}),f.y+=d+C}),this.totalPagesCnt=m,this.moveElementTo(g,{x:n+_/2-p.width/2-p.minX,y:l-p.height-p.minY})}this.pageHeight&&this.pageWidth&&t.getParent().setClip({type:"rect",attrs:{x:this.startX,y:this.startY,width:this.pageWidth,height:this.pageHeight}}),"horizontal"===o&&this.get("maxRow")?this.totalPagesCnt=Math.ceil(m/this.get("maxRow")):this.totalPagesCnt=m,this.currentPageIndex>this.totalPagesCnt&&(this.currentPageIndex=1),this.updateNavigation(g),t.attr("matrix",this.getCurrentNavigationMatrix())},t.prototype.drawNavigation=function(e,t,i,n){var r={x:0,y:0},o=this.addGroup(e,{id:this.getElementId("navigation-group"),name:"legend-navigation"}),s=(0,em.U2)(n.marker,"style",{}),a=s.size,l=void 0===a?12:a,h=(0,ef._T)(s,["size"]),u=this.drawArrow(o,r,nT,"horizontal"===t?"up":"left",l,h);u.on("click",this.onNavigationBack);var d=u.getBBox();r.x+=d.width+2;var c=this.addShape(o,{type:"text",id:this.getElementId("navigation-text"),name:"navigation-text",attrs:(0,ef.pi)({x:r.x,y:r.y+l/2,text:i,textBaseline:"middle"},(0,em.U2)(n.text,"style"))}).getBBox();return r.x+=c.width+2,this.drawArrow(o,r,ny,"horizontal"===t?"down":"right",l,h).on("click",this.onNavigationAfter),o},t.prototype.updateNavigation=function(e){var t=(0,em.b$)({},nC,this.get("pageNavigator")).marker.style,i=t.fill,n=t.opacity,r=t.inactiveFill,o=t.inactiveOpacity,s=this.currentPageIndex+"/"+this.totalPagesCnt,a=e?e.getChildren()[1]:this.getElementByLocalId("navigation-text"),l=e?e.findById(this.getElementId(nT)):this.getElementByLocalId(nT),h=e?e.findById(this.getElementId(ny)):this.getElementByLocalId(ny);a.attr("text",s),l.attr("opacity",1===this.currentPageIndex?o:n),l.attr("fill",1===this.currentPageIndex?r:i),l.attr("cursor",1===this.currentPageIndex?"not-allowed":"pointer"),h.attr("opacity",this.currentPageIndex===this.totalPagesCnt?o:n),h.attr("fill",this.currentPageIndex===this.totalPagesCnt?r:i),h.attr("cursor",this.currentPageIndex===this.totalPagesCnt?"not-allowed":"pointer");var u=l.getBBox().maxX+2;a.attr("x",u),u+=a.getBBox().width+2,this.updateArrowPath(h,{x:u,y:0})},t.prototype.drawArrow=function(e,t,i,n,r,o){var s=t.x,a=t.y,l=this.addShape(e,{type:"path",id:this.getElementId(i),name:i,attrs:(0,ef.pi)({size:r,direction:n,path:[["M",s+r/2,a],["L",s,a+r],["L",s+r,a+r],["Z"]],cursor:"pointer"},o)});return l.attr("matrix",ic({x:s+r/2,y:a+r/2},nb[n])),l},t.prototype.updateArrowPath=function(e,t){var i=t.x,n=t.y,r=e.attr(),o=r.size,s=ic({x:i+o/2,y:n+o/2},nb[r.direction]);e.attr("path",[["M",i+o/2,n],["L",i,n+o],["L",i+o,n+o],["Z"]]),e.attr("matrix",s)},t.prototype.getCurrentNavigationMatrix=function(){var e=this.currentPageIndex,t=this.pageWidth,i=this.pageHeight;return ig("horizontal"===this.get("layout")?{x:0,y:i*(1-e)}:{x:t*(1-e),y:0})},t.prototype.applyItemStates=function(e,t){if(this.getItemStates(e).length>0){var i=t.getChildren(),n=this.get("itemStates");(0,em.S6)(i,function(t){var i=t.get("name").split("-")[2],r=ij(e,i,n);r&&(t.attr(r),"marker"===i&&!(t.get("isStroke")&&t.get("isFill"))&&(t.get("isStroke")&&t.attr("fill",null),t.get("isFill")&&t.attr("stroke",null)))})}},t.prototype.getLimitItemWidth=function(){var e=this.get("itemWidth"),t=this.get("maxItemWidth");return t?e&&(t=e<=t?e:t):e&&(t=e),t},t}(n_),nR=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return(0,ef.pi)((0,ef.pi)({},t),{type:"continue",min:0,max:100,value:null,colors:[],track:{},rail:{},label:{},handler:{},slidable:!0,tip:null,step:null,maxWidth:null,maxHeight:null,defaultCfg:{label:{align:"rail",spacing:5,formatter:null,style:{fontSize:12,fill:iP.textColor,textBaseline:"middle",fontFamily:iP.fontFamily}},handler:{size:10,style:{fill:"#fff",stroke:"#333"}},track:{},rail:{type:"color",size:20,defaultLength:100,style:{fill:"#DCDEE2"}},title:{spacing:5,style:{fill:iP.textColor,fontSize:12,textAlign:"start",textBaseline:"top"}}}})},t.prototype.isSlider=function(){return!0},t.prototype.getValue=function(){return this.getCurrentValue()},t.prototype.getRange=function(){return{min:this.get("min"),max:this.get("max")}},t.prototype.setRange=function(e,t){this.update({min:e,max:t})},t.prototype.setValue=function(e){var t=this.getValue();this.set("value",e);var i=this.get("group");this.resetTrackClip(),this.get("slidable")&&this.resetHandlers(i),this.delegateEmit("valuechanged",{originValue:t,value:e})},t.prototype.initEvent=function(){var e=this.get("group");this.bindSliderEvent(e),this.bindRailEvent(e),this.bindTrackEvent(e)},t.prototype.drawLegendContent=function(e){this.drawRail(e),this.drawLabels(e),this.fixedElements(e),this.resetTrack(e),this.resetTrackClip(e),this.get("slidable")&&this.resetHandlers(e)},t.prototype.bindSliderEvent=function(e){this.bindHandlersEvent(e)},t.prototype.bindHandlersEvent=function(e){var t=this;e.on("legend-handler-min:drag",function(e){var i=t.getValueByCanvasPoint(e.x,e.y),n=t.getCurrentValue()[1];ni&&(n=i),t.setValue([n,i])})},t.prototype.bindRailEvent=function(e){},t.prototype.bindTrackEvent=function(e){var t=this,i=null;e.on("legend-track:dragstart",function(e){i={x:e.x,y:e.y}}),e.on("legend-track:drag",function(e){if(i){var n=t.getValueByCanvasPoint(i.x,i.y),r=t.getValueByCanvasPoint(e.x,e.y),o=t.getCurrentValue(),s=o[1]-o[0],a=t.getRange(),l=r-n;l<0?o[0]+l>a.min?t.setValue([o[0]+l,o[1]+l]):t.setValue([a.min,a.min+s]):l>0&&(l>0&&o[1]+lo&&(h=o),h0&&this.changeRailLength(n,r,i[r]-h)}},t.prototype.changeRailLength=function(e,t,i){var n,r=e.getBBox();n="height"===t?this.getRailPath(r.x,r.y,r.width,i):this.getRailPath(r.x,r.y,i,r.height),e.attr("path",n)},t.prototype.changeRailPosition=function(e,t,i){var n=e.getBBox(),r=this.getRailPath(t,i,n.width,n.height);e.attr("path",r)},t.prototype.fixedHorizontal=function(e,t,i,n){var r=this.get("label"),o=r.align,s=r.spacing,a=i.getBBox(),l=e.getBBox(),h=t.getBBox(),u=a.height;this.fitRailLength(l,h,a,i),a=i.getBBox(),"rail"===o?(e.attr({x:n.x,y:n.y+u/2}),this.changeRailPosition(i,n.x+l.width+s,n.y),t.attr({x:n.x+l.width+a.width+2*s,y:n.y+u/2})):"top"===o?(e.attr({x:n.x,y:n.y}),t.attr({x:n.x+a.width,y:n.y}),this.changeRailPosition(i,n.x,n.y+l.height+s)):(this.changeRailPosition(i,n.x,n.y),e.attr({x:n.x,y:n.y+a.height+s}),t.attr({x:n.x+a.width,y:n.y+a.height+s}))},t.prototype.fixedVertail=function(e,t,i,n){var r=this.get("label"),o=r.align,s=r.spacing,a=i.getBBox(),l=e.getBBox(),h=t.getBBox();if(this.fitRailLength(l,h,a,i),a=i.getBBox(),"rail"===o)e.attr({x:n.x,y:n.y}),this.changeRailPosition(i,n.x,n.y+l.height+s),t.attr({x:n.x,y:n.y+l.height+a.height+2*s});else if("right"===o)e.attr({x:n.x+a.width+s,y:n.y}),this.changeRailPosition(i,n.x,n.y),t.attr({x:n.x+a.width+s,y:n.y+a.height});else{var u=Math.max(l.width,h.width);e.attr({x:n.x,y:n.y}),this.changeRailPosition(i,n.x+u+s,n.y),t.attr({x:n.x,y:n.y+a.height})}},t}(n_),nL="g2-tooltip",nN="g2-tooltip-title",nI="g2-tooltip-list",nw="g2-tooltip-list-item",nO="g2-tooltip-marker",nx="g2-tooltip-value",nD="g2-tooltip-name",nM="g2-tooltip-crosshair-x",nk="g2-tooltip-crosshair-y",nP=((z={})[""+nL]={position:"absolute",visibility:"visible",zIndex:8,transition:"visibility 0.2s cubic-bezier(0.23, 1, 0.32, 1), left 0.4s cubic-bezier(0.23, 1, 0.32, 1), top 0.4s cubic-bezier(0.23, 1, 0.32, 1)",backgroundColor:"rgba(255, 255, 255, 0.9)",boxShadow:"0px 0px 10px #aeaeae",borderRadius:"3px",color:"rgb(87, 87, 87)",fontSize:"12px",fontFamily:iP.fontFamily,lineHeight:"20px",padding:"10px 10px 6px 10px"},z[""+nN]={marginBottom:"4px"},z[""+nI]={margin:"0px",listStyleType:"none",padding:"0px"},z[""+nw]={listStyleType:"none",marginBottom:"4px"},z[""+nO]={width:"8px",height:"8px",borderRadius:"50%",display:"inline-block",marginRight:"8px"},z[""+nx]={display:"inline-block",float:"right",marginLeft:"30px"},z[""+nM]={position:"absolute",width:"1px",backgroundColor:"rgba(0, 0, 0, 0.25)"},z[""+nk]={position:"absolute",height:"1px",backgroundColor:"rgba(0, 0, 0, 0.25)"},z),nF=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return(0,ef.pi)((0,ef.pi)({},t),{name:"tooltip",type:"html",x:0,y:0,items:[],customContent:null,containerTpl:'
    ',itemTpl:'
  • \n \n {name}:\n {value}\n
  • ',xCrosshairTpl:'
    ',yCrosshairTpl:'
    ',title:null,showTitle:!0,region:null,crosshairsRegion:null,containerClassName:nL,crosshairs:null,offset:10,position:"right",domStyles:null,defaultStyles:nP})},t.prototype.render=function(){this.get("customContent")?this.renderCustomContent():(this.resetTitle(),this.renderItems()),this.resetPosition()},t.prototype.clear=function(){this.clearCrosshairs(),this.setTitle(""),this.clearItemDoms()},t.prototype.show=function(){var e=this.getContainer();e&&!this.destroyed&&(this.set("visible",!0),ey(e,{visibility:"visible"}),this.setCrossHairsVisible(!0))},t.prototype.hide=function(){var e=this.getContainer();e&&!this.destroyed&&(this.set("visible",!1),ey(e,{visibility:"hidden"}),this.setCrossHairsVisible(!1))},t.prototype.getLocation=function(){return{x:this.get("x"),y:this.get("y")}},t.prototype.setLocation=function(e){this.set("x",e.x),this.set("y",e.y),this.resetPosition()},t.prototype.setCrossHairsVisible=function(e){var t=e?"":"none",i=this.get("xCrosshairDom"),n=this.get("yCrosshairDom");i&&ey(i,{display:t}),n&&ey(n,{display:t})},t.prototype.initContainer=function(){if(e.prototype.initContainer.call(this),this.get("customContent")){this.get("container")&&this.get("container").remove();var t=this.getHtmlContentNode();this.get("parent").appendChild(t),this.set("container",t),this.resetStyles(),this.applyStyles()}},t.prototype.updateInner=function(t){if(this.get("customContent"))this.renderCustomContent();else{var i;i=!1,(0,em.S6)(["title","showTitle"],function(e){if((0,em.wH)(t,e))return i=!0,!1}),i&&this.resetTitle(),(0,em.wH)(t,"items")&&this.renderItems()}e.prototype.updateInner.call(this,t)},t.prototype.initDom=function(){this.cacheDoms()},t.prototype.removeDom=function(){e.prototype.removeDom.call(this),this.clearCrosshairs()},t.prototype.resetPosition=function(){var e,t=this.get("x"),i=this.get("y"),n=this.get("offset"),r=this.getOffset(),o=r.offsetX,s=r.offsetY,a=this.get("position"),l=this.get("region"),h=this.getContainer(),u=this.getBBox(),d=u.width,c=u.height;l&&(e=iC(l));var g=function(e,t,i,n,r,o,s){var a=function(e,t,i,n,r,o){var s=e,a=t;switch(o){case"left":s=e-n-i,a=t-r/2;break;case"right":s=e+i,a=t-r/2;break;case"top":s=e-n/2,a=t-r-i;break;case"bottom":s=e-n/2,a=t+i;break;default:s=e+i,a=t-r-i}return{x:s,y:a}}(e,t,i,n,r,o);if(s){var l,h,u=(l=a.x,h=a.y,{left:ls.x+s.width,top:hs.y+s.height});"auto"===o?(u.right&&(a.x=Math.max(0,e-n-i)),u.top&&(a.y=Math.max(0,t-r-i))):"top"===o||"bottom"===o?(u.left&&(a.x=s.x),u.right&&(a.x=s.x+s.width-n),"top"===o&&u.top&&(a.y=t+i),"bottom"===o&&u.bottom&&(a.y=t-r-i)):(u.top&&(a.y=s.y),u.bottom&&(a.y=s.y+s.height-r),"left"===o&&u.left&&(a.x=e+i),"right"===o&&u.right&&(a.x=e-n-i))}return a}(t,i,n,d,c,a,e);ey(h,{left:ib(g.x+o),top:ib(g.y+s)}),this.resetCrosshairs()},t.prototype.renderCustomContent=function(){var e=this.getHtmlContentNode(),t=this.get("parent"),i=this.get("container");i&&i.parentNode===t?t.replaceChild(e,i):t.appendChild(e),this.set("container",e),this.resetStyles(),this.applyStyles()},t.prototype.getHtmlContentNode=function(){var e,t=this.get("customContent");if(t){var i=t(this.get("title"),this.get("items"));e=(0,em.kK)(i)?i:eS(i)}return e},t.prototype.cacheDoms=function(){var e=this.getContainer(),t=e.getElementsByClassName(nN)[0],i=e.getElementsByClassName(nI)[0];this.set("titleDom",t),this.set("listDom",i)},t.prototype.resetTitle=function(){var e=this.get("title");this.get("showTitle")&&e?this.setTitle(e):this.setTitle("")},t.prototype.setTitle=function(e){var t=this.get("titleDom");t&&(t.innerText=e)},t.prototype.resetCrosshairs=function(){var e=this.get("crosshairsRegion"),t=this.get("crosshairs");if(e&&t){var i=iC(e),n=this.get("xCrosshairDom"),r=this.get("yCrosshairDom");"x"===t?(this.resetCrosshair("x",i),r&&(r.remove(),this.set("yCrosshairDom",null))):"y"===t?(this.resetCrosshair("y",i),n&&(n.remove(),this.set("xCrosshairDom",null))):(this.resetCrosshair("x",i),this.resetCrosshair("y",i)),this.setCrossHairsVisible(this.get("visible"))}else this.clearCrosshairs()},t.prototype.resetCrosshair=function(e,t){var i=this.checkCrosshair(e),n=this.get(e);"x"===e?ey(i,{left:ib(n),top:ib(t.y),height:ib(t.height)}):ey(i,{top:ib(n),left:ib(t.x),width:ib(t.width)})},t.prototype.checkCrosshair=function(e){var t=e+"CrosshairDom",i=eh["CROSSHAIR_"+e.toUpperCase()],n=this.get(t),r=this.get("parent");return n||(n=eS(this.get(e+"CrosshairTpl")),this.applyStyle(i,n),r.appendChild(n),this.set(t,n)),n},t.prototype.renderItems=function(){this.clearItemDoms();var e=this.get("items"),t=this.get("itemTpl"),i=this.get("listDom");i&&((0,em.S6)(e,function(e){var n=eQ.toCSSGradient(e.color),r=(0,ef.pi)((0,ef.pi)({},e),{color:n}),o=eS((0,em.ng)(t,r));i.appendChild(o)}),this.applyChildrenStyles(i,this.get("domStyles")))},t.prototype.clearItemDoms=function(){this.get("listDom")&&i_(this.get("listDom"))},t.prototype.clearCrosshairs=function(){var e=this.get("xCrosshairDom"),t=this.get("yCrosshairDom");e&&e.remove(),t&&t.remove(),this.set("xCrosshairDom",null),this.set("yCrosshairDom",null)},t}(i$),nB={opacity:0},nU={stroke:"#C5C5C5",strokeOpacity:.85},nH={fill:"#CACED4",opacity:.85},nV=i(39499);function nW(e){return(0,em.UI)(e,function(e,t){return[0===t?"M":"L",e[0],e[1]]})}var nG=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return(0,ef.pi)((0,ef.pi)({},t),{name:"trend",x:0,y:0,width:200,height:16,smooth:!0,isArea:!1,data:[],backgroundStyle:nB,lineStyle:nU,areaStyle:nH})},t.prototype.renderInner=function(e){var t=this.cfg,i=t.width,n=t.height,r=t.data,o=t.smooth,s=t.isArea,a=t.backgroundStyle,l=t.lineStyle,h=t.areaStyle;this.addShape(e,{id:this.getElementId("background"),type:"rect",attrs:(0,ef.pi)({x:0,y:0,width:i,height:n},a)});var u=(void 0===(d=o)&&(d=!0),c=new tx({values:r}),g=new e9({values:(0,em.UI)(r,function(e,t){return t})}),p=(0,em.UI)(r,function(e,t){return[g.scale(t)*i,n-c.scale(e)*n]}),d?function(e){if(e.length<=2)return nW(e);var t=[];(0,em.S6)(e,function(e){(0,em.Xy)(e,t.slice(t.length-2))||t.push(e[0],e[1])});var i=(0,nV.e9)(t,!1),n=(0,em.YM)(e),r=n[0],o=n[1];return i.unshift(["M",r,o]),i}(p):nW(p));if(this.addShape(e,{id:this.getElementId("line"),type:"path",attrs:(0,ef.pi)({path:u},l)}),s){var d,c,g,p,f,m,v,E,_=(f=(0,ef.pr)(u),v=(m=new tx({values:r})).max<0?m.max:Math.max(0,m.min),E=n-m.scale(v)*n,f.push(["L",i,E]),f.push(["L",0,E]),f.push(["Z"]),f);this.addShape(e,{id:this.getElementId("area"),type:"path",attrs:(0,ef.pi)({path:_},h)})}},t.prototype.applyOffset=function(){var e=this.cfg,t=e.x,i=e.y;this.moveElementTo(this.get("group"),{x:t,y:i})},t}(iO),nz={fill:"#F7F7F7",stroke:"#BFBFBF",radius:2,opacity:1,cursor:"ew-resize",highLightFill:"#FFF"},nY=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return(0,ef.pi)((0,ef.pi)({},t),{name:"handler",x:0,y:0,width:10,height:24,style:nz})},t.prototype.renderInner=function(e){var t=this.cfg,i=t.width,n=t.height,r=t.style,o=r.fill,s=r.stroke,a=r.radius,l=r.opacity,h=r.cursor;this.addShape(e,{type:"rect",id:this.getElementId("background"),attrs:{x:0,y:0,width:i,height:n,fill:o,stroke:s,radius:a,opacity:l,cursor:h}});var u=1/3*i,d=2/3*i,c=1/4*n,g=3/4*n;this.addShape(e,{id:this.getElementId("line-left"),type:"line",attrs:{x1:u,y1:c,x2:u,y2:g,stroke:s,cursor:h}}),this.addShape(e,{id:this.getElementId("line-right"),type:"line",attrs:{x1:d,y1:c,x2:d,y2:g,stroke:s,cursor:h}})},t.prototype.applyOffset=function(){this.moveElementTo(this.get("group"),{x:this.get("x"),y:this.get("y")})},t.prototype.initEvent=function(){this.bindEvents()},t.prototype.bindEvents=function(){var e=this;this.get("group").on("mouseenter",function(){var t=e.get("style").highLightFill;e.getElementByLocalId("background").attr("fill",t),e.draw()}),this.get("group").on("mouseleave",function(){var t=e.get("style").fill;e.getElementByLocalId("background").attr("fill",t),e.draw()})},t.prototype.draw=function(){var e=this.get("container").get("canvas");e&&e.draw()},t}(iO),nK={fill:"#416180",opacity:.05},n$={fill:"#5B8FF9",opacity:.15,cursor:"move"},nX={width:10,height:24},nj={textBaseline:"middle",fill:"#000",opacity:.45},nq=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.onMouseDown=function(e){return function(i){t.currentTarget=e;var n=i.originalEvent;n.stopPropagation(),n.preventDefault(),t.prevX=(0,em.U2)(n,"touches.0.pageX",n.pageX),t.prevY=(0,em.U2)(n,"touches.0.pageY",n.pageY);var r=t.getContainerDOM();r.addEventListener("mousemove",t.onMouseMove),r.addEventListener("mouseup",t.onMouseUp),r.addEventListener("mouseleave",t.onMouseUp),r.addEventListener("touchmove",t.onMouseMove),r.addEventListener("touchend",t.onMouseUp),r.addEventListener("touchcancel",t.onMouseUp)}},t.onMouseMove=function(e){var i=t.cfg.width,n=[t.get("start"),t.get("end")];e.stopPropagation(),e.preventDefault();var r=(0,em.U2)(e,"touches.0.pageX",e.pageX),o=(0,em.U2)(e,"touches.0.pageY",e.pageY),s=r-t.prevX,a=t.adjustOffsetRange(s/i);t.updateStartEnd(a),t.updateUI(t.getElementByLocalId("foreground"),t.getElementByLocalId("minText"),t.getElementByLocalId("maxText")),t.prevX=r,t.prevY=o,t.draw(),t.emit("sliderchange",[t.get("start"),t.get("end")].sort()),t.delegateEmit("valuechanged",{originValue:n,value:[t.get("start"),t.get("end")]})},t.onMouseUp=function(){t.currentTarget&&(t.currentTarget=void 0);var e=t.getContainerDOM();e&&(e.removeEventListener("mousemove",t.onMouseMove),e.removeEventListener("mouseup",t.onMouseUp),e.removeEventListener("mouseleave",t.onMouseUp),e.removeEventListener("touchmove",t.onMouseMove),e.removeEventListener("touchend",t.onMouseUp),e.removeEventListener("touchcancel",t.onMouseUp))},t}return(0,ef.ZT)(t,e),t.prototype.setRange=function(e,t){this.set("minLimit",e),this.set("maxLimit",t);var i=this.get("start"),n=this.get("end"),r=(0,em.uZ)(i,e,t),o=(0,em.uZ)(n,e,t);this.get("isInit")||i===r&&n===o||this.setValue([r,o])},t.prototype.getRange=function(){return{min:this.get("minLimit")||0,max:this.get("maxLimit")||1}},t.prototype.setValue=function(e){var t=this.getRange();if((0,em.kJ)(e)&&2===e.length){var i=[this.get("start"),this.get("end")];this.update({start:(0,em.uZ)(e[0],t.min,t.max),end:(0,em.uZ)(e[1],t.min,t.max)}),this.get("updateAutoRender")||this.render(),this.delegateEmit("valuechanged",{originValue:i,value:e})}},t.prototype.getValue=function(){return[this.get("start"),this.get("end")]},t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return(0,ef.pi)((0,ef.pi)({},t),{name:"slider",x:0,y:0,width:100,height:16,backgroundStyle:{},foregroundStyle:{},handlerStyle:{},textStyle:{},defaultCfg:{backgroundStyle:nK,foregroundStyle:n$,handlerStyle:nX,textStyle:nj}})},t.prototype.update=function(t){var i=t.start,n=t.end,r=(0,ef.pi)({},t);(0,em.UM)(i)||(r.start=(0,em.uZ)(i,0,1)),(0,em.UM)(n)||(r.end=(0,em.uZ)(n,0,1)),e.prototype.update.call(this,r),this.minHandler=this.getChildComponentById(this.getElementId("minHandler")),this.maxHandler=this.getChildComponentById(this.getElementId("maxHandler")),this.trend=this.getChildComponentById(this.getElementId("trend"))},t.prototype.init=function(){this.set("start",(0,em.uZ)(this.get("start"),0,1)),this.set("end",(0,em.uZ)(this.get("end"),0,1)),e.prototype.init.call(this)},t.prototype.render=function(){e.prototype.render.call(this),this.updateUI(this.getElementByLocalId("foreground"),this.getElementByLocalId("minText"),this.getElementByLocalId("maxText"))},t.prototype.renderInner=function(e){var t=this.cfg,i=(t.start,t.end,t.width),n=t.height,r=t.trendCfg,o=void 0===r?{}:r,s=t.minText,a=t.maxText,l=t.backgroundStyle,h=void 0===l?{}:l,u=t.foregroundStyle,d=void 0===u?{}:u,c=t.textStyle,g=void 0===c?{}:c,p=(0,em.b$)({},nz,this.cfg.handlerStyle);(0,em.dp)((0,em.U2)(o,"data"))&&(this.trend=this.addComponent(e,(0,ef.pi)({component:nG,id:this.getElementId("trend"),x:0,y:0,width:i,height:n},o))),this.addShape(e,{id:this.getElementId("background"),type:"rect",attrs:(0,ef.pi)({x:0,y:0,width:i,height:n},h)}),this.addShape(e,{id:this.getElementId("minText"),type:"text",attrs:(0,ef.pi)({y:n/2,textAlign:"right",text:s,silent:!1},g)}),this.addShape(e,{id:this.getElementId("maxText"),type:"text",attrs:(0,ef.pi)({y:n/2,textAlign:"left",text:a,silent:!1},g)}),this.addShape(e,{id:this.getElementId("foreground"),name:"foreground",type:"rect",attrs:(0,ef.pi)({y:0,height:n},d)});var f=(0,em.U2)(p,"width",10),m=(0,em.U2)(p,"height",24);this.minHandler=this.addComponent(e,{component:nY,id:this.getElementId("minHandler"),name:"handler-min",x:0,y:(n-m)/2,width:f,height:m,cursor:"ew-resize",style:p}),this.maxHandler=this.addComponent(e,{component:nY,id:this.getElementId("maxHandler"),name:"handler-max",x:0,y:(n-m)/2,width:f,height:m,cursor:"ew-resize",style:p})},t.prototype.applyOffset=function(){this.moveElementTo(this.get("group"),{x:this.get("x"),y:this.get("y")})},t.prototype.initEvent=function(){this.bindEvents()},t.prototype.updateUI=function(e,t,i){var n=this.cfg,r=n.start,o=n.end,s=n.width,a=n.minText,l=n.maxText,h=n.handlerStyle,u=n.height,d=r*s,c=o*s;this.trend&&(this.trend.update({width:s,height:u}),this.get("updateAutoRender")||this.trend.render()),e.attr("x",d),e.attr("width",c-d);var g=(0,em.U2)(h,"width",10);t.attr("text",a),i.attr("text",l);var p=this._dodgeText([d,c],t,i),f=p[0],m=p[1];this.minHandler&&(this.minHandler.update({x:d-g/2}),this.get("updateAutoRender")||this.minHandler.render()),(0,em.S6)(f,function(e,i){return t.attr(i,e)}),this.maxHandler&&(this.maxHandler.update({x:c-g/2}),this.get("updateAutoRender")||this.maxHandler.render()),(0,em.S6)(m,function(e,t){return i.attr(t,e)})},t.prototype.bindEvents=function(){var e=this.get("group");e.on("handler-min:mousedown",this.onMouseDown("minHandler")),e.on("handler-min:touchstart",this.onMouseDown("minHandler")),e.on("handler-max:mousedown",this.onMouseDown("maxHandler")),e.on("handler-max:touchstart",this.onMouseDown("maxHandler"));var t=e.findById(this.getElementId("foreground"));t.on("mousedown",this.onMouseDown("foreground")),t.on("touchstart",this.onMouseDown("foreground"))},t.prototype.adjustOffsetRange=function(e){var t=this.cfg,i=t.start,n=t.end;switch(this.currentTarget){case"minHandler":var r=0-i,o=1-i;return Math.min(o,Math.max(r,e));case"maxHandler":var r=0-n,o=1-n;return Math.min(o,Math.max(r,e));case"foreground":var r=0-i,o=1-n;return Math.min(o,Math.max(r,e))}},t.prototype.updateStartEnd=function(e){var t=this.cfg,i=t.start,n=t.end;switch(this.currentTarget){case"minHandler":i+=e;break;case"maxHandler":n+=e;break;case"foreground":i+=e,n+=e}this.set("start",i),this.set("end",n)},t.prototype._dodgeText=function(e,t,i){var n,r,o=this.cfg,s=o.handlerStyle,a=o.width,l=(0,em.U2)(s,"width",10),h=e[0],u=e[1],d=!1;h>u&&(h=(n=[u,h])[0],u=n[1],t=(r=[i,t])[0],i=r[1],d=!0);var c=t.getBBox(),g=i.getBBox(),p=c.width>h-2?{x:h+l/2+2,textAlign:"left"}:{x:h-l/2-2,textAlign:"right"},f=g.width>a-u-2?{x:u-l/2-2,textAlign:"right"}:{x:u+l/2+2,textAlign:"left"};return d?[f,p]:[p,f]},t.prototype.draw=function(){var e=this.get("container"),t=e&&e.get("canvas");t&&t.draw()},t.prototype.getContainerDOM=function(){var e=this.get("container"),t=e&&e.get("canvas");return t&&t.get("container")},t}(iO);function nZ(e,t,i){if(e){if("function"==typeof e.addEventListener)return e.addEventListener(t,i,!1),{remove:function(){e.removeEventListener(t,i,!1)}};if("function"==typeof e.attachEvent)return e.attachEvent("on"+t,i),{remove:function(){e.detachEvent("on"+t,i)}}}}var nJ={default:{trackColor:"rgba(0,0,0,0)",thumbColor:"rgba(0,0,0,0.15)",size:8,lineCap:"round"},hover:{thumbColor:"rgba(0,0,0,0.2)"}},nQ=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.clearEvents=em.ZT,t.onStartEvent=function(e){return function(i){t.isMobile=e,i.originalEvent.preventDefault();var n=e?(0,em.U2)(i.originalEvent,"touches.0.clientX"):i.clientX,r=e?(0,em.U2)(i.originalEvent,"touches.0.clientY"):i.clientY;t.startPos=t.cfg.isHorizontal?n:r,t.bindLaterEvent()}},t.bindLaterEvent=function(){var e=t.getContainerDOM(),i=[];i=t.isMobile?[nZ(e,"touchmove",t.onMouseMove),nZ(e,"touchend",t.onMouseUp),nZ(e,"touchcancel",t.onMouseUp)]:[nZ(e,"mousemove",t.onMouseMove),nZ(e,"mouseup",t.onMouseUp),nZ(e,"mouseleave",t.onMouseUp)],t.clearEvents=function(){i.forEach(function(e){e.remove()})}},t.onMouseMove=function(e){var i=t.cfg,n=i.isHorizontal,r=i.thumbOffset;e.preventDefault();var o=t.isMobile?(0,em.U2)(e,"touches.0.clientX"):e.clientX,s=t.isMobile?(0,em.U2)(e,"touches.0.clientY"):e.clientY,a=n?o:s,l=a-t.startPos;t.startPos=a,t.updateThumbOffset(r+l)},t.onMouseUp=function(e){e.preventDefault(),t.clearEvents()},t.onTrackClick=function(e){var i=t.cfg,n=i.isHorizontal,r=i.x,o=i.y,s=i.thumbLen,a=t.getContainerDOM().getBoundingClientRect(),l=e.clientX,h=e.clientY,u=n?l-a.left-r-s/2:h-a.top-o-s/2,d=t.validateRange(u);t.updateThumbOffset(d)},t.onThumbMouseOver=function(){var e=t.cfg.theme.hover.thumbColor;t.getElementByLocalId("thumb").attr("stroke",e),t.draw()},t.onThumbMouseOut=function(){var e=t.cfg.theme.default.thumbColor;t.getElementByLocalId("thumb").attr("stroke",e),t.draw()},t}return(0,ef.ZT)(t,e),t.prototype.setRange=function(e,t){this.set("minLimit",e),this.set("maxLimit",t);var i=this.getValue(),n=(0,em.uZ)(i,e,t);i===n||this.get("isInit")||this.setValue(n)},t.prototype.getRange=function(){return{min:this.get("minLimit")||0,max:this.get("maxLimit")||1}},t.prototype.setValue=function(e){var t=this.getRange(),i=this.getValue();this.update({thumbOffset:(this.get("trackLen")-this.get("thumbLen"))*(0,em.uZ)(e,t.min,t.max)}),this.delegateEmit("valuechange",{originalValue:i,value:this.getValue()})},t.prototype.getValue=function(){return(0,em.uZ)(this.get("thumbOffset")/(this.get("trackLen")-this.get("thumbLen")),0,1)},t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return(0,ef.pi)((0,ef.pi)({},t),{name:"scrollbar",isHorizontal:!0,minThumbLen:20,thumbOffset:0,theme:nJ})},t.prototype.renderInner=function(e){this.renderTrackShape(e),this.renderThumbShape(e)},t.prototype.applyOffset=function(){this.moveElementTo(this.get("group"),{x:this.get("x"),y:this.get("y")})},t.prototype.initEvent=function(){this.bindEvents()},t.prototype.renderTrackShape=function(e){var t=this.cfg,i=t.trackLen,n=t.theme,r=(0,em.b$)({},nJ,void 0===n?{default:{}}:n).default,o=r.lineCap,s=r.trackColor,a=r.size,l=(0,em.U2)(this.cfg,"size",a),h=this.get("isHorizontal")?{x1:0+l/2,y1:l/2,x2:i-l/2,y2:l/2,lineWidth:l,stroke:s,lineCap:o}:{x1:l/2,y1:0+l/2,x2:l/2,y2:i-l/2,lineWidth:l,stroke:s,lineCap:o};return this.addShape(e,{id:this.getElementId("track"),name:"track",type:"line",attrs:h})},t.prototype.renderThumbShape=function(e){var t=this.cfg,i=t.thumbOffset,n=t.thumbLen,r=t.theme,o=(0,em.b$)({},nJ,r).default,s=o.size,a=o.lineCap,l=o.thumbColor,h=(0,em.U2)(this.cfg,"size",s),u=this.get("isHorizontal")?{x1:i+h/2,y1:h/2,x2:i+n-h/2,y2:h/2,lineWidth:h,stroke:l,lineCap:a,cursor:"default"}:{x1:h/2,y1:i+h/2,x2:h/2,y2:i+n-h/2,lineWidth:h,stroke:l,lineCap:a,cursor:"default"};return this.addShape(e,{id:this.getElementId("thumb"),name:"thumb",type:"line",attrs:u})},t.prototype.bindEvents=function(){var e=this.get("group");e.on("mousedown",this.onStartEvent(!1)),e.on("mouseup",this.onMouseUp),e.on("touchstart",this.onStartEvent(!0)),e.on("touchend",this.onMouseUp),e.findById(this.getElementId("track")).on("click",this.onTrackClick);var t=e.findById(this.getElementId("thumb"));t.on("mouseover",this.onThumbMouseOver),t.on("mouseout",this.onThumbMouseOut)},t.prototype.getContainerDOM=function(){var e=this.get("container"),t=e&&e.get("canvas");return t&&t.get("container")},t.prototype.validateRange=function(e){var t=this.cfg,i=t.thumbLen,n=t.trackLen,r=e;return e+i>n?r=n-i:e+ie.x?e.x:t,i=ie.y?e.y:n,r=r=n&&e<=r}function n7(e,t){return"object"==typeof e&&t.forEach(function(t){delete e[t]}),e}function n8(e,t,i){void 0===t&&(t=[]),void 0===i&&(i=new Map);for(var n=0;n=this.minX&&e.maxX<=this.maxX&&e.minY>=this.minY&&e.maxY<=this.maxY},e.prototype.clone=function(){return new e(this.x,this.y,this.width,this.height)},e.prototype.add=function(){for(var e=[],t=0;te.minX&&this.minYe.minY},e.prototype.size=function(){return this.width*this.height},e.prototype.isPointIn=function(e){return e.x>=this.minX&&e.x<=this.maxX&&e.y>=this.minY&&e.y<=this.maxY},e}();function rt(e){if(e.isPolar&&!e.isTransposed)return(e.endAngle-e.startAngle)*e.getRadius();var t=e.convert({x:0,y:0}),i=e.convert({x:1,y:0});return Math.sqrt(Math.pow(i.x-t.x,2)+Math.pow(i.y-t.y,2))}function ri(e,t){var i=e.getCenter();return Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2))}function rn(e,t){var i=!1;if(e){if("theta"===e.type){var n=e.start,r=e.end;i=n9(t.x,n.x,r.x)&&n9(t.y,n.y,r.y)}else{var o=e.invert(t);i=n9(o.x,0,1)&&n9(o.y,0,1)}}return i}function rr(e,t){var i=e.getCenter();return Math.atan2(t.y-i.y,t.x-i.x)}function ro(e,t){void 0===t&&(t=0);var i,n=e.start,r=e.end,o=e.getWidth(),s=e.getHeight();if(e.isPolar){var a=e.startAngle,l=e.endAngle,h=e.getCenter(),u=e.getRadius();return{type:"path",startState:{path:n4(h.x,h.y,u+t,a,a)},endState:function(e){var i=(l-a)*e+a;return{path:n4(h.x,h.y,u+t,a,i)}},attrs:{path:n4(h.x,h.y,u+t,a,l)}}}return i=e.isTransposed?{height:s+2*t}:{width:o+2*t},{type:"rect",startState:{x:n.x-t,y:r.y-t,width:e.isTransposed?o+2*t:0,height:e.isTransposed?0:s+2*t},endState:i,attrs:{x:n.x-t,y:r.y-t,width:o+2*t,height:s+2*t}}}var rs=/^(?:(?!0000)[0-9]{4}([-/.]+)(?:(?:0?[1-9]|1[0-2])\1(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\1(?:29|30)|(?:0?[13578]|1[02])\1(?:31))|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)([-/.]+)0?2\2(?:29))(\s+([01]|([01][0-9]|2[0-3])):([0-9]|[0-5][0-9]):([0-9]|[0-5][0-9]))?$/;function ra(e){return e.alias||e.field}function rl(e,t,i){var n,r=e.values.length;if(1===r)n=[.5,1];else{var o=0;n=!function(e){if(e.isPolar){var t=e.startAngle;return e.endAngle-t==2*Math.PI}return!1}(t)?[o=1/r/2,1-o]:t.isTransposed?[(o=1/r*(0,em.U2)(i,"widthRatio.multiplePie",1/1.3))/2,1-o/2]:[0,1-1/r]}return n}function rh(e,t){var i,n,r={start:{x:0,y:0},end:{x:0,y:0}};e.isRect?r=function(e){var t,i;switch(e){case x.TOP:t={x:0,y:1},i={x:1,y:1};break;case x.RIGHT:t={x:1,y:0},i={x:1,y:1};break;case x.BOTTOM:t={x:0,y:0},i={x:1,y:0};break;case x.LEFT:t={x:0,y:0},i={x:0,y:1};break;default:t=i={x:0,y:0}}return{start:t,end:i}}(t):e.isPolar&&(e.isTransposed?(i={x:0,y:0},n={x:1,y:0}):(i={x:0,y:0},n={x:0,y:1}),r={start:i,end:n});var o=r.start,s=r.end;return{start:e.convert(o),end:e.convert(s)}}function ru(e){var t=e.start,i=e.end;return t.x===i.x}function rd(e,t){var i=e.start,n=e.end;return ru(e)?(i.y-n.y)*(t.x-i.x)>0?1:-1:(n.x-i.x)*(i.y-t.y)>0?-1:1}function rc(e,t){var i=(0,em.U2)(e,["components","axis"],{});return(0,em.b$)({},(0,em.U2)(i,["common"],{}),(0,em.b$)({},(0,em.U2)(i,[t],{})))}function rg(e,t,i){var n=(0,em.U2)(e,["components","axis"],{});return(0,em.b$)({},(0,em.U2)(n,["common","title"],{}),(0,em.b$)({},(0,em.U2)(n,[t,"title"],{})),i)}function rp(e){var t=e.x,i=e.y,n=e.circleCenter,r=i.start>i.end,o=e.isTransposed?e.convert({x:r?0:1,y:0}):e.convert({x:0,y:r?0:1}),s=[o.x-n.x,o.y-n.y],a=[1,0],l=o.y>n.y?io.EU(s,a):-1*io.EU(s,a),h=l+(t.end-t.start),u=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2));return{center:n,radius:u,startAngle:l,endAngle:h}}function rf(e,t){return(0,em.jn)(e)?!1!==e&&{}:(0,em.U2)(e,[t])}function rm(e,t){return(0,em.U2)(e,"position",t)}function rv(e,t){return(0,em.U2)(t,["title","text"],ra(e))}var rE=function(){function e(e,t){this.destroyed=!1,this.facets=[],this.view=e,this.cfg=(0,em.b$)({},this.getDefaultCfg(),t)}return e.prototype.init=function(){this.container||(this.container=this.createContainer());var e=this.view.getData();this.facets=this.generateFacets(e)},e.prototype.render=function(){this.renderViews()},e.prototype.update=function(){},e.prototype.clear=function(){this.clearFacetViews()},e.prototype.destroy=function(){this.clear(),this.container&&(this.container.remove(!0),this.container=void 0),this.destroyed=!0,this.view=void 0,this.facets=[]},e.prototype.facetToView=function(e){var t=e.region,i=e.data,n=e.padding,r=void 0===n?this.cfg.padding:n,o=this.view.createView({region:t,padding:r});o.data(i||[]),e.view=o,this.beforeEachView(o,e);var s=this.cfg.eachView;return s&&s(o,e),this.afterEachView(o,e),o},e.prototype.createContainer=function(){return this.view.getLayer(O.FORE).addGroup()},e.prototype.renderViews=function(){this.createFacetViews()},e.prototype.createFacetViews=function(){var e=this;return this.facets.map(function(t){return e.facetToView(t)})},e.prototype.clearFacetViews=function(){var e=this;(0,em.S6)(this.facets,function(t){t.view&&(e.view.removeView(t.view),t.view=void 0)})},e.prototype.parseSpacing=function(){var e=this.view.viewBBox,t=e.width,i=e.height;return this.cfg.spacing.map(function(e,n){return(0,em.hj)(e)?e/(0===n?t:i):parseFloat(e)/100})},e.prototype.getFieldValues=function(e,t){var i=[],n={};return(0,em.S6)(e,function(e){var r=e[t];(0,em.UM)(r)||n[r]||(i.push(r),n[r]=!0)}),i},e.prototype.getRegion=function(e,t,i,n){var r=this.parseSpacing(),o=r[0],s=r[1],a=(1+o)/(0===t?1:t)-o,l=(1+s)/(0===e?1:e)-s,h={x:(a+o)*i,y:(l+s)*n},u={x:h.x+a,y:h.y+l};return{start:h,end:u}},e.prototype.getDefaultCfg=function(){return{eachView:void 0,showTitle:!0,spacing:[0,0],padding:10,fields:[]}},e.prototype.getDefaultTitleCfg=function(){return{style:{fontSize:14,fill:"#666",fontFamily:this.view.getTheme().fontFamily}}},e.prototype.processAxis=function(e,t){var i=e.getOptions(),n=i.coordinate,r=e.geometries;if("rect"===(0,em.U2)(n,"type","rect")&&r.length){(0,em.UM)(i.axes)&&(i.axes={});var o=i.axes,s=r[0].getXYFields(),a=s[0],l=s[1],h=rf(o,a),u=rf(o,l);!1!==h&&(i.axes[a]=this.getXAxisOption(a,o,h,t)),!1!==u&&(i.axes[l]=this.getYAxisOption(l,o,u,t))}},e.prototype.getFacetDataFilter=function(e){return function(t){return(0,em.yW)(e,function(e){var i=e.field,n=e.value;return!!(0,em.UM)(n)||!i||t[i]===n})}},e}(),r_={},rC=function(e,t){r_[(0,em.vl)(e)]=t},rS=function(){function e(e,t){this.context=e,this.cfg=t,e.addAction(this)}return e.prototype.applyCfg=function(e){(0,em.f0)(this,e)},e.prototype.init=function(){this.applyCfg(this.cfg)},e.prototype.destroy=function(){this.context.removeAction(this),this.context=null},e}(),ry=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.execute=function(){this.callback&&this.callback(this.context)},t.prototype.destroy=function(){e.prototype.destroy.call(this),this.callback=null},t}(rS),rT={};function rb(e){var t=rT[e];return(0,em.U2)(t,"ActionClass")}function rA(e,t,i){rT[e]={ActionClass:t,cfg:i}}function rR(e,t){for(var i=[e[0]],n=1,r=e.length;n=t||i.height>=t?i:null}function rD(e){var t,i=e.event.target;return i&&(t=i.get("element")),t}function rM(e){var t,i=e.event.target;return i&&(t=i.get("delegateObject")),t}function rk(e){var t=e.event.gEvent;return!t||!t.fromShape||!t.toShape||t.fromShape.get("element")!==t.toShape.get("element")}function rP(e){return e&&e.component&&e.component.isList()}function rF(e){return e&&e.component&&e.component.isSlider()}function rB(e){var t=e.event.target;return t&&"mask"===t.get("name")}function rU(e,t){if("path"===e.event.target.get("type")){var i,n,r,o,s=(o=(r=e.event.target).getCanvasBBox()).width>=t||o.height>=t?r.attr("path"):null;if(!s)return;return i=rV(e.view),n=rY(s),i.filter(function(e){var t,i,r=e.shape;return i="path"===r.get("type")?rY(r.attr("path")):[[(t=r.getCanvasBBox()).minX,t.minY],[t.maxX,t.minY],[t.maxX,t.maxY],[t.minX,t.maxY]],(0,nV.Wq)(n,i)})}var a=rx(e,t);return a?rz(e.view,a):null}function rH(e,t,i){var n=rx(e,i);if(!n)return null;var r=e.view,o=rq(r,t,{x:n.x,y:n.y}),s=rq(r,t,{x:n.maxX,y:n.maxY}),a={minX:o.x,minY:o.y,maxX:s.x,maxY:s.y};return rz(t,a)}function rV(e){var t=e.geometries,i=[];return(0,em.S6)(t,function(e){var t=e.elements;i=i.concat(t)}),e.views&&e.views.length&&(0,em.S6)(e.views,function(e){i=i.concat(rV(e))}),i}function rW(e,t){var i=e.geometries,n=[];return(0,em.S6)(i,function(e){var i=e.getElementsBy(function(e){return e.hasState(t)});n=n.concat(i)}),n}function rG(e,t){var i=e.getModel().data;return(0,em.kJ)(i)?i[0][t]:i[t]}function rz(e,t){var i=rV(e),n=[];return(0,em.S6)(i,function(e){var i=e.shape.getCanvasBBox();i.minX>t.maxX||i.maxXt.maxY||i.maxY=t.x&&e.y<=t.y&&e.maxY>t.y}function rj(e){var t=e.parent,i=null;return t&&(i=t.views.filter(function(t){return t!==e})),i}function rq(e,t,i){var n=e.getCoordinate().invert(i);return t.getCoordinate().convert(n)}function rZ(e,t,i,n){var r=!1;return(0,em.S6)(e,function(e){if(e[i]===t[i]&&e[n]===t[n])return r=!0,!1}),r}function rJ(e,t){var i=e.getScaleByField(t);return!i&&e.views&&(0,em.S6)(e.views,function(e){if(i=rJ(e,t))return!1}),i}var rQ=function(){function e(e){this.actions=[],this.event=null,this.cacheMap={},this.view=e}return e.prototype.cache=function(){for(var e=[],t=0;t=0&&t.splice(i,1)},e.prototype.getCurrentPoint=function(){var e=this.event;return e?e.target instanceof HTMLElement?this.view.getCanvas().getPointByClient(e.clientX,e.clientY):{x:e.x,y:e.y}:null},e.prototype.getCurrentShape=function(){return(0,em.U2)(this.event,["gEvent","shape"])},e.prototype.isInPlot=function(){var e=this.getCurrentPoint();return!!e&&this.view.isPointInPlot(e)},e.prototype.isInShape=function(e){var t=this.getCurrentShape();return!!t&&t.get("name")===e},e.prototype.isInComponent=function(e){var t=rK(this.view),i=this.getCurrentPoint();return!!i&&!!t.find(function(t){var n=t.getBBox();return e?t.get("name")===e&&rX(n,i):rX(n,i)})},e.prototype.destroy=function(){(0,em.S6)(this.actions.slice(),function(e){e.destroy()}),this.view=null,this.event=null,this.actions=null,this.cacheMap=null},e}(),r0=function(){function e(e,t){this.view=e,this.cfg=t}return e.prototype.init=function(){this.initEvents()},e.prototype.initEvents=function(){},e.prototype.clearEvents=function(){},e.prototype.destroy=function(){this.clearEvents()},e}();function r1(e,t,i){var n=e.split(":"),r=n[0],o=t.getAction(r)||function(e,t){var i=rT[e],n=null;if(i){var r=i.ActionClass,o=i.cfg;(n=new r(t,o)).name=e,n.init()}return n}(r,t);if(!o)throw Error("There is no action named "+r);return{action:o,methodName:n[1],arg:i}}function r2(e){var t=e.action,i=e.methodName,n=e.arg;if(t[i])t[i](n);else throw Error("Action("+t.name+") doesn't have a method called "+i)}var r4={START:"start",SHOW_ENABLE:"showEnable",END:"end",ROLLBACK:"rollback",PROCESSING:"processing"},r5=function(e){function t(t,i){var n=e.call(this,t,i)||this;return n.callbackCaches={},n.emitCaches={},n.steps=i,n}return(0,ef.ZT)(t,e),t.prototype.init=function(){this.initContext(),e.prototype.init.call(this)},t.prototype.destroy=function(){e.prototype.destroy.call(this),this.steps=null,this.context&&(this.context.destroy(),this.context=null),this.callbackCaches=null,this.view=null},t.prototype.initEvents=function(){var e=this;(0,em.S6)(this.steps,function(t,i){(0,em.S6)(t,function(t){var n=e.getActionCallback(i,t);n&&e.bindEvent(t.trigger,n)})})},t.prototype.clearEvents=function(){var e=this;(0,em.S6)(this.steps,function(t,i){(0,em.S6)(t,function(t){var n=e.getActionCallback(i,t);n&&e.offEvent(t.trigger,n)})})},t.prototype.initContext=function(){var e=this.view,t=new rQ(e);this.context=t;var i=this.steps;(0,em.S6)(i,function(e){(0,em.S6)(e,function(e){if((0,em.mf)(e.action)){var i,n;e.actionObject={action:(i=e.action,(n=new ry(t)).callback=i,n.name="callback",n),methodName:"execute"}}else if((0,em.HD)(e.action))e.actionObject=r1(e.action,t,e.arg);else if((0,em.kJ)(e.action)){var r=e.action,o=(0,em.kJ)(e.arg)?e.arg:[e.arg];e.actionObject=[],(0,em.S6)(r,function(i,n){e.actionObject.push(r1(i,t,o[n]))})}})})},t.prototype.isAllowStep=function(e){var t=this.currentStepName,i=this.steps;if(t===e||e===r4.SHOW_ENABLE)return!0;if(e===r4.PROCESSING)return t===r4.START;if(e===r4.START)return t!==r4.PROCESSING;if(e===r4.END)return t===r4.PROCESSING||t===r4.START;if(e===r4.ROLLBACK){if(i[r4.END])return t===r4.END;if(t===r4.START)return!0}return!1},t.prototype.isAllowExecute=function(e,t){if(this.isAllowStep(e)){var i=this.getKey(e,t);return(!t.once||!this.emitCaches[i])&&(!t.isEnable||t.isEnable(this.context))}return!1},t.prototype.enterStep=function(e){this.currentStepName=e,this.emitCaches={}},t.prototype.afterExecute=function(e,t){e!==r4.SHOW_ENABLE&&this.currentStepName!==e&&this.enterStep(e);var i=this.getKey(e,t);this.emitCaches[i]=!0},t.prototype.getKey=function(e,t){return e+t.trigger+t.action},t.prototype.getActionCallback=function(e,t){var i=this,n=this.context,r=this.callbackCaches,o=t.actionObject;if(t.action&&o){var s=this.getKey(e,t);if(!r[s]){var a=function(r){n.event=r,i.isAllowExecute(e,t)?((0,em.kJ)(o)?(0,em.S6)(o,function(e){n.event=r,r2(e)}):(n.event=r,r2(o)),i.afterExecute(e,t),t.callback&&(n.event=r,t.callback(n))):n.event=null};t.debounce?r[s]=(0,em.Ds)(a,t.debounce.wait,t.debounce.immediate):t.throttle?r[s]=(0,em.P2)(a,t.throttle.wait,{leading:t.throttle.leading,trailing:t.throttle.trailing}):r[s]=a}return r[s]}return null},t.prototype.bindEvent=function(e,t){var i=e.split(":");"window"===i[0]?window.addEventListener(i[1],t):"document"===i[0]?document.addEventListener(i[1],t):this.view.on(e,t)},t.prototype.offEvent=function(e,t){var i=e.split(":");"window"===i[0]?window.removeEventListener(i[1],t):"document"===i[0]?document.removeEventListener(i[1],t):this.view.off(e,t)},t}(r0),r6={};function r3(e,t){r6[(0,em.vl)(e)]=t}function r9(e){var t,i={point:{default:{fill:e.pointFillColor,r:e.pointSize,stroke:e.pointBorderColor,lineWidth:e.pointBorder,fillOpacity:e.pointFillOpacity},active:{stroke:e.pointActiveBorderColor,lineWidth:e.pointActiveBorder},selected:{stroke:e.pointSelectedBorderColor,lineWidth:e.pointSelectedBorder},inactive:{fillOpacity:e.pointInactiveFillOpacity,strokeOpacity:e.pointInactiveBorderOpacity}},hollowPoint:{default:{fill:e.hollowPointFillColor,lineWidth:e.hollowPointBorder,stroke:e.hollowPointBorderColor,strokeOpacity:e.hollowPointBorderOpacity,r:e.hollowPointSize},active:{stroke:e.hollowPointActiveBorderColor,strokeOpacity:e.hollowPointActiveBorderOpacity},selected:{lineWidth:e.hollowPointSelectedBorder,stroke:e.hollowPointSelectedBorderColor,strokeOpacity:e.hollowPointSelectedBorderOpacity},inactive:{strokeOpacity:e.hollowPointInactiveBorderOpacity}},area:{default:{fill:e.areaFillColor,fillOpacity:e.areaFillOpacity,stroke:null},active:{fillOpacity:e.areaActiveFillOpacity},selected:{fillOpacity:e.areaSelectedFillOpacity},inactive:{fillOpacity:e.areaInactiveFillOpacity}},hollowArea:{default:{fill:null,stroke:e.hollowAreaBorderColor,lineWidth:e.hollowAreaBorder,strokeOpacity:e.hollowAreaBorderOpacity},active:{fill:null,lineWidth:e.hollowAreaActiveBorder},selected:{fill:null,lineWidth:e.hollowAreaSelectedBorder},inactive:{strokeOpacity:e.hollowAreaInactiveBorderOpacity}},interval:{default:{fill:e.intervalFillColor,fillOpacity:e.intervalFillOpacity},active:{stroke:e.intervalActiveBorderColor,lineWidth:e.intervalActiveBorder},selected:{stroke:e.intervalSelectedBorderColor,lineWidth:e.intervalSelectedBorder},inactive:{fillOpacity:e.intervalInactiveFillOpacity,strokeOpacity:e.intervalInactiveBorderOpacity}},hollowInterval:{default:{fill:e.hollowIntervalFillColor,stroke:e.hollowIntervalBorderColor,lineWidth:e.hollowIntervalBorder,strokeOpacity:e.hollowIntervalBorderOpacity},active:{stroke:e.hollowIntervalActiveBorderColor,lineWidth:e.hollowIntervalActiveBorder,strokeOpacity:e.hollowIntervalActiveBorderOpacity},selected:{stroke:e.hollowIntervalSelectedBorderColor,lineWidth:e.hollowIntervalSelectedBorder,strokeOpacity:e.hollowIntervalSelectedBorderOpacity},inactive:{stroke:e.hollowIntervalInactiveBorderColor,lineWidth:e.hollowIntervalInactiveBorder,strokeOpacity:e.hollowIntervalInactiveBorderOpacity}},line:{default:{stroke:e.lineBorderColor,lineWidth:e.lineBorder,strokeOpacity:e.lineBorderOpacity,fill:null,lineAppendWidth:10,lineCap:"round",lineJoin:"round"},active:{lineWidth:e.lineActiveBorder},selected:{lineWidth:e.lineSelectedBorder},inactive:{strokeOpacity:e.lineInactiveBorderOpacity}}},n={title:{autoRotate:!0,position:"center",spacing:e.axisTitleSpacing,style:{fill:e.axisTitleTextFillColor,fontSize:e.axisTitleTextFontSize,lineHeight:e.axisTitleTextLineHeight,textBaseline:"middle",fontFamily:e.fontFamily}},label:{autoRotate:!1,autoEllipsis:!1,autoHide:{type:"equidistance",cfg:{minGap:6}},offset:e.axisLabelOffset,style:{fill:e.axisLabelFillColor,fontSize:e.axisLabelFontSize,lineHeight:e.axisLabelLineHeight,fontFamily:e.fontFamily}},line:{style:{lineWidth:e.axisLineBorder,stroke:e.axisLineBorderColor}},grid:{line:{type:"line",style:{stroke:e.axisGridBorderColor,lineWidth:e.axisGridBorder,lineDash:e.axisGridLineDash}},alignTick:!0,animate:!0},tickLine:{style:{lineWidth:e.axisTickLineBorder,stroke:e.axisTickLineBorderColor},alignTick:!0,length:e.axisTickLineLength},subTickLine:null,animate:!0},r={title:null,marker:{symbol:"circle",spacing:e.legendMarkerSpacing,style:{r:e.legendCircleMarkerSize,fill:e.legendMarkerColor}},itemName:{spacing:5,style:{fill:e.legendItemNameFillColor,fontFamily:e.fontFamily,fontSize:e.legendItemNameFontSize,lineHeight:e.legendItemNameLineHeight,fontWeight:e.legendItemNameFontWeight,textAlign:"start",textBaseline:"middle"}},itemStates:{active:{nameStyle:{opacity:.8}},unchecked:{nameStyle:{fill:"#D8D8D8"},markerStyle:{fill:"#D8D8D8",stroke:"#D8D8D8"}},inactive:{nameStyle:{fill:"#D8D8D8"},markerStyle:{opacity:.2}}},flipPage:!0,pageNavigator:{marker:{style:{size:e.legendPageNavigatorMarkerSize,inactiveFill:e.legendPageNavigatorMarkerInactiveFillColor,inactiveOpacity:e.legendPageNavigatorMarkerInactiveFillOpacity,fill:e.legendPageNavigatorMarkerFillColor,opacity:e.legendPageNavigatorMarkerFillOpacity}},text:{style:{fill:e.legendPageNavigatorTextFillColor,fontSize:e.legendPageNavigatorTextFontSize}}},animate:!1,maxItemWidth:200,itemSpacing:e.legendItemSpacing,itemMarginBottom:e.legendItemMarginBottom,padding:e.legendPadding};return{background:e.backgroundColor,defaultColor:e.brandColor,subColor:e.subColor,semanticRed:e.paletteSemanticRed,semanticGreen:e.paletteSemanticGreen,padding:"auto",fontFamily:e.fontFamily,columnWidthRatio:.5,maxColumnWidth:null,minColumnWidth:null,roseWidthRatio:.9999999,multiplePieWidthRatio:1/1.3,colors10:e.paletteQualitative10,colors20:e.paletteQualitative20,sequenceColors:e.paletteSequence,shapes:{point:["hollow-circle","hollow-square","hollow-bowtie","hollow-diamond","hollow-hexagon","hollow-triangle","hollow-triangle-down","circle","square","bowtie","diamond","hexagon","triangle","triangle-down","cross","tick","plus","hyphen","line"],line:["line","dash","dot","smooth"],area:["area","smooth","line","smooth-line"],interval:["rect","hollow-rect","line","tick"]},sizes:[1,10],geometries:{interval:{rect:{default:{style:i.interval.default},active:{style:i.interval.active},inactive:{style:i.interval.inactive},selected:{style:function(e){var t=e.geometry.coordinate;if(t.isPolar&&t.isTransposed){var n=n6(e.getModel(),t),r=(n.startAngle+n.endAngle)/2,o=7.5*Math.cos(r),s=7.5*Math.sin(r);return{matrix:it.vs(null,[["t",o,s]])}}return i.interval.selected}}},"hollow-rect":{default:{style:i.hollowInterval.default},active:{style:i.hollowInterval.active},inactive:{style:i.hollowInterval.inactive},selected:{style:i.hollowInterval.selected}},line:{default:{style:i.hollowInterval.default},active:{style:i.hollowInterval.active},inactive:{style:i.hollowInterval.inactive},selected:{style:i.hollowInterval.selected}},tick:{default:{style:i.hollowInterval.default},active:{style:i.hollowInterval.active},inactive:{style:i.hollowInterval.inactive},selected:{style:i.hollowInterval.selected}},funnel:{default:{style:i.interval.default},active:{style:i.interval.active},inactive:{style:i.interval.inactive},selected:{style:i.interval.selected}},pyramid:{default:{style:i.interval.default},active:{style:i.interval.active},inactive:{style:i.interval.inactive},selected:{style:i.interval.selected}}},line:{line:{default:{style:i.line.default},active:{style:i.line.active},inactive:{style:i.line.inactive},selected:{style:i.line.selected}},dot:{default:{style:(0,ef.pi)((0,ef.pi)({},i.line.default),{lineCap:null,lineDash:[1,1]})},active:{style:(0,ef.pi)((0,ef.pi)({},i.line.active),{lineCap:null,lineDash:[1,1]})},inactive:{style:(0,ef.pi)((0,ef.pi)({},i.line.inactive),{lineCap:null,lineDash:[1,1]})},selected:{style:(0,ef.pi)((0,ef.pi)({},i.line.selected),{lineCap:null,lineDash:[1,1]})}},dash:{default:{style:(0,ef.pi)((0,ef.pi)({},i.line.default),{lineCap:null,lineDash:[5.5,1]})},active:{style:(0,ef.pi)((0,ef.pi)({},i.line.active),{lineCap:null,lineDash:[5.5,1]})},inactive:{style:(0,ef.pi)((0,ef.pi)({},i.line.inactive),{lineCap:null,lineDash:[5.5,1]})},selected:{style:(0,ef.pi)((0,ef.pi)({},i.line.selected),{lineCap:null,lineDash:[5.5,1]})}},smooth:{default:{style:i.line.default},active:{style:i.line.active},inactive:{style:i.line.inactive},selected:{style:i.line.selected}},hv:{default:{style:i.line.default},active:{style:i.line.active},inactive:{style:i.line.inactive},selected:{style:i.line.selected}},vh:{default:{style:i.line.default},active:{style:i.line.active},inactive:{style:i.line.inactive},selected:{style:i.line.selected}},hvh:{default:{style:i.line.default},active:{style:i.line.active},inactive:{style:i.line.inactive},selected:{style:i.line.selected}},vhv:{default:{style:i.line.default},active:{style:i.line.active},inactive:{style:i.line.inactive},selected:{style:i.line.selected}}},polygon:{polygon:{default:{style:i.interval.default},active:{style:i.interval.active},inactive:{style:i.interval.inactive},selected:{style:i.interval.selected}}},point:{circle:{default:{style:i.point.default},active:{style:i.point.active},inactive:{style:i.point.inactive},selected:{style:i.point.selected}},square:{default:{style:i.point.default},active:{style:i.point.active},inactive:{style:i.point.inactive},selected:{style:i.point.selected}},bowtie:{default:{style:i.point.default},active:{style:i.point.active},inactive:{style:i.point.inactive},selected:{style:i.point.selected}},diamond:{default:{style:i.point.default},active:{style:i.point.active},inactive:{style:i.point.inactive},selected:{style:i.point.selected}},hexagon:{default:{style:i.point.default},active:{style:i.point.active},inactive:{style:i.point.inactive},selected:{style:i.point.selected}},triangle:{default:{style:i.point.default},active:{style:i.point.active},inactive:{style:i.point.inactive},selected:{style:i.point.selected}},"triangle-down":{default:{style:i.point.default},active:{style:i.point.active},inactive:{style:i.point.inactive},selected:{style:i.point.selected}},"hollow-circle":{default:{style:i.hollowPoint.default},active:{style:i.hollowPoint.active},inactive:{style:i.hollowPoint.inactive},selected:{style:i.hollowPoint.selected}},"hollow-square":{default:{style:i.hollowPoint.default},active:{style:i.hollowPoint.active},inactive:{style:i.hollowPoint.inactive},selected:{style:i.hollowPoint.selected}},"hollow-bowtie":{default:{style:i.hollowPoint.default},active:{style:i.hollowPoint.active},inactive:{style:i.hollowPoint.inactive},selected:{style:i.hollowPoint.selected}},"hollow-diamond":{default:{style:i.hollowPoint.default},active:{style:i.hollowPoint.active},inactive:{style:i.hollowPoint.inactive},selected:{style:i.hollowPoint.selected}},"hollow-hexagon":{default:{style:i.hollowPoint.default},active:{style:i.hollowPoint.active},inactive:{style:i.hollowPoint.inactive},selected:{style:i.hollowPoint.selected}},"hollow-triangle":{default:{style:i.hollowPoint.default},active:{style:i.hollowPoint.active},inactive:{style:i.hollowPoint.inactive},selected:{style:i.hollowPoint.selected}},"hollow-triangle-down":{default:{style:i.hollowPoint.default},active:{style:i.hollowPoint.active},inactive:{style:i.hollowPoint.inactive},selected:{style:i.hollowPoint.selected}},cross:{default:{style:i.hollowPoint.default},active:{style:i.hollowPoint.active},inactive:{style:i.hollowPoint.inactive},selected:{style:i.hollowPoint.selected}},tick:{default:{style:i.hollowPoint.default},active:{style:i.hollowPoint.active},inactive:{style:i.hollowPoint.inactive},selected:{style:i.hollowPoint.selected}},plus:{default:{style:i.hollowPoint.default},active:{style:i.hollowPoint.active},inactive:{style:i.hollowPoint.inactive},selected:{style:i.hollowPoint.selected}},hyphen:{default:{style:i.hollowPoint.default},active:{style:i.hollowPoint.active},inactive:{style:i.hollowPoint.inactive},selected:{style:i.hollowPoint.selected}},line:{default:{style:i.hollowPoint.default},active:{style:i.hollowPoint.active},inactive:{style:i.hollowPoint.inactive},selected:{style:i.hollowPoint.selected}}},area:{area:{default:{style:i.area.default},active:{style:i.area.active},inactive:{style:i.area.inactive},selected:{style:i.area.selected}},smooth:{default:{style:i.area.default},active:{style:i.area.active},inactive:{style:i.area.inactive},selected:{style:i.area.selected}},line:{default:{style:i.hollowArea.default},active:{style:i.hollowArea.active},inactive:{style:i.hollowArea.inactive},selected:{style:i.hollowArea.selected}},"smooth-line":{default:{style:i.hollowArea.default},active:{style:i.hollowArea.active},inactive:{style:i.hollowArea.inactive},selected:{style:i.hollowArea.selected}}},schema:{candle:{default:{style:i.hollowInterval.default},active:{style:i.hollowInterval.active},inactive:{style:i.hollowInterval.inactive},selected:{style:i.hollowInterval.selected}},box:{default:{style:i.hollowInterval.default},active:{style:i.hollowInterval.active},inactive:{style:i.hollowInterval.inactive},selected:{style:i.hollowInterval.selected}}},edge:{line:{default:{style:i.line.default},active:{style:i.line.active},inactive:{style:i.line.inactive},selected:{style:i.line.selected}},vhv:{default:{style:i.line.default},active:{style:i.line.active},inactive:{style:i.line.inactive},selected:{style:i.line.selected}},smooth:{default:{style:i.line.default},active:{style:i.line.active},inactive:{style:i.line.inactive},selected:{style:i.line.selected}},arc:{default:{style:i.line.default},active:{style:i.line.active},inactive:{style:i.line.inactive},selected:{style:i.line.selected}}},violin:{violin:{default:{style:i.line.default},active:{style:i.line.active},inactive:{style:i.line.inactive},selected:{style:i.line.selected}},smooth:{default:{style:i.line.default},active:{style:i.line.active},inactive:{style:i.line.inactive},selected:{style:i.line.selected}},hollow:{default:{style:i.hollowArea.default},active:{style:i.hollowArea.active},inactive:{style:i.hollowArea.inactive},selected:{style:i.hollowArea.selected}},"hollow-smooth":{default:{style:i.hollowArea.default},active:{style:i.hollowArea.active},inactive:{style:i.hollowArea.inactive},selected:{style:i.hollowArea.selected}}}},components:{axis:{common:n,top:{position:"top",grid:null,title:null,verticalLimitLength:.5},bottom:{position:"bottom",grid:null,title:null,verticalLimitLength:.5},left:{position:"left",title:null,line:null,tickLine:null,verticalLimitLength:1/3},right:{position:"right",title:null,line:null,tickLine:null,verticalLimitLength:1/3},circle:{title:null,grid:(0,em.b$)({},n.grid,{line:{type:"line"}})},radius:{title:null,grid:(0,em.b$)({},n.grid,{line:{type:"circle"}})}},legend:{common:r,right:{layout:"vertical",padding:e.legendVerticalPadding},left:{layout:"vertical",padding:e.legendVerticalPadding},top:{layout:"horizontal",padding:e.legendHorizontalPadding},bottom:{layout:"horizontal",padding:e.legendHorizontalPadding},continuous:{title:null,background:null,track:{},rail:{type:"color",size:e.sliderRailHeight,defaultLength:e.sliderRailWidth,style:{fill:e.sliderRailFillColor,stroke:e.sliderRailBorderColor,lineWidth:e.sliderRailBorder}},label:{align:"rail",spacing:4,formatter:null,style:{fill:e.sliderLabelTextFillColor,fontSize:e.sliderLabelTextFontSize,lineHeight:e.sliderLabelTextLineHeight,textBaseline:"middle",fontFamily:e.fontFamily}},handler:{size:e.sliderHandlerWidth,style:{fill:e.sliderHandlerFillColor,stroke:e.sliderHandlerBorderColor}},slidable:!0,padding:r.padding}},tooltip:{showContent:!0,follow:!0,showCrosshairs:!1,showMarkers:!0,shared:!1,enterable:!1,position:"auto",marker:{symbol:"circle",stroke:"#fff",shadowBlur:10,shadowOffsetX:0,shadowOffsetY:0,shadowColor:"rgba(0,0,0,0.09)",lineWidth:2,r:4},crosshairs:{line:{style:{stroke:e.tooltipCrosshairsBorderColor,lineWidth:e.tooltipCrosshairsBorder}},text:null,textBackground:{padding:2,style:{fill:"rgba(0, 0, 0, 0.25)",lineWidth:0,stroke:null}},follow:!1},domStyles:((t={})[""+nL]={position:"absolute",visibility:"hidden",zIndex:8,transition:"left 0.4s cubic-bezier(0.23, 1, 0.32, 1) 0s, top 0.4s cubic-bezier(0.23, 1, 0.32, 1) 0s",backgroundColor:e.tooltipContainerFillColor,opacity:e.tooltipContainerFillOpacity,boxShadow:e.tooltipContainerShadow,borderRadius:e.tooltipContainerBorderRadius+"px",color:e.tooltipTextFillColor,fontSize:e.tooltipTextFontSize+"px",fontFamily:e.fontFamily,lineHeight:e.tooltipTextLineHeight+"px",padding:"0 12px 0 12px"},t[""+nN]={marginBottom:"12px",marginTop:"12px"},t[""+nI]={margin:0,listStyleType:"none",padding:0},t[""+nw]={listStyleType:"none",padding:0,marginBottom:"12px",marginTop:"12px",marginLeft:0,marginRight:0},t[""+nO]={width:"8px",height:"8px",borderRadius:"50%",display:"inline-block",marginRight:"8px"},t[""+nx]={display:"inline-block",float:"right",marginLeft:"30px"},t)},annotation:{arc:{style:{stroke:e.annotationArcBorderColor,lineWidth:e.annotationArcBorder},animate:!0},line:{style:{stroke:e.annotationLineBorderColor,lineDash:e.annotationLineDash,lineWidth:e.annotationLineBorder},text:{position:"start",autoRotate:!0,style:{fill:e.annotationTextFillColor,stroke:e.annotationTextBorderColor,lineWidth:e.annotationTextBorder,fontSize:e.annotationTextFontSize,textAlign:"start",fontFamily:e.fontFamily,textBaseline:"bottom"}},animate:!0},text:{style:{fill:e.annotationTextFillColor,stroke:e.annotationTextBorderColor,lineWidth:e.annotationTextBorder,fontSize:e.annotationTextFontSize,textBaseline:"middle",textAlign:"start",fontFamily:e.fontFamily},animate:!0},region:{top:!1,style:{lineWidth:e.annotationRegionBorder,stroke:e.annotationRegionBorderColor,fill:e.annotationRegionFillColor,fillOpacity:e.annotationRegionFillOpacity},animate:!0},image:{top:!1,animate:!0},dataMarker:{top:!0,point:{style:{r:3,stroke:e.brandColor,lineWidth:2}},line:{style:{stroke:e.annotationLineBorderColor,lineWidth:e.annotationLineBorder},length:e.annotationDataMarkerLineLength},text:{style:{textAlign:"start",fill:e.annotationTextFillColor,stroke:e.annotationTextBorderColor,lineWidth:e.annotationTextBorder,fontSize:e.annotationTextFontSize,fontFamily:e.fontFamily}},direction:"upward",autoAdjust:!0,animate:!0},dataRegion:{style:{region:{fill:e.annotationRegionFillColor,fillOpacity:e.annotationRegionFillOpacity},text:{textAlign:"center",textBaseline:"bottom",fill:e.annotationTextFillColor,stroke:e.annotationTextBorderColor,lineWidth:e.annotationTextBorder,fontSize:e.annotationTextFontSize,fontFamily:e.fontFamily}},animate:!0}},slider:{common:{padding:[8,8,8,8],backgroundStyle:{fill:e.cSliderBackgroundFillColor,opacity:e.cSliderBackgroundFillOpacity},foregroundStyle:{fill:e.cSliderForegroundFillColor,opacity:e.cSliderForegroundFillOpacity},handlerStyle:{width:e.cSliderHandlerWidth,height:e.cSliderHandlerHeight,fill:e.cSliderHandlerFillColor,opacity:e.cSliderHandlerFillOpacity,stroke:e.cSliderHandlerBorderColor,lineWidth:e.cSliderHandlerBorder,radius:e.cSliderHandlerBorderRadius,highLightFill:e.cSliderHandlerHighlightFillColor},textStyle:{fill:e.cSliderTextFillColor,opacity:e.cSliderTextFillOpacity,fontSize:e.cSliderTextFontSize,lineHeight:e.cSliderTextLineHeight,fontWeight:e.cSliderTextFontWeight,stroke:e.cSliderTextBorderColor,lineWidth:e.cSliderTextBorder}}},scrollbar:{common:{padding:[8,8,8,8]},default:{style:{trackColor:e.scrollbarTrackFillColor,thumbColor:e.scrollbarThumbFillColor}},hover:{style:{thumbColor:e.scrollbarThumbHighlightFillColor}}}},labels:{offset:12,style:{fill:e.labelFillColor,fontSize:e.labelFontSize,fontFamily:e.fontFamily,stroke:e.labelBorderColor,lineWidth:e.labelBorder},fillColorDark:e.labelFillColorDark,fillColorLight:e.labelFillColorLight,autoRotate:!0},innerLabels:{style:{fill:e.innerLabelFillColor,fontSize:e.innerLabelFontSize,fontFamily:e.fontFamily,stroke:e.innerLabelBorderColor,lineWidth:e.innerLabelBorder},autoRotate:!0},overflowLabels:{style:{fill:e.overflowLabelFillColor,fontSize:e.overflowLabelFontSize,fontFamily:e.fontFamily,stroke:e.overflowLabelBorderColor,lineWidth:e.overflowLabelBorder}},pieLabels:{labelHeight:14,offset:10,labelLine:{style:{lineWidth:e.labelLineBorder}},autoRotate:!0}}}var r7={100:"#000",95:"#0D0D0D",85:"#262626",65:"#595959",45:"#8C8C8C",25:"#BFBFBF",15:"#D9D9D9",6:"#F0F0F0"},r8={100:"#FFFFFF",95:"#F2F2F2",85:"#D9D9D9",65:"#A6A6A6",45:"#737373",25:"#404040",15:"#262626",6:"#0F0F0F"},oe=["#5B8FF9","#5AD8A6","#5D7092","#F6BD16","#6F5EF9","#6DC8EC","#945FB9","#FF9845","#1E9493","#FF99C3"],ot=["#5B8FF9","#CDDDFD","#5AD8A6","#CDF3E4","#5D7092","#CED4DE","#F6BD16","#FCEBB9","#6F5EF9","#D3CEFD","#6DC8EC","#D3EEF9","#945FB9","#DECFEA","#FF9845","#FFE0C7","#1E9493","#BBDEDE","#FF99C3","#FFE0ED"],oi=["#B8E1FF","#9AC5FF","#7DAAFF","#5B8FF9","#3D76DD","#085EC0","#0047A5","#00318A","#001D70"],on=function(e){void 0===e&&(e={});var t=e.backgroundColor,i=e.subColor,n=e.paletteQualitative10,r=void 0===n?oe:n,o=e.paletteQualitative20,s=e.paletteSemanticRed,a=e.paletteSemanticGreen,l=e.paletteSemanticYellow,h=e.paletteSequence,u=e.fontFamily,d=e.brandColor,c=void 0===d?r[0]:d;return{backgroundColor:void 0===t?"transparent":t,brandColor:c,subColor:void 0===i?"rgba(0,0,0,0.05)":i,paletteQualitative10:r,paletteQualitative20:void 0===o?ot:o,paletteSemanticRed:void 0===s?"#F4664A":s,paletteSemanticGreen:void 0===a?"#30BF78":a,paletteSemanticYellow:void 0===l?"#FAAD14":l,paletteSequence:void 0===h?oi:h,fontFamily:void 0===u?'"Segoe UI", Roboto, "Helvetica Neue", Arial,\n "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol",\n "Noto Color Emoji"':u,axisLineBorderColor:r7[25],axisLineBorder:1,axisLineDash:null,axisTitleTextFillColor:r7[65],axisTitleTextFontSize:12,axisTitleTextLineHeight:12,axisTitleTextFontWeight:"normal",axisTitleSpacing:12,axisTickLineBorderColor:r7[25],axisTickLineLength:4,axisTickLineBorder:1,axisSubTickLineBorderColor:r7[15],axisSubTickLineLength:2,axisSubTickLineBorder:1,axisLabelFillColor:r7[45],axisLabelFontSize:12,axisLabelLineHeight:12,axisLabelFontWeight:"normal",axisLabelOffset:8,axisGridBorderColor:r7[15],axisGridBorder:1,axisGridLineDash:null,legendTitleTextFillColor:r7[45],legendTitleTextFontSize:12,legendTitleTextLineHeight:21,legendTitleTextFontWeight:"normal",legendMarkerColor:c,legendMarkerSpacing:8,legendMarkerSize:4,legendCircleMarkerSize:4,legendSquareMarkerSize:4,legendLineMarkerSize:5,legendItemNameFillColor:r7[65],legendItemNameFontSize:12,legendItemNameLineHeight:12,legendItemNameFontWeight:"normal",legendItemSpacing:24,legendItemMarginBottom:12,legendPadding:[8,8,8,8],legendHorizontalPadding:[8,0,8,0],legendVerticalPadding:[0,8,0,8],legendPageNavigatorMarkerSize:12,legendPageNavigatorMarkerInactiveFillColor:r7[100],legendPageNavigatorMarkerInactiveFillOpacity:.45,legendPageNavigatorMarkerFillColor:r7[100],legendPageNavigatorMarkerFillOpacity:1,legendPageNavigatorTextFillColor:r7[45],legendPageNavigatorTextFontSize:12,sliderRailFillColor:r7[15],sliderRailBorder:0,sliderRailBorderColor:null,sliderRailWidth:100,sliderRailHeight:12,sliderLabelTextFillColor:r7[45],sliderLabelTextFontSize:12,sliderLabelTextLineHeight:12,sliderLabelTextFontWeight:"normal",sliderHandlerFillColor:r7[6],sliderHandlerWidth:10,sliderHandlerHeight:14,sliderHandlerBorder:1,sliderHandlerBorderColor:r7[25],annotationArcBorderColor:r7[15],annotationArcBorder:1,annotationLineBorderColor:r7[25],annotationLineBorder:1,annotationLineDash:null,annotationTextFillColor:r7[65],annotationTextFontSize:12,annotationTextLineHeight:12,annotationTextFontWeight:"normal",annotationTextBorderColor:null,annotationTextBorder:0,annotationRegionFillColor:r7[100],annotationRegionFillOpacity:.06,annotationRegionBorder:0,annotationRegionBorderColor:null,annotationDataMarkerLineLength:16,tooltipCrosshairsBorderColor:r7[25],tooltipCrosshairsBorder:1,tooltipCrosshairsLineDash:null,tooltipContainerFillColor:"rgb(255, 255, 255)",tooltipContainerFillOpacity:.95,tooltipContainerShadow:"0px 0px 10px #aeaeae",tooltipContainerBorderRadius:3,tooltipTextFillColor:r7[65],tooltipTextFontSize:12,tooltipTextLineHeight:12,tooltipTextFontWeight:"bold",labelFillColor:r7[65],labelFillColorDark:"#2c3542",labelFillColorLight:"#ffffff",labelFontSize:12,labelLineHeight:12,labelFontWeight:"normal",labelBorderColor:null,labelBorder:0,innerLabelFillColor:r8[100],innerLabelFontSize:12,innerLabelLineHeight:12,innerLabelFontWeight:"normal",innerLabelBorderColor:null,innerLabelBorder:0,overflowLabelFillColor:r7[65],overflowLabelFontSize:12,overflowLabelLineHeight:12,overflowLabelFontWeight:"normal",overflowLabelBorderColor:r8[100],overflowLabelBorder:1,labelLineBorder:1,labelLineBorderColor:r7[25],cSliderRailHieght:16,cSliderBackgroundFillColor:"#416180",cSliderBackgroundFillOpacity:.05,cSliderForegroundFillColor:"#5B8FF9",cSliderForegroundFillOpacity:.15,cSliderHandlerHeight:24,cSliderHandlerWidth:10,cSliderHandlerFillColor:"#F7F7F7",cSliderHandlerFillOpacity:1,cSliderHandlerHighlightFillColor:"#FFF",cSliderHandlerBorderColor:"#BFBFBF",cSliderHandlerBorder:1,cSliderHandlerBorderRadius:2,cSliderTextFillColor:"#000",cSliderTextFillOpacity:.45,cSliderTextFontSize:12,cSliderTextLineHeight:12,cSliderTextFontWeight:"normal",cSliderTextBorderColor:null,cSliderTextBorder:0,scrollbarTrackFillColor:"rgba(0,0,0,0)",scrollbarThumbFillColor:"rgba(0,0,0,0.15)",scrollbarThumbHighlightFillColor:"rgba(0,0,0,0.2)",pointFillColor:c,pointFillOpacity:.95,pointSize:4,pointBorder:1,pointBorderColor:r8[100],pointBorderOpacity:1,pointActiveBorderColor:r7[100],pointSelectedBorder:2,pointSelectedBorderColor:r7[100],pointInactiveFillOpacity:.3,pointInactiveBorderOpacity:.3,hollowPointSize:4,hollowPointBorder:1,hollowPointBorderColor:c,hollowPointBorderOpacity:.95,hollowPointFillColor:r8[100],hollowPointActiveBorder:1,hollowPointActiveBorderColor:r7[100],hollowPointActiveBorderOpacity:1,hollowPointSelectedBorder:2,hollowPointSelectedBorderColor:r7[100],hollowPointSelectedBorderOpacity:1,hollowPointInactiveBorderOpacity:.3,lineBorder:2,lineBorderColor:c,lineBorderOpacity:1,lineActiveBorder:3,lineSelectedBorder:3,lineInactiveBorderOpacity:.3,areaFillColor:c,areaFillOpacity:.25,areaActiveFillColor:c,areaActiveFillOpacity:.5,areaSelectedFillColor:c,areaSelectedFillOpacity:.5,areaInactiveFillOpacity:.3,hollowAreaBorderColor:c,hollowAreaBorder:2,hollowAreaBorderOpacity:1,hollowAreaActiveBorder:3,hollowAreaActiveBorderColor:r7[100],hollowAreaSelectedBorder:3,hollowAreaSelectedBorderColor:r7[100],hollowAreaInactiveBorderOpacity:.3,intervalFillColor:c,intervalFillOpacity:.95,intervalActiveBorder:1,intervalActiveBorderColor:r7[100],intervalActiveBorderOpacity:1,intervalSelectedBorder:2,intervalSelectedBorderColor:r7[100],intervalSelectedBorderOpacity:1,intervalInactiveBorderOpacity:.3,intervalInactiveFillOpacity:.3,hollowIntervalBorder:2,hollowIntervalBorderColor:c,hollowIntervalBorderOpacity:1,hollowIntervalFillColor:r8[100],hollowIntervalActiveBorder:2,hollowIntervalActiveBorderColor:r7[100],hollowIntervalSelectedBorder:3,hollowIntervalSelectedBorderColor:r7[100],hollowIntervalSelectedBorderOpacity:1,hollowIntervalInactiveBorderOpacity:.3}};function or(e){var t=e.styleSheet,i=(0,ef._T)(e,["styleSheet"]),n=on(void 0===t?{}:t);return(0,em.b$)({},r9(n),i)}on();var oo={default:or({})};function os(e){return(0,em.U2)(oo,(0,em.vl)(e),oo.default)}function oa(e,t,i){var n=i.translate(e),r=i.translate(t);return(0,em.vQ)(n,r)}function ol(e,t,i){var n=i.coordinate,r=i.getYScale(),o=r.field,s=n.invert(t),a=r.invert(s.y);return(0,em.sE)(e,function(e){var t=e[e_];return t[o][0]<=a&&t[o][1]>=a})||e[e.length-1]}var oh=(0,em.HP)(function(e){if(e.isCategory)return 1;for(var t=e.values,i=t.length,n=e.translate(t[0]),r=n,o=0;or&&(r=a)}return(r-n)/(i-1)});function ou(e){for(var t,i,n=(t=(0,em.VO)(e.attributes),(0,em.hX)(t,function(e){return(0,em.FX)(eE,e.type)})),r=0;r(1+s)/2&&(l=a),r.translate(r.invert(l))),R=T[e_][c],L=T[e_][g],N=b[e_][c],I=d.isLinear&&(0,em.kJ)(L);if((0,em.kJ)(R)){for(var _=0;_=A){if(I)(0,em.kJ)(p)||(p=[]),p.push(w);else{p=w;break}}}(0,em.kJ)(p)&&(p=ol(p,e,i))}else{var O=void 0;if(u.isLinear||"timeCat"===u.type){if((A>u.translate(N)||Au.max||AMath.abs(u.translate(O[e_][c])-A)&&(b=O)}var P=oh(i.getXScale());return!p&&Math.abs(u.translate(b[e_][c])-A)<=P/2&&(p=b),p}function oc(e,t,i,n){void 0===i&&(i=""),void 0===n&&(n=!1);var r,o,s,a,l,h,u,d,c,g=e[e_],p=(r=i,o=t.getAttribute("position").getFields(),l=(a=t.scales[s=(0,em.mf)(r)||!r?o[0]:r])?a.getText(g[s]):g[s]||s,(0,em.mf)(r)?r(l,g):l),f=t.tooltipOption,m=t.theme.defaultColor,v=[];function E(t,i){if(n||!(0,em.UM)(i)&&""!==i){var r={title:p,data:g,mappingData:e,name:t,value:i,color:e.color||m,marker:!0};v.push(r)}}if((0,em.Kn)(f)){var _=f.fields,C=f.callback;if(C){var S=_.map(function(t){return e[e_][t]}),y=C.apply(void 0,S),T=(0,ef.pi)({data:e[e_],mappingData:e,title:p,color:e.color||m,marker:!0},y);v.push(T)}else for(var b=t.scales,A=0;A<_.length;A++){var R=_[A];if(!(0,em.UM)(g[R])){var L=b[R];E(ra(L),c=L.getText(g[R]))}}}else u=g[(h=ou(t)).field],c=(0,em.kJ)(u)?u.map(function(e){return h.getText(e)}).join("-"):h.getText(u),E(function(e,t){var i,n=t.getGroupScales();if(n.length&&(i=n[0]),i){var r=i.field;return i.getText(e[r])}return ra(ou(t))}(g,t),c);return v}function og(e,t,i,n){var r=n.showNil,o=[],s=e.dataArray;if(!(0,em.xb)(s)){e.sort(s);for(var a=0;a');T.appendChild(b);var A=eb(T,a,r,o),R=new(function(e){var t=eC[e];if(!t)throw Error("G engine '"+e+"' is not exist, please register it at first.");return t}(d)).Canvas((0,ef.pi)({container:b,pixelRatio:c,localRefresh:p,supportCSSTransform:void 0!==m&&m},A));return(i=e.call(this,{parent:null,canvas:R,backgroundGroup:R.addGroup({zIndex:ev.BG}),middleGroup:R.addGroup({zIndex:ev.MID}),foregroundGroup:R.addGroup({zIndex:ev.FORE}),padding:l,appendPadding:h,visible:void 0===f||f,options:_,limitInPlot:C,theme:S,syncViewPadding:y})||this).onResize=(0,em.Ds)(function(){i.forceFit()},300),i.ele=T,i.canvas=R,i.width=A.width,i.height=A.height,i.autoFit=a,i.localRefresh=p,i.renderer=d,i.wrapperElement=b,i.updateCanvasStyle(),i.bindAutoFit(),i.initDefaultInteractions(E),i}return(0,ef.ZT)(t,e),t.prototype.initDefaultInteractions=function(e){var t=this;(0,em.S6)(e,function(e){t.interaction(e)})},t.prototype.aria=function(e){var t="aria-label";!1===e?this.ele.removeAttribute(t):this.ele.setAttribute(t,e.label)},t.prototype.changeSize=function(e,t){return this.width===e&&this.height===t||(this.emit(M.BEFORE_CHANGE_SIZE),this.width=e,this.height=t,this.canvas.changeSize(e,t),this.render(!0),this.emit(M.AFTER_CHANGE_SIZE)),this},t.prototype.clear=function(){e.prototype.clear.call(this),this.aria(!1)},t.prototype.destroy=function(){var t,i;e.prototype.destroy.call(this),this.unbindAutoFit(),this.canvas.destroy(),(i=(t=this.wrapperElement).parentNode)&&i.removeChild(t),this.wrapperElement=null},t.prototype.changeVisible=function(t){return e.prototype.changeVisible.call(this,t),this.wrapperElement.style.display=t?"":"none",this},t.prototype.forceFit=function(){if(!this.destroyed){var e=eb(this.ele,!0,this.width,this.height),t=e.width,i=e.height;this.changeSize(t,i)}},t.prototype.updateCanvasStyle=function(){ey(this.canvas.get("el"),{display:"inline-block",verticalAlign:"middle"})},t.prototype.bindAutoFit=function(){this.autoFit&&window.addEventListener("resize",this.onResize)},t.prototype.unbindAutoFit=function(){this.autoFit&&window.removeEventListener("resize",this.onResize)},t}(ob),oL=function(){function e(e){this.visible=!0,this.components=[],this.view=e}return e.prototype.clear=function(e){(0,em.S6)(this.components,function(e){e.component.destroy()}),this.components=[]},e.prototype.destroy=function(){this.clear()},e.prototype.getComponents=function(){return this.components},e.prototype.changeVisible=function(e){this.visible!==e&&(this.components.forEach(function(t){e?t.component.show():t.component.hide()}),this.visible=e)},e}(),oN=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.isLocked=!1,t}return(0,ef.ZT)(t,e),Object.defineProperty(t.prototype,"name",{get:function(){return"tooltip"},enumerable:!1,configurable:!0}),t.prototype.init=function(){},t.prototype.isVisible=function(){return!1!==this.view.getOptions().tooltip},t.prototype.render=function(){},t.prototype.showTooltip=function(e){if(this.point=e,this.isVisible()){var t=this.view,i=this.getTooltipItems(e);if(!i.length){this.hideTooltip();return}var n=this.getTitle(i),r={x:i[0].x,y:i[0].y};t.emit("tooltip:show",o_.fromData(t,"tooltip:show",(0,ef.pi)({items:i,title:n},e)));var o=this.getTooltipCfg(),s=o.follow,a=o.showMarkers,l=o.showCrosshairs,h=o.showContent,u=o.marker,d=this.items,c=this.title;if((0,em.Xy)(c,n)&&(0,em.Xy)(d,i)?(this.tooltip&&s&&(this.tooltip.update(e),this.tooltip.show()),this.tooltipMarkersGroup&&this.tooltipMarkersGroup.show()):(t.emit("tooltip:change",o_.fromData(t,"tooltip:change",(0,ef.pi)({items:i,title:n},e))),((0,em.mf)(h)?h(i):h)&&(this.tooltip||this.renderTooltip(),this.tooltip.update((0,em.CD)({},o,{items:this.getItemsAfterProcess(i),title:n},s?e:{})),this.tooltip.show()),a&&this.renderTooltipMarkers(i,u)),this.items=i,this.title=n,l){var g=(0,em.U2)(o,["crosshairs","follow"],!1);this.renderCrosshairs(g?e:r,o)}}},t.prototype.hideTooltip=function(){if(!this.getTooltipCfg().follow){this.point=null;return}var e=this.tooltipMarkersGroup;e&&e.hide();var t=this.xCrosshair,i=this.yCrosshair;t&&t.hide(),i&&i.hide();var n=this.tooltip;n&&n.hide(),this.view.emit("tooltip:hide",o_.fromData(this.view,"tooltip:hide",{})),this.point=null},t.prototype.lockTooltip=function(){this.isLocked=!0,this.tooltip&&this.tooltip.setCapture(!0)},t.prototype.unlockTooltip=function(){this.isLocked=!1;var e=this.getTooltipCfg();this.tooltip&&this.tooltip.setCapture(e.capture)},t.prototype.isTooltipLocked=function(){return this.isLocked},t.prototype.clear=function(){var e=this.tooltip,t=this.xCrosshair,i=this.yCrosshair,n=this.tooltipMarkersGroup;e&&(e.hide(),e.clear()),t&&t.clear(),i&&i.clear(),n&&n.clear(),(null==e?void 0:e.get("customContent"))&&(this.tooltip.destroy(),this.tooltip=null),this.title=null,this.items=null},t.prototype.destroy=function(){this.tooltip&&this.tooltip.destroy(),this.xCrosshair&&this.xCrosshair.destroy(),this.yCrosshair&&this.yCrosshair.destroy(),this.guideGroup&&this.guideGroup.remove(!0),this.reset()},t.prototype.reset=function(){this.items=null,this.title=null,this.tooltipMarkersGroup=null,this.tooltipCrosshairsGroup=null,this.xCrosshair=null,this.yCrosshair=null,this.tooltip=null,this.guideGroup=null,this.isLocked=!1,this.point=null},t.prototype.changeVisible=function(e){if(this.visible!==e){var t=this.tooltip,i=this.tooltipMarkersGroup,n=this.xCrosshair,r=this.yCrosshair;e?(t&&t.show(),i&&i.show(),n&&n.show(),r&&r.show()):(t&&t.hide(),i&&i.hide(),n&&n.hide(),r&&r.hide()),this.visible=e}},t.prototype.getTooltipItems=function(e){var t=this.findItemsFromView(this.view,e);if(t.length){t=(0,em.xH)(t);for(var i=0,n=t;i1){for(var u=t[0],d=Math.abs(e.y-u[0].y),c=0,g=t;c'+n+"":n}})},t.prototype.getTitle=function(e){var t=e[0].title||e[0].name;return this.title=t,t},t.prototype.renderTooltip=function(){var e=this.view.getCanvas(),t={start:{x:0,y:0},end:{x:e.get("width"),y:e.get("height")}},i=this.getTooltipCfg(),n=new nF((0,ef.pi)((0,ef.pi)({parent:e.get("el").parentNode,region:t},i),{visible:!1,crosshairs:null}));n.init(),this.tooltip=n},t.prototype.renderTooltipMarkers=function(e,t){for(var i=this.getTooltipMarkersGroup(),n=0;n-1)return;i.push(e),("active"===e||"selected"===e)&&(null==o||o.toFront())}else{if(-1===a)return;i.splice(a,1),("active"===e||"selected"===e)&&(this.geometry.zIndexReversed?o.setZIndex(this.geometry.elements.length-this.elementIndex):o.setZIndex(this.elementIndex))}var l=n.drawShape(s,r,this.getOffscreenGroup());i.length?this.syncShapeStyle(o,l,i,null):this.syncShapeStyle(o,l,["reset"],null),l.remove(!0);var h={state:e,stateStatus:t,element:this,target:this.container};this.container.emit("statechange",h),iu(this.shape,"statechange",h)},t.prototype.clearStates=function(){var e=this,t=this.states;(0,em.S6)(t,function(t){e.setState(t,!1)}),this.states=[]},t.prototype.hasState=function(e){return this.states.includes(e)},t.prototype.getStates=function(){return this.states},t.prototype.getData=function(){return this.data},t.prototype.getModel=function(){return this.model},t.prototype.getBBox=function(){var e=this.shape,t=this.labelShape,i={x:0,y:0,minX:0,minY:0,maxX:0,maxY:0,width:0,height:0};return e&&(i=e.getCanvasBBox()),t&&t.forEach(function(e){var t=e.getCanvasBBox();i.x=Math.min(t.x,i.x),i.y=Math.min(t.y,i.y),i.minX=Math.min(t.minX,i.minX),i.minY=Math.min(t.minY,i.minY),i.maxX=Math.max(t.maxX,i.maxX),i.maxY=Math.max(t.maxY,i.maxY)}),i.width=i.maxX-i.minX,i.height=i.maxY-i.minY,i},t.prototype.getStatesStyle=function(){if(!this.statesStyle){var e=this.shapeType,t=this.geometry,i=this.shapeFactory,n=t.stateOption,r=i.defaultShapeType,o=i.theme[e]||i.theme[r];this.statesStyle=(0,em.b$)({},o,n)}return this.statesStyle},t.prototype.getStateStyle=function(e,t){var i=this.getStatesStyle(),n=(0,em.U2)(i,[e,"style"],{}),r=n[t]||n;return(0,em.mf)(r)?r(this):r},t.prototype.getAnimateCfg=function(e){var t=this,i=this.animate;if(i){var n=i[e];return n?(0,ef.pi)((0,ef.pi)({},n),{callback:function(){var e;(0,em.mf)(n.callback)&&n.callback(),null===(e=t.geometry)||void 0===e||e.emit(k.AFTER_DRAW_ANIMATE)}}):n}return null},t.prototype.drawShape=function(e,t){void 0===t&&(t=!1);var i,n=this.shapeFactory,r=this.container,o=this.shapeType;if(this.shape=n.drawShape(o,e,r),this.shape){this.setShapeInfo(this.shape,e);var s=this.shape.cfg.name;s?(0,em.HD)(s)&&(this.shape.cfg.name=["element",s]):this.shape.cfg.name=["element",this.shapeFactory.geometryType];var a=t?"enter":"appear",l=this.getAnimateCfg(a);l&&(null===(i=this.geometry)||void 0===i||i.emit(k.BEFORE_DRAW_ANIMATE),oP(this.shape,l,{coordinate:n.coordinate,toAttrs:(0,ef.pi)({},this.shape.attr())}))}},t.prototype.getOffscreenGroup=function(){if(!this.offscreenGroup){var e=this.container.getGroupBase();this.offscreenGroup=new e({})}return this.offscreenGroup},t.prototype.setShapeInfo=function(e,t){var i=this;e.cfg.origin=t,e.cfg.element=this,e.isGroup()&&e.get("children").forEach(function(e){i.setShapeInfo(e,t)})},t.prototype.syncShapeStyle=function(e,t,i,n,r){var o,s=this;if(void 0===i&&(i=[]),void 0===r&&(r=0),e&&t){var a=e.get("clipShape"),l=t.get("clipShape");if(this.syncShapeStyle(a,l,i,n),e.isGroup())for(var h=e.get("children"),u=t.get("children"),d=0;d=s[h]?1:0,c=u>Math.PI?1:0,g=i.convert(a),p=ri(i,g);if(p>=.5){if(u===2*Math.PI){var f={x:(a.x+s.x)/2,y:(a.y+s.y)/2},m=i.convert(f);l.push(["A",p,p,0,c,d,m.x,m.y]),l.push(["A",p,p,0,c,d,g.x,g.y])}else l.push(["A",p,p,0,c,d,g.x,g.y])}return l}(i,e,a)):n.push(rR(e,a));break;case"a":n.push(rL(e,a));break;default:n.push(e)}}),r=n,(0,em.S6)(r,function(e,t){if("a"===e[0].toLowerCase()){var i=r[t-1],n=r[t+1];n&&"a"===n[0].toLowerCase()?i&&"l"===i[0].toLowerCase()&&(i[0]="M"):i&&"a"===i[0].toLowerCase()&&n&&"l"===n[0].toLowerCase()&&(n[0]="M")}}),l=n):(o=l,s=[],(0,em.S6)(o,function(e){switch(e[0].toLowerCase()){case"m":case"l":case"c":s.push(rR(e,a));break;case"a":s.push(rL(e,a));break;default:s.push(e)}}),l=s),l},parsePoint:function(e){return this.coordinate.convert(e)},parsePoints:function(e){var t=this.coordinate;return e.map(function(e){return t.convert(e)})},draw:function(e,t){}},oY={};function oK(e,t){var i=(0,em.jC)(e),n=(0,ef.pi)((0,ef.pi)((0,ef.pi)({},oG),t),{geometryType:e});return oY[i]=n,n}function o$(e,t,i){var n=oY[(0,em.jC)(e)],r=(0,ef.pi)((0,ef.pi)({},oz),i);return n[t]=r,r}function oX(e){return oY[(0,em.jC)(e)]}function oj(e,t){return(0,em.G)(["color","shape","size","x","y","isInCircle","data","style","defaultStyle","points","mappingData"],function(i){return!(0,em.Xy)(e[i],t[i])})}function oq(e){return(0,em.kJ)(e)?e:e.split("*")}function oZ(e,t){for(var i=[],n=[],r=[],o=new Map,s=0;s=0?t:i<=0?i:0},t.prototype.createAttrOption=function(e,t,i){if((0,em.UM)(t)||(0,em.Kn)(t))(0,em.Kn)(t)&&(0,em.Xy)(Object.keys(t),["values"])?(0,em.t8)(this.attributeOption,e,{fields:t.values}):(0,em.t8)(this.attributeOption,e,t);else{var n={};(0,em.hj)(t)?n.values=[t]:n.fields=oq(t),i&&((0,em.mf)(i)?n.callback=i:n.values=i),(0,em.t8)(this.attributeOption,e,n)}},t.prototype.initAttributes=function(){var e=this,t=this.attributes,i=this.attributeOption,n=this.theme,r=this.shapeType;this.groupScales=[];var o={},s=function(s){if(i.hasOwnProperty(s)){var a=i[s];if(!a)return{value:void 0};var l=(0,ef.pi)({},a),h=l.callback,u=l.values,d=l.fields,c=(void 0===d?[]:d).map(function(t){var i=e.scales[t];return i.isCategory&&!o[t]&&eE.includes(s)&&(e.groupScales.push(i),o[t]=!0),i});l.scales=c,"position"!==s&&1===c.length&&"identity"===c[0].type?l.values=c[0].values:h||u||("size"===s?l.values=n.sizes:"shape"===s?l.values=n.shapes[r]||[]:"color"===s&&(c.length?l.values=c[0].values.length<=10?n.colors10:n.colors20:l.values=n.colors10));var g=t3(s);t[s]=new g(l)}};for(var a in i){var l=s(a);if("object"==typeof l)return l.value}},t.prototype.processData=function(e){this.hasSorted=!1;for(var t=this.getAttribute("position").scales.filter(function(e){return e.isCategory}),i=this.groupData(e),n=[],r=0,o=i.length;ro&&(o=h)}var u=this.scaleDefs,d={};re.max&&!(0,em.U2)(u,[n,"max"])&&(d.max=o),e.change(d)},t.prototype.beforeMapping=function(e){if(this.sortable&&this.sort(e),this.generatePoints)for(var t=0,i=e.length;t1)for(var u=0;u=t.getCount()&&!e.destroyed&&t.add(e)})})(d,h[t],{data:o,origin:s,animateCfg:u,coordinate:a}),n.shapesMap[t]=d}else{r.add(e);var c=(0,em.U2)(e.get("animateCfg"),i?"enter":"appear");c&&oP(e,c,{toAttrs:(0,ef.pi)({},e.attr()),coordinate:e.get("coordinate")})}delete l[t]}}),(0,em.S6)(l,function(e){var t=(0,em.U2)(e.get("animateCfg"),"leave");t?oP(e,t,{toAttrs:null,coordinate:e.get("coordinate")}):e.remove(!0)}),this.lastShapesMap=h,o.destroy()},e.prototype.clear=function(){this.container.clear(),this.shapesMap={},this.lastShapesMap={}},e.prototype.destroy=function(){this.container.destroy(),this.shapesMap=null,this.lastShapesMap=null},e.prototype.renderLabel=function(e,t){var i,n=e.id,r=e.elementId,o=e.data,s=e.mappingData,a=e.coordinate,l=e.animate,h=e.content,u={id:n,elementId:r,data:o,origin:(0,ef.pi)((0,ef.pi)({},s),{data:s[e_]}),coordinate:a},d=t.addGroup((0,ef.pi)({name:"label",animateCfg:!1!==this.animate&&null!==l&&!1!==l&&(0,em.b$)({},this.animate,l)},u));if(h.isGroup&&h.isGroup()||h.isShape&&h.isShape()){var c=h.getCanvasBBox(),g=c.width,p=c.height,f=(0,em.U2)(e,"textAlign","left"),m=e.x,v=e.y-p/2;"center"===f?m-=g/2:("right"===f||"end"===f)&&(m-=g),o0(h,m,v),i=h,d.add(h)}else{var E=(0,em.U2)(e,["style","fill"]);i=d.addShape("text",(0,ef.pi)({attrs:(0,ef.pi)((0,ef.pi)({x:e.x,y:e.y,textAlign:e.textAlign,textBaseline:(0,em.U2)(e,"textBaseline","middle"),text:e.content},e.style),{fill:(0,em.Ft)(E)?e.color:E})},u))}e.rotate&&o1(i,e.rotate),this.shapesMap[n]=d},e.prototype.doLayout=function(e,t){var i=this;if(this.layout){var n=(0,em.kJ)(this.layout)?this.layout:[this.layout];(0,em.S6)(n,function(n){var r=oH[(0,em.U2)(n,"type","").toLowerCase()];if(r){var o=[],s=[];(0,em.S6)(i.shapesMap,function(e,i){o.push(e),s.push(t[e.get("elementId")])}),r(e,o,s,i.region,n.cfg)}})}},e.prototype.renderLabelLine=function(e){var t=this;(0,em.S6)(e,function(e){var i=(0,em.U2)(e,"coordinate");if(e&&i){var n=i.getCenter(),r=i.getRadius();if(e.labelLine){var o=(0,em.U2)(e,"labelLine",{}),s=e.id,a=o.path;if(!a){var l=n2(n.x,n.y,r,e.angle);a=[["M",l.x,l.y],["L",e.x,e.y]]}var h=t.shapesMap[s];h.destroyed||h.addShape("path",{capture:!1,attrs:(0,ef.pi)({path:a,stroke:e.color?e.color:(0,em.U2)(e,["style","fill"],"#000"),fill:null},o.style),id:s,origin:e.mappingData,data:e.data,coordinate:e.coordinate})}}})},e.prototype.renderLabelBackground=function(e){var t=this;(0,em.S6)(e,function(e){var i=(0,em.U2)(e,"coordinate"),n=(0,em.U2)(e,"background");if(n&&i){var r=e.id,o=t.shapesMap[r];if(!o.destroyed){var s=o.getChildren()[0];if(s){var a=o4(o,e,n.padding),l=a.rotation,h=(0,ef._T)(a,["rotation"]),u=o.addShape("rect",{attrs:(0,ef.pi)((0,ef.pi)({},h),n.style||{}),id:r,origin:e.mappingData,data:e.data,coordinate:e.coordinate});if(u.setZIndex(-1),l){var d=s.getMatrix();u.setMatrix(d)}}}}})},e.prototype.createOffscreenGroup=function(){return new(this.container.getGroupBase())({})},e.prototype.adjustLabel=function(e){var t=this;(0,em.S6)(e,function(e){if(e){var i=e.id,n=t.shapesMap[i];if(!n.destroyed){var r=n.findAll(function(e){return"path"!==e.get("type")});(0,em.S6)(r,function(t){t&&(e.offsetX&&t.attr("x",t.attr("x")+e.offsetX),e.offsetY&&t.attr("y",t.attr("y")+e.offsetY))})}}})},e}();function o6(e){var t=0;return(0,em.S6)(e,function(e){t+=e}),t/e.length}var o3=function(){function e(e){this.geometry=e}return e.prototype.getLabelItems=function(e){var t=this,i=[],n=this.getLabelCfgs(e);return(0,em.S6)(e,function(e,r){var o=n[r];if(!o||(0,em.UM)(e.x)||(0,em.UM)(e.y)){i.push(null);return}var s=(0,em.kJ)(o.content)?o.content:[o.content];o.content=s;var a=s.length;(0,em.S6)(s,function(n,r){if((0,em.UM)(n)||""===n){i.push(null);return}var s=(0,ef.pi)((0,ef.pi)({},o),t.getLabelPoint(o,e,r));s.textAlign||(s.textAlign=t.getLabelAlign(s,r,a)),s.offset<=0&&(s.labelLine=null),i.push(s)})}),i},e.prototype.render=function(e,t){void 0===t&&(t=!1);var i=this.getLabelItems(e),n=this.getLabelsRenderer(),r=this.getGeometryShapes();n.render(i,r,t)},e.prototype.clear=function(){var e=this.labelsRenderer;e&&e.clear()},e.prototype.destroy=function(){var e=this.labelsRenderer;e&&e.destroy(),this.labelsRenderer=null},e.prototype.getCoordinate=function(){return this.geometry.coordinate},e.prototype.getDefaultLabelCfg=function(e,t){var i=this.geometry,n=i.type,r=i.theme;return"polygon"===n||"interval"===n&&"middle"===t||e<0&&!["line","point","path"].includes(n)?(0,em.U2)(r,"innerLabels",{}):(0,em.U2)(r,"labels",{})},e.prototype.getThemedLabelCfg=function(e){var t=this.geometry,i=this.getDefaultLabelCfg(),n=t.type,r=t.theme;return"polygon"===n||e.offset<0&&!["line","point","path"].includes(n)?(0,em.b$)({},i,r.innerLabels,e):(0,em.b$)({},i,r.labels,e)},e.prototype.setLabelPosition=function(e,t,i,n){},e.prototype.getLabelOffset=function(e){var t=this.getCoordinate(),i=this.getOffsetVector(e);return t.isTransposed?i[0]:i[1]},e.prototype.getLabelOffsetPoint=function(e,t,i){var n=e.offset,r=this.getCoordinate().isTransposed,o=r?"x":"y",s=r?1:-1,a={x:0,y:0};return t>0||1===i?a[o]=n*s:a[o]=-(n*s*1),a},e.prototype.getLabelPoint=function(e,t,i){var n=this.getCoordinate(),r=e.content.length;function o(t,i,n){void 0===n&&(n=!1);var r=t;return(0,em.kJ)(r)&&(r=1===e.content.length?n?o6(r):r.length<=2?r[t.length-1]:o6(r):r[i]),r}var s={content:e.content[i],x:0,y:0,start:{x:0,y:0},color:"#fff"},a=(0,em.kJ)(t.shape)?t.shape[0]:t.shape,l="funnel"===a||"pyramid"===a;if("polygon"===this.geometry.type){var h=function(e,t){if((0,em.hj)(e)&&(0,em.hj)(t))return[e,t];if(n0(e)||n0(t))return[n1(e),n1(t)];for(var i,n,r=-1,o=0,s=0,a=e.length-1,l=0;++r1&&0===t&&("right"===n?n="left":"left"===n&&(n="right"))}return n},e.prototype.getLabelId=function(e){var t=this.geometry,i=t.type,n=t.getXScale(),r=t.getYScale(),o=e[e_],s=t.getElementId(e);return"line"===i||"area"===i?s+=" "+o[n.field]:"path"===i&&(s+=" "+o[n.field]+"-"+o[r.field]),s},e.prototype.getLabelsRenderer=function(){var e=this.geometry,t=e.labelsContainer,i=e.labelOption,n=e.canvasRegion,r=e.animateOption,o=this.geometry.coordinate,s=this.labelsRenderer;return s||(s=new o5({container:t,layout:(0,em.U2)(i,["cfg","layout"],{type:this.defaultLayout})}),this.labelsRenderer=s),s.region=n,s.animate=!!r&&ok("label",o),s},e.prototype.getLabelCfgs=function(e){var t=this,i=this.geometry,n=i.labelOption,r=i.scales,o=i.coordinate,s=n.fields,a=n.callback,l=n.cfg,h=s.map(function(e){return r[e]}),u=[];return(0,em.S6)(e,function(e,i){var n,r=e[e_],d=t.getLabelText(r,h);if(a){var c=s.map(function(e){return r[e]});if(n=a.apply(void 0,c),(0,em.UM)(n)){u.push(null);return}}var g=(0,ef.pi)((0,ef.pi)({id:t.getLabelId(e),elementId:t.geometry.getElementId(e),data:r,mappingData:e,coordinate:o},l),n);(0,em.mf)(g.position)&&(g.position=g.position(r,e,i));var p=t.getLabelOffset(g.offset||0),f=t.getDefaultLabelCfg(p,g.position);(g=(0,em.b$)({},f,g)).offset=t.getLabelOffset(g.offset||0);var m=g.content;(0,em.mf)(m)?g.content=m(r,e,i):(0,em.o8)(m)&&(g.content=d[0]),u.push(g)}),u},e.prototype.getLabelText=function(e,t){var i=[];return(0,em.S6)(t,function(t){var n=e[t.field];n=(0,em.kJ)(n)?n.map(function(e){return t.getText(e)}):t.getText(n),(0,em.UM)(n)||""===n?i.push(null):i.push(n)}),i},e.prototype.getOffsetVector=function(e){void 0===e&&(e=0);var t=this.getCoordinate(),i=0;return(0,em.hj)(e)&&(i=e),t.isTransposed?t.applyMatrix(i,0):t.applyMatrix(0,i)},e.prototype.getGeometryShapes=function(){var e=this.geometry,t={};return(0,em.S6)(e.elementsMap,function(e,i){t[i]=e.shape}),(0,em.S6)(e.getOffscreenGroup().getChildren(),function(i){t[e.getElementId(i.get("origin").mappingData)]=i}),t},e}();function o9(e,t,i){if(!e)return i;if(e.callback&&e.callback.length>1){var n,r=Array(e.callback.length-1).fill("");n=e.mapping.apply(e,(0,ef.ev)([t],r,!1)).join("")}else n=e.mapping(t).join("");return n||i}var o7={hexagon:function(e,t,i){var n=i/2*Math.sqrt(3);return[["M",e,t-i],["L",e+n,t-i/2],["L",e+n,t+i/2],["L",e,t+i],["L",e-n,t+i/2],["L",e-n,t-i/2],["Z"]]},bowtie:function(e,t,i){var n=i-1.5;return[["M",e-i,t-n],["L",e+i,t+n],["L",e+i,t-n],["L",e-i,t+n],["Z"]]},cross:function(e,t,i){return[["M",e-i,t-i],["L",e+i,t+i],["M",e+i,t-i],["L",e-i,t+i]]},tick:function(e,t,i){return[["M",e-i/2,t-i],["L",e+i/2,t-i],["M",e,t-i],["L",e,t+i],["M",e-i/2,t+i],["L",e+i/2,t+i]]},plus:function(e,t,i){return[["M",e-i,t],["L",e+i,t],["M",e,t-i],["L",e,t+i]]},hyphen:function(e,t,i){return[["M",e-i,t],["L",e+i,t]]},line:function(e,t,i){return[["M",e,t-i],["L",e,t+i]]}},o8=["line","cross","tick","plus","hyphen"];function se(e){var t=e.symbol;(0,em.HD)(t)&&o7[t]&&(e.symbol=o7[t])}function st(e){return e.startsWith(x.LEFT)||e.startsWith(x.RIGHT)?"vertical":"horizontal"}function si(e,t,i,n,r){var o=i.getScale(i.type);if(o.isCategory){var s=o.field,a=t.getAttribute("color"),l=t.getAttribute("shape"),h=e.getTheme().defaultColor,u=t.coordinate.isPolar;return o.getTicks().map(function(i,d){var c,g,p,f=i.text,m=i.value,v=o.invert(m),E=0===e.filterFieldData(s,[((p={})[s]=v,p)]).length;(0,em.S6)(e.views,function(e){var t;e.filterFieldData(s,[((t={})[s]=v,t)]).length||(E=!0)});var _=o9(a,v,h),C=o9(l,v,"point"),S=t.getShapeMarker(C,{color:_,isInPolar:u}),y=r;return(0,em.mf)(y)&&(y=y(f,d,(0,ef.pi)({name:f,value:v},(0,em.b$)({},n,S)))),!function(e,t){var i=e.symbol;if((0,em.HD)(i)&&-1!==o8.indexOf(i)){var n=(0,em.U2)(e,"style",{}),r=(0,em.U2)(n,"lineWidth",1),o=n.stroke||n.fill||t;e.style=(0,em.b$)({},e.style,{lineWidth:r,stroke:o,fill:null})}}(S=(0,em.b$)({},n,S,n7((0,ef.pi)({},y),["style"])),_),y&&y.style&&(S.style=(c=S.style,g=y.style,(0,em.mf)(g)?g(c):(0,em.b$)({},c,g))),se(S),{id:v,name:f,value:v,marker:S,unchecked:E}})}return[]}function sn(e,t){var i=(0,em.U2)(e,["components","legend"],{});return(0,em.b$)({},(0,em.U2)(i,["common"],{}),(0,em.b$)({},(0,em.U2)(i,[t],{})))}var sr={getLegendItems:si,translate:o0,rotate:o1,zoom:function(e,t){var i=e.getBBox(),n=(i.minX+i.maxX)/2,r=(i.minY+i.maxY)/2;e.applyToMatrix([n,r,1]);var o=oQ(e.getMatrix(),[["t",-n,-r],["s",t,t],["t",n,r]]);e.setMatrix(o)},transform:oQ,getAngle:n6,getSectorPath:n4,polarToCartesian:n2,getDelegationObject:rM,getTooltipItems:oc,getMappingValue:o9},so={100:"#000",95:"#0D0D0D",85:"#262626",65:"#595959",45:"#8C8C8C",25:"#BFBFBF",15:"#D9D9D9",6:"#F0F0F0"},ss={100:"#FFFFFF",95:"#F2F2F2",85:"#D9D9D9",65:"#A6A6A6",45:"#737373",25:"#404040",15:"#262626",6:"#0F0F0F"},sa=(void 0===d&&(d={}),c=d.backgroundColor,g=d.subColor,f=void 0===(p=d.paletteQualitative10)?["#5B8FF9","#5AD8A6","#5D7092","#F6BD16","#E86452","#6DC8EC","#945FB9","#FF9845","#1E9493","#FF99C3"]:p,m=d.paletteQualitative20,v=d.paletteSemanticRed,E=d.paletteSemanticGreen,_=d.paletteSemanticYellow,C=d.paletteSequence,S=d.fontFamily,{backgroundColor:void 0===c?"#141414":c,brandColor:void 0===(y=d.brandColor)?f[0]:y,subColor:void 0===g?"rgba(255,255,255,0.05)":g,paletteQualitative10:f,paletteQualitative20:void 0===m?["#5B8FF9","#CDDDFD","#5AD8A6","#CDF3E4","#5D7092","#CED4DE","#F6BD16","#FCEBB9","#E86452","#F8D0CB","#6DC8EC","#D3EEF9","#945FB9","#DECFEA","#FF9845","#FFE0C7","#1E9493","#BBDEDE","#FF99C3","#FFE0ED"]:m,paletteSemanticRed:void 0===v?"#F4664A":v,paletteSemanticGreen:void 0===E?"#30BF78":E,paletteSemanticYellow:void 0===_?"#FAAD14":_,paletteSequence:void 0===C?["#B8E1FF","#9AC5FF","#7DAAFF","#5B8FF9","#3D76DD","#085EC0","#0047A5","#00318A","#001D70"]:C,fontFamily:void 0===S?'"Segoe UI", Roboto, "Helvetica Neue", Arial,\n "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol",\n "Noto Color Emoji"':S,axisLineBorderColor:ss[25],axisLineBorder:1,axisLineDash:null,axisTitleTextFillColor:ss[65],axisTitleTextFontSize:12,axisTitleTextLineHeight:12,axisTitleTextFontWeight:"normal",axisTitleSpacing:12,axisTickLineBorderColor:ss[25],axisTickLineLength:4,axisTickLineBorder:1,axisSubTickLineBorderColor:ss[15],axisSubTickLineLength:2,axisSubTickLineBorder:1,axisLabelFillColor:ss[45],axisLabelFontSize:12,axisLabelLineHeight:12,axisLabelFontWeight:"normal",axisLabelOffset:8,axisGridBorderColor:ss[15],axisGridBorder:1,axisGridLineDash:null,legendTitleTextFillColor:ss[45],legendTitleTextFontSize:12,legendTitleTextLineHeight:21,legendTitleTextFontWeight:"normal",legendMarkerColor:"#5B8FF9",legendMarkerSpacing:8,legendMarkerSize:4,legendCircleMarkerSize:4,legendSquareMarkerSize:4,legendLineMarkerSize:5,legendItemNameFillColor:ss[65],legendItemNameFontSize:12,legendItemNameLineHeight:12,legendItemNameFontWeight:"normal",legendItemSpacing:24,legendItemMarginBottom:12,legendSpacing:16,legendPadding:[8,8,8,8],legendHorizontalPadding:[8,0,8,0],legendVerticalPadding:[0,8,0,8],legendPageNavigatorMarkerSize:12,legendPageNavigatorMarkerInactiveFillColor:ss[45],legendPageNavigatorMarkerInactiveFillOpacity:.45,legendPageNavigatorMarkerFillColor:ss[45],legendPageNavigatorMarkerFillOpacity:1,legendPageNavigatorTextFillColor:ss[65],legendPageNavigatorTextFontSize:12,sliderRailFillColor:ss[15],sliderRailBorder:0,sliderRailBorderColor:null,sliderRailWidth:100,sliderRailHeight:12,sliderLabelTextFillColor:ss[45],sliderLabelTextFontSize:12,sliderLabelTextLineHeight:12,sliderLabelTextFontWeight:"normal",sliderHandlerFillColor:so[6],sliderHandlerWidth:10,sliderHandlerHeight:14,sliderHandlerBorder:1,sliderHandlerBorderColor:so[25],annotationArcBorderColor:ss[15],annotationArcBorder:1,annotationLineBorderColor:ss[25],annotationLineBorder:1,annotationLineDash:null,annotationTextFillColor:ss[65],annotationTextFontSize:12,annotationTextLineHeight:12,annotationTextFontWeight:"normal",annotationTextBorderColor:null,annotationTextBorder:0,annotationRegionFillColor:ss[100],annotationRegionFillOpacity:.06,annotationRegionBorder:0,annotationRegionBorderColor:null,annotationDataMarkerLineLength:16,tooltipCrosshairsBorderColor:ss[25],tooltipCrosshairsBorder:1,tooltipCrosshairsLineDash:null,tooltipContainerFillColor:"#1f1f1f",tooltipContainerFillOpacity:.95,tooltipContainerShadow:"0px 2px 4px rgba(0,0,0,.5)",tooltipContainerBorderRadius:3,tooltipTextFillColor:ss[65],tooltipTextFontSize:12,tooltipTextLineHeight:12,tooltipTextFontWeight:"bold",labelFillColor:ss[65],labelFillColorDark:"#2c3542",labelFillColorLight:"#ffffff",labelFontSize:12,labelLineHeight:12,labelFontWeight:"normal",labelBorderColor:null,labelBorder:0,innerLabelFillColor:so[100],innerLabelFontSize:12,innerLabelLineHeight:12,innerLabelFontWeight:"normal",innerLabelBorderColor:null,innerLabelBorder:0,overflowLabelFillColor:ss[65],overflowLabelFillColorDark:"#2c3542",overflowLabelFillColorLight:"#ffffff",overflowLabelFontSize:12,overflowLabelLineHeight:12,overflowLabelFontWeight:"normal",overflowLabelBorderColor:so[100],overflowLabelBorder:1,labelLineBorder:1,labelLineBorderColor:ss[25],cSliderRailHieght:16,cSliderBackgroundFillColor:"#416180",cSliderBackgroundFillOpacity:.05,cSliderForegroundFillColor:"#5B8FF9",cSliderForegroundFillOpacity:.15,cSliderHandlerHeight:24,cSliderHandlerWidth:10,cSliderHandlerFillColor:"#F7F7F7",cSliderHandlerFillOpacity:1,cSliderHandlerHighlightFillColor:"#FFF",cSliderHandlerBorderColor:"#BFBFBF",cSliderHandlerBorder:1,cSliderHandlerBorderRadius:2,cSliderTextFillColor:"#fff",cSliderTextFillOpacity:.45,cSliderTextFontSize:12,cSliderTextLineHeight:12,cSliderTextFontWeight:"normal",cSliderTextBorderColor:null,cSliderTextBorder:0,scrollbarTrackFillColor:"rgba(255,255,255,0.65)",scrollbarThumbFillColor:"rgba(0,0,0,0.35)",scrollbarThumbHighlightFillColor:"rgba(0,0,0,0.45)",pointFillColor:"#5B8FF9",pointFillOpacity:.95,pointSize:4,pointBorder:1,pointBorderColor:so[100],pointBorderOpacity:1,pointActiveBorderColor:ss[100],pointSelectedBorder:2,pointSelectedBorderColor:ss[100],pointInactiveFillOpacity:.3,pointInactiveBorderOpacity:.3,hollowPointSize:4,hollowPointBorder:1,hollowPointBorderColor:"#5B8FF9",hollowPointBorderOpacity:.95,hollowPointFillColor:so[100],hollowPointActiveBorder:1,hollowPointActiveBorderColor:ss[100],hollowPointActiveBorderOpacity:1,hollowPointSelectedBorder:2,hollowPointSelectedBorderColor:ss[100],hollowPointSelectedBorderOpacity:1,hollowPointInactiveBorderOpacity:.3,lineBorder:2,lineBorderColor:"#5B8FF9",lineBorderOpacity:1,lineActiveBorder:3,lineSelectedBorder:3,lineInactiveBorderOpacity:.3,areaFillColor:"#5B8FF9",areaFillOpacity:.25,areaActiveFillColor:"#5B8FF9",areaActiveFillOpacity:.5,areaSelectedFillColor:"#5B8FF9",areaSelectedFillOpacity:.5,areaInactiveFillOpacity:.3,hollowAreaBorderColor:"#5B8FF9",hollowAreaBorder:2,hollowAreaBorderOpacity:1,hollowAreaActiveBorder:3,hollowAreaActiveBorderColor:ss[100],hollowAreaSelectedBorder:3,hollowAreaSelectedBorderColor:ss[100],hollowAreaInactiveBorderOpacity:.3,intervalFillColor:"#5B8FF9",intervalFillOpacity:.95,intervalActiveBorder:1,intervalActiveBorderColor:ss[100],intervalActiveBorderOpacity:1,intervalSelectedBorder:2,intervalSelectedBorderColor:ss[100],intervalSelectedBorderOpacity:1,intervalInactiveBorderOpacity:.3,intervalInactiveFillOpacity:.3,hollowIntervalBorder:2,hollowIntervalBorderColor:"#5B8FF9",hollowIntervalBorderOpacity:1,hollowIntervalFillColor:so[100],hollowIntervalActiveBorder:2,hollowIntervalActiveBorderColor:ss[100],hollowIntervalSelectedBorder:3,hollowIntervalSelectedBorderColor:ss[100],hollowIntervalSelectedBorderOpacity:1,hollowIntervalInactiveBorderOpacity:.3});function sl(e,t,i,n){var r=e-i,o=t-n;return Math.sqrt(r*r+o*o)}function sh(e,t,i,n,r,o){return r>=e&&r<=e+i&&o>=t&&o<=t+n}function su(e,t){return!(t.minX>e.maxX||t.maxXe.maxY||t.maxY1&&(i*=Math.sqrt(g),n*=Math.sqrt(g));var p=i*i*(c*c)+n*n*(d*d),f=p?Math.sqrt((i*i*(n*n)-p)/p):1;o===s&&(f*=-1),isNaN(f)&&(f=0);var m=n?f*i*c/n:0,v=i?-(f*n)*d/i:0,E=(a+h)/2+Math.cos(r)*m-Math.sin(r)*v,_=(l+u)/2+Math.sin(r)*m+Math.cos(r)*v,C=[(d-m)/i,(c-v)/n],S=[(-1*d-m)/i,(-1*c-v)/n],y=s_([1,0],C),T=s_(C,S);return -1>=sE(C,S)&&(T=Math.PI),sE(C,S)>=1&&(T=0),0===s&&T>0&&(T-=2*Math.PI),1===s&&T<0&&(T+=2*Math.PI),{cx:E,cy:_,rx:sd(e,[h,u])?0:i,ry:sd(e,[h,u])?0:n,startAngle:y,endAngle:y+T,xRotation:r,arcFlag:o,sweepFlag:s}}var sS=Math.sin,sy=Math.cos,sT=Math.atan2,sb=Math.PI;function sA(e,t,i,n,r,o,s){var a=t.stroke,l=t.lineWidth,h=sT(n-o,i-r),u=new s0({type:"path",canvas:e.get("canvas"),isArrowShape:!0,attrs:{path:"M"+10*sy(sb/6)+","+10*sS(sb/6)+" L0,0 L"+10*sy(sb/6)+",-"+10*sS(sb/6),stroke:a,lineWidth:l}});u.translate(r,o),u.rotateAtPoint(r,o,h),e.set(s?"startArrowShape":"endArrowShape",u)}function sR(e,t,i,n,r,o,s){var a=t.startArrow,l=t.endArrow,h=t.stroke,u=t.lineWidth,d=s?a:l,c=d.d,g=d.fill,p=d.stroke,f=d.lineWidth,m=(0,ef._T)(d,["d","fill","stroke","lineWidth"]),v=sT(n-o,i-r);c&&(r-=sy(v)*c,o-=sS(v)*c);var E=new s0({type:"path",canvas:e.get("canvas"),isArrowShape:!0,attrs:(0,ef.pi)((0,ef.pi)({},m),{stroke:p||h,lineWidth:f||u,fill:g})});E.translate(r,o),E.rotateAtPoint(r,o,v),e.set(s?"startArrowShape":"endArrowShape",E)}function sL(e,t,i,n,r){var o=sT(n-t,i-e);return{dx:sy(o)*r,dy:sS(o)*r}}function sN(e,t,i,n,r,o){"object"==typeof t.startArrow?sR(e,t,i,n,r,o,!0):t.startArrow?sA(e,t,i,n,r,o,!0):e.set("startArrowShape",null)}function sI(e,t,i,n,r,o){"object"==typeof t.endArrow?sR(e,t,i,n,r,o,!1):t.endArrow?sA(e,t,i,n,r,o,!1):e.set("startArrowShape",null)}var sw={fill:"fillStyle",stroke:"strokeStyle",opacity:"globalAlpha"};function sO(e,t){var i=t.attr();for(var n in i){var r=i[n],o=sw[n]?sw[n]:n;"matrix"===o&&r?e.transform(r[0],r[1],r[3],r[4],r[6],r[7]):"lineDash"===o&&e.setLineDash?(0,em.kJ)(r)&&e.setLineDash(r):("strokeStyle"===o||"fillStyle"===o?r=function(e,t,i){var n,r,o,s,a,l,h,u,d,c,g,p=t.getBBox();if(isNaN(p.x)||isNaN(p.y)||isNaN(p.width)||isNaN(p.height))return i;if((0,em.HD)(i)){if("("===i[1]||"("===i[2]){if("l"===i[0])return s=parseFloat((o=sc.exec(i))[1])%360*(Math.PI/180),a=o[2],l=t.getBBox(),s>=0&&s<.5*Math.PI?(n={x:l.minX,y:l.minY},r={x:l.maxX,y:l.maxY}):.5*Math.PI<=s&&sC?_:C,R=_>C?1:_/C,L=_>C?C/_:1;t.translate(v,E),t.rotate(T),t.scale(R,L),t.arc(0,0,A,S,y,1-b),t.scale(1/R,1/L),t.rotate(-T),t.translate(-v,-E)}break;case"Z":t.closePath()}if("Z"===c)a=l;else{var N=d.length;a=[d[N-2],d[N-1]]}}}}function sk(e,t){var i=e.get("canvas");i&&("remove"===t&&(e._cacheCanvasBBox=e.get("cacheCanvasBBox")),e.get("hasChanged")||(e.set("hasChanged",!0),!(e.cfg.parent&&e.cfg.parent.get("hasChanged"))&&(i.refreshElement(e,t,i),i.get("autoDraw")&&i.draw())))}var sP=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.onCanvasChange=function(e){sk(this,e)},t.prototype.getShapeBase=function(){return eu},t.prototype.getGroupBase=function(){return t},t.prototype._applyClip=function(e,t){t&&(e.save(),sO(e,t),t.createPath(e),e.restore(),e.clip(),t._afterDraw())},t.prototype.cacheCanvasBBox=function(){var e=this.cfg.children,t=[],i=[];(0,em.S6)(e,function(e){var n=e.cfg.cacheCanvasBBox;n&&e.cfg.isInView&&(t.push(n.minX,n.maxX),i.push(n.minY,n.maxY))});var n=null;if(t.length){var r=(0,em.VV)(t),o=(0,em.Fp)(t),s=(0,em.VV)(i),a=(0,em.Fp)(i);n={minX:r,minY:s,x:r,y:s,maxX:o,maxY:a,width:o-r,height:a-s};var l=this.cfg.canvas;if(l){var h=l.getViewRange();this.set("isInView",su(n,h))}}else this.set("isInView",!1);this.set("cacheCanvasBBox",n)},t.prototype.draw=function(e,t){var i=this.cfg.children,n=!t||this.cfg.refresh;i.length&&n&&(e.save(),sO(e,this),this._applyClip(e,this.getClip()),sx(e,i,t),e.restore(),this.cacheCanvasBBox()),this.cfg.refresh=null,this.set("hasChanged",!1)},t.prototype.skipDraw=function(){this.set("cacheCanvasBBox",null),this.set("hasChanged",!1)},t}(eL.AbstractGroup),sF=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultAttrs=function(){var t=e.prototype.getDefaultAttrs.call(this);return(0,ef.pi)((0,ef.pi)({},t),{lineWidth:1,lineAppendWidth:0,strokeOpacity:1,fillOpacity:1})},t.prototype.getShapeBase=function(){return eu},t.prototype.getGroupBase=function(){return sP},t.prototype.onCanvasChange=function(e){sk(this,e)},t.prototype.calculateBBox=function(){var e=this.get("type"),t=this.getHitLineWidth(),i=(0,eL.getBBoxMethod)(e)(this),n=t/2,r=i.x-n,o=i.y-n,s=i.x+i.width+n,a=i.y+i.height+n;return{x:r,minX:r,y:o,minY:o,width:i.width+t,height:i.height+t,maxX:s,maxY:a}},t.prototype.isFill=function(){return!!this.attrs.fill||this.isClipShape()},t.prototype.isStroke=function(){return!!this.attrs.stroke},t.prototype._applyClip=function(e,t){t&&(e.save(),sO(e,t),t.createPath(e),e.restore(),e.clip(),t._afterDraw())},t.prototype.draw=function(e,t){var i=this.cfg.clipShape;if(t){if(!1===this.cfg.refresh){this.set("hasChanged",!1);return}if(!su(t,this.getCanvasBBox())){this.set("hasChanged",!1),this.cfg.isInView&&this._afterDraw();return}}e.save(),sO(e,this),this._applyClip(e,i),this.drawPath(e),e.restore(),this._afterDraw()},t.prototype.getCanvasViewBox=function(){var e=this.cfg.canvas;return e?e.getViewRange():null},t.prototype.cacheCanvasBBox=function(){var e=this.getCanvasViewBox();if(e){var t=this.getCanvasBBox(),i=su(t,e);this.set("isInView",i),i?this.set("cacheCanvasBBox",t):this.set("cacheCanvasBBox",null)}},t.prototype._afterDraw=function(){this.cacheCanvasBBox(),this.set("hasChanged",!1),this.set("refresh",null)},t.prototype.skipDraw=function(){this.set("cacheCanvasBBox",null),this.set("isInView",null),this.set("hasChanged",!1)},t.prototype.drawPath=function(e){this.createPath(e),this.strokeAndFill(e),this.afterDrawPath(e)},t.prototype.fill=function(e){e.fill()},t.prototype.stroke=function(e){e.stroke()},t.prototype.strokeAndFill=function(e){var t=this.attrs,i=t.lineWidth,n=t.opacity,r=t.strokeOpacity,o=t.fillOpacity;this.isFill()&&((0,em.UM)(o)||1===o?this.fill(e):(e.globalAlpha=o,this.fill(e),e.globalAlpha=n)),this.isStroke()&&i>0&&((0,em.UM)(r)||1===r||(e.globalAlpha=r),this.stroke(e)),this.afterDrawPath(e)},t.prototype.createPath=function(e){},t.prototype.afterDrawPath=function(e){},t.prototype.isInShape=function(e,t){var i=this.isStroke(),n=this.isFill(),r=this.getHitLineWidth();return this.isInStrokeOrPath(e,t,i,n,r)},t.prototype.isInStrokeOrPath=function(e,t,i,n,r){return!1},t.prototype.getHitLineWidth=function(){if(!this.isStroke())return 0;var e=this.attrs;return e.lineWidth+e.lineAppendWidth},t}(eL.AbstractShape),sB=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultAttrs=function(){var t=e.prototype.getDefaultAttrs.call(this);return(0,ef.pi)((0,ef.pi)({},t),{x:0,y:0,r:0})},t.prototype.isInStrokeOrPath=function(e,t,i,n,r){var o=this.attr(),s=o.x,a=o.y,l=o.r,h=r/2,u=sl(s,a,e,t);return n&&i?u<=l+h:n?u<=l:!!i&&u>=l-h&&u<=l+h},t.prototype.createPath=function(e){var t=this.attr(),i=t.x,n=t.y,r=t.r;e.beginPath(),e.arc(i,n,r,0,2*Math.PI,!1),e.closePath()},t}(sF),sU=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultAttrs=function(){var t=e.prototype.getDefaultAttrs.call(this);return(0,ef.pi)((0,ef.pi)({},t),{x:0,y:0,rx:0,ry:0})},t.prototype.isInStrokeOrPath=function(e,t,i,n,r){var o,s,a,l,h,u,d=this.attr(),c=r/2,g=d.x,p=d.y,f=d.rx,m=d.ry,v=(e-g)*(e-g),E=(t-p)*(t-p);return n&&i?1>=v/((o=f+c)*o)+E/((s=m+c)*s):n?1>=v/(f*f)+E/(m*m):!!i&&v/((a=f-c)*a)+E/((l=m-c)*l)>=1&&1>=v/((h=f+c)*h)+E/((u=m+c)*u)},t.prototype.createPath=function(e){var t=this.attr(),i=t.x,n=t.y,r=t.rx,o=t.ry;if(e.beginPath(),e.ellipse)e.ellipse(i,n,r,o,0,0,2*Math.PI,!1);else{var s=r>o?r:o,a=r>o?1:r/o,l=r>o?o/r:1;e.save(),e.translate(i,n),e.scale(a,l),e.arc(0,0,s,0,2*Math.PI),e.restore(),e.closePath()}},t}(sF);function sH(e){return e instanceof HTMLElement&&(0,em.HD)(e.nodeName)&&"CANVAS"===e.nodeName.toUpperCase()}var sV=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultAttrs=function(){var t=e.prototype.getDefaultAttrs.call(this);return(0,ef.pi)((0,ef.pi)({},t),{x:0,y:0,width:0,height:0})},t.prototype.initAttrs=function(e){this._setImage(e.img)},t.prototype.isStroke=function(){return!1},t.prototype.isOnlyHitBox=function(){return!0},t.prototype._afterLoading=function(){if(!0===this.get("toDraw")){var e=this.get("canvas");e?e.draw():this.createPath(this.get("context"))}},t.prototype._setImage=function(e){var t=this,i=this.attrs;if((0,em.HD)(e)){var n=new Image;n.onload=function(){if(t.destroyed)return!1;t.attr("img",n),t.set("loading",!1),t._afterLoading();var e=t.get("callback");e&&e.call(t)},n.crossOrigin="Anonymous",n.src=e,this.set("loading",!0)}else e instanceof Image?(i.width||(i.width=e.width),i.height||(i.height=e.height)):sH(e)&&(i.width||(i.width=Number(e.getAttribute("width"))),i.height||(i.height,e.getAttribute("height")))},t.prototype.onAttrChange=function(t,i,n){e.prototype.onAttrChange.call(this,t,i,n),"img"===t&&this._setImage(i)},t.prototype.createPath=function(e){if(this.get("loading")){this.set("toDraw",!0),this.set("context",e);return}var t=this.attr(),i=t.x,n=t.y,r=t.width,o=t.height,s=t.sx,a=t.sy,l=t.swidth,h=t.sheight,u=t.img;(u instanceof Image||sH(u))&&((0,em.UM)(s)||(0,em.UM)(a)||(0,em.UM)(l)||(0,em.UM)(h)?e.drawImage(u,i,n,r,o):e.drawImage(u,s,a,l,h,i,n,r,o))},t}(sF),sW=i(32793);function sG(e,t,i,n,r,o,s){var a=Math.min(e,i),l=Math.max(e,i),h=Math.min(t,n),u=Math.max(t,n),d=r/2;return o>=a-d&&o<=l+d&&s>=h-d&&s<=u+d&&sW.x1.pointToLine(e,t,i,n,o,s)<=r/2}var sz=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultAttrs=function(){var t=e.prototype.getDefaultAttrs.call(this);return(0,ef.pi)((0,ef.pi)({},t),{x1:0,y1:0,x2:0,y2:0,startArrow:!1,endArrow:!1})},t.prototype.initAttrs=function(e){this.setArrow()},t.prototype.onAttrChange=function(t,i,n){e.prototype.onAttrChange.call(this,t,i,n),this.setArrow()},t.prototype.setArrow=function(){var e=this.attr(),t=e.x1,i=e.y1,n=e.x2,r=e.y2,o=e.startArrow,s=e.endArrow;o&&sN(this,e,n,r,t,i),s&&sI(this,e,t,i,n,r)},t.prototype.isInStrokeOrPath=function(e,t,i,n,r){if(!i||!r)return!1;var o=this.attr();return sG(o.x1,o.y1,o.x2,o.y2,r,e,t)},t.prototype.createPath=function(e){var t=this.attr(),i=t.x1,n=t.y1,r=t.x2,o=t.y2,s=t.startArrow,a=t.endArrow,l={dx:0,dy:0},h={dx:0,dy:0};s&&s.d&&(l=sL(i,n,r,o,t.startArrow.d)),a&&a.d&&(h=sL(i,n,r,o,t.endArrow.d)),e.beginPath(),e.moveTo(i+l.dx,n+l.dy),e.lineTo(r-h.dx,o-h.dy)},t.prototype.afterDrawPath=function(e){var t=this.get("startArrowShape"),i=this.get("endArrowShape");t&&t.draw(e),i&&i.draw(e)},t.prototype.getTotalLength=function(){var e=this.attr(),t=e.x1,i=e.y1,n=e.x2,r=e.y2;return sW.x1.length(t,i,n,r)},t.prototype.getPoint=function(e){var t=this.attr(),i=t.x1,n=t.y1,r=t.x2,o=t.y2;return sW.x1.pointAt(i,n,r,o,e)},t}(sF),sY={circle:function(e,t,i){return[["M",e-i,t],["A",i,i,0,1,0,e+i,t],["A",i,i,0,1,0,e-i,t]]},square:function(e,t,i){return[["M",e-i,t-i],["L",e+i,t-i],["L",e+i,t+i],["L",e-i,t+i],["Z"]]},diamond:function(e,t,i){return[["M",e-i,t],["L",e,t-i],["L",e+i,t],["L",e,t+i],["Z"]]},triangle:function(e,t,i){var n=i*Math.sin(1/3*Math.PI);return[["M",e-i,t+n],["L",e,t-n],["L",e+i,t+n],["Z"]]},"triangle-down":function(e,t,i){var n=i*Math.sin(1/3*Math.PI);return[["M",e-i,t-n],["L",e+i,t-n],["L",e,t+n],["Z"]]}},sK=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.initAttrs=function(e){this._resetParamsCache()},t.prototype._resetParamsCache=function(){this.set("paramsCache",{})},t.prototype.onAttrChange=function(t,i,n){e.prototype.onAttrChange.call(this,t,i,n),-1!==["symbol","x","y","r","radius"].indexOf(t)&&this._resetParamsCache()},t.prototype.isOnlyHitBox=function(){return!0},t.prototype._getR=function(e){return(0,em.UM)(e.r)?e.radius:e.r},t.prototype._getPath=function(){var e,i,n=this.attr(),r=n.x,o=n.y,s=n.symbol||"circle",a=this._getR(n);if((0,em.mf)(s))i=(e=s)(r,o,a),i=(0,nV.wb)(i);else{if(!(e=t.Symbols[s]))return console.warn(s+" marker is not supported."),null;i=e(r,o,a)}return i},t.prototype.createPath=function(e){sM(this,e,{path:this._getPath()},this.get("paramsCache"))},t.Symbols=sY,t}(sF);function s$(e,t,i){var n=(0,eL.getOffScreenContext)();return e.createPath(n),n.isPointInPath(t,i)}function sX(e){return 1e-6>Math.abs(e)?0:e<0?-1:1}function sj(e,t,i){var n=!1,r=e.length;if(r<=2)return!1;for(var o=0;o0!=sX(l[1]-i)>0&&0>sX(t-(i-a[1])*(a[0]-l[0])/(a[1]-l[1])-a[0])&&(n=!n)}return n}function sq(e,t,i,n,r,o,s,a){var l=(Math.atan2(a-t,s-e)+2*Math.PI)%(2*Math.PI);if(lr)return!1;var h={x:e+i*Math.cos(l),y:t+i*Math.sin(l)};return sl(h.x,h.y,s,a)<=o/2}var sZ=it.vs,sJ=(0,ef.pi)({hasArc:function(e){for(var t=!1,i=e.length,n=0;n0&&n.push(r),{polygons:i,polylines:n}},isPointInStroke:function(e,t,i,n,r){for(var o=!1,s=t/2,a=0;av?m:v;t8(S,S,sZ(null,[["t",-p,-f],["r",-C],["s",1/(m>v?1:m/v),1/(m>v?v/m:1)]])),o=sq(0,0,y,E,_,t,S[0],S[1])}if(o)break}}return o}},eL.PathUtil);function sQ(e,t,i){for(var n=!1,r=0;r=n[0]&&e<=n[1]&&(t=(e-n[0])/(n[1]-n[0]),i=r)});var o=r[i];if((0,em.UM)(o)||(0,em.UM)(i))return null;var s=o.length,a=r[i+1];return sW.Ll.pointAt(o[s-2],o[s-1],a[1],a[2],a[3],a[4],a[5],a[6],t)},t.prototype._calculateCurve=function(){var e=this.attr().path;this.set("curve",sJ.pathToCurve(e))},t.prototype._setTcache=function(){var e,t,i,n=0,r=0,o=[],s=this.get("curve");if(s){if((0,em.S6)(s,function(e,r){t=s[r+1],i=e.length,t&&(n+=sW.Ll.length(e[i-2],e[i-1],t[1],t[2],t[3],t[4],t[5],t[6])||0)}),this.set("totalLength",n),0===n){this.set("tCache",[]);return}(0,em.S6)(s,function(a,l){t=s[l+1],i=a.length,t&&((e=[])[0]=r/n,r+=sW.Ll.length(a[i-2],a[i-1],t[1],t[2],t[3],t[4],t[5],t[6])||0,e[1]=r/n,o.push(e))}),this.set("tCache",o)}},t.prototype.getStartTangent=function(){var e,t=this.getSegments();if(t.length>1){var i=t[0].currentPoint,n=t[1].currentPoint,r=t[1].startTangent;e=[],r?(e.push([i[0]-r[0],i[1]-r[1]]),e.push([i[0],i[1]])):(e.push([n[0],n[1]]),e.push([i[0],i[1]]))}return e},t.prototype.getEndTangent=function(){var e,t=this.getSegments(),i=t.length;if(i>1){var n=t[i-2].currentPoint,r=t[i-1].currentPoint,o=t[i-1].endTangent;e=[],o?(e.push([r[0]-o[0],r[1]-o[1]]),e.push([r[0],r[1]])):(e.push([n[0],n[1]]),e.push([r[0],r[1]]))}return e},t}(sF);function s1(e,t,i,n,r){var o=e.length;if(o<2)return!1;for(var s=0;s=n[0]&&e<=n[1]&&(t=(e-n[0])/(n[1]-n[0]),i=r)}),sW.x1.pointAt(n[i][0],n[i][1],n[i+1][0],n[i+1][1],t)},t.prototype._setTcache=function(){var e,t=this.attr().points;if(t&&0!==t.length){var i=this.getTotalLength();if(!(i<=0)){var n=0,r=[];(0,em.S6)(t,function(o,s){t[s+1]&&((e=[])[0]=n/i,n+=sW.x1.length(o[0],o[1],t[s+1][0],t[s+1][1]),e[1]=n/i,r.push(e))}),this.set("tCache",r)}}},t.prototype.getStartTangent=function(){var e=this.attr().points,t=[];return t.push([e[1][0],e[1][1]]),t.push([e[0][0],e[0][1]]),t},t.prototype.getEndTangent=function(){var e=this.attr().points,t=e.length-1,i=[];return i.push([e[t-1][0],e[t-1][1]]),i.push([e[t][0],e[t][1]]),i},t}(sF),s5=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultAttrs=function(){var t=e.prototype.getDefaultAttrs.call(this);return(0,ef.pi)((0,ef.pi)({},t),{x:0,y:0,width:0,height:0,radius:0})},t.prototype.isInStrokeOrPath=function(e,t,i,n,r){var o,s=this.attr(),a=s.x,l=s.y,h=s.width,u=s.height,d=s.radius;if(d){var c=!1;return i&&(c=sG(a+d,l,a+h-d,l,r,e,t)||sG(a+h,l+d,a+h,l+u-d,r,e,t)||sG(a+h-d,l+u,a+d,l+u,r,e,t)||sG(a,l+u-d,a,l+d,r,e,t)||sq(a+h-d,l+d,d,1.5*Math.PI,2*Math.PI,r,e,t)||sq(a+h-d,l+u-d,d,0,.5*Math.PI,r,e,t)||sq(a+d,l+u-d,d,.5*Math.PI,Math.PI,r,e,t)||sq(a+d,l+d,d,Math.PI,1.5*Math.PI,r,e,t)),!c&&n&&(c=s$(this,e,t)),c}var g=r/2;return n&&i?sh(a-g,l-g,h+g,u+g,e,t):n?sh(a,l,h,u,e,t):i?sh(a-(o=r/2),l-o,h,r,e,t)||sh(a+h-o,l-o,r,u,e,t)||sh(a+o,l+u-o,h,r,e,t)||sh(a-o,l+o,r,u,e,t):void 0},t.prototype.createPath=function(e){var t=this.attr(),i=t.x,n=t.y,r=t.width,o=t.height,s=t.radius;if(e.beginPath(),0===s)e.rect(i,n,r,o);else{var a,l,h,u,d=(a=0,l=0,h=0,u=0,(0,em.kJ)(s)?1===s.length?a=l=h=u=s[0]:2===s.length?(a=h=s[0],l=u=s[1]):3===s.length?(a=s[0],l=u=s[1],h=s[2]):(a=s[0],l=s[1],h=s[2],u=s[3]):a=l=h=u=s,[a,l,h,u]),c=d[0],g=d[1],p=d[2],f=d[3];e.moveTo(i+c,n),e.lineTo(i+r-g,n),0!==g&&e.arc(i+r-g,n+g,g,-Math.PI/2,0),e.lineTo(i+r,n+o-p),0!==p&&e.arc(i+r-p,n+o-p,p,0,Math.PI/2),e.lineTo(i+f,n+o),0!==f&&e.arc(i+f,n+o-f,f,Math.PI/2,Math.PI),e.lineTo(i,n+c),0!==c&&e.arc(i+c,n+c,c,Math.PI,1.5*Math.PI),e.closePath()}},t}(sF),s6=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultAttrs=function(){var t=e.prototype.getDefaultAttrs.call(this);return(0,ef.pi)((0,ef.pi)({},t),{x:0,y:0,text:null,fontSize:12,fontFamily:"sans-serif",fontStyle:"normal",fontWeight:"normal",fontVariant:"normal",textAlign:"start",textBaseline:"bottom"})},t.prototype.isOnlyHitBox=function(){return!0},t.prototype.initAttrs=function(e){this._assembleFont(),e.text&&this._setText(e.text)},t.prototype._assembleFont=function(){var e=this.attrs;e.font=(0,eL.assembleFont)(e)},t.prototype._setText=function(e){var t=null;(0,em.HD)(e)&&-1!==e.indexOf("\n")&&(t=e.split("\n")),this.set("textArr",t)},t.prototype.onAttrChange=function(t,i,n){e.prototype.onAttrChange.call(this,t,i,n),t.startsWith("font")&&this._assembleFont(),"text"===t&&this._setText(i)},t.prototype._getSpaceingY=function(){var e=this.attrs,t=e.lineHeight,i=1*e.fontSize;return t?t-i:.14*i},t.prototype._drawTextArr=function(e,t,i){var n,r=this.attrs,o=r.textBaseline,s=r.x,a=r.y,l=1*r.fontSize,h=this._getSpaceingY(),u=(0,eL.getTextHeight)(r.text,r.fontSize,r.lineHeight);(0,em.S6)(t,function(t,r){n=a+r*(h+l)-u+l,"middle"===o&&(n+=u-l-(u-l)/2),"top"===o&&(n+=u-l),(0,em.UM)(t)||(i?e.fillText(t,s,n):e.strokeText(t,s,n))})},t.prototype._drawText=function(e,t){var i=this.attr(),n=i.x,r=i.y,o=this.get("textArr");if(o)this._drawTextArr(e,o,t);else{var s=i.text;(0,em.UM)(s)||(t?e.fillText(s,n,r):e.strokeText(s,n,r))}},t.prototype.strokeAndFill=function(e){var t=this.attrs,i=t.lineWidth,n=t.opacity,r=t.strokeOpacity,o=t.fillOpacity;this.isStroke()&&i>0&&((0,em.UM)(r)||1===r||(e.globalAlpha=n),this.stroke(e)),this.isFill()&&((0,em.UM)(o)||1===o?this.fill(e):(e.globalAlpha=o,this.fill(e),e.globalAlpha=n)),this.afterDrawPath(e)},t.prototype.fill=function(e){this._drawText(e,!0)},t.prototype.stroke=function(e){this._drawText(e,!1)},t}(sF);function s3(e,t,i){var n=e.getTotalMatrix();if(n){var r=function(e,t){if(t){var i=(0,eL.invert)(t);return(0,eL.multiplyVec2)(i,e)}return e}([t,i,1],n);return[r[0],r[1]]}return[t,i]}function s9(e,t,i){if(e.isCanvas&&e.isCanvas())return!0;if(!(0,eL.isAllowCapture)(e)||!1===e.cfg.isInView)return!1;if(e.cfg.clipShape){var n=s3(e,t,i),r=n[0],o=n[1];if(e.isClipped(r,o))return!1}var s=e.cfg.cacheCanvasBBox||e.getCanvasBBox();return t>=s.minX&&t<=s.maxX&&i>=s.minY&&i<=s.maxY}var s7=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getDefaultCfg=function(){var t=e.prototype.getDefaultCfg.call(this);return t.renderer="canvas",t.autoDraw=!0,t.localRefresh=!0,t.refreshElements=[],t.clipView=!0,t.quickHit=!1,t},t.prototype.onCanvasChange=function(e){("attr"===e||"sort"===e||"changeSize"===e)&&(this.set("refreshElements",[this]),this.draw())},t.prototype.getShapeBase=function(){return eu},t.prototype.getGroupBase=function(){return sP},t.prototype.getPixelRatio=function(){var e=this.get("pixelRatio")||(window?window.devicePixelRatio:1);return e>=1?Math.ceil(e):1},t.prototype.getViewRange=function(){return{minX:0,minY:0,maxX:this.cfg.width,maxY:this.cfg.height}},t.prototype.createDom=function(){var e=document.createElement("canvas"),t=e.getContext("2d");return this.set("context",t),e},t.prototype.setDOMSize=function(t,i){e.prototype.setDOMSize.call(this,t,i);var n=this.get("context"),r=this.get("el"),o=this.getPixelRatio();r.width=o*t,r.height=o*i,o>1&&n.scale(o,o)},t.prototype.clear=function(){e.prototype.clear.call(this),this._clearFrame();var t=this.get("context"),i=this.get("el");t.clearRect(0,0,i.width,i.height)},t.prototype.getShape=function(t,i){return this.get("quickHit")?function e(t,i,n){if(!s9(t,i,n))return null;for(var r=null,o=t.getChildren(),s=o.length,a=s-1;a>=0;a--){var l=o[a];if(l.isGroup())r=e(l,i,n);else if(s9(l,i,n)){var h=s3(l,i,n),u=h[0],d=h[1];l.isInShape(u,d)&&(r=l)}if(r)break}return r}(this,t,i):e.prototype.getShape.call(this,t,i,null)},t.prototype._getRefreshRegion=function(){var e,t,i=this.get("refreshElements"),n=this.getViewRange();return i.length&&i[0]===this?t=n:(t=function(e){if(!e.length)return null;var t=[],i=[],n=[],r=[];return(0,em.S6)(e,function(e){var o=function(e){var t;if(e.destroyed)t=e._cacheCanvasBBox;else{var i=e.get("cacheCanvasBBox"),n=i&&!!(i.width&&i.height),r=e.getCanvasBBox(),o=r&&!!(r.width&&r.height);n&&o?t=i&&r?{minX:Math.min(i.minX,r.minX),minY:Math.min(i.minY,r.minY),maxX:Math.max(i.maxX,r.maxX),maxY:Math.max(i.maxY,r.maxY)}:i||r:n?t=i:o&&(t=r)}return t}(e);o&&(t.push(o.minX),i.push(o.minY),n.push(o.maxX),r.push(o.maxY))}),{minX:(0,em.VV)(t),minY:(0,em.VV)(i),maxX:(0,em.Fp)(n),maxY:(0,em.Fp)(r)}}(i))&&(t.minX=Math.floor(t.minX),t.minY=Math.floor(t.minY),t.maxX=Math.ceil(t.maxX),t.maxY=Math.ceil(t.maxY),t.maxY+=1,this.get("clipView"))&&(t=(e=t)&&n&&su(e,n)?{minX:Math.max(e.minX,n.minX),minY:Math.max(e.minY,n.minY),maxX:Math.min(e.maxX,n.maxX),maxY:Math.min(e.maxY,n.maxY)}:null),t},t.prototype.refreshElement=function(e){this.get("refreshElements").push(e)},t.prototype._clearFrame=function(){var e=this.get("drawFrame");e&&((0,em.VS)(e),this.set("drawFrame",null),this.set("refreshElements",[]))},t.prototype.draw=function(){var e=this.get("drawFrame");this.get("autoDraw")&&e||this._startDraw()},t.prototype._drawAll=function(){var e=this.get("context"),t=this.get("el"),i=this.getChildren();e.clearRect(0,0,t.width,t.height),sO(e,this),sx(e,i),this.set("refreshElements",[])},t.prototype._drawRegion=function(){var e,t,i=this.get("context"),n=this.get("refreshElements"),r=this.getChildren(),o=this._getRefreshRegion();o?(i.clearRect(o.minX,o.minY,o.maxX-o.minX,o.maxY-o.minY),i.save(),i.beginPath(),i.rect(o.minX,o.minY,o.maxX-o.minX,o.maxY-o.minY),i.clip(),sO(i,this),e=this,t=e.get("refreshElements"),(0,em.S6)(t,function(t){if(t!==e)for(var i=t.cfg.parent;i&&i!==e&&!i.cfg.refresh;)i.cfg.refresh=!0,i=i.cfg.parent}),t[0]===e?sD(r,o):function e(t,i){for(var n=0;nt)i.insertBefore(e,r);else if(o0&&(t?"stroke"in i?this._setColor(e,"stroke",o):"strokeStyle"in i&&this._setColor(e,"stroke",s):this._setColor(e,"stroke",o||s),l&&u.setAttribute(at.strokeOpacity,l),h&&u.setAttribute(at.lineWidth,h))},t.prototype._setColor=function(e,t,i){var n=this.get("el");if(!i){n.setAttribute(at[t],"none");return}if(i=i.trim(),/^[r,R,L,l]{1}[\s]*\(/.test(i)){var r=e.find("gradient",i);r||(r=e.addGradient(i)),n.setAttribute(at[t],"url(#"+r+")")}else if(/^[p,P]{1}[\s]*\(/.test(i)){var r=e.find("pattern",i);r||(r=e.addPattern(i)),n.setAttribute(at[t],"url(#"+r+")")}else n.setAttribute(at[t],i)},t.prototype.shadow=function(e,t){var i=this.attr(),n=t||i,r=n.shadowOffsetX,o=n.shadowOffsetY,s=n.shadowBlur,a=n.shadowColor;(r||o||s||a)&&function(e,t){var i=e.cfg.el,n=e.attr(),r={dx:n.shadowOffsetX,dy:n.shadowOffsetY,blur:n.shadowBlur,color:n.shadowColor};if(r.dx||r.dy||r.blur||r.color){var o=t.find("filter",r);o||(o=t.addShadow(r)),i.setAttribute("filter","url(#"+o+")")}else i.removeAttribute("filter")}(this,e)},t.prototype.transform=function(e){var t=this.attr();(e||t).matrix&&ao(this)},t.prototype.isInShape=function(e,t){return this.isPointInPath(e,t)},t.prototype.isPointInPath=function(e,t){var i=this.get("el"),n=this.get("canvas").get("el").getBoundingClientRect(),r=e+n.left,o=t+n.top,s=document.elementFromPoint(r,o);return!!(s&&s.isEqualNode(i))},t.prototype.getHitLineWidth=function(){var e=this.attrs,t=e.lineWidth,i=e.lineAppendWidth;return this.isStroke()?t+i:0},t}(eL.AbstractShape),ad=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="circle",t.canFill=!0,t.canStroke=!0,t}return(0,ef.ZT)(t,e),t.prototype.getDefaultAttrs=function(){var t=e.prototype.getDefaultAttrs.call(this);return(0,ef.pi)((0,ef.pi)({},t),{x:0,y:0,r:0})},t.prototype.createPath=function(e,t){var i=this.attr(),n=this.get("el");(0,em.S6)(t||i,function(e,t){"x"===t||"y"===t?n.setAttribute("c"+t,e):at[t]&&n.setAttribute(at[t],e)})},t}(au),ac=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="dom",t.canFill=!1,t.canStroke=!1,t}return(0,ef.ZT)(t,e),t.prototype.createPath=function(e,t){var i=this.attr(),n=this.get("el");if((0,em.S6)(t||i,function(e,t){at[t]&&n.setAttribute(at[t],e)}),"function"==typeof i.html){var r=i.html.call(this,i);if(r instanceof Element||r instanceof HTMLDocument){for(var o=n.childNodes,s=o.length-1;s>=0;s--)n.removeChild(o[s]);n.appendChild(r)}else n.innerHTML=r}else n.innerHTML=i.html},t}(au),ag=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="ellipse",t.canFill=!0,t.canStroke=!0,t}return(0,ef.ZT)(t,e),t.prototype.getDefaultAttrs=function(){var t=e.prototype.getDefaultAttrs.call(this);return(0,ef.pi)((0,ef.pi)({},t),{x:0,y:0,rx:0,ry:0})},t.prototype.createPath=function(e,t){var i=this.attr(),n=this.get("el");(0,em.S6)(t||i,function(e,t){"x"===t||"y"===t?n.setAttribute("c"+t,e):at[t]&&n.setAttribute(at[t],e)})},t}(au),ap=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="image",t.canFill=!1,t.canStroke=!1,t}return(0,ef.ZT)(t,e),t.prototype.getDefaultAttrs=function(){var t=e.prototype.getDefaultAttrs.call(this);return(0,ef.pi)((0,ef.pi)({},t),{x:0,y:0,width:0,height:0})},t.prototype.createPath=function(e,t){var i=this,n=this.attr(),r=this.get("el");(0,em.S6)(t||n,function(e,t){"img"===t?i._setImage(n.img):at[t]&&r.setAttribute(at[t],e)})},t.prototype.setAttr=function(e,t){this.attrs[e]=t,"img"===e&&this._setImage(t)},t.prototype._setImage=function(e){var t=this.attr(),i=this.get("el");if((0,em.HD)(e))i.setAttribute("href",e);else if(e instanceof window.Image)t.width||(i.setAttribute("width",e.width),this.attr("width",e.width)),t.height||(i.setAttribute("height",e.height),this.attr("height",e.height)),i.setAttribute("href",e.src);else if(e instanceof HTMLElement&&(0,em.HD)(e.nodeName)&&"CANVAS"===e.nodeName.toUpperCase())i.setAttribute("href",e.toDataURL());else if(e instanceof ImageData){var n=document.createElement("canvas");n.setAttribute("width",""+e.width),n.setAttribute("height",""+e.height),n.getContext("2d").putImageData(e,0,0),t.width||(i.setAttribute("width",""+e.width),this.attr("width",e.width)),t.height||(i.setAttribute("height",""+e.height),this.attr("height",e.height)),i.setAttribute("href",n.toDataURL())}},t}(au),af=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="line",t.canFill=!1,t.canStroke=!0,t}return(0,ef.ZT)(t,e),t.prototype.getDefaultAttrs=function(){var t=e.prototype.getDefaultAttrs.call(this);return(0,ef.pi)((0,ef.pi)({},t),{x1:0,y1:0,x2:0,y2:0,startArrow:!1,endArrow:!1})},t.prototype.createPath=function(e,t){var i=this.attr(),n=this.get("el");(0,em.S6)(t||i,function(t,r){if("startArrow"===r||"endArrow"===r){if(t){var o=(0,em.Kn)(t)?e.addArrow(i,at[r]):e.getDefaultArrow(i,at[r]);n.setAttribute(at[r],"url(#"+o+")")}else n.removeAttribute(at[r])}else at[r]&&n.setAttribute(at[r],t)})},t.prototype.getTotalLength=function(){var e=this.attr(),t=e.x1,i=e.y1,n=e.x2,r=e.y2;return sW.x1.length(t,i,n,r)},t.prototype.getPoint=function(e){var t=this.attr(),i=t.x1,n=t.y1,r=t.x2,o=t.y2;return sW.x1.pointAt(i,n,r,o,e)},t}(au),am={circle:function(e,t,i){return[["M",e,t],["m",-i,0],["a",i,i,0,1,0,2*i,0],["a",i,i,0,1,0,-(2*i),0]]},square:function(e,t,i){return[["M",e-i,t-i],["L",e+i,t-i],["L",e+i,t+i],["L",e-i,t+i],["Z"]]},diamond:function(e,t,i){return[["M",e-i,t],["L",e,t-i],["L",e+i,t],["L",e,t+i],["Z"]]},triangle:function(e,t,i){var n=i*Math.sin(1/3*Math.PI);return[["M",e-i,t+n],["L",e,t-n],["L",e+i,t+n],["z"]]},triangleDown:function(e,t,i){var n=i*Math.sin(1/3*Math.PI);return[["M",e-i,t-n],["L",e+i,t-n],["L",e,t+n],["Z"]]}},av={get:function(e){return am[e]},register:function(e,t){am[e]=t},remove:function(e){delete am[e]},getAll:function(){return am}},aE=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="marker",t.canFill=!0,t.canStroke=!0,t}return(0,ef.ZT)(t,e),t.prototype.createPath=function(e){this.get("el").setAttribute("d",this._assembleMarker())},t.prototype._assembleMarker=function(){var e=this._getPath();return(0,em.kJ)(e)?e.map(function(e){return e.join(" ")}).join(""):e},t.prototype._getPath=function(){var e,t=this.attr(),i=t.x,n=t.y,r=t.r||t.radius,o=t.symbol||"circle";return(e=(0,em.mf)(o)?o:av.get(o))?e(i,n,r):(console.warn(e+" symbol is not exist."),null)},t.symbolsFactory=av,t}(au),a_=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="path",t.canFill=!0,t.canStroke=!0,t}return(0,ef.ZT)(t,e),t.prototype.getDefaultAttrs=function(){var t=e.prototype.getDefaultAttrs.call(this);return(0,ef.pi)((0,ef.pi)({},t),{startArrow:!1,endArrow:!1})},t.prototype.createPath=function(e,t){var i=this,n=this.attr(),r=this.get("el");(0,em.S6)(t||n,function(t,o){if("path"===o&&(0,em.kJ)(t))r.setAttribute("d",i._formatPath(t));else if("startArrow"===o||"endArrow"===o){if(t){var s=(0,em.Kn)(t)?e.addArrow(n,at[o]):e.getDefaultArrow(n,at[o]);r.setAttribute(at[o],"url(#"+s+")")}else r.removeAttribute(at[o])}else at[o]&&r.setAttribute(at[o],t)})},t.prototype._formatPath=function(e){var t=e.map(function(e){return e.join(" ")}).join("");return~t.indexOf("NaN")?"":t},t.prototype.getTotalLength=function(){var e=this.get("el");return e?e.getTotalLength():null},t.prototype.getPoint=function(e){var t=this.get("el"),i=this.getTotalLength();if(0===i)return null;var n=t?t.getPointAtLength(e*i):null;return n?{x:n.x,y:n.y}:null},t}(au),aC=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="polygon",t.canFill=!0,t.canStroke=!0,t}return(0,ef.ZT)(t,e),t.prototype.createPath=function(e,t){var i=this.attr(),n=this.get("el");(0,em.S6)(t||i,function(e,t){"points"===t&&(0,em.kJ)(e)&&e.length>=2?n.setAttribute("points",e.map(function(e){return e[0]+","+e[1]}).join(" ")):at[t]&&n.setAttribute(at[t],e)})},t}(au),aS=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="polyline",t.canFill=!0,t.canStroke=!0,t}return(0,ef.ZT)(t,e),t.prototype.getDefaultAttrs=function(){var t=e.prototype.getDefaultAttrs.call(this);return(0,ef.pi)((0,ef.pi)({},t),{startArrow:!1,endArrow:!1})},t.prototype.onAttrChange=function(t,i,n){e.prototype.onAttrChange.call(this,t,i,n),-1!==["points"].indexOf(t)&&this._resetCache()},t.prototype._resetCache=function(){this.set("totalLength",null),this.set("tCache",null)},t.prototype.createPath=function(e,t){var i=this.attr(),n=this.get("el");(0,em.S6)(t||i,function(e,t){"points"===t&&(0,em.kJ)(e)&&e.length>=2?n.setAttribute("points",e.map(function(e){return e[0]+","+e[1]}).join(" ")):at[t]&&n.setAttribute(at[t],e)})},t.prototype.getTotalLength=function(){var e=this.attr().points,t=this.get("totalLength");return(0,em.UM)(t)?(this.set("totalLength",sW.aH.length(e)),this.get("totalLength")):t},t.prototype.getPoint=function(e){var t,i,n=this.attr().points,r=this.get("tCache");return r||(this._setTcache(),r=this.get("tCache")),(0,em.S6)(r,function(n,r){e>=n[0]&&e<=n[1]&&(t=(e-n[0])/(n[1]-n[0]),i=r)}),sW.x1.pointAt(n[i][0],n[i][1],n[i+1][0],n[i+1][1],t)},t.prototype._setTcache=function(){var e,t=this.attr().points;if(t&&0!==t.length){var i=this.getTotalLength();if(!(i<=0)){var n=0,r=[];(0,em.S6)(t,function(o,s){t[s+1]&&((e=[])[0]=n/i,n+=sW.x1.length(o[0],o[1],t[s+1][0],t[s+1][1]),e[1]=n/i,r.push(e))}),this.set("tCache",r)}}},t.prototype.getStartTangent=function(){var e=this.attr().points,t=[];return t.push([e[1][0],e[1][1]]),t.push([e[0][0],e[0][1]]),t},t.prototype.getEndTangent=function(){var e=this.attr().points,t=e.length-1,i=[];return i.push([e[t-1][0],e[t-1][1]]),i.push([e[t][0],e[t][1]]),i},t}(au),ay=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="rect",t.canFill=!0,t.canStroke=!0,t}return(0,ef.ZT)(t,e),t.prototype.getDefaultAttrs=function(){var t=e.prototype.getDefaultAttrs.call(this);return(0,ef.pi)((0,ef.pi)({},t),{x:0,y:0,width:0,height:0,radius:0})},t.prototype.createPath=function(e,t){var i=this,n=this.attr(),r=this.get("el"),o=!1,s=["x","y","width","height","radius"];(0,em.S6)(t||n,function(e,t){-1===s.indexOf(t)||o?-1===s.indexOf(t)&&at[t]&&r.setAttribute(at[t],e):(r.setAttribute("d",i._assembleRect(n)),o=!0)})},t.prototype._assembleRect=function(e){var t,i,n,r,o=e.x,s=e.y,a=e.width,l=e.height,h=e.radius;if(!h)return"M "+o+","+s+" l "+a+",0 l 0,"+l+" l"+-a+" 0 z";var u=(t=0,i=0,n=0,r=0,(0,em.kJ)(h)?1===h.length?t=i=n=r=h[0]:2===h.length?(t=n=h[0],i=r=h[1]):3===h.length?(t=h[0],i=r=h[1],n=h[2]):(t=h[0],i=h[1],n=h[2],r=h[3]):t=i=n=r=h,{r1:t,r2:i,r3:n,r4:r});return(0,em.kJ)(h)?1===h.length?u.r1=u.r2=u.r3=u.r4=h[0]:2===h.length?(u.r1=u.r3=h[0],u.r2=u.r4=h[1]):3===h.length?(u.r1=h[0],u.r2=u.r4=h[1],u.r3=h[2]):(u.r1=h[0],u.r2=h[1],u.r3=h[2],u.r4=h[3]):u.r1=u.r2=u.r3=u.r4=h,[["M "+(o+u.r1)+","+s],["l "+(a-u.r1-u.r2)+",0"],["a "+u.r2+","+u.r2+",0,0,1,"+u.r2+","+u.r2],["l 0,"+(l-u.r2-u.r3)],["a "+u.r3+","+u.r3+",0,0,1,"+-u.r3+","+u.r3],["l "+(u.r3+u.r4-a)+",0"],["a "+u.r4+","+u.r4+",0,0,1,"+-u.r4+","+-u.r4],["l 0,"+(u.r4+u.r1-l)],["a "+u.r1+","+u.r1+",0,0,1,"+u.r1+","+-u.r1],["z"]].join(" ")},t}(au),aT=i(43631),ab={top:"before-edge",middle:"central",bottom:"after-edge",alphabetic:"baseline",hanging:"hanging"},aA={top:"text-before-edge",middle:"central",bottom:"text-after-edge",alphabetic:"alphabetic",hanging:"hanging"},aR={left:"left",start:"left",center:"middle",right:"end",end:"end"},aL=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="text",t.canFill=!0,t.canStroke=!0,t}return(0,ef.ZT)(t,e),t.prototype.getDefaultAttrs=function(){var t=e.prototype.getDefaultAttrs.call(this);return(0,ef.pi)((0,ef.pi)({},t),{x:0,y:0,text:null,fontSize:12,fontFamily:"sans-serif",fontStyle:"normal",fontWeight:"normal",fontVariant:"normal",textAlign:"start",textBaseline:"bottom"})},t.prototype.createPath=function(e,t){var i=this,n=this.attr(),r=this.get("el");this._setFont(),(0,em.S6)(t||n,function(e,t){"text"===t?i._setText(""+e):"matrix"===t&&e?ao(i):at[t]&&r.setAttribute(at[t],e)}),r.setAttribute("paint-order","stroke"),r.setAttribute("style","stroke-linecap:butt; stroke-linejoin:miter;")},t.prototype._setFont=function(){var e=this.get("el"),t=this.attr(),i=t.textBaseline,n=t.textAlign,r=(0,aT.qY)();r&&"firefox"===r.name?e.setAttribute("dominant-baseline",aA[i]||"alphabetic"):e.setAttribute("alignment-baseline",ab[i]||"baseline"),e.setAttribute("text-anchor",aR[n]||"left")},t.prototype._setText=function(e){var t=this.get("el"),i=this.attr(),n=i.x,r=i.textBaseline,o=void 0===r?"bottom":r;if(e){if(~e.indexOf("\n")){var s=e.split("\n"),a=s.length-1,l="";(0,em.S6)(s,function(e,t){0===t?"alphabetic"===o?l+=''+e+"":"top"===o?l+=''+e+"":"middle"===o?l+=''+e+"":"bottom"===o?l+=''+e+"":"hanging"===o&&(l+=''+e+""):l+=''+e+""}),t.innerHTML=l}else t.innerHTML=e}else t.innerHTML=""},t}(au),aN=/^l\s*\(\s*([\d.]+)\s*\)\s*(.*)/i,aI=/^r\s*\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*\)\s*(.*)/i,aw=/[\d.]+:(#[^\s]+|[^)]+\))/gi;function aO(e){var t=e.match(aw);if(!t)return"";var i="";return t.sort(function(e,t){return e=e.split(":"),t=t.split(":"),Number(e[0])-Number(t[0])}),(0,em.S6)(t,function(e){i+=''}),i}var ax=function(){function e(e){this.cfg={};var t,i,n,r,o,s,a,l,h,u,d,c,g,p,f,m,v=null,E=(0,em.EL)("gradient_");return"l"===e.toLowerCase()[0]?(t=v=ai("linearGradient"),r=aN.exec(e),o=(0,em.wQ)((0,em.c$)(parseFloat(r[1])),2*Math.PI),s=r[2],o>=0&&o<.5*Math.PI?(i={x:0,y:0},n={x:1,y:1}):.5*Math.PI<=o&&o';t.innerHTML=i},e}(),aP=function(){function e(e,t){this.cfg={};var i=ai("marker"),n=(0,em.EL)("marker_");i.setAttribute("id",n);var r=ai("path");r.setAttribute("stroke",e.stroke||"none"),r.setAttribute("fill",e.fill||"none"),i.appendChild(r),i.setAttribute("overflow","visible"),i.setAttribute("orient","auto-start-reverse"),this.el=i,this.child=r,this.id=n;var o=e["marker-start"===t?"startArrow":"endArrow"];return this.stroke=e.stroke||"#000",!0===o?this._setDefaultPath(t,r):(this.cfg=o,this._setMarker(e.lineWidth,r)),this}return e.prototype.match=function(){return!1},e.prototype._setDefaultPath=function(e,t){var i=this.el;t.setAttribute("d","M0,0 L"+10*Math.cos(Math.PI/6)+",5 L0,10"),i.setAttribute("refX",""+10*Math.cos(Math.PI/6)),i.setAttribute("refY","5")},e.prototype._setMarker=function(e,t){var i=this.el,n=this.cfg.path,r=this.cfg.d;(0,em.kJ)(n)&&(n=n.map(function(e){return e.join(" ")}).join("")),t.setAttribute("d",n),i.appendChild(t),r&&i.setAttribute("refX",""+r/e)},e.prototype.update=function(e){var t=this.child;t.attr?t.attr("fill",e):t.setAttribute("fill",e)},e}(),aF=function(){function e(e){this.type="clip",this.cfg={};var t=ai("clipPath");this.el=t,this.id=(0,em.EL)("clip_"),t.id=this.id;var i=e.cfg.el;return t.appendChild(i),this.cfg=e,this}return e.prototype.match=function(){return!1},e.prototype.remove=function(){var e=this.el;e.parentNode.removeChild(e)},e}(),aB=/^p\s*\(\s*([axyn])\s*\)\s*(.*)/i,aU=function(){function e(e){this.cfg={};var t=ai("pattern");t.setAttribute("patternUnits","userSpaceOnUse");var i=ai("image");t.appendChild(i);var n=(0,em.EL)("pattern_");t.id=n,this.el=t,this.id=n,this.cfg=e;var r=aB.exec(e)[2];i.setAttribute("href",r);var o=new Image;function s(){t.setAttribute("width",""+o.width),t.setAttribute("height",""+o.height)}return r.match(/^data:/i)||(o.crossOrigin="Anonymous"),o.src=r,o.complete?s():(o.onload=s,o.src=o.src),this}return e.prototype.match=function(e,t){return this.cfg===t},e}(),aH=function(){function e(e){var t=ai("defs"),i=(0,em.EL)("defs_");t.id=i,e.appendChild(t),this.children=[],this.defaultArrow={},this.el=t,this.canvas=e}return e.prototype.find=function(e,t){for(var i=this.children,n=null,r=0;r0&&(h[0][0]="L")),o=o.concat(h)}),o.push(["Z"])}return o}(c,a,i,n,r))}return o.path=h,o}function a2(e){var t=e.start,i=e.end;return[[t.x,i.y],[i.x,t.y]]}oK("area",{defaultShapeType:"area",getDefaultPoints:function(e){var t=e.x,i=e.y0;return((0,em.kJ)(e.y)?e.y:[i,e.y]).map(function(e){return{x:t,y:e}})}}),o$("area","area",{draw:function(e,t){var i=a1(e,!1,!1,this);return t.addShape({type:"path",attrs:i,name:"area"})},getMarker:function(e){return{symbol:function(e,t,i){return void 0===i&&(i=5.5),[["M",e-i,t-4],["L",e+i,t-4],["L",e+i,t+4],["L",e-i,t+4],["Z"]]},style:{r:5,fill:e.color}}}});var a4=function(e){function t(t){var i=e.call(this,t)||this;i.type="area",i.shapeType="area",i.generatePoints=!0,i.startOnZero=!0;var n=t.startOnZero,r=t.sortable,o=t.showSinglePoint;return i.startOnZero=void 0===n||n,i.sortable=void 0!==r&&r,i.showSinglePoint=void 0!==o&&o,i}return(0,ef.ZT)(t,e),t.prototype.getPointsAndData=function(e){for(var t=[],i=[],n=0,r=e.length;nn&&(n=r),r=t[0]}));for(var d=this.scales[h],c=0,g=e;ct&&(i=i?t/(1+n/i):0,n=t-i),r+o>t&&(r=r?t/(1+o/r):0,o=t-r),[i||0,n||0,r||0,o||0]}function a8(e,t,i){var n=[];if(i.isRect){var r=i.isTransposed?{x:i.start.x,y:t[0].y}:{x:t[0].x,y:i.start.y},o=i.isTransposed?{x:i.end.x,y:t[2].y}:{x:t[3].x,y:i.end.y},s=(0,em.U2)(e,["background","style","radius"]);if(s){var a=a7(s,Math.min(i.isTransposed?Math.abs(t[0].y-t[2].y):t[2].x-t[1].x,i.isTransposed?i.getWidth():i.getHeight())),l=a[0],h=a[1],u=a[2],d=a[3];n.push(["M",r.x,o.y+l]),0!==l&&n.push(["A",l,l,0,0,1,r.x+l,o.y]),n.push(["L",o.x-h,o.y]),0!==h&&n.push(["A",h,h,0,0,1,o.x,o.y+h]),n.push(["L",o.x,r.y-u]),0!==u&&n.push(["A",u,u,0,0,1,o.x-u,r.y]),n.push(["L",r.x+d,r.y]),0!==d&&n.push(["A",d,d,0,0,1,r.x,r.y-d])}else n.push(["M",r.x,r.y]),n.push(["L",o.x,r.y]),n.push(["L",o.x,o.y]),n.push(["L",r.x,o.y]),n.push(["L",r.x,r.y]);n.push(["z"])}if(i.isPolar){var c=i.getCenter(),g=n6(e,i),p=g.startAngle,f=g.endAngle;if("theta"===i.type||i.isTransposed){var m=function(e){return Math.pow(e,2)},l=Math.sqrt(m(c.x-t[0].x)+m(c.y-t[0].y)),h=Math.sqrt(m(c.x-t[2].x)+m(c.y-t[2].y));n=n4(c.x,c.y,l,i.startAngle,i.endAngle,h)}else n=n4(c.x,c.y,i.getRadius(),p,f)}return n}function le(e,t,i){var n=[];return(0,em.UM)(t)?i?n.push(["M",e[0].x,e[0].y],["L",e[1].x,e[1].y],["L",(e[2].x+e[3].x)/2,(e[2].y+e[3].y)/2],["Z"]):n.push(["M",e[0].x,e[0].y],["L",e[1].x,e[1].y],["L",e[2].x,e[2].y],["L",e[3].x,e[3].y],["Z"]):n.push(["M",e[0].x,e[0].y],["L",e[1].x,e[1].y],["L",t[1].x,t[1].y],["L",t[0].x,t[0].y],["Z"]),n}function lt(e){var t=e.theme,i=e.coordinate,n=e.getXScale(),r=n.values,o=e.beforeMappingData,s=r.length,a=rt(e.coordinate),l=e.intervalPadding,h=e.dodgePadding,u=e.maxColumnWidth||t.maxColumnWidth,d=e.minColumnWidth||t.minColumnWidth,c=e.columnWidthRatio||t.columnWidthRatio,g=e.multiplePieWidthRatio||t.multiplePieWidthRatio,p=e.roseWidthRatio||t.roseWidthRatio;if(n.isLinear&&r.length>1){r.sort();var f=function(e,t){var i=e.length,n=e;(0,em.HD)(n[0])&&(n=e.map(function(e){return t.translate(e)}));for(var r=n[1]-n[0],o=2;os&&(r=s)}return r}(r,n);s=(n.max-n.min)/f,r.length>s&&(s=r.length)}var m=n.range,v=1/s,E=1;if(i.isPolar?E=i.isTransposed&&s>1?g:p:(n.isLinear&&(v*=m[1]-m[0]),E=c),!(0,em.UM)(l)&&l>=0?v=(1-(s-1)*(l/a))/s:v*=E,e.getAdjust("dodge")){var _=function(e,t){if(t){var i=(0,em.xH)(e);return(0,em.I)(i,t).length}return e.length}(o,e.getAdjust("dodge").dodgeBy);!(0,em.UM)(h)&&h>=0?v=(v-h/a*(_-1))/_:(!(0,em.UM)(l)&&l>=0&&(v*=E),v/=_),v=v>=0?v:0}if(!(0,em.UM)(u)&&u>=0){var C=u/a;v>C&&(v=C)}if(!(0,em.UM)(d)&&d>=0){var S=d/a;vi[1].x?(c=i[0],h=i[1],u=i[2],d=i[3],g=(a=a7(r,Math.min(c.x-h.x,h.y-u.y)))[0],m=a[1],f=a[2],p=a[3]):(p=(l=a7(r,Math.min(c.x-h.x,h.y-u.y)))[0],f=l[1],m=l[2],g=l[3])),(v=[]).push(["M",u.x,u.y+g]),0!==g&&v.push(["A",g,g,0,0,1,u.x+g,u.y]),v.push(["L",d.x-p,d.y]),0!==p&&v.push(["A",p,p,0,0,1,d.x,d.y+p]),v.push(["L",c.x,c.y-f]),0!==f&&v.push(["A",f,f,0,0,1,c.x-f,c.y]),v.push(["L",h.x+m,h.y]),0!==m&&v.push(["A",m,m,0,0,1,h.x,h.y-m]),v.push(["L",u.x,u.y+g]),v.push(["z"]),L=v):L=this.parsePath((E=e.points,_=N.lineCap,S=(C=this.coordinate).getWidth(),y=C.getHeight(),T="rect"===C.type,b=[],A=(E[2].x-E[1].x)/2,R=C.isTransposed?A*y/S:A*S/y,"round"===_?(T?(b.push(["M",E[0].x,E[0].y+R]),b.push(["L",E[1].x,E[1].y-R]),b.push(["A",A,A,0,0,1,E[2].x,E[2].y-R]),b.push(["L",E[3].x,E[3].y+R]),b.push(["A",A,A,0,0,1,E[0].x,E[0].y+R])):(b.push(["M",E[0].x,E[0].y]),b.push(["L",E[1].x,E[1].y]),b.push(["A",A,A,0,0,1,E[2].x,E[2].y]),b.push(["L",E[3].x,E[3].y]),b.push(["A",A,A,0,0,1,E[0].x,E[0].y])),b.push(["z"])):b=a9(E),b));var D=I.addShape("path",{attrs:(0,ef.pi)((0,ef.pi)({},N),{path:L}),name:"interval"});return w?I:D},getMarker:function(e){var t=e.color;return e.isInPolar?{symbol:"circle",style:{r:4.5,fill:t}}:{symbol:"square",style:{r:4,fill:t}}}});var li=function(e){function t(t){var i=e.call(this,t)||this;i.type="interval",i.shapeType="interval",i.generatePoints=!0;var n=t.background;return i.background=n,i}return(0,ef.ZT)(t,e),t.prototype.createShapePointsCfg=function(t){var i,n=e.prototype.createShapePointsCfg.call(this,t),r=this.getAttribute("size");return r?i=this.getAttributeValues(r,t)[0]/rt(this.coordinate):(this.defaultSize||(this.defaultSize=lt(this)),i=this.defaultSize),n.size=i,n},t.prototype.adjustScale=function(){e.prototype.adjustScale.call(this);var t,i=this.getYScale();if("theta"===this.coordinate.type)i.change({nice:!1,min:0,max:(t=i.values.filter(function(e){return!(0,em.UM)(e)&&!isNaN(e)}),Math.max.apply(Math,(0,ef.ev)((0,ef.ev)([],t,!1),[(0,em.UM)(i.max)?-1/0:i.max],!1)))});else{var n=this.scaleDefs,r=i.field,o=i.min,s=i.max;"time"!==i.type&&(o>0&&!(0,em.U2)(n,[r,"min"])&&i.change({min:0}),s<=0&&!(0,em.U2)(n,[r,"max"])&&i.change({max:0}))}},t.prototype.getDrawCfg=function(t){var i=e.prototype.getDrawCfg.call(this,t);return i.background=this.background,i},t}(oJ),ln=function(e){function t(t){var i=e.call(this,t)||this;i.type="line";var n=t.sortable;return i.sortable=void 0!==n&&n,i}return(0,ef.ZT)(t,e),t}(a0),lr=["circle","square","bowtie","diamond","hexagon","triangle","triangle-down"];function lo(e,t,i,n,r){var o=aX(t,r,!r,"r"),s=e.parsePoints(t.points),a=s[0];if(t.isStack)a=s[1];else if(s.length>1){for(var l=i.addGroup(),h=0;h2?"weight":"normal";if(e.isInCircle){var s,a,l,h,u,d,c,g={x:0,y:1};return"normal"===o?(s=r[0],a=ld(r[1],g),(l=[["M",s.x,s.y]]).push(a),i=l):(n.fill=n.stroke,u=ld((h=r)[1],g),d=ld(h[3],g),(c=[["M",h[0].x,h[0].y]]).push(d),c.push(["L",h[3].x,h[3].y]),c.push(["L",h[2].x,h[2].y]),c.push(u),c.push(["L",h[1].x,h[1].y]),c.push(["L",h[0].x,h[0].y]),c.push(["Z"]),i=c),i=this.parsePath(i),t.addShape("path",{attrs:(0,ef.pi)((0,ef.pi)({},n),{path:i})})}if("normal"===o)return i=n5(((r=this.parsePoints(r))[1].x+r[0].x)/2,r[0].y,Math.abs(r[1].x-r[0].x)/2,Math.PI,2*Math.PI),t.addShape("path",{attrs:(0,ef.pi)((0,ef.pi)({},n),{path:i})});var p=lu(r[1],r[3]),f=lu(r[2],r[0]);return i=[["M",r[0].x,r[0].y],["L",r[1].x,r[1].y],p,["L",r[3].x,r[3].y],["L",r[2].x,r[2].y],f,["Z"]],i=this.parsePath(i),n.fill=n.stroke,t.addShape("path",{attrs:(0,ef.pi)((0,ef.pi)({},n),{path:i})})},getMarker:function(e){return{symbol:"circle",style:{r:4.5,fill:e.color}}}}),o$("edge","smooth",{draw:function(e,t){var i,n,r,o=aX(e,!0,!1,"lineWidth"),s=e.points,a=this.parsePath((n=lu(i=s[0],s[1]),(r=[["M",i.x,i.y]]).push(n),r));return t.addShape("path",{attrs:(0,ef.pi)((0,ef.pi)({},o),{path:a})})},getMarker:function(e){return{symbol:"circle",style:{r:4.5,fill:e.color}}}});var lc=1/3;o$("edge","vhv",{draw:function(e,t){var i,n,r,o,s=aX(e,!0,!1,"lineWidth"),a=e.points,l=this.parsePath((i=a[0],n=a[1],(r=[]).push({x:i.x,y:i.y*(1-lc)+n.y*lc}),r.push({x:n.x,y:i.y*(1-lc)+n.y*lc}),r.push(n),o=[["M",i.x,i.y]],(0,em.S6)(r,function(e){o.push(["L",e.x,e.y])}),o));return t.addShape("path",{attrs:(0,ef.pi)((0,ef.pi)({},s),{path:l})})},getMarker:function(e){return{symbol:"circle",style:{r:4.5,fill:e.color}}}}),o$("interval","funnel",{getPoints:function(e){return e.size=2*e.size,a3(e)},draw:function(e,t){var i=aX(e,!1,!0),n=this.parsePath(le(e.points,e.nextPoints,!1));return t.addShape("path",{attrs:(0,ef.pi)((0,ef.pi)({},i),{path:n}),name:"interval"})},getMarker:function(e){return{symbol:"square",style:{r:4,fill:e.color}}}}),o$("interval","hollow-rect",{draw:function(e,t){var i=aX(e,!0,!1),n=t,r=null==e?void 0:e.background;if(r){n=t.addGroup();var o=aj(e),s=a8(e,this.parsePoints(e.points),this.coordinate);n.addShape("path",{attrs:(0,ef.pi)((0,ef.pi)({},o),{path:s}),zIndex:-1,name:oF})}var a=this.parsePath(a9(e.points)),l=n.addShape("path",{attrs:(0,ef.pi)((0,ef.pi)({},i),{path:a}),name:"interval"});return r?n:l},getMarker:function(e){var t=e.color;return e.isInPolar?{symbol:"circle",style:{r:4.5,stroke:t,fill:null}}:{symbol:"square",style:{r:4,stroke:t,fill:null}}}}),o$("interval","line",{getPoints:function(e){var t,i,n;return t=e.x,i=e.y,n=e.y0,(0,em.kJ)(i)?i.map(function(e,i){return{x:(0,em.kJ)(t)?t[i]:t,y:e}}):[{x:t,y:n},{x:t,y:i}]},draw:function(e,t){var i=aX(e,!0,!1,"lineWidth"),n=n7((0,ef.pi)({},i),["fill"]),r=this.parsePath(a9(e.points,!1));return t.addShape("path",{attrs:(0,ef.pi)((0,ef.pi)({},n),{path:r}),name:"interval"})},getMarker:function(e){return{symbol:function(e,t,i){return[["M",e,t-i],["L",e,t+i]]},style:{r:5,stroke:e.color}}}}),o$("interval","pyramid",{getPoints:function(e){return e.size=2*e.size,a3(e)},draw:function(e,t){var i=aX(e,!1,!0),n=this.parsePath(le(e.points,e.nextPoints,!0));return t.addShape("path",{attrs:(0,ef.pi)((0,ef.pi)({},i),{path:n}),name:"interval"})},getMarker:function(e){return{symbol:"square",style:{r:4,fill:e.color}}}}),o$("interval","tick",{getPoints:function(e){var t,i,n,r,o,s,a,l;return n=e.x,r=e.y,o=e.y0,s=e.size,(0,em.kJ)(r)?(t=r[0],i=r[1]):(t=o,i=r),a=n+s/2,l=n-s/2,[{x:n,y:t},{x:n,y:i},{x:l,y:t},{x:a,y:t},{x:l,y:i},{x:a,y:i}]},draw:function(e,t){var i,n=aX(e,!0,!1),r=this.parsePath([["M",(i=e.points)[0].x,i[0].y],["L",i[1].x,i[1].y],["M",i[2].x,i[2].y],["L",i[3].x,i[3].y],["M",i[4].x,i[4].y],["L",i[5].x,i[5].y]]);return t.addShape("path",{attrs:(0,ef.pi)((0,ef.pi)({},n),{path:r}),name:"interval"})},getMarker:function(e){return{symbol:function(e,t,i){return[["M",e-i/2,t-i],["L",e+i/2,t-i],["M",e,t-i],["L",e,t+i],["M",e-i/2,t+i],["L",e+i/2,t+i]]},style:{r:5,stroke:e.color}}}});var lg=function(e,t,i){var n,r=e.x,o=e.y,s=t.x,a=t.y;switch(i){case"hv":n=[{x:s,y:o}];break;case"vh":n=[{x:r,y:a}];break;case"hvh":var l=(s+r)/2;n=[{x:l,y:o},{x:l,y:a}];break;case"vhv":var h=(o+a)/2;n=[{x:r,y:h},{x:s,y:h}]}return n};function lp(e){var t=(0,em.kJ)(e)?e:[e],i=t[0],n=t[t.length-1],r=t.length>1?t[1]:i,o=t.length>3?t[3]:n,s=t.length>2?t[2]:r;return{min:i,max:n,min1:r,max1:o,median:s}}function lf(e,t,i){var n,r=i/2;if((0,em.kJ)(t)){var o=lp(t),s=o.min,a=o.max,l=o.median,h=o.min1,u=o.max1,d=e-r,c=e+r;n=[[d,a],[c,a],[e,a],[e,u],[d,h],[d,u],[c,u],[c,h],[e,h],[e,s],[d,s],[c,s],[d,l],[c,l]]}else{t=(0,em.UM)(t)?.5:t;var g=lp(e),s=g.min,a=g.max,l=g.median,h=g.min1,u=g.max1,p=t-r,f=t+r;n=[[s,p],[s,f],[s,t],[h,t],[h,p],[h,f],[u,f],[u,p],[u,t],[a,t],[a,p],[a,f],[l,p],[l,f]]}return n.map(function(e){return{x:e[0],y:e[1]}})}function lm(e,t,i){var n,r=function(e,t,i){if((0,em.HD)(e))return e.padEnd(t,i);if((0,em.kJ)(e)){var n=e.length;if(n1){for(var o=t.addGroup(),s=0;s0?"left":"right");break;case"left":e.x=a,e.y=(r+s)/2,e.textAlign=(0,em.U2)(e,"textAlign",g>0?"left":"right");break;case"bottom":h&&(e.x=(o+a)/2),e.y=s,e.textAlign=(0,em.U2)(e,"textAlign","center"),e.textBaseline=(0,em.U2)(e,"textBaseline",g>0?"bottom":"top");break;case"middle":h&&(e.x=(o+a)/2),e.y=(r+s)/2,e.textAlign=(0,em.U2)(e,"textAlign","center"),e.textBaseline=(0,em.U2)(e,"textBaseline","middle");break;case"top":h&&(e.x=(o+a)/2),e.y=r,e.textAlign=(0,em.U2)(e,"textAlign","center"),e.textBaseline=(0,em.U2)(e,"textBaseline",g>0?"bottom":"top")}},t}(o3),lE=Math.PI/2,l_=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getLabelOffset=function(e){var t=this.getCoordinate(),i=0;if((0,em.hj)(e))i=e;else if((0,em.HD)(e)&&-1!==e.indexOf("%")){var n=t.getRadius();t.innerRadius>0&&(n*=1-t.innerRadius),i=.01*parseFloat(e)*n}return i},t.prototype.getLabelItems=function(t){var i=e.prototype.getLabelItems.call(this,t),n=this.geometry.getYScale();return(0,em.UI)(i,function(e){if(e&&n){var t=n.scale((0,em.U2)(e.data,n.field));return(0,ef.pi)((0,ef.pi)({},e),{percent:t})}return e})},t.prototype.getLabelAlign=function(e){var t,i=this.getCoordinate();if(e.labelEmit)t=e.angle<=Math.PI/2&&e.angle>=-Math.PI/2?"left":"right";else if(i.isTransposed){var n=i.getCenter(),r=e.offset;t=1>Math.abs(e.x-n.x)?"center":e.angle>Math.PI||e.angle<=0?r>0?"left":"right":r>0?"right":"left"}else t="center";return t},t.prototype.getLabelPoint=function(e,t,i){var n,r=1,o=e.content[i];this.isToMiddle(t)?n=this.getMiddlePoint(t.points):(1===e.content.length&&0===i?i=1:0===i&&(r=-1),n=this.getArcPoint(t,i));var s=e.offset*r,a=this.getPointAngle(n),l=e.labelEmit,h=this.getCirclePoint(a,s,n,l);return 0===h.r?h.content="":(h.content=o,h.angle=a,h.color=t.color),h.rotate=e.autoRotate?this.getLabelRotate(a,s,l):e.rotate,h.start={x:n.x,y:n.y},h},t.prototype.getArcPoint=function(e,t){return(void 0===t&&(t=0),(0,em.kJ)(e.x)||(0,em.kJ)(e.y))?{x:(0,em.kJ)(e.x)?e.x[t]:e.x,y:(0,em.kJ)(e.y)?e.y[t]:e.y}:{x:e.x,y:e.y}},t.prototype.getPointAngle=function(e){return rr(this.getCoordinate(),e)},t.prototype.getCirclePoint=function(e,t,i,n){var r=this.getCoordinate(),o=r.getCenter(),s=ri(r,i);if(0===s)return(0,ef.pi)((0,ef.pi)({},o),{r:s});var a=e;return r.isTransposed&&s>t&&!n?a=e+2*Math.asin(t/(2*s)):s+=t,{x:o.x+s*Math.cos(a),y:o.y+s*Math.sin(a),r:s}},t.prototype.getLabelRotate=function(e,t,i){var n=e+lE;return i&&(n-=lE),n&&(n>lE?n-=Math.PI:n<-lE&&(n+=Math.PI)),n},t.prototype.getMiddlePoint=function(e){var t=this.getCoordinate(),i=e.length,n={x:0,y:0};return(0,em.S6)(e,function(e){n.x+=e.x,n.y+=e.y}),n.x/=i,n.y/=i,n=t.convert(n)},t.prototype.isToMiddle=function(e){return e.x.length>2},t}(o3),lC=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.defaultLayout="distribute",t}return(0,ef.ZT)(t,e),t.prototype.getDefaultLabelCfg=function(t,i){var n=e.prototype.getDefaultLabelCfg.call(this,t,i);return(0,em.b$)({},n,(0,em.U2)(this.geometry.theme,"pieLabels",{}))},t.prototype.getLabelOffset=function(t){return e.prototype.getLabelOffset.call(this,t)||0},t.prototype.getLabelRotate=function(e,t,i){var n;return t<0&&((n=e)>Math.PI/2&&(n-=Math.PI),n<-Math.PI/2&&(n+=Math.PI)),n},t.prototype.getLabelAlign=function(e){var t,i=this.getCoordinate().getCenter();return t=e.angle<=Math.PI/2&&e.x>=i.x?"left":"right",e.offset<=0&&(t="right"===t?"left":"right"),t},t.prototype.getArcPoint=function(e){return e},t.prototype.getPointAngle=function(e){var t,i=this.getCoordinate(),n={x:(0,em.kJ)(e.x)?e.x[0]:e.x,y:e.y[0]},r={x:(0,em.kJ)(e.x)?e.x[1]:e.x,y:e.y[1]},o=rr(i,n);if(e.points&&e.points[0].y===e.points[1].y)t=o;else{var s=rr(i,r);o>=s&&(s+=2*Math.PI),t=o+(s-o)/2}return t},t.prototype.getCirclePoint=function(e,t){var i=this.getCoordinate(),n=i.getCenter(),r=i.getRadius()+t;return(0,ef.pi)((0,ef.pi)({},n2(n.x,n.y,r,e)),{angle:e,r:r})},t}(l_);function lS(e,t,i){var n,r=e.filter(function(e){return!e.invisible});r.sort(function(e,t){return e.y-t.y});var o=!0,s=i.minY,a=Math.abs(s-i.maxY),l=0,h=Number.MIN_VALUE,u=r.map(function(e){return e.y>l&&(l=e.y),e.ya&&(a=l-s);o;)for(u.forEach(function(e){var t=(Math.min.apply(h,e.targets)+Math.max.apply(h,e.targets))/2;e.pos=Math.min(Math.max(h,t-e.size/2),a-e.size),e.pos=Math.max(0,e.pos)}),o=!1,n=u.length;n--;)if(n>0){var d=u[n-1],c=u[n];d.pos+d.size>c.pos&&(d.size+=c.size,d.targets=d.targets.concat(c.targets),d.pos+d.size>a&&(d.pos=a-d.size),u.splice(n,1),o=!0)}n=0,u.forEach(function(e){var i=s+t/2;e.targets.forEach(function(){r[n].y=e.pos+i,i+=t,n++})})}var ly=function(){function e(e){void 0===e&&(e={}),this.bitmap={};var t=e.xGap,i=e.yGap;this.xGap=void 0===t?1:t,this.yGap=void 0===i?8:i}return e.prototype.hasGap=function(e){for(var t=!0,i=this.bitmap,n=Math.round(e.minX),r=Math.round(e.maxX),o=Math.round(e.minY),s=Math.round(e.maxY),a=n;a<=r;a+=1){if(!i[a]){i[a]={};continue}if(a===n||a===r){for(var l=o;l<=s;l++)if(i[a][l]){t=!1;break}}else if(i[a][o]||i[a][s]){t=!1;break}}return t},e.prototype.fillGap=function(e){for(var t=this.bitmap,i=Math.round(e.minX),n=Math.round(e.maxX),r=Math.round(e.minY),o=Math.round(e.maxY),s=i;s<=n;s+=1)t[s]||(t[s]={});for(var s=i;s<=n;s+=this.xGap){for(var a=r;a<=o;a+=this.yGap)t[s][a]=!0;t[s][o]=!0}if(1!==this.yGap)for(var s=r;s<=o;s+=1)t[i][s]=!0,t[n][s]=!0;if(1!==this.xGap)for(var s=i;s<=n;s+=1)t[s][r]=!0,t[s][o]=!0},e.prototype.destroy=function(){this.bitmap={}},e}(),lT=io.AK;function lb(e){if(e.length>4)return[];var t=function(e,t){return[t.x-e.x,t.y-e.y]};return[t(e[0],e[1]),t(e[1],e[2])]}function lA(e,t,i){void 0===t&&(t=0),void 0===i&&(i={x:0,y:0});var n=e.x,r=e.y;return{x:(n-i.x)*Math.cos(-t)+(r-i.y)*Math.sin(-t)+i.x,y:(i.x-n)*Math.sin(-t)+(r-i.y)*Math.cos(-t)+i.y}}function lR(e){var t=[{x:e.x,y:e.y},{x:e.x+e.width,y:e.y},{x:e.x+e.width,y:e.y+e.height},{x:e.x,y:e.y+e.height}],i=e.rotation;return i?[lA(t[0],i,t[0]),lA(t[1],i,t[0]),lA(t[2],i,t[0]),lA(t[3],i,t[0])]:t}function lL(e,t){if(e.length>4)return{min:0,max:0};var i=[];return e.forEach(function(e){i.push(lT([e.x,e.y],t))}),{min:Math.min.apply(Math,i),max:Math.max.apply(Math,i)}}function lN(e){return(0,em.hj)(e)&&!Number.isNaN(e)&&e!==1/0&&e!==-1/0}function lI(e){return Object.values(e).every(lN)}var lw={"#5B8FF9":!0},lO=function(e){var t=eQ.toRGB(e).toUpperCase();if(lw[t])return lw[t];var i=eQ.rgb2arr(t);return(299*i[0]+587*i[1]+114*i[2])/1e3<128};function lx(e,t,i){return e.some(function(e){return i(e,t)})}function lD(e,t){return lx(e,t,function(e,t){var i,n,r=o2(e),o=o2(t);return i=r.getCanvasBBox(),n=o.getCanvasBBox(),Math.max(0,Math.min(i.x+i.width+2,n.x+n.width+2)-Math.max(i.x-2,n.x-2))*Math.max(0,Math.min(i.y+i.height+2,n.y+n.height+2)-Math.max(i.y-2,n.y-2))>0})}function lM(e,t,i){return e.some(function(e){return i(e,t)})}function lk(e,t){return lM(e,t,function(e,t){var i,n,r=o2(e),o=o2(t);return i=r.getCanvasBBox(),n=o.getCanvasBBox(),Math.max(0,Math.min(i.x+i.width+2,n.x+n.width+2)-Math.max(i.x-2,n.x-2))*Math.max(0,Math.min(i.y+i.height+2,n.y+n.height+2)-Math.max(i.y-2,n.y-2))>0})}var lP=(0,em.HP)(function(e,t){void 0===t&&(t={});var i=t.fontSize,n=t.fontFamily,r=t.fontWeight,o=t.fontStyle,s=t.fontVariant,a=(Y||(Y=document.createElement("canvas").getContext("2d")),Y);return a.font=[o,s,r,i+"px",n].join(" "),a.measureText((0,em.HD)(e)?e:"").width},function(e,t){return void 0===t&&(t={}),(0,ef.ev)([e],(0,em.VO)(t),!0).join("")}),lF=function(e,t,i){var n,r,o,s=lP("...",i);n=(0,em.HD)(e)?e:(0,em.BB)(e);var a=t,l=[];if(lP(e,i)<=t)return e;for(;!((o=lP(r=n.substr(0,16),i))+s>a)||!(o>a);)if(l.push(r),a-=o,!(n=n.substr(16)))return l.join("");for(;!((o=lP(r=n.substr(0,1),i))+s>a);)if(l.push(r),a-=o,!(n=n.substr(1)))return l.join("");return l.join("")+"..."};function lB(e,t,i,n,r){var o,s,a,l,h,u,d=i.start,c=i.end,g=i.getWidth(),p=i.getHeight();"y"===r?(h=d.x+g/2,u=n.yd.x?n.x:d.x,u=d.y+p/2):"xy"===r&&(i.isPolar?(h=i.getCenter().x,u=i.getCenter().y):(h=(d.x+c.x)/2,u=(d.y+c.y)/2));var f=(a=(o=[h,u])[0],l=o[1],e.applyToMatrix([a,l,1]),"x"===r?(e.setMatrix(it.vs(e.getMatrix(),[["t",-a,-l],["s",.01,1],["t",a,l]])),s=it.vs(e.getMatrix(),[["t",-a,-l],["s",100,1],["t",a,l]])):"y"===r?(e.setMatrix(it.vs(e.getMatrix(),[["t",-a,-l],["s",1,.01],["t",a,l]])),s=it.vs(e.getMatrix(),[["t",-a,-l],["s",1,100],["t",a,l]])):"xy"===r&&(e.setMatrix(it.vs(e.getMatrix(),[["t",-a,-l],["s",.01,.01],["t",a,l]])),s=it.vs(e.getMatrix(),[["t",-a,-l],["s",100,100],["t",a,l]])),s);e.animate({matrix:f},t)}function lU(e,t){var i,n=sC(e,t),r=n.startAngle,o=n.endAngle;return!(0,em.vQ)(r,-(.5*Math.PI))&&r<-(.5*Math.PI)&&(r+=2*Math.PI),!(0,em.vQ)(o,-(.5*Math.PI))&&o<-(.5*Math.PI)&&(o+=2*Math.PI),0===t[5]&&(r=(i=[o,r])[0],o=i[1]),(0,em.vQ)(r,1.5*Math.PI)&&(r=-.5*Math.PI),(0,em.vQ)(o,-.5*Math.PI)&&(o=1.5*Math.PI),{startAngle:r,endAngle:o}}function lH(e){var t;return"M"===e[0]||"L"===e[0]?t=[e[1],e[2]]:("a"===e[0]||"A"===e[0]||"C"===e[0])&&(t=[e[e.length-2],e[e.length-1]]),t}function lV(e){var t,i,n,r=e.filter(function(e){return"A"===e[0]||"a"===e[0]});if(0===r.length)return{startAngle:0,endAngle:0,radius:0,innerRadius:0};var o=r[0],s=r.length>1?r[1]:r[0],a=e.indexOf(o),l=e.indexOf(s),h=lH(e[a-1]),u=lH(e[l-1]),d=lU(h,o),c=d.startAngle,g=d.endAngle,p=lU(u,s),f=p.startAngle,m=p.endAngle;(0,em.vQ)(c,f)&&(0,em.vQ)(g,m)?(i=c,n=g):(i=Math.min(c,f),n=Math.max(g,m));var v=o[1],E=r[r.length-1][1];return v=0;o--)for(var s=this.getFacetsByLevel(e,o),a=0;a=i){var r=n.parsePosition([e[s],e[o.field]]);r&&u.push(r)}if(e[s]===h)return!1}),u},t.prototype.parsePercentPosition=function(e){var t=parseFloat(e[0])/100,i=parseFloat(e[1])/100,n=this.view.getCoordinate(),r=n.start,o=n.end,s={x:Math.min(r.x,o.x),y:Math.min(r.y,o.y)};return{x:n.getWidth()*t+s.x,y:n.getHeight()*i+s.y}},t.prototype.getCoordinateBBox=function(){var e=this.view.getCoordinate(),t=e.start,i=e.end,n=e.getWidth(),r=e.getHeight(),o={x:Math.min(t.x,i.x),y:Math.min(t.y,i.y)};return{x:o.x,y:o.y,minX:o.x,minY:o.y,maxX:o.x+n,maxY:o.y+r,width:n,height:r}},t.prototype.getAnnotationCfg=function(e,t,i){var n=this,r=this.view.getCoordinate(),o=this.view.getCanvas(),s={};if((0,em.UM)(t))return null;if("arc"===e){var a=t.start,l=t.end,h=(0,ef._T)(t,["start","end"]),u=this.parsePosition(a),d=this.parsePosition(l),c=rr(r,u),g=rr(r,d);c>g&&(g=2*Math.PI+g),s=(0,ef.pi)((0,ef.pi)({},h),{center:r.getCenter(),radius:ri(r,u),startAngle:c,endAngle:g})}else if("image"===e){var a=t.start,l=t.end,h=(0,ef._T)(t,["start","end"]);s=(0,ef.pi)((0,ef.pi)({},h),{start:this.parsePosition(a),end:this.parsePosition(l),src:t.src})}else if("line"===e){var a=t.start,l=t.end,h=(0,ef._T)(t,["start","end"]);s=(0,ef.pi)((0,ef.pi)({},h),{start:this.parsePosition(a),end:this.parsePosition(l),text:(0,em.U2)(t,"text",null)})}else if("region"===e){var a=t.start,l=t.end,h=(0,ef._T)(t,["start","end"]);s=(0,ef.pi)((0,ef.pi)({},h),{start:this.parsePosition(a),end:this.parsePosition(l)})}else if("text"===e){var p=this.view.getData(),f=t.position,m=t.content,h=(0,ef._T)(t,["position","content"]),v=m;(0,em.mf)(m)&&(v=m(p)),s=(0,ef.pi)((0,ef.pi)((0,ef.pi)({},this.parsePosition(f)),h),{content:v})}else if("dataMarker"===e){var f=t.position,E=t.point,_=t.line,C=t.text,S=t.autoAdjust,y=t.direction,h=(0,ef._T)(t,["position","point","line","text","autoAdjust","direction"]);s=(0,ef.pi)((0,ef.pi)((0,ef.pi)({},h),this.parsePosition(f)),{coordinateBBox:this.getCoordinateBBox(),point:E,line:_,text:C,autoAdjust:S,direction:y})}else if("dataRegion"===e){var a=t.start,l=t.end,T=t.region,C=t.text,b=t.lineLength,h=(0,ef._T)(t,["start","end","region","text","lineLength"]);s=(0,ef.pi)((0,ef.pi)({},h),{points:this.getRegionPoints(a,l),region:T,text:C,lineLength:b})}else if("regionFilter"===e){var a=t.start,l=t.end,A=t.apply,R=t.color,h=(0,ef._T)(t,["start","end","apply","color"]),L=this.view.geometries,N=[],I=function(e){e&&(e.isGroup()?e.getChildren().forEach(function(e){return I(e)}):N.push(e))};(0,em.S6)(L,function(e){A?(0,em.FX)(A,e.type)&&(0,em.S6)(e.elements,function(e){I(e.shape)}):(0,em.S6)(e.elements,function(e){I(e.shape)})}),s=(0,ef.pi)((0,ef.pi)({},h),{color:R,shapes:N,start:this.parsePosition(a),end:this.parsePosition(l)})}else if("shape"===e){var w=t.render,O=(0,ef._T)(t,["render"]);s=(0,ef.pi)((0,ef.pi)({},O),{render:function(e){if((0,em.mf)(t.render))return w(e,n.view,{parsePosition:n.parsePosition.bind(n)})}})}else if("html"===e){var x=t.html,f=t.position,O=(0,ef._T)(t,["html","position"]);s=(0,ef.pi)((0,ef.pi)((0,ef.pi)({},O),this.parsePosition(f)),{parent:o.get("el").parentNode,html:function(e){return(0,em.mf)(x)?x(e,n.view):x}})}var D=(0,em.b$)({},i,(0,ef.pi)((0,ef.pi)({},s),{top:t.top,style:t.style,offsetX:t.offsetX,offsetY:t.offsetY}));return"html"!==e&&(D.container=this.getComponentContainer(D)),D.animate=this.view.getOptions().animate&&D.animate&&(0,em.U2)(t,"animate",D.animate),D.animateOption=(0,em.b$)({},ox,D.animateOption,t.animateOption),D},t.prototype.isTop=function(e){return(0,em.U2)(e,"top",!0)},t.prototype.getComponentContainer=function(e){return this.isTop(e)?this.foregroundContainer:this.backgroundContainer},t.prototype.getAnnotationTheme=function(e){return(0,em.U2)(this.view.getTheme(),["components","annotation",e],{})},t.prototype.updateOrCreate=function(e){var t=this.cache.get(this.getCacheKey(e));if(t){var i=e.type,n=this.getAnnotationTheme(i),r=this.getAnnotationCfg(i,e,n);n7(r,["container"]),t.component.update(r),(0,em.q9)(lQ,e.type)&&t.component.render()}else(t=this.createAnnotation(e))&&(t.component.init(),(0,em.q9)(lQ,e.type)&&t.component.render());return t},t.prototype.syncCache=function(e){var t=this,i=new Map(this.cache);return e.forEach(function(e,t){i.set(t,e)}),i.forEach(function(e,n){(0,em.sE)(t.option,function(e){return n===t.getCacheKey(e)})||(e.component.destroy(),i.delete(n))}),i},t.prototype.getCacheKey=function(e){return e},t}(oL);function l1(e,t){var i=(0,em.b$)({},(0,em.U2)(e,["components","axis","common"]),(0,em.U2)(e,["components","axis",t]));return(0,em.U2)(i,["grid"],{})}function l2(e,t,i,n){var r=[],o=t.getTicks();return e.isPolar&&o.push({value:1,text:"",tickValue:""}),o.reduce(function(t,o,s){var a=o.value;if(n)r.push({points:[e.convert("y"===i?{x:0,y:a}:{x:a,y:0}),e.convert("y"===i?{x:1,y:a}:{x:a,y:1})]});else if(s){var l=(t.value+a)/2;r.push({points:[e.convert("y"===i?{x:0,y:l}:{x:l,y:0}),e.convert("y"===i?{x:1,y:l}:{x:l,y:1})]})}return o},o[0]),r}function l4(e,t,i,n,r){var o=t.values.length,s=[],a=i.getTicks();return a.reduce(function(t,i){var a=t?t.value:i.value,l=i.value,h=(a+l)/2;return"x"===r?s.push({points:[e.convert({x:n?l:h,y:0}),e.convert({x:n?l:h,y:1})]}):s.push({points:(0,em.UI)(Array(o+1),function(t,i){return e.convert({x:i/o,y:n?l:h})})}),i},a[0]),s}function l5(e,t){var i=(0,em.U2)(t,"grid");if(null===i)return!1;var n=(0,em.U2)(e,"grid");return!(void 0===i&&null===n)}var l6=["container"],l3=(0,ef.pi)((0,ef.pi)({},ox),{appear:null}),l9=function(e){function t(t){var i=e.call(this,t)||this;return i.cache=new Map,i.gridContainer=i.view.getLayer(O.BG).addGroup(),i.gridForeContainer=i.view.getLayer(O.FORE).addGroup(),i.axisContainer=i.view.getLayer(O.BG).addGroup(),i.axisForeContainer=i.view.getLayer(O.FORE).addGroup(),i}return(0,ef.ZT)(t,e),Object.defineProperty(t.prototype,"name",{get:function(){return"axis"},enumerable:!1,configurable:!0}),t.prototype.init=function(){},t.prototype.render=function(){this.update()},t.prototype.layout=function(){var e=this,t=this.view.getCoordinate();(0,em.S6)(this.getComponents(),function(i){var n,r=i.component,o=i.direction,s=i.type,a=i.extra,l=a.dim,h=a.scale,u=a.alignTick;s===D.AXIS?t.isPolar?"x"===l?n=t.isTransposed?rh(t,o):rp(t):"y"===l&&(n=t.isTransposed?rp(t):rh(t,o)):n=rh(t,o):s===D.GRID&&(n=t.isPolar?{items:t.isTransposed?"x"===l?l4(t,e.view.getYScales()[0],h,u,l):l2(t,h,l,u):"x"===l?l2(t,h,l,u):l4(t,e.view.getXScale(),h,u,l),center:e.view.getCoordinate().getCenter()}:{items:l2(t,h,l,u)}),r.update(n)})},t.prototype.update=function(){this.option=this.view.getOptions().axes;var e=new Map;this.updateXAxes(e),this.updateYAxes(e);var t=new Map;this.cache.forEach(function(i,n){e.has(n)?t.set(n,i):i.component.destroy()}),this.cache=t},t.prototype.clear=function(){e.prototype.clear.call(this),this.cache.clear(),this.gridContainer.clear(),this.gridForeContainer.clear(),this.axisContainer.clear(),this.axisForeContainer.clear()},t.prototype.destroy=function(){e.prototype.destroy.call(this),this.gridContainer.remove(!0),this.gridForeContainer.remove(!0),this.axisContainer.remove(!0),this.axisForeContainer.remove(!0)},t.prototype.getComponents=function(){var e=[];return this.cache.forEach(function(t){e.push(t)}),e},t.prototype.updateXAxes=function(e){var t=this.view.getXScale();if(t&&!t.isIdentity){var i=rf(this.option,t.field);if(!1!==i){var n=rm(i,x.BOTTOM),r=O.BG,o=this.view.getCoordinate(),s=this.getId("axis",t.field),a=this.getId("grid",t.field);if(o.isRect){var l=this.cache.get(s);if(l){var h=this.getLineAxisCfg(t,i,n);n7(h,l6),l.component.update(h),e.set(s,l)}else l=this.createLineAxis(t,i,r,n,"x"),this.cache.set(s,l),e.set(s,l);var u=this.cache.get(a);if(u){var h=this.getLineGridCfg(t,i,n,"x");n7(h,l6),u.component.update(h),e.set(a,u)}else(u=this.createLineGrid(t,i,r,n,"x"))&&(this.cache.set(a,u),e.set(a,u))}else if(o.isPolar){var l=this.cache.get(s);if(l){var h=o.isTransposed?this.getLineAxisCfg(t,i,x.RADIUS):this.getCircleAxisCfg(t,i,n);n7(h,l6),l.component.update(h),e.set(s,l)}else{if(o.isTransposed){if((0,em.o8)(i))return;l=this.createLineAxis(t,i,r,x.RADIUS,"x")}else l=this.createCircleAxis(t,i,r,n,"x");this.cache.set(s,l),e.set(s,l)}var u=this.cache.get(a);if(u){var h=o.isTransposed?this.getCircleGridCfg(t,i,x.RADIUS,"x"):this.getLineGridCfg(t,i,x.CIRCLE,"x");n7(h,l6),u.component.update(h),e.set(a,u)}else{if(o.isTransposed){if((0,em.o8)(i))return;u=this.createCircleGrid(t,i,r,x.RADIUS,"x")}else u=this.createLineGrid(t,i,r,x.CIRCLE,"x");u&&(this.cache.set(a,u),e.set(a,u))}}}}},t.prototype.updateYAxes=function(e){var t=this,i=this.view.getYScales();(0,em.S6)(i,function(i,n){if(i&&!i.isIdentity){var r=i.field,o=rf(t.option,r);if(!1!==o){var s=O.BG,a=t.getId("axis",r),l=t.getId("grid",r),h=t.view.getCoordinate();if(h.isRect){var u=rm(o,0===n?x.LEFT:x.RIGHT),d=t.cache.get(a);if(d){var c=t.getLineAxisCfg(i,o,u);n7(c,l6),d.component.update(c),e.set(a,d)}else d=t.createLineAxis(i,o,s,u,"y"),t.cache.set(a,d),e.set(a,d);var g=t.cache.get(l);if(g){var c=t.getLineGridCfg(i,o,u,"y");n7(c,l6),g.component.update(c),e.set(l,g)}else(g=t.createLineGrid(i,o,s,u,"y"))&&(t.cache.set(l,g),e.set(l,g))}else if(h.isPolar){var d=t.cache.get(a);if(d){var c=h.isTransposed?t.getCircleAxisCfg(i,o,x.CIRCLE):t.getLineAxisCfg(i,o,x.RADIUS);n7(c,l6),d.component.update(c),e.set(a,d)}else{if(h.isTransposed){if((0,em.o8)(o))return;d=t.createCircleAxis(i,o,s,x.CIRCLE,"y")}else d=t.createLineAxis(i,o,s,x.RADIUS,"y");t.cache.set(a,d),e.set(a,d)}var g=t.cache.get(l);if(g){var c=h.isTransposed?t.getLineGridCfg(i,o,x.CIRCLE,"y"):t.getCircleGridCfg(i,o,x.RADIUS,"y");n7(c,l6),g.component.update(c),e.set(l,g)}else{if(h.isTransposed){if((0,em.o8)(o))return;g=t.createLineGrid(i,o,s,x.CIRCLE,"y")}else g=t.createCircleGrid(i,o,s,x.RADIUS,"y");g&&(t.cache.set(l,g),e.set(l,g))}}}}})},t.prototype.createLineAxis=function(e,t,i,n,r){var o={component:new ns(this.getLineAxisCfg(e,t,n)),layer:i,direction:n===x.RADIUS?x.NONE:n,type:D.AXIS,extra:{dim:r,scale:e}};return o.component.set("field",e.field),o.component.init(),o},t.prototype.createLineGrid=function(e,t,i,n,r){var o=this.getLineGridCfg(e,t,n,r);if(o){var s={component:new nE(o),layer:i,direction:x.NONE,type:D.GRID,extra:{dim:r,scale:e,alignTick:(0,em.U2)(o,"alignTick",!0)}};return s.component.init(),s}},t.prototype.createCircleAxis=function(e,t,i,n,r){var o={component:new na(this.getCircleAxisCfg(e,t,n)),layer:i,direction:n,type:D.AXIS,extra:{dim:r,scale:e}};return o.component.set("field",e.field),o.component.init(),o},t.prototype.createCircleGrid=function(e,t,i,n,r){var o=this.getCircleGridCfg(e,t,n,r);if(o){var s={component:new nv(o),layer:i,direction:x.NONE,type:D.GRID,extra:{dim:r,scale:e,alignTick:(0,em.U2)(o,"alignTick",!0)}};return s.component.init(),s}},t.prototype.getLineAxisCfg=function(e,t,i){var n=(0,em.U2)(t,["top"])?this.axisForeContainer:this.axisContainer,r=this.view.getCoordinate(),o=rh(r,i),s=rv(e,t),a=rc(this.view.getTheme(),i),l=(0,em.U2)(t,["title"])?(0,em.b$)({title:{style:{text:s}}},{title:rg(this.view.getTheme(),i,t.title)},t):t,h=(0,em.b$)((0,ef.pi)((0,ef.pi)({container:n},o),{ticks:e.getTicks().map(function(e){return{id:""+e.tickValue,name:e.text,value:e.value}}),verticalFactor:r.isPolar?-1*rd(o,r.getCenter()):rd(o,r.getCenter()),theme:a}),a,l),u=this.getAnimateCfg(h),d=u.animate,c=u.animateOption;h.animateOption=c,h.animate=d;var g=ru(o),p=(0,em.U2)(h,"verticalLimitLength",g?1/3:.5);if(p<=1){var f=this.view.getCanvas().get("width"),m=this.view.getCanvas().get("height");h.verticalLimitLength=p*(g?f:m)}return h},t.prototype.getLineGridCfg=function(e,t,i,n){if(l5(rc(this.view.getTheme(),i),t)){var r=l1(this.view.getTheme(),i),o=(0,em.b$)({container:(0,em.U2)(t,["top"])?this.gridForeContainer:this.gridContainer},r,(0,em.U2)(t,"grid"),this.getAnimateCfg(t));return o.items=l2(this.view.getCoordinate(),e,n,(0,em.U2)(o,"alignTick",!0)),o}},t.prototype.getCircleAxisCfg=function(e,t,i){var n=(0,em.U2)(t,["top"])?this.axisForeContainer:this.axisContainer,r=this.view.getCoordinate(),o=e.getTicks().map(function(e){return{id:""+e.tickValue,name:e.text,value:e.value}});e.isCategory||Math.abs(r.endAngle-r.startAngle)!==2*Math.PI||o.pop();var s=rv(e,t),a=rc(this.view.getTheme(),x.CIRCLE),l=(0,em.U2)(t,["title"])?(0,em.b$)({title:{style:{text:s}}},{title:rg(this.view.getTheme(),i,t.title)},t):t,h=(0,em.b$)((0,ef.pi)((0,ef.pi)({container:n},rp(this.view.getCoordinate())),{ticks:o,verticalFactor:1,theme:a}),a,l),u=this.getAnimateCfg(h),d=u.animate,c=u.animateOption;return h.animate=d,h.animateOption=c,h},t.prototype.getCircleGridCfg=function(e,t,i,n){if(l5(rc(this.view.getTheme(),i),t)){var r=l1(this.view.getTheme(),x.RADIUS),o=(0,em.b$)({container:(0,em.U2)(t,["top"])?this.gridForeContainer:this.gridContainer,center:this.view.getCoordinate().getCenter()},r,(0,em.U2)(t,"grid"),this.getAnimateCfg(t)),s=(0,em.U2)(o,"alignTick",!0),a="x"===n?this.view.getYScales()[0]:this.view.getXScale();return o.items=l4(this.view.getCoordinate(),a,e,s,n),o}},t.prototype.getId=function(e,t){return e+"-"+t+"-"+this.view.getCoordinate().type},t.prototype.getAnimateCfg=function(e){return{animate:this.view.getOptions().animate&&(0,em.U2)(e,"animate"),animateOption:e&&e.animateOption?(0,em.b$)({},l3,e.animateOption):l3}},t}(oL);function l7(e,t,i){return i===x.TOP?[e.minX+e.width/2-t.width/2,e.minY]:i===x.BOTTOM?[e.minX+e.width/2-t.width/2,e.maxY-t.height]:i===x.LEFT?[e.minX,e.minY+e.height/2-t.height/2]:i===x.RIGHT?[e.maxX-t.width,e.minY+e.height/2-t.height/2]:i===x.TOP_LEFT||i===x.LEFT_TOP?[e.tl.x,e.tl.y]:i===x.TOP_RIGHT||i===x.RIGHT_TOP?[e.tr.x-t.width,e.tr.y]:i===x.BOTTOM_LEFT||i===x.LEFT_BOTTOM?[e.bl.x,e.bl.y-t.height]:i===x.BOTTOM_RIGHT||i===x.RIGHT_BOTTOM?[e.br.x-t.width,e.br.y-t.height]:[0,0]}function l8(e,t){return(0,em.jn)(e)?!1!==e&&{}:(0,em.U2)(e,[t],e)}function he(e){return(0,em.U2)(e,"position",x.BOTTOM)}var ht=function(e){function t(t){var i=e.call(this,t)||this;return i.container=i.view.getLayer(O.FORE).addGroup(),i}return(0,ef.ZT)(t,e),Object.defineProperty(t.prototype,"name",{get:function(){return"legend"},enumerable:!1,configurable:!0}),t.prototype.init=function(){},t.prototype.render=function(){this.update()},t.prototype.layout=function(){var e=this;this.layoutBBox=this.view.viewBBox,(0,em.S6)(this.components,function(t){var i=t.component,n=t.direction,r=st(n),o=i.get("maxWidthRatio"),s=i.get("maxHeightRatio"),a=e.getCategoryLegendSizeCfg(r,o,s),l=i.get("maxWidth"),h=i.get("maxHeight");i.update({maxWidth:Math.min(a.maxWidth,l||0),maxHeight:Math.min(a.maxHeight,h||0)});var u=i.get("padding"),d=i.getLayoutBBox(),c=new re(d.x,d.y,d.width,d.height).expand(u),g=l7(e.view.viewBBox,c,n),p=g[0],f=g[1],m=l7(e.layoutBBox,c,n),v=m[0],E=m[1],_=0,C=0;n.startsWith("top")||n.startsWith("bottom")?(_=p,C=E):(_=v,C=f),i.setLocation({x:_+u[3],y:C+u[0]}),e.layoutBBox=e.layoutBBox.cut(c,n)})},t.prototype.update=function(){var e=this;this.option=this.view.getOptions().legends;var t={};if((0,em.U2)(this.option,"custom")){var i="global-custom",n=this.getComponentById(i);if(n){var r=this.getCategoryCfg(void 0,void 0,void 0,this.option,!0);n7(r,["container"]),n.component.update(r),t[i]=!0}else{var o=this.createCustomLegend(void 0,void 0,void 0,this.option);if(o){o.init();var s=O.FORE,a=he(this.option);this.components.push({id:i,component:o,layer:s,direction:a,type:D.LEGEND,extra:void 0}),t[i]=!0}}}else this.loopLegends(function(i,n,r){var o=e.getId(r.field),s=e.getComponentById(o);if(s){var a=void 0,l=l8(e.option,r.field);!1!==l&&((0,em.U2)(l,"custom")?a=e.getCategoryCfg(i,n,r,l,!0):r.isLinear?a=e.getContinuousCfg(i,n,r,l):r.isCategory&&(a=e.getCategoryCfg(i,n,r,l))),a&&(n7(a,["container"]),s.direction=he(l),s.component.update(a),t[o]=!0)}else{var h=e.createFieldLegend(i,n,r);h&&(h.component.init(),e.components.push(h),t[o]=!0)}});var l=[];(0,em.S6)(this.getComponents(),function(e){t[e.id]?l.push(e):e.component.destroy()}),this.components=l},t.prototype.clear=function(){e.prototype.clear.call(this),this.container.clear()},t.prototype.destroy=function(){e.prototype.destroy.call(this),this.container.remove(!0)},t.prototype.getGeometries=function(e){var t=this,i=e.geometries;return(0,em.S6)(e.views,function(e){i=i.concat(t.getGeometries(e))}),i},t.prototype.loopLegends=function(e){if(this.view.getRootView()===this.view){var t=this.getGeometries(this.view),i={};(0,em.S6)(t,function(t){var n=t.getGroupAttributes();(0,em.S6)(n,function(n){var r=n.getScale(n.type);r&&"identity"!==r.type&&!i[r.field]&&(e(t,n,r),i[r.field]=!0)})})}},t.prototype.createFieldLegend=function(e,t,i){var n,r=l8(this.option,i.field),o=O.FORE,s=he(r);if(!1!==r&&((0,em.U2)(r,"custom")?n=this.createCustomLegend(e,t,i,r):i.isLinear?n=this.createContinuousLegend(e,t,i,r):i.isCategory&&(n=this.createCategoryLegend(e,t,i,r))),n)return n.set("field",i.field),{id:this.getId(i.field),component:n,layer:o,direction:s,type:D.LEGEND,extra:{scale:i}}},t.prototype.createCustomLegend=function(e,t,i,n){var r=this.getCategoryCfg(e,t,i,n,!0);return new nA(r)},t.prototype.createContinuousLegend=function(e,t,i,n){var r=this.getContinuousCfg(e,t,i,n7(n,["value"]));return new nR(r)},t.prototype.createCategoryLegend=function(e,t,i,n){var r=this.getCategoryCfg(e,t,i,n);return new nA(r)},t.prototype.getContinuousCfg=function(e,t,i,n){var r=i.getTicks(),o=(0,em.sE)(r,function(e){return 0===e.value}),s=(0,em.sE)(r,function(e){return 1===e.value}),a=r.map(function(e){var n=e.value,r=e.tickValue,o=t.mapping(i.invert(n)).join("");return{value:r,attrValue:o,color:o,scaleValue:n}});o||a.push({value:i.min,attrValue:t.mapping(i.invert(0)).join(""),color:t.mapping(i.invert(0)).join(""),scaleValue:0}),s||a.push({value:i.max,attrValue:t.mapping(i.invert(1)).join(""),color:t.mapping(i.invert(1)).join(""),scaleValue:1}),a.sort(function(e,t){return e.value-t.value});var l={min:(0,em.YM)(a).value,max:(0,em.Z$)(a).value,colors:[],rail:{type:t.type},track:{}};"size"===t.type&&(l.track={style:{fill:"size"===t.type?this.view.getTheme().defaultColor:void 0}}),"color"===t.type&&(l.colors=a.map(function(e){return e.attrValue}));var h=this.container,u=st(he(n)),d=(0,em.U2)(n,"title");return d&&(d=(0,em.b$)({text:ra(i)},d)),l.container=h,l.layout=u,l.title=d,l.animateOption=ox,this.mergeLegendCfg(l,n,"continuous")},t.prototype.getCategoryCfg=function(e,t,i,n,r){var o=this.container,s=(0,em.U2)(n,"position",x.BOTTOM),a=sn(this.view.getTheme(),s),l=(0,em.U2)(a,["marker"]),h=(0,em.U2)(n,"marker"),u=st(s),d=(0,em.U2)(a,["pageNavigator"]),c=(0,em.U2)(n,"pageNavigator"),g=r?n.items.map(function(e,t){var i=h;(0,em.mf)(i)&&(i=i(e.name,t,(0,em.b$)({},l,e)));var n=(0,em.mf)(e.marker)?e.marker(e.name,t,(0,em.b$)({},l,e)):e.marker,r=(0,em.b$)({},l,i,n);return se(r),e.marker=r,e}):si(this.view,e,t,l,h),p=(0,em.U2)(n,"title");p&&(p=(0,em.b$)({text:i?ra(i):""},p));var f=(0,em.U2)(n,"maxWidthRatio"),m=(0,em.U2)(n,"maxHeightRatio"),v=this.getCategoryLegendSizeCfg(u,f,m);v.container=o,v.layout=u,v.items=g,v.title=p,v.animateOption=ox,v.pageNavigator=(0,em.b$)({},d,c);var E=this.mergeLegendCfg(v,n,s);E.reversed&&E.items.reverse();var _=(0,em.U2)(E,"maxItemWidth");return _&&_<=1&&(E.maxItemWidth=this.view.viewBBox.width*_),E},t.prototype.mergeLegendCfg=function(e,t,i){var n=i.split("-")[0],r=sn(this.view.getTheme(),n);return(0,em.b$)({},r,e,t)},t.prototype.getId=function(e){return this.name+"-"+e},t.prototype.getComponentById=function(e){return(0,em.sE)(this.components,function(t){return t.id===e})},t.prototype.getCategoryLegendSizeCfg=function(e,t,i){void 0===t&&(t=.25),void 0===i&&(i=.25);var n=this.view.viewBBox,r=n.width,o=n.height;return"vertical"===e?{maxWidth:r*t,maxHeight:o}:{maxWidth:r,maxHeight:o*i}},t}(oL),hi=function(e){function t(t){var i=e.call(this,t)||this;return i.onChangeFn=em.ZT,i.resetMeasure=function(){i.clear()},i.onValueChange=function(e){var t=e[0],n=e[1];i.start=t,i.end=n,i.changeViewData(t,n)},i.container=i.view.getLayer(O.FORE).addGroup(),i.onChangeFn=(0,em.P2)(i.onValueChange,20,{leading:!0}),i.width=0,i.view.on(M.BEFORE_CHANGE_DATA,i.resetMeasure),i.view.on(M.BEFORE_CHANGE_SIZE,i.resetMeasure),i}return(0,ef.ZT)(t,e),Object.defineProperty(t.prototype,"name",{get:function(){return"slider"},enumerable:!1,configurable:!0}),t.prototype.destroy=function(){e.prototype.destroy.call(this),this.view.off(M.BEFORE_CHANGE_DATA,this.resetMeasure),this.view.off(M.BEFORE_CHANGE_SIZE,this.resetMeasure)},t.prototype.init=function(){},t.prototype.render=function(){this.option=this.view.getOptions().slider;var e=this.getSliderCfg(),t=e.start,i=e.end;(0,em.UM)(this.start)&&(this.start=t,this.end=i);var n=this.view.getOptions().data;this.option&&!(0,em.xb)(n)?this.slider?this.slider=this.updateSlider():(this.slider=this.createSlider(),this.slider.component.on("sliderchange",this.onChangeFn)):this.slider&&(this.slider.component.destroy(),this.slider=void 0)},t.prototype.layout=function(){var e=this;if(this.option&&!this.width&&(this.measureSlider(),setTimeout(function(){e.view.destroyed||e.changeViewData(e.start,e.end)},0)),this.slider){var t=this.view.coordinateBBox.width,i=this.slider.component.get("padding"),n=i[0],r=(i[1],i[2],i[3]),o=this.slider.component.getLayoutBBox(),s=new re(o.x,o.y,Math.min(o.width,t),o.height).expand(i),a=this.getMinMaxText(this.start,this.end),l=a.minText,h=a.maxText,u=l7(this.view.viewBBox,s,x.BOTTOM),d=(u[0],u[1]),c=l7(this.view.coordinateBBox,s,x.BOTTOM),g=c[0];c[1],this.slider.component.update((0,ef.pi)((0,ef.pi)({},this.getSliderCfg()),{x:g+r,y:d+n,width:this.width,start:this.start,end:this.end,minText:l,maxText:h})),this.view.viewBBox=this.view.viewBBox.cut(s,x.BOTTOM)}},t.prototype.update=function(){this.render()},t.prototype.createSlider=function(){var e=this.getSliderCfg(),t=new nq((0,ef.pi)({container:this.container},e));return t.init(),{component:t,layer:O.FORE,direction:x.BOTTOM,type:D.SLIDER}},t.prototype.updateSlider=function(){var e=this.getSliderCfg();if(this.width){var t=this.getMinMaxText(this.start,this.end),i=t.minText,n=t.maxText;e=(0,ef.pi)((0,ef.pi)({},e),{width:this.width,start:this.start,end:this.end,minText:i,maxText:n})}return this.slider.component.update(e),this.slider},t.prototype.measureSlider=function(){var e=this.getSliderCfg().width;this.width=e},t.prototype.getSliderCfg=function(){var e={height:16,start:0,end:1,minText:"",maxText:"",x:0,y:0,width:this.view.coordinateBBox.width};if((0,em.Kn)(this.option)){var t=(0,ef.pi)({data:this.getData()},(0,em.U2)(this.option,"trendCfg",{}));e=(0,em.b$)({},e,this.getThemeOptions(),this.option),e=(0,ef.pi)((0,ef.pi)({},e),{trendCfg:t})}return e.start=(0,em.uZ)(Math.min((0,em.UM)(e.start)?0:e.start,(0,em.UM)(e.end)?1:e.end),0,1),e.end=(0,em.uZ)(Math.max((0,em.UM)(e.start)?0:e.start,(0,em.UM)(e.end)?1:e.end),0,1),e},t.prototype.getData=function(){var e=this.view.getOptions().data,t=this.view.getYScales()[0],i=this.view.getGroupScales();if(i.length){var n=i[0],r=n.field,o=n.ticks;return e.reduce(function(e,i){return i[r]===o[0]&&e.push(i[t.field]),e},[])}return e.map(function(e){return e[t.field]||0})},t.prototype.getThemeOptions=function(){var e=this.view.getTheme();return(0,em.U2)(e,["components","slider","common"],{})},t.prototype.getMinMaxText=function(e,t){var i=this.view.getOptions().data,n=this.view.getXScale(),r=(0,em.I)(i,n.field),o=(0,em.dp)(i);if(!n||!o)return{};var s=(0,em.dp)(r),a=Math.floor(e*(s-1)),l=Math.floor(t*(s-1)),h=(0,em.U2)(r,[a]),u=(0,em.U2)(r,[l]),d=this.getSliderCfg().formatter;return d&&(h=d(h,i[a],a),u=d(u,i[l],l)),{minText:h,maxText:u}},t.prototype.changeViewData=function(e,t){var i=this.view.getOptions().data,n=this.view.getXScale(),r=(0,em.dp)(i);if(n&&r){var o=(0,em.I)(i,n.field),s=(0,em.dp)(o),a=Math.floor(e*(s-1)),l=Math.floor(t*(s-1));this.view.filter(n.field,function(e,t){var i=o.indexOf(e);return!(i>-1)||n9(i,a,l)}),this.view.render(!0)}},t.prototype.getComponents=function(){return this.slider?[this.slider]:[]},t.prototype.clear=function(){this.slider&&(this.slider.component.destroy(),this.slider=void 0),this.width=0,this.start=void 0,this.end=void 0},t}(oL),hn=function(e){function t(t){var i=e.call(this,t)||this;return i.onChangeFn=em.ZT,i.resetMeasure=function(){i.clear()},i.onValueChange=function(e){var t=e.ratio,n=i.getValidScrollbarCfg().animate;i.ratio=(0,em.uZ)(t,0,1);var r=i.view.getOptions().animate;n||i.view.animate(!1),i.changeViewData(i.getScrollRange(),!0),i.view.animate(r)},i.container=i.view.getLayer(O.FORE).addGroup(),i.onChangeFn=(0,em.P2)(i.onValueChange,20,{leading:!0}),i.trackLen=0,i.thumbLen=0,i.ratio=0,i.view.on(M.BEFORE_CHANGE_DATA,i.resetMeasure),i.view.on(M.BEFORE_CHANGE_SIZE,i.resetMeasure),i}return(0,ef.ZT)(t,e),Object.defineProperty(t.prototype,"name",{get:function(){return"scrollbar"},enumerable:!1,configurable:!0}),t.prototype.destroy=function(){e.prototype.destroy.call(this),this.view.off(M.BEFORE_CHANGE_DATA,this.resetMeasure),this.view.off(M.BEFORE_CHANGE_SIZE,this.resetMeasure)},t.prototype.init=function(){},t.prototype.render=function(){this.option=this.view.getOptions().scrollbar,this.option?this.scrollbar?this.scrollbar=this.updateScrollbar():(this.scrollbar=this.createScrollbar(),this.scrollbar.component.on("scrollchange",this.onChangeFn)):this.scrollbar&&(this.scrollbar.component.destroy(),this.scrollbar=void 0)},t.prototype.layout=function(){var e=this;if(this.option&&!this.trackLen&&(this.measureScrollbar(),setTimeout(function(){e.view.destroyed||e.changeViewData(e.getScrollRange(),!0)})),this.scrollbar){var t=this.view.coordinateBBox.width,i=this.scrollbar.component.get("padding"),n=this.scrollbar.component.getLayoutBBox(),r=new re(n.x,n.y,Math.min(n.width,t),n.height).expand(i),o=this.getScrollbarComponentCfg(),s=void 0,a=void 0;if(o.isHorizontal){var l=l7(this.view.viewBBox,r,x.BOTTOM),h=l[0],u=l[1],d=l7(this.view.coordinateBBox,r,x.BOTTOM),c=d[0],g=d[1];s=c,a=u}else{var p=l7(this.view.viewBBox,r,x.RIGHT),h=p[0],u=p[1],f=l7(this.view.viewBBox,r,x.RIGHT),c=f[0],g=f[1];s=c,a=u}s+=i[3],a+=i[0],this.trackLen?this.scrollbar.component.update((0,ef.pi)((0,ef.pi)({},o),{x:s,y:a,trackLen:this.trackLen,thumbLen:this.thumbLen,thumbOffset:(this.trackLen-this.thumbLen)*this.ratio})):this.scrollbar.component.update((0,ef.pi)((0,ef.pi)({},o),{x:s,y:a})),this.view.viewBBox=this.view.viewBBox.cut(r,o.isHorizontal?x.BOTTOM:x.RIGHT)}},t.prototype.update=function(){this.render()},t.prototype.getComponents=function(){return this.scrollbar?[this.scrollbar]:[]},t.prototype.clear=function(){this.scrollbar&&(this.scrollbar.component.destroy(),this.scrollbar=void 0),this.trackLen=0,this.thumbLen=0,this.ratio=0,this.cnt=0,this.step=0,this.data=void 0,this.xScaleCfg=void 0,this.yScalesCfg=[]},t.prototype.setValue=function(e){this.onValueChange({ratio:e})},t.prototype.getValue=function(){return this.ratio},t.prototype.getThemeOptions=function(){var e=this.view.getTheme();return(0,em.U2)(e,["components","scrollbar","common"],{})},t.prototype.getScrollbarTheme=function(e){var t=(0,em.U2)(this.view.getTheme(),["components","scrollbar"]),i=e||{},n=i.thumbHighlightColor,r=(0,ef._T)(i,["thumbHighlightColor"]);return{default:(0,em.b$)({},(0,em.U2)(t,["default","style"],{}),r),hover:(0,em.b$)({},(0,em.U2)(t,["hover","style"],{}),{thumbColor:n})}},t.prototype.measureScrollbar=function(){var e=this.view.getXScale(),t=this.view.getYScales().slice();this.data=this.getScrollbarData(),this.step=this.getStep(),this.cnt=this.getCnt();var i=this.getScrollbarComponentCfg(),n=i.trackLen,r=i.thumbLen;this.trackLen=n,this.thumbLen=r,this.xScaleCfg={field:e.field,values:e.values||[]},this.yScalesCfg=t},t.prototype.getScrollRange=function(){var e=Math.floor((this.cnt-this.step)*(0,em.uZ)(this.ratio,0,1)),t=Math.min(e+this.step-1,this.cnt-1);return[e,t]},t.prototype.changeViewData=function(e,t){var i=this,n=e[0],r=e[1],o=this.getValidScrollbarCfg().type,s=(0,em.I)(this.data,this.xScaleCfg.field),a="vertical"!==o?s:s.reverse();this.yScalesCfg.forEach(function(e){i.view.scale(e.field,{formatter:e.formatter,type:e.type,min:e.min,max:e.max})}),this.view.filter(this.xScaleCfg.field,function(e){var t=a.indexOf(e);return!(t>-1)||n9(t,n,r)}),this.view.render(!0)},t.prototype.createScrollbar=function(){var e=this.getValidScrollbarCfg().type,t=new nQ((0,ef.pi)((0,ef.pi)({container:this.container},this.getScrollbarComponentCfg()),{x:0,y:0}));return t.init(),{component:t,layer:O.FORE,direction:"vertical"!==e?x.BOTTOM:x.RIGHT,type:D.SCROLLBAR}},t.prototype.updateScrollbar=function(){var e=this.getScrollbarComponentCfg(),t=this.trackLen?(0,ef.pi)((0,ef.pi)({},e),{trackLen:this.trackLen,thumbLen:this.thumbLen,thumbOffset:(this.trackLen-this.thumbLen)*this.ratio}):(0,ef.pi)({},e);return this.scrollbar.component.update(t),this.scrollbar},t.prototype.getStep=function(){if(this.step)return this.step;var e=this.view.coordinateBBox,t=this.getValidScrollbarCfg(),i=t.type,n=t.categorySize;return Math.floor(("vertical"!==i?e.width:e.height)/n)},t.prototype.getCnt=function(){if(this.cnt)return this.cnt;var e=this.view.getXScale(),t=this.getScrollbarData(),i=(0,em.I)(t,e.field);return(0,em.dp)(i)},t.prototype.getScrollbarComponentCfg=function(){var e=this.view,t=e.coordinateBBox,i=e.viewBBox,n=this.getValidScrollbarCfg(),r=n.type,o=n.padding,s=n.width,a=n.height,l=n.style,h="vertical"!==r,u=o[0],d=o[1],c=o[2],g=o[3],p=h?{x:t.minX+g,y:i.maxY-a-c}:{x:i.maxX-s-d,y:t.minY+u},f=this.getStep(),m=this.getCnt(),v=h?t.width-g-d:t.height-u-c,E=Math.max(v*(0,em.uZ)(f/m,0,1),20);return(0,ef.pi)((0,ef.pi)({},this.getThemeOptions()),{x:p.x,y:p.y,size:h?a:s,isHorizontal:h,trackLen:v,thumbLen:E,thumbOffset:0,theme:this.getScrollbarTheme(l)})},t.prototype.getValidScrollbarCfg=function(){var e={type:"horizontal",categorySize:32,width:8,height:8,padding:[0,0,0,0],animate:!0,style:{}};return(0,em.Kn)(this.option)&&(e=(0,ef.pi)((0,ef.pi)({},e),this.option)),(0,em.Kn)(this.option)&&this.option.padding||(e.padding=(e.type,[0,0,0,0])),e},t.prototype.getScrollbarData=function(){var e=this.view.getCoordinate(),t=this.getValidScrollbarCfg(),i=this.view.getOptions().data||[];return e.isReflect("y")&&"vertical"===t.type&&(i=(0,ef.ev)([],i,!0).reverse()),i},t}(oL),hr={fill:"#CCD6EC",opacity:.3},ho=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.show=function(e){var t=this.context.view,i=this.context.event,n=t.getController("tooltip").getTooltipCfg(),r=function(e,t,i){var n=function(e,t,i){for(var n=of(e,t,i),r=0,o=e.views;r1){for(var c=n[0],g=Math.abs(t.y-c[0].y),p=0,f=n;pd.maxY&&(d=t)):(t.minXd.maxX&&(d=t)),c.x=Math.min(t.minX,c.minX),c.y=Math.min(t.minY,c.minY),c.width=Math.max(t.maxX,c.maxX)-c.x,c.height=Math.max(t.maxY,c.maxY)-c.y});var g=t.backgroundGroup,p=t.coordinateBBox,f=void 0;if(h.isRect){var m=t.getXScale(),v=e||{},E=v.appendRatio,_=v.appendWidth;(0,em.UM)(_)&&(E=(0,em.UM)(E)?m.isLinear?0:.25:E,_=h.isTransposed?E*d.height:E*u.width);var C=void 0,S=void 0,y=void 0,T=void 0;h.isTransposed?(C=p.minX,S=Math.min(d.minY,u.minY)-_,y=p.width,T=c.height+2*_):(C=Math.min(u.minX,d.minX)-_,S=p.minY,y=c.width+2*_,T=p.height),f=[["M",C,S],["L",C+y,S],["L",C+y,S+T],["L",C,S+T],["Z"]]}else{var b=(0,em.YM)(a),A=(0,em.Z$)(a),R=n6(b.getModel(),h).startAngle,L=n6(A.getModel(),h).endAngle,N=h.getCenter(),I=h.getRadius(),w=h.innerRadius*I;f=n4(N.x,N.y,I,R,L,w)}if(this.regionPath)this.regionPath.attr("path",f),this.regionPath.show();else{var O=(0,em.U2)(e,"style",hr);this.regionPath=g.addShape({type:"path",name:"active-region",capture:!1,attrs:(0,ef.pi)((0,ef.pi)({},O),{path:f})})}}}},t.prototype.hide=function(){this.regionPath&&this.regionPath.hide(),this.items=null},t.prototype.destroy=function(){this.hide(),this.regionPath&&this.regionPath.remove(!0),e.prototype.destroy.call(this)},t}(rS),hs=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.timeStamp=0,t}return(0,ef.ZT)(t,e),t.prototype.show=function(){var e=this.context,t=e.event,i=e.view;if(!i.isTooltipLocked()){var n=this.timeStamp,r=+new Date;if(r-n>(0,em.U2)(e.view.getOptions(),"tooltip.showDelay",16)){var o=this.location,s={x:t.x,y:t.y};o&&(0,em.Xy)(o,s)||this.showTooltip(i,s),this.timeStamp=r,this.location=s}}},t.prototype.hide=function(){var e=this.context.view,t=e.getController("tooltip"),i=this.context.event,n=i.clientX,r=i.clientY;t.isCursorEntered({x:n,y:r})||e.isTooltipLocked()||(this.hideTooltip(e),this.location=null)},t.prototype.showTooltip=function(e,t){e.showTooltip(t)},t.prototype.hideTooltip=function(e){e.hideTooltip()},t}(rS),ha=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.showTooltip=function(e,t){var i=rj(e);(0,em.S6)(i,function(i){var n=rq(e,i,t);i.showTooltip(n)})},t.prototype.hideTooltip=function(e){var t=rj(e);(0,em.S6)(t,function(e){e.hideTooltip()})},t}(hs),hl=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.timeStamp=0,t}return(0,ef.ZT)(t,e),t.prototype.destroy=function(){e.prototype.destroy.call(this),this.tooltip&&this.tooltip.destroy()},t.prototype.show=function(){var e=this.context.event,t=this.timeStamp,i=+new Date;if(i-t>16){var n=this.location,r={x:e.x,y:e.y};n&&(0,em.Xy)(n,r)||this.showTooltip(r),this.timeStamp=i,this.location=r}},t.prototype.hide=function(){this.hideTooltip(),this.location=null},t.prototype.showTooltip=function(e){var t=this.context.event.target;if(t&&t.get("tip")){this.tooltip||this.renderTooltip();var i=t.get("tip");this.tooltip.update((0,ef.pi)({title:i},e)),this.tooltip.show()}},t.prototype.hideTooltip=function(){this.tooltip&&this.tooltip.hide()},t.prototype.renderTooltip=function(){var e,t=this.context.view,i=t.canvas,n={start:{x:0,y:0},end:{x:i.get("width"),y:i.get("height")}},r=t.getTheme(),o=(0,em.U2)(r,["components","tooltip","domStyles"],{}),s=new nF({parent:i.get("el").parentNode,region:n,visible:!1,crosshairs:null,domStyles:(0,ef.pi)({},(0,em.b$)({},o,((e={})[nL]={"max-width":"50%"},e[nN]={"word-break":"break-all"},e)))});s.init(),s.setCapture(!1),this.tooltip=s},t}(rS),hh=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.stateName="",t}return(0,ef.ZT)(t,e),t.prototype.hasState=function(e){return e.hasState(this.stateName)},t.prototype.setElementState=function(e,t){e.setState(this.stateName,t)},t.prototype.setState=function(){this.setStateEnable(!0)},t.prototype.clear=function(){var e=this.context.view;this.clearViewState(e)},t.prototype.clearViewState=function(e){var t=this,i=rW(e,this.stateName);(0,em.S6)(i,function(e){t.setElementState(e,!1)})},t}(rS);function hu(e){return(0,em.U2)(e.get("delegateObject"),"item")}var hd=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.ignoreListItemStates=["unchecked"],t}return(0,ef.ZT)(t,e),t.prototype.isItemIgnore=function(e,t){return!!this.ignoreListItemStates.filter(function(i){return t.hasState(e,i)}).length},t.prototype.setStateByComponent=function(e,t,i){var n=this.context.view,r=e.get("field"),o=rV(n);this.setElementsStateByItem(o,r,t,i)},t.prototype.setStateByElement=function(e,t){this.setElementState(e,t)},t.prototype.isMathItem=function(e,t,i){var n=rJ(this.context.view,t),r=rG(e,t);return!(0,em.UM)(r)&&i.name===n.getText(r)},t.prototype.setElementsStateByItem=function(e,t,i,n){var r=this;(0,em.S6)(e,function(e){r.isMathItem(e,t,i)&&e.setState(r.stateName,n)})},t.prototype.setStateEnable=function(e){var t=rD(this.context);if(t)rk(this.context)&&this.setStateByElement(t,e);else{var i=rM(this.context);if(rP(i)){var n=i.item,r=i.component;if(n&&r&&!this.isItemIgnore(n,r)){var o=this.context.event.gEvent;if(o&&o.fromShape&&o.toShape&&hu(o.fromShape)===hu(o.toShape))return;this.setStateByComponent(r,n,e)}}}},t.prototype.toggle=function(){var e=rD(this.context);if(e){var t=e.hasState(this.stateName);this.setElementState(e,!t)}},t.prototype.reset=function(){this.setStateEnable(!1)},t}(hh),hc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.stateName="active",t}return(0,ef.ZT)(t,e),t.prototype.active=function(){this.setState()},t}(hd),hg=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.cache={},t}return(0,ef.ZT)(t,e),t.prototype.getColorScale=function(e,t){var i=t.geometry.getAttribute("color");return i?e.getScaleByField(i.getFields()[0]):null},t.prototype.getLinkPath=function(e,t){var i=this.context.view.getCoordinate().isTransposed,n=e.shape.getCanvasBBox(),r=t.shape.getCanvasBBox();return i?[["M",n.minX,n.minY],["L",r.minX,r.maxY],["L",r.maxX,r.maxY],["L",n.maxX,n.minY],["Z"]]:[["M",n.maxX,n.minY],["L",r.minX,r.minY],["L",r.minX,r.maxY],["L",n.maxX,n.maxY],["Z"]]},t.prototype.addLinkShape=function(e,t,i,n){var r={opacity:.4,fill:t.shape.attr("fill")};e.addShape({type:"path",attrs:(0,ef.pi)((0,ef.pi)({},(0,em.b$)({},r,(0,em.mf)(n)?n(r,t):n)),{path:this.getLinkPath(t,i)})})},t.prototype.linkByElement=function(e,t){var i=this,n=this.context.view,r=this.getColorScale(n,e);if(r){var o=rG(e,r.field);if(!this.cache[o]){var s,a=(s=r.field,rV(n).filter(function(e){return rG(e,s)===o})),l=this.linkGroup.addGroup();this.cache[o]=l;var h=a.length;(0,em.S6)(a,function(e,n){if(n=0},t)},t}(hp),hN=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.stateName="active",t}return(0,ef.ZT)(t,e),t.prototype.highlight=function(){this.setState()},t.prototype.setElementState=function(e,t){hS(rV(this.context.view),function(t){return e===t},t)},t.prototype.clear=function(){hC(this.context.view)},t}(hm),hI=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.stateName="selected",t}return(0,ef.ZT)(t,e),t.prototype.selected=function(){this.setState()},t}(hp),hw=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.stateName="selected",t}return(0,ef.ZT)(t,e),t.prototype.selected=function(){this.setState()},t}(hd),hO=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.stateName="selected",t}return(0,ef.ZT)(t,e),t.prototype.selected=function(){this.setState()},t}(hm),hx=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.stateName="",t.ignoreItemStates=[],t}return(0,ef.ZT)(t,e),t.prototype.getTriggerListInfo=function(){var e=rM(this.context),t=null;return rP(e)&&(t={item:e.item,list:e.component}),t},t.prototype.getAllowComponents=function(){var e=this,t=rK(this.context.view),i=[];return(0,em.S6)(t,function(t){t.isList()&&e.allowSetStateByElement(t)&&i.push(t)}),i},t.prototype.hasState=function(e,t){return e.hasState(t,this.stateName)},t.prototype.clearAllComponentsState=function(){var e=this,t=this.getAllowComponents();(0,em.S6)(t,function(t){t.clearItemsState(e.stateName)})},t.prototype.allowSetStateByElement=function(e){var t=e.get("field");if(!t)return!1;if(this.cfg&&this.cfg.componentNames){var i=e.get("name");if(-1===this.cfg.componentNames.indexOf(i))return!1}var n=rJ(this.context.view,t);return n&&n.isCategory},t.prototype.allowSetStateByItem=function(e,t){var i=this.ignoreItemStates;return!i.length||0===i.filter(function(i){return t.hasState(e,i)}).length},t.prototype.setStateByElement=function(e,t,i){var n=e.get("field"),r=rJ(this.context.view,n),o=rG(t,n),s=r.getText(o);this.setItemsState(e,s,i)},t.prototype.setStateEnable=function(e){var t=this,i=rD(this.context);if(i){var n=this.getAllowComponents();(0,em.S6)(n,function(n){t.setStateByElement(n,i,e)})}else{var r=rM(this.context);if(rP(r)){var o=r.item,s=r.component;this.allowSetStateByElement(s)&&this.allowSetStateByItem(o,s)&&this.setItemState(s,o,e)}}},t.prototype.setItemsState=function(e,t,i){var n=this,r=e.getItems();(0,em.S6)(r,function(r){r.name===t&&n.setItemState(e,r,i)})},t.prototype.setItemState=function(e,t,i){e.setItemState(t,this.stateName,i)},t.prototype.setState=function(){this.setStateEnable(!0)},t.prototype.reset=function(){this.setStateEnable(!1)},t.prototype.toggle=function(){var e=this.getTriggerListInfo();if(e&&e.item){var t=e.list,i=e.item,n=this.hasState(t,i);this.setItemState(t,i,!n)}},t.prototype.clear=function(){var e=this.getTriggerListInfo();e?e.list.clearItemsState(this.stateName):this.clearAllComponentsState()},t}(rS),hD=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.stateName="active",t}return(0,ef.ZT)(t,e),t.prototype.active=function(){this.setState()},t}(hx),hM="inactive",hk="active",hP="inactive",hF="active",hB=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.stateName=hF,t.ignoreItemStates=["unchecked"],t}return(0,ef.ZT)(t,e),t.prototype.setItemsState=function(e,t,i){this.setHighlightBy(e,function(e){return e.name===t},i)},t.prototype.setItemState=function(e,t,i){e.getItems(),this.setHighlightBy(e,function(e){return e===t},i)},t.prototype.setHighlightBy=function(e,t,i){var n=e.getItems();if(i)(0,em.S6)(n,function(i){t(i)?(e.hasState(i,hP)&&e.setItemState(i,hP,!1),e.setItemState(i,hF,!0)):e.hasState(i,hF)||e.setItemState(i,hP,!0)});else{var r=e.getItemsByState(hF),o=!0;(0,em.S6)(r,function(e){if(!t(e))return o=!1,!1}),o?this.clear():(0,em.S6)(n,function(i){t(i)&&(e.hasState(i,hF)&&e.setItemState(i,hF,!1),e.setItemState(i,hP,!0))})}},t.prototype.highlight=function(){this.setState()},t.prototype.clear=function(){var e,t,i=this.getTriggerListInfo();if(i)t=(e=i.list).getItems(),(0,em.S6)(t,function(t){e.hasState(t,hk)&&e.setItemState(t,hk,!1),e.hasState(t,hM)&&e.setItemState(t,hM,!1)});else{var n=this.getAllowComponents();(0,em.S6)(n,function(e){e.clearItemsState(hF),e.clearItemsState(hP)})}},t}(hx),hU=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.stateName="selected",t}return(0,ef.ZT)(t,e),t.prototype.selected=function(){this.setState()},t}(hx),hH=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.stateName="unchecked",t}return(0,ef.ZT)(t,e),t.prototype.unchecked=function(){this.setState()},t}(hx),hV="unchecked",hW="checked",hG=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.stateName=hW,t}return(0,ef.ZT)(t,e),t.prototype.setItemState=function(e,t,i){this.setCheckedBy(e,function(e){return e===t},i)},t.prototype.setCheckedBy=function(e,t,i){var n=e.getItems();i&&(0,em.S6)(n,function(i){t(i)?(e.hasState(i,hV)&&e.setItemState(i,hV,!1),e.setItemState(i,hW,!0)):e.hasState(i,hW)||e.setItemState(i,hV,!0)})},t.prototype.toggle=function(){var e=this.getTriggerListInfo();if(e&&e.item){var t=e.list,i=e.item;!(0,em.G)(t.getItems(),function(e){return t.hasState(e,hV)})||t.hasState(i,hV)?this.setItemState(t,i,!0):this.reset()}},t.prototype.checked=function(){this.setState()},t.prototype.reset=function(){var e=this.getAllowComponents();(0,em.S6)(e,function(e){e.clearItemsState(hW),e.clearItemsState(hV)})},t}(hx),hz=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.maskShape=null,t.points=[],t.starting=!1,t.moving=!1,t.preMovePoint=null,t.shapeType="path",t}return(0,ef.ZT)(t,e),t.prototype.getCurrentPoint=function(){var e=this.context.event;return{x:e.x,y:e.y}},t.prototype.emitEvent=function(e){var t=this.context.view,i=this.context.event;t.emit("mask:"+e,{target:this.maskShape,shape:this.maskShape,points:this.points,x:i.x,y:i.y})},t.prototype.createMask=function(){var e=this.context.view,t=this.getMaskAttrs();return e.foregroundGroup.addShape({type:this.shapeType,name:"mask",draggable:!0,attrs:(0,ef.pi)({fill:"#C5D4EB",opacity:.3},t)})},t.prototype.getMaskPath=function(){return[]},t.prototype.show=function(){this.maskShape&&(this.maskShape.show(),this.emitEvent("show"))},t.prototype.start=function(e){this.starting=!0,this.moving=!1,this.points=[this.getCurrentPoint()],this.maskShape||(this.maskShape=this.createMask(),this.maskShape.set("capture",!1)),this.updateMask(null==e?void 0:e.maskStyle),this.emitEvent("start")},t.prototype.moveStart=function(){this.moving=!0,this.preMovePoint=this.getCurrentPoint()},t.prototype.move=function(){if(this.moving&&this.maskShape){var e=this.getCurrentPoint(),t=this.preMovePoint,i=e.x-t.x,n=e.y-t.y,r=this.points;(0,em.S6)(r,function(e){e.x+=i,e.y+=n}),this.updateMask(),this.emitEvent("change"),this.preMovePoint=e}},t.prototype.updateMask=function(e){var t=(0,em.b$)({},this.getMaskAttrs(),e);this.maskShape.attr(t)},t.prototype.moveEnd=function(){this.moving=!1,this.preMovePoint=null},t.prototype.end=function(){this.starting=!1,this.emitEvent("end"),this.maskShape&&this.maskShape.set("capture",!0)},t.prototype.hide=function(){this.maskShape&&(this.maskShape.hide(),this.emitEvent("hide"))},t.prototype.resize=function(){this.starting&&this.maskShape&&(this.points.push(this.getCurrentPoint()),this.updateMask(),this.emitEvent("change"))},t.prototype.destroy=function(){this.points=[],this.maskShape&&this.maskShape.remove(),this.maskShape=null,this.preMovePoint=null,e.prototype.destroy.call(this)},t}(rS),hY=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.shapeType="circle",t}return(0,ef.ZT)(t,e),t.prototype.getMaskAttrs=function(){var e=this.points,t=(0,em.Z$)(this.points),i=0,n=0,r=0;if(e.length){var o=e[0];i=r$(o,t)/2,n=(t.x+o.x)/2,r=(t.y+o.y)/2}return{x:n,y:r,r:i}},t}(hz),hK=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.shapeType="rect",t}return(0,ef.ZT)(t,e),t.prototype.getRegion=function(){var e=this.points;return{start:(0,em.YM)(e),end:(0,em.Z$)(e)}},t.prototype.getMaskAttrs=function(){var e=this.getRegion(),t=e.start,i=e.end;return{x:Math.min(t.x,i.x),y:Math.min(t.y,i.y),width:Math.abs(i.x-t.x),height:Math.abs(i.y-t.y)}},t}(hz);function h$(e){e.x=(0,em.uZ)(e.x,0,1),e.y=(0,em.uZ)(e.y,0,1)}var hX=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.dim="x",t.inPlot=!0,t}return(0,ef.ZT)(t,e),t.prototype.getRegion=function(){var e=null,t=null,i=this.points,n=this.dim,r=this.context.view.getCoordinate(),o=r.invert((0,em.YM)(i)),s=r.invert((0,em.Z$)(i));return this.inPlot&&(h$(o),h$(s)),"x"===n?(e=r.convert({x:o.x,y:0}),t=r.convert({x:s.x,y:1})):(e=r.convert({x:0,y:o.y}),t=r.convert({x:1,y:s.y})),{start:e,end:t}},t}(hK),hj=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getMaskPath=function(){var e=this.points,t=[];return e.length&&((0,em.S6)(e,function(e,i){0===i?t.push(["M",e.x,e.y]):t.push(["L",e.x,e.y])}),t.push(["L",e[0].x,e[0].y])),t},t.prototype.getMaskAttrs=function(){return{path:this.getMaskPath()}},t.prototype.addPoint=function(){this.resize()},t}(hz),hq=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getMaskPath=function(){return function(e,t){if(e.length<=2)return rw(e,!1);var i=e[0],n=[];(0,em.S6)(e,function(e){n.push(e.x),n.push(e.y)});var r=rI(n,t,null);return r.unshift(["M",i.x,i.y]),r}(this.points,!0)},t}(hj),hZ=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.setCursor=function(e){this.context.view.getCanvas().setCursor(e)},t.prototype.default=function(){this.setCursor("default")},t.prototype.pointer=function(){this.setCursor("pointer")},t.prototype.move=function(){this.setCursor("move")},t.prototype.crosshair=function(){this.setCursor("crosshair")},t.prototype.wait=function(){this.setCursor("wait")},t.prototype.help=function(){this.setCursor("help")},t.prototype.text=function(){this.setCursor("text")},t.prototype.eResize=function(){this.setCursor("e-resize")},t.prototype.wResize=function(){this.setCursor("w-resize")},t.prototype.nResize=function(){this.setCursor("n-resize")},t.prototype.sResize=function(){this.setCursor("s-resize")},t.prototype.neResize=function(){this.setCursor("ne-resize")},t.prototype.nwResize=function(){this.setCursor("nw-resize")},t.prototype.seResize=function(){this.setCursor("se-resize")},t.prototype.swResize=function(){this.setCursor("sw-resize")},t.prototype.nsResize=function(){this.setCursor("ns-resize")},t.prototype.ewResize=function(){this.setCursor("ew-resize")},t}(rS),hJ=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.filterView=function(e,t,i){var n=this;e.getScaleByField(t)&&e.filter(t,i),e.views&&e.views.length&&(0,em.S6)(e.views,function(e){n.filterView(e,t,i)})},t.prototype.filter=function(){var e=rM(this.context);if(e){var t=this.context.view,i=e.component,n=i.get("field");if(rP(e)){if(n){var r=i.getItemsByState("unchecked"),o=rJ(t,n),s=r.map(function(e){return e.name});s.length?this.filterView(t,n,function(e){var t=o.getText(e);return!s.includes(t)}):this.filterView(t,n,null),t.render(!0)}}else if(rF(e)){var a=i.getValue(),l=a[0],h=a[1];this.filterView(t,n,function(e){return e>=l&&e<=h}),t.render(!0)}}},t}(rS);function hQ(e,t,i,n){var r=Math.min(i[t],n[t]),o=Math.max(i[t],n[t]),s=e.range,a=s[0],l=s[1];if(rl&&(o=l),r===l&&o===l)return null;var h=e.invert(r),u=e.invert(o);if(!e.isCategory)return function(e){return e>=h&&e<=u};var d=e.values.indexOf(h),c=e.values.indexOf(u),g=e.values.slice(d,c+1);return function(e){return g.includes(e)}}(b=$||($={})).FILTER="brush-filter-processing",b.RESET="brush-filter-reset",b.BEFORE_FILTER="brush-filter:beforefilter",b.AFTER_FILTER="brush-filter:afterfilter",b.BEFORE_RESET="brush-filter:beforereset",b.AFTER_RESET="brush-filter:afterreset";var h0=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.dims=["x","y"],t.startPoint=null,t.isStarted=!1,t}return(0,ef.ZT)(t,e),t.prototype.hasDim=function(e){return this.dims.includes(e)},t.prototype.start=function(){var e=this.context;this.isStarted=!0,this.startPoint=e.getCurrentPoint()},t.prototype.filter=function(){if(rB(this.context)){var e,t,i=this.context.event.target.getCanvasBBox();e={x:i.x,y:i.y},t={x:i.maxX,y:i.maxY}}else{if(!this.isStarted)return;e=this.startPoint,t=this.context.getCurrentPoint()}if(!(5>Math.abs(e.x-t.x)||5>Math.abs(e.x-t.y))){var n=this.context,r=n.view,o={view:r,event:n.event,dims:this.dims};r.emit($.BEFORE_FILTER,o_.fromData(r,$.BEFORE_FILTER,o));var s=r.getCoordinate(),a=s.invert(t),l=s.invert(e);if(this.hasDim("x")){var h=r.getXScale(),u=hQ(h,"x",a,l);this.filterView(r,h.field,u)}if(this.hasDim("y")){var d=r.getYScales()[0],u=hQ(d,"y",a,l);this.filterView(r,d.field,u)}this.reRender(r,{source:$.FILTER}),r.emit($.AFTER_FILTER,o_.fromData(r,$.AFTER_FILTER,o))}},t.prototype.end=function(){this.isStarted=!1},t.prototype.reset=function(){var e=this.context.view;if(e.emit($.BEFORE_RESET,o_.fromData(e,$.BEFORE_RESET,{})),this.isStarted=!1,this.hasDim("x")){var t=e.getXScale();this.filterView(e,t.field,null)}if(this.hasDim("y")){var i=e.getYScales()[0];this.filterView(e,i.field,null)}this.reRender(e,{source:$.RESET}),e.emit($.AFTER_RESET,o_.fromData(e,$.AFTER_RESET,{}))},t.prototype.filterView=function(e,t,i){e.filter(t,i)},t.prototype.reRender=function(e,t){e.render(!0,t)},t}(rS),h1=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.filterView=function(e,t,i){var n=rj(e);(0,em.S6)(n,function(e){e.filter(t,i)})},t.prototype.reRender=function(e){var t=rj(e);(0,em.S6)(t,function(e){e.render(!0)})},t}(h0),h2=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.filter=function(){var e=rM(this.context),t=this.context.view,i=rV(t);if(rB(this.context)){var n=rU(this.context,10);n&&(0,em.S6)(i,function(e){n.includes(e)?e.show():e.hide()})}else if(e){var r=e.component,o=r.get("field");if(rP(e)){if(o){var s=r.getItemsByState("unchecked"),a=rJ(t,o),l=s.map(function(e){return e.name});(0,em.S6)(i,function(e){var t=rG(e,o),i=a.getText(t);l.indexOf(i)>=0?e.hide():e.show()})}}else if(rF(e)){var h=r.getValue(),u=h[0],d=h[1];(0,em.S6)(i,function(e){var t=rG(e,o);t>=u&&t<=d?e.show():e.hide()})}}},t.prototype.clear=function(){var e=rV(this.context.view);(0,em.S6)(e,function(e){e.show()})},t.prototype.reset=function(){this.clear()},t}(rS),h4=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.byRecord=!1,t}return(0,ef.ZT)(t,e),t.prototype.filter=function(){rB(this.context)&&(this.byRecord?this.filterByRecord():this.filterByBBox())},t.prototype.filterByRecord=function(){var e=this.context.view,t=rU(this.context,10);if(t){var i=e.getXScale().field,n=e.getYScales()[0].field,r=t.map(function(e){return e.getModel().data}),o=rj(e);(0,em.S6)(o,function(e){var t=rV(e);(0,em.S6)(t,function(e){rZ(r,e.getModel().data,i,n)?e.show():e.hide()})})}},t.prototype.filterByBBox=function(){var e=this,t=rj(this.context.view);(0,em.S6)(t,function(t){var i=rH(e.context,t,10),n=rV(t);i&&(0,em.S6)(n,function(e){i.includes(e)?e.show():e.hide()})})},t.prototype.reset=function(){var e=rj(this.context.view);(0,em.S6)(e,function(e){var t=rV(e);(0,em.S6)(t,function(e){e.show()})})},t}(rS),h5=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.buttonGroup=null,t.buttonCfg={name:"button",text:"button",textStyle:{x:0,y:0,fontSize:12,fill:"#333333",cursor:"pointer"},padding:[8,10],style:{fill:"#f7f7f7",stroke:"#cccccc",cursor:"pointer"},activeStyle:{fill:"#e6e6e6"}},t}return(0,ef.ZT)(t,e),t.prototype.getButtonCfg=function(){return(0,em.b$)(this.buttonCfg,this.cfg)},t.prototype.drawButton=function(){var e=this.getButtonCfg(),t=this.context.view.foregroundGroup.addGroup({name:e.name}),i=t.addShape({type:"text",name:"button-text",attrs:(0,ef.pi)({text:e.text},e.textStyle)}).getBBox(),n=om(e.padding),r=t.addShape({type:"rect",name:"button-rect",attrs:(0,ef.pi)({x:i.x-n[3],y:i.y-n[0],width:i.width+n[1]+n[3],height:i.height+n[0]+n[2]},e.style)});r.toBack(),t.on("mouseenter",function(){r.attr(e.activeStyle)}),t.on("mouseleave",function(){r.attr(e.style)}),this.buttonGroup=t},t.prototype.resetPosition=function(){var e=this.context.view.getCoordinate().convert({x:1,y:1}),t=this.buttonGroup,i=t.getBBox(),n=it.vs(null,[["t",e.x-i.width-10,e.y+i.height+5]]);t.setMatrix(n)},t.prototype.show=function(){this.buttonGroup||this.drawButton(),this.resetPosition(),this.buttonGroup.show()},t.prototype.hide=function(){this.buttonGroup&&this.buttonGroup.hide()},t.prototype.destroy=function(){var t=this.buttonGroup;t&&t.remove(),e.prototype.destroy.call(this)},t}(rS),h6=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.starting=!1,t.dragStart=!1,t}return(0,ef.ZT)(t,e),t.prototype.start=function(){this.starting=!0,this.startPoint=this.context.getCurrentPoint()},t.prototype.drag=function(){if(this.startPoint){var e=this.context.getCurrentPoint(),t=this.context.view,i=this.context.event;this.dragStart?t.emit("drag",{target:i.target,x:i.x,y:i.y}):r$(e,this.startPoint)>4&&(t.emit("dragstart",{target:i.target,x:i.x,y:i.y}),this.dragStart=!0)}},t.prototype.end=function(){if(this.dragStart){var e=this.context.view,t=this.context.event;e.emit("dragend",{target:t.target,x:t.x,y:t.y})}this.starting=!1,this.dragStart=!1},t}(rS),h3=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.starting=!1,t.isMoving=!1,t.startPoint=null,t.startMatrix=null,t}return(0,ef.ZT)(t,e),t.prototype.start=function(){this.starting=!0,this.startPoint=this.context.getCurrentPoint(),this.startMatrix=this.context.view.middleGroup.getMatrix()},t.prototype.move=function(){if(this.starting){var e=this.startPoint,t=this.context.getCurrentPoint();if(r$(e,t)>5&&!this.isMoving&&(this.isMoving=!0),this.isMoving){var i=this.context.view,n=it.vs(this.startMatrix,[["t",t.x-e.x,t.y-e.y]]);i.backgroundGroup.setMatrix(n),i.foregroundGroup.setMatrix(n),i.middleGroup.setMatrix(n)}}},t.prototype.end=function(){this.isMoving&&(this.isMoving=!1),this.startMatrix=null,this.starting=!1,this.startPoint=null},t.prototype.reset=function(){this.starting=!1,this.startPoint=null,this.isMoving=!1;var e=this.context.view;e.backgroundGroup.resetMatrix(),e.foregroundGroup.resetMatrix(),e.middleGroup.resetMatrix(),this.isMoving=!1},t}(rS),h9=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.dims=["x","y"],t.cfgFields=["dims"],t.cacheScaleDefs={},t}return(0,ef.ZT)(t,e),t.prototype.hasDim=function(e){return this.dims.includes(e)},t.prototype.getScale=function(e){var t=this.context.view;return"x"===e?t.getXScale():t.getYScales()[0]},t.prototype.resetDim=function(e){var t=this.context.view;if(this.hasDim(e)&&this.cacheScaleDefs[e]){var i=this.getScale(e);t.scale(i.field,this.cacheScaleDefs[e]),this.cacheScaleDefs[e]=null}},t.prototype.reset=function(){this.resetDim("x"),this.resetDim("y"),this.context.view.render(!0)},t}(rS),h7=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.startPoint=null,t.starting=!1,t.startCache={},t}return(0,ef.ZT)(t,e),t.prototype.start=function(){var e=this;this.startPoint=this.context.getCurrentPoint(),this.starting=!0;var t=this.dims;(0,em.S6)(t,function(t){var i=e.getScale(t),n=i.min,r=i.max,o=i.values;e.startCache[t]={min:n,max:r,values:o}})},t.prototype.end=function(){this.startPoint=null,this.starting=!1,this.startCache={}},t.prototype.translate=function(){var e=this;if(this.starting){var t=this.startPoint,i=this.context.view.getCoordinate(),n=this.context.getCurrentPoint(),r=i.invert(t),o=i.invert(n),s=o.x-r.x,a=o.y-r.y,l=this.context.view,h=this.dims;(0,em.S6)(h,function(t){e.translateDim(t,{x:-1*s,y:-1*a})}),l.render(!0)}},t.prototype.translateDim=function(e,t){if(this.hasDim(e)){var i=this.getScale(e);i.isLinear&&this.translateLinear(e,i,t)}},t.prototype.translateLinear=function(e,t,i){var n=this.context.view,r=this.startCache[e],o=r.min,s=r.max,a=i[e]*(s-o);this.cacheScaleDefs[e]||(this.cacheScaleDefs[e]={nice:t.nice,min:o,max:s}),n.scale(t.field,{nice:!1,min:o+a,max:s+a})},t.prototype.reset=function(){e.prototype.reset.call(this),this.startPoint=null,this.starting=!1},t}(h9),h8=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.zoomRatio=.05,t}return(0,ef.ZT)(t,e),t.prototype.zoomIn=function(){this.zoom(this.zoomRatio)},t.prototype.zoom=function(e){var t=this,i=this.dims;(0,em.S6)(i,function(i){t.zoomDim(i,e)}),this.context.view.render(!0)},t.prototype.zoomOut=function(){this.zoom(-1*this.zoomRatio)},t.prototype.zoomDim=function(e,t){if(this.hasDim(e)){var i=this.getScale(e);i.isLinear&&this.zoomLinear(e,i,t)}},t.prototype.zoomLinear=function(e,t,i){var n=this.context.view;this.cacheScaleDefs[e]||(this.cacheScaleDefs[e]={nice:t.nice,min:t.min,max:t.max});var r=this.cacheScaleDefs[e],o=r.max-r.min,s=t.min,a=t.max,l=i*o,h=s-l,u=a+l,d=(u-h)/o;u>h&&d<100&&d>.01&&n.scale(t.field,{nice:!1,min:s-l,max:a+l})},t}(h9),ue=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.scroll=function(e){var t=this.context,i=t.view,n=t.event;if(i.getOptions().scrollbar){var r=(null==e?void 0:e.wheelDelta)||1,o=i.getController("scrollbar"),s=i.getXScale(),a=i.getOptions().data,l=(0,em.dp)((0,em.I)(a,s.field)),h=(0,em.dp)(s.values),u=Math.floor((l-h)*o.getValue())+(n.gEvent.originalEvent.deltaY>0?r:-r),d=r/(l-h)/1e4,c=(0,em.uZ)(u/(l-h)+d,0,1);o.setValue(c)}},t}(rS);function ut(e){return e.isInPlot()}function ui(e){return e.gEvent.preventDefault(),e.gEvent.originalEvent.deltaY>0}A=r9(sa),oo[(0,em.vl)("dark")]=or(A),eC.canvas=ed,eC.svg=eg,oA("Polygon",la),oA("Interval",li),oA("Schema",ll),oA("Path",a0),oA("Point",ls),oA("Line",ln),oA("Area",a4),oA("Edge",a5),oA("Heatmap",a6),oA("Violin",lh),oV("base",o3),oV("interval",lv),oV("pie",lC),oV("polar",l_),oW("overlap",function(e,t,i,n){var r=new ly;(0,em.S6)(t,function(e){for(var t=e.find(function(e){return"text"===e.get("type")}),i=t.attr(),n=i.x,o=i.y,s=!1,a=0;a<=8;a++){var l=function(e,t,i,n){var r=e.getCanvasBBox(),o=r.width,s=r.height,a={x:t,y:i,textAlign:"center"};switch(n){case 0:a.y-=s+1,a.x+=1,a.textAlign="left";break;case 1:a.y-=s+1,a.x-=1,a.textAlign="right";break;case 2:a.y+=s+1,a.x-=1,a.textAlign="right";break;case 3:a.y+=s+1,a.x+=1,a.textAlign="left";break;case 5:a.y-=2*s+2;break;case 6:a.y+=2*s+2;break;case 7:a.x+=o+1,a.textAlign="left";break;case 8:a.x-=o+1,a.textAlign="right"}return e.attr(a),e.getCanvasBBox()}(t,n,o,a);if(r.hasGap(l)){r.fillGap(l),s=!0;break}}s||e.remove(!0)}),r.destroy()}),oW("distribute",function(e,t,i,n){if(e.length&&t.length){var r=e[0]?e[0].offset:0,o=t[0].get("coordinate"),s=o.getRadius(),a=o.getCenter();if(r>0){var l=2*(s+r)+28,h={start:o.start,end:o.end},u=[[],[]];e.forEach(function(e){e&&("right"===e.textAlign?u[0].push(e):u[1].push(e))}),u.forEach(function(e,i){var n=l/14;e.length>n&&(e.sort(function(e,t){return t["..percent"]-e["..percent"]}),e.splice(n,e.length-n)),e.sort(function(e,t){return e.y-t.y}),function(e,t,i,n,r,o){var s,a=!0,l=n.start,h=n.end,u=Math.min(l.y,h.y),d=Math.abs(l.y-h.y),c=0,g=Number.MIN_VALUE,p=t.map(function(e){return e.y>c&&(c=e.y),e.yd&&(d=c-u);a;)for(p.forEach(function(e){var t=(Math.min.apply(g,e.targets)+Math.max.apply(g,e.targets))/2;e.pos=Math.min(Math.max(g,t-e.size/2),d-e.size)}),a=!1,s=p.length;s--;)if(s>0){var f=p[s-1],m=p[s];f.pos+f.size>m.pos&&(f.size+=m.size,f.targets=f.targets.concat(m.targets),f.pos+f.size>d&&(f.pos=d-f.size),p.splice(s,1),a=!0)}s=0,p.forEach(function(e){var n=u+i/2;e.targets.forEach(function(){t[s].y=e.pos+n,n+=i,s++})});for(var v={},E=0;Ee.x+e.width+i||t.x+t.widthe.y+e.height+i||t.y+t.heighth.min)||!(l.minr.maxX||n.maxY>r.maxY)&&e.remove(!0)})}),oW("limit-in-canvas",function(e,t,i,n){(0,em.S6)(t,function(e){var t=n.minX,i=n.minY,r=n.maxX,o=n.maxY,s=e.getCanvasBBox(),a=s.minX,l=s.minY,h=s.maxX,u=s.maxY,d=s.x,c=s.y,g=s.width,p=s.height,f=d,m=c;(ar?f=r-g:h>r&&(f-=h-r),l>o?m=o-p:u>o&&(m-=u-o),(f!==d||m!==c)&&o0(e,f-d,m-c)})}),oW("limit-in-plot",function(e,t,i,n,r){if(!(t.length<=0)){var o,s,a,l,h,u,d,c=(null==r?void 0:r.direction)||["top","right","bottom","left"],g=(null==r?void 0:r.action)||"translate",p=(null==r?void 0:r.margin)||0,f=t[0].get("coordinate");if(f){var m=(void 0===(o=p)&&(o=0),s=f.start,a=f.end,l=f.getWidth(),h=f.getHeight(),u=Math.min(s.x,a.x),d=Math.min(s.y,a.y),re.fromRange(u-o,d-o,u+l+o,d+h+o)),v=m.minX,E=m.minY,_=m.maxX,C=m.maxY;(0,em.S6)(t,function(e){var t=e.getCanvasBBox(),i=t.minX,n=t.minY,r=t.maxX,o=t.maxY,s=t.x,a=t.y,l=t.width,h=t.height,u=s,d=a;if(c.indexOf("left")>=0&&(i=0&&(n=0&&(i>_?u=_-l:r>_&&(u-=r-_)),c.indexOf("bottom")>=0&&(n>C?d=C-h:o>C&&(d-=o-C)),u!==s||d!==a){var p=u-s;"translate"===g?o0(e,p,d-a):"ellipsis"===g?e.findAll(function(e){return"text"===e.get("type")}).forEach(function(e){var t=(0,em.ei)(e.attr(),["fontSize","fontFamily","fontWeight","fontStyle","fontVariant"]),i=e.getCanvasBBox(),n=lF(e.attr("text"),i.width-Math.abs(p),t);e.attr("text",n)}):e.hide()}})}}}),oW("pie-outer",function(e,t,i,n){var r=(0,em.hX)(e,function(e){return!(0,em.UM)(e)}),o=t[0]&&t[0].get("coordinate");if(o){for(var s=o.getCenter(),a=o.getRadius(),l={},h=0;hi&&(e.sort(function(e,t){return t.percent-e.percent}),(0,em.S6)(e,function(e,t){t+1>i&&(l[e.id].set("visible",!1),e.invisible=!0)})),lS(e,d,_)}),(0,em.S6)(p,function(e,t){(0,em.S6)(e,function(e){var i=t===g,n=l[e.id].getChildByIndex(0);if(n){var r=a+c,h=e.y-s.y,u=Math.pow(r,2),d=Math.pow(h,2),p=Math.sqrt(u-d>0?u-d:0),f=Math.abs(Math.cos(e.angle)*r);i?e.x=s.x+Math.max(p,f):e.x=s.x-Math.max(p,f)}n&&(n.attr("y",e.y),n.attr("x",e.x)),function(e,t){var i=t.getCenter(),n=t.getRadius();if(e&&e.labelLine){var r=e.angle,o=e.offset,s=n2(i.x,i.y,n,r),a=e.x+(0,em.U2)(e,"offsetX",0)*(Math.cos(r)>0?1:-1),l=e.y+(0,em.U2)(e,"offsetY",0)*(Math.sin(r)>0?1:-1),h={x:a-4*Math.cos(r),y:l-4*Math.sin(r)},u=e.labelLine.smooth,d=[],c=h.x-i.x,g=Math.atan((h.y-i.y)/c);if(c<0&&(g+=Math.PI),!1===u){(0,em.Kn)(e.labelLine)||(e.labelLine={});var p=0;(r<0&&r>-Math.PI/2||r>1.5*Math.PI)&&h.y>s.y&&(p=1),r>=0&&rs.y&&(p=1),r>=Math.PI/2&&rh.y&&(p=1),(r<-Math.PI/2||r>=Math.PI&&r<1.5*Math.PI)&&s.y>h.y&&(p=1);var f=o/2>4?4:Math.max(o/2-1,0),m=n2(i.x,i.y,n+f,r),v=n2(i.x,i.y,n+o/2,g);d.push("M "+s.x+" "+s.y),d.push("L "+m.x+" "+m.y),d.push("A "+i.x+" "+i.y+" 0 0 "+p+" "+v.x+" "+v.y),d.push("L "+h.x+" "+h.y)}else{var m=n2(i.x,i.y,n+(o/2>4?4:Math.max(o/2-1,0)),r),E=s.x11253517471925921e-23&&d.push.apply(d,["C",h.x+4*E,h.y,2*m.x-s.x,2*m.y-s.y,s.x,s.y]),d.push("L "+s.x+" "+s.y)}e.labelLine.path=d.join(" ")}}(e,o)})})}}}),oW("adjust-color",function(e,t,i){if(0!==i.length){var n=i[0].get("element").geometry.theme,r=n.labels||{},o=r.fillColorLight,s=r.fillColorDark;i.forEach(function(e,i){var r=t[i].find(function(e){return"text"===e.get("type")}),a=re.fromObject(e.getBBox()),l=re.fromObject(r.getCanvasBBox()),h=!a.contains(l),u=lO(e.attr("fill"));h?r.attr(n.overflowLabels.style):u?o&&r.attr("fill",o):s&&r.attr("fill",s)})}}),oW("interval-adjust-position",function(e,t,i){if(0!==i.length){var n,r=null===(n=i[0])||void 0===n?void 0:n.get("element"),o=null==r?void 0:r.geometry;o&&"interval"===o.type&&(o.getAdjust("stack")||t.every(function(e,t){var n,r,s,a,l=i[t];return n=o.coordinate,r=o2(e),s=re.fromObject(r.getCanvasBBox()),a=re.fromObject(l.getBBox()),n.isTransposed?a.height>=s.height:a.width>=s.width}))&&i.forEach(function(e,i){var n,r,s,a=t[i];n=o.coordinate,r=re.fromObject(e.getBBox()),s=o2(a),n.isTransposed?s.attr({x:r.minX+r.width/2,textAlign:"center"}):s.attr({y:r.minY+r.height/2,textBaseline:"middle"})})}}),oW("interval-hide-overlap",function(e,t,i){if(0!==i.length){var n,r,o,s=null===(o=i[0])||void 0===o?void 0:o.get("element"),a=null==s?void 0:s.geometry;if(a&&"interval"===a.type){var l=(n=[],r=Math.max(Math.floor(t.length/500),1),(0,em.S6)(t,function(e,t){t%r==0?n.push(e):e.set("visible",!1)}),n),h=a.getXYFields()[0],u=[],d=[],c=(0,em.vM)(l,function(e){return e.get("data")[h]}),g=(0,em.jj)((0,em.UI)(l,function(e){return e.get("data")[h]}));l.forEach(function(e){e.set("visible",!0)});var p=function(e){e&&(e.length&&d.push(e.pop()),d.push.apply(d,e))};for((0,em.dp)(g)>0&&p(c[g.shift()]),(0,em.dp)(g)>0&&p(c[g.pop()]),(0,em.S6)(g.reverse(),function(e){p(c[e])});d.length>0;){var f=d.shift();f.get("visible")&&(function(e,t){var i=e.getBBox();return(0,em.G)(t,function(e){var t=e.getBBox();return Math.max(0,Math.min(i.x+i.width+2,t.x+t.width+2)-Math.max(i.x-2,t.x-2))*Math.max(0,Math.min(i.y+i.height+2,t.y+t.height+2)-Math.max(i.y-2,t.y-2))>0})}(f,u)?f.set("visible",!1):u.push(f))}}}}),oW("point-adjust-position",function(e,t,i,n,r){if(0!==i.length){var o,s,a=null===(o=i[0])||void 0===o?void 0:o.get("element"),l=null==a?void 0:a.geometry;if(l&&"point"===l.type){var h=l.getXYFields(),u=h[0],d=h[1],c=(0,em.vM)(t,function(e){return e.get("data")[u]}),g=[],p=r&&r.offset||(null===(s=e[0])||void 0===s?void 0:s.offset)||12;(0,em.UI)((0,em.XP)(c).reverse(),function(e){for(var t,i,n,r,o=(t=c[e],i=l.getXYFields()[1],n=[],(r=t.sort(function(e,t){return e.get("data")[i]-e.get("data")[i]})).length>0&&n.push(r.shift()),r.length>0&&n.push(r.pop()),n.push.apply(n,r),n);o.length;){var s=o.shift(),a=o2(s);if(lx(g,s,function(e,t){return e.get("data")[u]===t.get("data")[u]&&e.get("data")[d]===t.get("data")[d]})){a.set("visible",!1);continue}var h=lD(g,s),f=!1;if(h&&(a.attr("y",a.attr("y")+2*p),f=lD(g,s)),f){a.set("visible",!1);continue}g.push(s)}})}}}),oW("pie-spider",function(e,t,i,n){var r=t[0]&&t[0].get("coordinate");if(r){for(var o=r.getCenter(),s=r.getRadius(),a={},l=0;lo.x||e.x===o.x&&e.y>o.y,i=(0,em.UM)(e.offsetX)?4:e.offsetX,n=n2(o.x,o.y,s+4,e.angle);e.x=o.x+(t?1:-1)*(s+(d+i)),e.y=n.y}});var c=r.start,g=r.end,p="right",f=(0,em.vM)(e,function(e){return e.xm&&(m=Math.min(t,Math.abs(c.y-g.y)))});var v={minX:c.x,maxX:g.x,minY:o.y-m/2,maxY:o.y+m/2};(0,em.S6)(f,function(e,t){var i=m/u;e.length>i&&(e.sort(function(e,t){return t.percent-e.percent}),(0,em.S6)(e,function(e,t){t>i&&(a[e.id].set("visible",!1),e.invisible=!0)})),lS(e,u,v)});var E=v.minY,_=v.maxY;(0,em.S6)(f,function(e,t){var i=t===p;(0,em.S6)(e,function(e){var t=(0,em.U2)(a,e&&[e.id]);if(t){if(e.y_){t.set("visible",!1);return}var n=t.getChildByIndex(0),o=n.getCanvasBBox(),s={x:i?o.x:o.maxX,y:o.y+o.height/2};o0(n,e.x-s.x,e.y-s.y),e.labelLine&&function(e,t,i){var n=t.getCenter(),r=t.getRadius(),o={x:e.x-(i?4:-4),y:e.y},s=n2(n.x,n.y,r+4,e.angle),a={x:o.x,y:o.y},l={x:s.x,y:s.y},h=n2(n.x,n.y,r,e.angle),u="";if(o.y!==s.y){var d=i?4:-4;a.y=o.y,e.angle<0&&e.angle>=-Math.PI/2&&(a.x=Math.max(s.x,o.x-d),o.y0&&e.angles.y?l.y=a.y:(l.y=s.y,l.x=Math.max(l.x,a.x-d))),e.angle>Math.PI/2&&(a.x=Math.min(s.x,o.x-d),o.y>s.y?l.y=a.y:(l.y=s.y,l.x=Math.min(l.x,a.x-d))),e.angle<-Math.PI/2&&(a.x=Math.min(s.x,o.x-d),o.y["path","line","area"].indexOf(l.type))){var h=l.getXYFields(),u=h[0],d=h[1],c=(0,em.vM)(t,function(e){return e.get("data")[u]}),g=[],p=r&&r.offset||(null===(s=e[0])||void 0===s?void 0:s.offset)||12;(0,em.UI)((0,em.XP)(c).reverse(),function(e){for(var t,i,n,r,o=(t=c[e],i=l.getXYFields()[1],n=[],(r=t.sort(function(e,t){return e.get("data")[i]-e.get("data")[i]})).length>0&&n.push(r.shift()),r.length>0&&n.push(r.pop()),n.push.apply(n,r),n);o.length;){var s=o.shift(),a=o2(s);if(lM(g,s,function(e,t){return e.get("data")[u]===t.get("data")[u]&&e.get("data")[d]===t.get("data")[d]})){a.set("visible",!1);continue}var h=lk(g,s),f=!1;if(h&&(a.attr("y",a.attr("y")+2*p),f=lk(g,s)),f){a.set("visible",!1);continue}g.push(s)}})}}}),oO("fade-in",function(e,t,i){var n={fillOpacity:(0,em.UM)(e.attr("fillOpacity"))?1:e.attr("fillOpacity"),strokeOpacity:(0,em.UM)(e.attr("strokeOpacity"))?1:e.attr("strokeOpacity"),opacity:(0,em.UM)(e.attr("opacity"))?1:e.attr("opacity")};e.attr({fillOpacity:0,strokeOpacity:0,opacity:0}),e.animate(n,t)}),oO("fade-out",function(e,t,i){var n=t.easing,r=t.duration,o=t.delay;e.animate({fillOpacity:0,strokeOpacity:0,opacity:0},r,n,function(){e.remove(!0)},o)}),oO("grow-in-x",function(e,t,i){lB(e,t,i.coordinate,i.minYPoint,"x")}),oO("grow-in-xy",function(e,t,i){lB(e,t,i.coordinate,i.minYPoint,"xy")}),oO("grow-in-y",function(e,t,i){lB(e,t,i.coordinate,i.minYPoint,"y")}),oO("scale-in-x",function(e,t,i){var n=e.getBBox(),r=e.get("origin").mappingData.points,o=r[0].y-r[1].y>0?n.maxX:n.minX,s=(n.minY+n.maxY)/2;e.applyToMatrix([o,s,1]);var a=it.vs(e.getMatrix(),[["t",-o,-s],["s",.01,1],["t",o,s]]);e.setMatrix(a),e.animate({matrix:it.vs(e.getMatrix(),[["t",-o,-s],["s",100,1],["t",o,s]])},t)}),oO("scale-in-y",function(e,t,i){var n=e.getBBox(),r=e.get("origin").mappingData,o=(n.minX+n.maxX)/2,s=r.points,a=s[0].y-s[1].y<=0?n.maxY:n.minY;e.applyToMatrix([o,a,1]);var l=it.vs(e.getMatrix(),[["t",-o,-a],["s",1,.01],["t",o,a]]);e.setMatrix(l),e.animate({matrix:it.vs(e.getMatrix(),[["t",-o,-a],["s",1,100],["t",o,a]])},t)}),oO("wave-in",function(e,t,i){var n=ro(i.coordinate,20),r=n.type,o=n.startState,s=n.endState,a=e.setClip({type:r,attrs:o});a.animate(s,(0,ef.pi)((0,ef.pi)({},t),{callback:function(){e&&!e.get("destroyed")&&e.set("clipShape",null),a.remove(!0)}}))}),oO("zoom-in",function(e,t,i){lW(e,t,"zoomIn")}),oO("zoom-out",function(e,t,i){lW(e,t,"zoomOut")}),oO("position-update",function(e,t,i){var n=i.toAttrs,r=n.x,o=n.y;delete n.x,delete n.y,e.attr(n),e.animate({x:r,y:o},t)}),oO("sector-path-update",function(e,t,i){var n=i.toAttrs,r=i.coordinate,o=n.path||[],s=o.map(function(e){return e[0]});if(!(o.length<1)){var a=lV(o),l=a.startAngle,h=a.endAngle,u=a.radius,d=a.innerRadius,c=lV(e.attr("path")),g=c.startAngle,p=c.endAngle,f=r.getCenter(),m=l-g,v=h-p;if(0===m&&0===v){e.attr("path",o);return}e.animate(function(e){var t=g+e*m,i=p+e*v;return(0,ef.pi)((0,ef.pi)({},n),{path:(0,em.Xy)(s,["M","A","A","Z"])?n5(f.x,f.y,u,t,i):n4(f.x,f.y,u,t,i,d)})},(0,ef.pi)((0,ef.pi)({},t),{callback:function(){e.attr("path",o)}}))}}),oO("path-in",function(e,t,i){var n=e.getTotalLength();e.attr("lineDash",[n]),e.animate(function(e){return{lineDashOffset:(1-e)*n}},t)}),rC("rect",lj),rC("mirror",lX),rC("list",lK),rC("matrix",l$),rC("circle",lY),rC("tree",lq),ov.axis=l9,ov.legend=ht,ov.tooltip=oN,ov.annotation=l0,ov.slider=hi,ov.scrollbar=hn,rA("tooltip",hs),rA("sibling-tooltip",ha),rA("ellipsis-text",hl),rA("element-active",hc),rA("element-single-active",hv),rA("element-range-active",hf),rA("element-highlight",hb),rA("element-highlight-by-x",hR),rA("element-highlight-by-color",hA),rA("element-single-highlight",hN),rA("element-range-highlight",hL),rA("element-sibling-highlight",hL,{effectSiblings:!0,effectByRecord:!0}),rA("element-selected",hw),rA("element-single-selected",hO),rA("element-range-selected",hI),rA("element-link-by-color",hg),rA("active-region",ho),rA("list-active",hD),rA("list-selected",hU),rA("list-highlight",hB),rA("list-unchecked",hH),rA("list-checked",hG),rA("legend-item-highlight",hB,{componentNames:["legend"]}),rA("axis-label-highlight",hB,{componentNames:["axis"]}),rA("rect-mask",hK),rA("x-rect-mask",hX,{dim:"x"}),rA("y-rect-mask",hX,{dim:"y"}),rA("circle-mask",hY),rA("path-mask",hj),rA("smooth-path-mask",hq),rA("cursor",hZ),rA("data-filter",hJ),rA("brush",h0),rA("brush-x",h0,{dims:["x"]}),rA("brush-y",h0,{dims:["y"]}),rA("sibling-filter",h1),rA("sibling-x-filter",h1),rA("sibling-y-filter",h1),rA("element-filter",h2),rA("element-sibling-filter",h4),rA("element-sibling-filter-record",h4,{byRecord:!0}),rA("view-drag",h6),rA("view-move",h3),rA("scale-translate",h7),rA("scale-zoom",h8),rA("reset-button",h5,{name:"reset-button",text:"reset"}),rA("mousewheel-scroll",ue),r3("tooltip",{start:[{trigger:"plot:mousemove",action:"tooltip:show",throttle:{wait:50,leading:!0,trailing:!1}},{trigger:"plot:touchmove",action:"tooltip:show",throttle:{wait:50,leading:!0,trailing:!1}}],end:[{trigger:"plot:mouseleave",action:"tooltip:hide"},{trigger:"plot:leave",action:"tooltip:hide"},{trigger:"plot:touchend",action:"tooltip:hide"}]}),r3("ellipsis-text",{start:[{trigger:"legend-item-name:mousemove",action:"ellipsis-text:show",throttle:{wait:50,leading:!0,trailing:!1}},{trigger:"legend-item-name:touchstart",action:"ellipsis-text:show",throttle:{wait:50,leading:!0,trailing:!1}},{trigger:"axis-label:mousemove",action:"ellipsis-text:show",throttle:{wait:50,leading:!0,trailing:!1}},{trigger:"axis-label:touchstart",action:"ellipsis-text:show",throttle:{wait:50,leading:!0,trailing:!1}}],end:[{trigger:"legend-item-name:mouseleave",action:"ellipsis-text:hide"},{trigger:"legend-item-name:touchend",action:"ellipsis-text:hide"},{trigger:"axis-label:mouseleave",action:"ellipsis-text:hide"},{trigger:"axis-label:touchend",action:"ellipsis-text:hide"}]}),r3("element-active",{start:[{trigger:"element:mouseenter",action:"element-active:active"}],end:[{trigger:"element:mouseleave",action:"element-active:reset"}]}),r3("element-selected",{start:[{trigger:"element:click",action:"element-selected:toggle"}]}),r3("element-highlight",{start:[{trigger:"element:mouseenter",action:"element-highlight:highlight"}],end:[{trigger:"element:mouseleave",action:"element-highlight:reset"}]}),r3("element-highlight-by-x",{start:[{trigger:"element:mouseenter",action:"element-highlight-by-x:highlight"}],end:[{trigger:"element:mouseleave",action:"element-highlight-by-x:reset"}]}),r3("element-highlight-by-color",{start:[{trigger:"element:mouseenter",action:"element-highlight-by-color:highlight"}],end:[{trigger:"element:mouseleave",action:"element-highlight-by-color:reset"}]}),r3("legend-active",{start:[{trigger:"legend-item:mouseenter",action:["list-active:active","element-active:active"]}],end:[{trigger:"legend-item:mouseleave",action:["list-active:reset","element-active:reset"]}]}),r3("legend-highlight",{start:[{trigger:"legend-item:mouseenter",action:["legend-item-highlight:highlight","element-highlight:highlight"]}],end:[{trigger:"legend-item:mouseleave",action:["legend-item-highlight:reset","element-highlight:reset"]}]}),r3("axis-label-highlight",{start:[{trigger:"axis-label:mouseenter",action:["axis-label-highlight:highlight","element-highlight:highlight"]}],end:[{trigger:"axis-label:mouseleave",action:["axis-label-highlight:reset","element-highlight:reset"]}]}),r3("element-list-highlight",{start:[{trigger:"element:mouseenter",action:["list-highlight:highlight","element-highlight:highlight"]}],end:[{trigger:"element:mouseleave",action:["list-highlight:reset","element-highlight:reset"]}]}),r3("element-range-highlight",{showEnable:[{trigger:"plot:mouseenter",action:"cursor:crosshair"},{trigger:"mask:mouseenter",action:"cursor:move"},{trigger:"plot:mouseleave",action:"cursor:default"},{trigger:"mask:mouseleave",action:"cursor:crosshair"}],start:[{trigger:"plot:mousedown",isEnable:function(e){return!e.isInShape("mask")},action:["rect-mask:start","rect-mask:show"]},{trigger:"mask:dragstart",action:["rect-mask:moveStart"]}],processing:[{trigger:"plot:mousemove",action:["rect-mask:resize"]},{trigger:"mask:drag",action:["rect-mask:move"]},{trigger:"mask:change",action:["element-range-highlight:highlight"]}],end:[{trigger:"plot:mouseup",action:["rect-mask:end"]},{trigger:"mask:dragend",action:["rect-mask:moveEnd"]},{trigger:"document:mouseup",isEnable:function(e){return!e.isInPlot()},action:["element-range-highlight:clear","rect-mask:end","rect-mask:hide"]}],rollback:[{trigger:"dblclick",action:["element-range-highlight:clear","rect-mask:hide"]}]}),r3("brush",{showEnable:[{trigger:"plot:mouseenter",action:"cursor:crosshair"},{trigger:"plot:mouseleave",action:"cursor:default"}],start:[{trigger:"mousedown",isEnable:ut,action:["brush:start","rect-mask:start","rect-mask:show"]}],processing:[{trigger:"mousemove",isEnable:ut,action:["rect-mask:resize"]}],end:[{trigger:"mouseup",isEnable:ut,action:["brush:filter","brush:end","rect-mask:end","rect-mask:hide","reset-button:show"]}],rollback:[{trigger:"reset-button:click",action:["brush:reset","reset-button:hide","cursor:crosshair"]}]}),r3("brush-visible",{showEnable:[{trigger:"plot:mouseenter",action:"cursor:crosshair"},{trigger:"plot:mouseleave",action:"cursor:default"}],start:[{trigger:"plot:mousedown",action:["rect-mask:start","rect-mask:show"]}],processing:[{trigger:"plot:mousemove",action:["rect-mask:resize"]},{trigger:"mask:change",action:["element-range-highlight:highlight"]}],end:[{trigger:"plot:mouseup",action:["rect-mask:end","rect-mask:hide","element-filter:filter","element-range-highlight:clear"]}],rollback:[{trigger:"dblclick",action:["element-filter:clear"]}]}),r3("brush-x",{showEnable:[{trigger:"plot:mouseenter",action:"cursor:crosshair"},{trigger:"plot:mouseleave",action:"cursor:default"}],start:[{trigger:"mousedown",isEnable:ut,action:["brush-x:start","x-rect-mask:start","x-rect-mask:show"]}],processing:[{trigger:"mousemove",isEnable:ut,action:["x-rect-mask:resize"]}],end:[{trigger:"mouseup",isEnable:ut,action:["brush-x:filter","brush-x:end","x-rect-mask:end","x-rect-mask:hide"]}],rollback:[{trigger:"dblclick",action:["brush-x:reset"]}]}),r3("element-path-highlight",{showEnable:[{trigger:"plot:mouseenter",action:"cursor:crosshair"},{trigger:"plot:mouseleave",action:"cursor:default"}],start:[{trigger:"mousedown",isEnable:ut,action:"path-mask:start"},{trigger:"mousedown",isEnable:ut,action:"path-mask:show"}],processing:[{trigger:"mousemove",action:"path-mask:addPoint"}],end:[{trigger:"mouseup",action:"path-mask:end"}],rollback:[{trigger:"dblclick",action:"path-mask:hide"}]}),r3("element-single-selected",{start:[{trigger:"element:click",action:"element-single-selected:toggle"}]}),r3("legend-filter",{showEnable:[{trigger:"legend-item:mouseenter",action:"cursor:pointer"},{trigger:"legend-item:mouseleave",action:"cursor:default"}],start:[{trigger:"legend-item:click",action:["list-unchecked:toggle","data-filter:filter"]}]}),r3("continuous-filter",{start:[{trigger:"legend:valuechanged",action:"data-filter:filter"}]}),r3("continuous-visible-filter",{start:[{trigger:"legend:valuechanged",action:"element-filter:filter"}]}),r3("legend-visible-filter",{showEnable:[{trigger:"legend-item:mouseenter",action:"cursor:pointer"},{trigger:"legend-item:mouseleave",action:"cursor:default"}],start:[{trigger:"legend-item:click",action:["list-unchecked:toggle","element-filter:filter"]}]}),r3("active-region",{start:[{trigger:"plot:mousemove",action:"active-region:show"}],end:[{trigger:"plot:mouseleave",action:"active-region:hide"}]}),r3("view-zoom",{start:[{trigger:"plot:mousewheel",isEnable:function(e){return ui(e.event)},action:"scale-zoom:zoomOut",throttle:{wait:100,leading:!0,trailing:!1}},{trigger:"plot:mousewheel",isEnable:function(e){return!ui(e.event)},action:"scale-zoom:zoomIn",throttle:{wait:100,leading:!0,trailing:!1}}]}),r3("sibling-tooltip",{start:[{trigger:"plot:mousemove",action:"sibling-tooltip:show"}],end:[{trigger:"plot:mouseleave",action:"sibling-tooltip:hide"}]}),r3("plot-mousewheel-scroll",{start:[{trigger:"plot:mousewheel",action:"mousewheel-scroll:scroll"}]});var un=["type","alias","tickCount","tickInterval","min","max","nice","minLimit","maxLimit","range","tickMethod","base","exponent","mask","sync"];function ur(e){for(var t=[],i=1;i=0}),r=i.every(function(e){return 0>=(0,em.U2)(e,[t])});return n?{min:0}:r?{max:0}:{}}function ul(e,t,i,n,r){if(void 0===r&&(r=[]),!Array.isArray(e))return{nodes:[],links:[]};var o=[],s={},a=-1;return e.forEach(function(e){var l=e[t],h=e[i],u=e[n],d=us(e,r);s[l]||(s[l]=(0,ef.pi)({id:++a,name:l},d)),s[h]||(s[h]=(0,ef.pi)({id:++a,name:h},d)),o.push((0,ef.pi)({source:s[l].id,target:s[h].id,value:u},d))}),{nodes:Object.values(s).sort(function(e,t){return e.id-t.id}),links:o}}function uh(e,t){var i=(0,em.hX)(e,function(e){var i=e[t];return null===i||"number"==typeof i&&!isNaN(i)});return uo(X.WARN,i.length===e.length,"illegal data existed in chart data."),i}(R=X||(X={})).ERROR="error",R.WARN="warn",R.INFO="log";var uu={}.toString,ud=function(e,t){return uu.call(e)==="[object "+t+"]"},uc=function(e){if(!("object"==typeof e&&null!==e)||!ud(e,"Object"))return!1;for(var t=e;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t},ug=function(e,t,i,n){for(var r in i=i||0,n=n||5,t)if(Object.prototype.hasOwnProperty.call(t,r)){var o=t[r];o?uc(o)?(uc(e[r])||(e[r]={}),i=(0,em.U2)(e,["views","length"],0)?uE(e):(0,em.u4)(e.views,function(e,t){return e.concat(u_(t))},uE(e))}function uC(e){if(!(0,em.P9)(e,"Object"))return e;var t=(0,ef.pi)({},e);return t.formatter&&!t.content&&(t.content=t.formatter),t}function uS(e){return"number"==typeof e&&!isNaN(e)}function uy(e){if((0,em.hj)(e))return[e,e,e,e];if((0,em.kJ)(e)){var t=e.length;if(1===t)return[e[0],e[0],e[0],e[0]];if(2===t)return[e[0],e[1],e[0],e[1]];if(3===t)return[e[0],e[1],e[2],e[1]];if(4===t)return e}return[0,0,0,0]}function uT(e,t,i){void 0===t&&(t="bottom"),void 0===i&&(i=25);var n=uy(e),r=[t.startsWith("top")?i:0,t.startsWith("right")?i:0,t.startsWith("bottom")?i:0,t.startsWith("left")?i:0];return[n[0]+r[0],n[1]+r[1],n[2]+r[2],n[3]+r[3]]}function ub(e){var t=e.map(function(e){return uy(e)}),i=[0,0,0,0];return t.length>0&&(i=i.map(function(e,i){return t.forEach(function(n,r){e+=t[r][i]}),e})),i}(0,em.HP)(function(e,t){void 0===t&&(t={});var i=t.fontSize,n=t.fontFamily,r=t.fontWeight,o=t.fontStyle,s=t.fontVariant,a=(j||(j=document.createElement("canvas").getContext("2d")),j);return a.font=[o,r,s,"".concat(i,"px"),void 0===n?"sans-serif":n].join(" "),a.measureText((0,em.HD)(e)?e:"").width},function(e,t){return void 0===t&&(t={}),(0,ef.ev)([e],(0,em.VO)(t),!0).join("")});var uA=function(e,t,i,n){var r,o,s,a,l=[],h=!!n;if(h){s=[1/0,1/0],a=[-1/0,-1/0];for(var u=0,d=e.length;u"},key:"".concat(0===n?"top":"bottom","-statistic")},us(t,["offsetX","offsetY","rotate","style","formatter"])))}})},uw=function(e,t,i){var n=t.statistic;[n.title,n.content].forEach(function(t){if(t){var n=(0,em.mf)(t.style)?t.style(i):t.style;e.annotation().html((0,ef.pi)({position:["50%","100%"],html:function(e,r){var o=r.getCoordinate(),s=r.views[0].getCoordinate(),a=s.getCenter(),l=s.getRadius(),h=Math.max(Math.sin(s.startAngle),Math.sin(s.endAngle))*l,u=a.y+h-o.y.start-parseFloat((0,em.U2)(n,"fontSize",0)),d=o.getRadius()*o.innerRadius*2;uN(e,(0,ef.pi)({width:"".concat(d,"px"),transform:"translate(-50%, ".concat(u,"px)")},uL(n)));var c=r.getData();if(t.customHtml)return t.customHtml(e,r,i,c);var g=t.content;return t.formatter&&(g=t.formatter(i,c)),g?(0,em.HD)(g)?g:"".concat(g):"
    "}},us(t,["offsetX","offsetY","rotate","style","formatter"])))}})};function uO(e,t){return t?(0,em.u4)(t,function(e,t,i){return e.replace(RegExp("{\\s*".concat(i,"\\s*}"),"g"),t)},e):e}function ux(e,t){return e.views.find(function(e){return e.id===t})}function uD(e){var t=e.parent;return t?t.views:[]}function uM(e){return uD(e).filter(function(t){return t!==e})}function uk(e,t,i){void 0===i&&(i=e.geometries),"boolean"==typeof t?e.animate(t):e.animate(!0),(0,em.S6)(i,function(e){var i;i=(0,em.mf)(t)?t(e.type||e.shapeType,e)||!0:t,e.animate(i)})}function uP(){return"object"==typeof window?null==window?void 0:window.devicePixelRatio:2}function uF(e,t){void 0===t&&(t=e);var i=document.createElement("canvas"),n=uP();return i.width=e*n,i.height=t*n,i.style.width="".concat(e,"px"),i.style.height="".concat(t,"px"),i.getContext("2d").scale(n,n),i}function uB(e,t,i,n){void 0===n&&(n=i);var r=t.backgroundColor,o=t.opacity;e.globalAlpha=o,e.fillStyle=r,e.beginPath(),e.fillRect(0,0,i,n),e.closePath()}function uU(e,t,i){var n=e+t;return i?2*n:n}function uH(e,t){return t?[[e*(1/4),e*(1/4)],[e*(3/4),e*(3/4)]]:[[.5*e,.5*e]]}function uV(e,t){var i=t*Math.PI/180;return{a:Math.cos(i)*(1/e),b:Math.sin(i)*(1/e),c:-Math.sin(i)*(1/e),d:Math.cos(i)*(1/e),e:0,f:0}}var uW={size:6,padding:2,backgroundColor:"transparent",opacity:1,rotation:0,fill:"#fff",fillOpacity:.5,stroke:"transparent",lineWidth:0,isStagger:!0},uG={rotation:45,spacing:5,opacity:1,backgroundColor:"transparent",strokeOpacity:.5,stroke:"#fff",lineWidth:2},uz={size:6,padding:1,isStagger:!0,backgroundColor:"transparent",opacity:1,rotation:0,fill:"#fff",fillOpacity:.5,stroke:"transparent",lineWidth:0};function uY(e){var t=this;return function(i){var n,r=i.options,o=i.chart,s=r.pattern;return s?up({},i,{options:((n={})[e]=function(i){for(var n,a,l,h=[],u=1;u0){var i;(function(e,t,i){var n,r=e.view,o=e.geometry,s=e.group,a=e.options,l=e.horizontal,h=a.offset,u=a.size,d=a.arrow,c=r.getCoordinate(),g=dP(c,t)[3],p=dP(c,i)[0],f=p.y-g.y,m=p.x-g.x;if("boolean"!=typeof d){var v=d.headSize,E=a.spacing;l?(m-v)/2_){var S=Math.max(1,Math.ceil(_/(C/f.length))-1),y="".concat(f.slice(0,S),"...");E.attr("text",y)}}}}(l,i,e)}})}})),e}),(o=!s.isStack,function(e){var t=e.chart,i=e.options.connectedArea,n=function(){t.removeInteraction(dD.hover),t.removeInteraction(dD.click)};if(!o&&i){var r=i.trigger||"hover";n(),t.interaction(dD[r],{start:dM(r,i.style)})}else n();return e}),u2)(e)}function dY(e){var t=e.options,i=t.xField,n=t.yField,r=t.xAxis,o=t.yAxis,s={left:"bottom",right:"top",top:"left",bottom:"right"},a=!1!==o&&(0,ef.pi)({position:s[(null==o?void 0:o.position)||"left"]},o),l=!1!==r&&(0,ef.pi)({position:s[(null==r?void 0:r.position)||"bottom"]},r);return(0,ef.pi)((0,ef.pi)({},e),{options:(0,ef.pi)((0,ef.pi)({},t),{xField:n,yField:i,xAxis:a,yAxis:l})})}function dK(e){var t=e.options.label;return!t||t.position||(t.position="left",t.layout||(t.layout=[{type:"interval-adjust-position"},{type:"interval-hide-overlap"},{type:"adjust-color"},{type:"limit-in-plot",cfg:{action:"hide"}}])),up({},e,{options:{label:t}})}function d$(e){var t=e.options,i=t.seriesField,n=t.isStack,r=t.legend;return i?!1!==r&&(r=(0,ef.pi)({position:n?"top-left":"right-top"},r||{})):r=!1,up({},e,{options:{legend:r}})}function dX(e){var t=[{type:"transpose"},{type:"reflectY"}].concat(e.options.coordinate||[]);return up({},e,{options:{coordinate:t}})}function dj(e){var t=e.chart,i=e.options,n=i.barStyle,r=i.barWidthRatio,o=i.minBarWidth,s=i.maxBarWidth,a=i.barBackground;return dz({chart:t,options:(0,ef.pi)((0,ef.pi)({},i),{columnStyle:n,columnWidthRatio:r,minColumnWidth:o,maxColumnWidth:s,columnBackground:a})},!0)}function dq(e){return um(dY,dK,d$,u$,dX,dj)(e)}r3(dD.hover,{start:dM(dD.hover),end:[{trigger:"interval:mouseleave",action:["element-highlight-by-color:reset","element-link-by-color:unlink"]}]}),r3(dD.click,{start:dM(dD.click),end:[{trigger:"document:mousedown",action:["element-highlight-by-color:clear","element-link-by-color:clear"]}]});var dZ=up({},dc.getDefaultOptions(),{barWidthRatio:.6,marginRatio:1/32,tooltip:{shared:!0,showMarkers:!1,offset:20},legend:{radio:{}},interactions:[{type:"active-region"}]}),dJ=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="bar",t}return(0,ef.ZT)(t,e),t.getDefaultOptions=function(){return dZ},t.prototype.changeData=function(e){this.updateOption({data:e});var t,i,n,r,o,s=this.chart,a=this.options,l=a.isPercent,h=a.xField,u=a.yField,d=a.xAxis,c=a.yAxis;h=(r=[u,h])[0],u=r[1],d=(o=[c,d])[0],c=o[1],dU({chart:s,options:(0,ef.pi)((0,ef.pi)({},a),{xField:h,yField:u,yAxis:c,xAxis:d})}),s.changeData((t=h,i=u,n=h,l?dg(e,t,i,n):e))},t.prototype.getDefaultOptions=function(){return t.getDefaultOptions()},t.prototype.getSchemaAdaptor=function(){return dq},t}(dc),dQ=up({},dc.getDefaultOptions(),{columnWidthRatio:.6,marginRatio:1/32,tooltip:{shared:!0,showMarkers:!1,offset:20},legend:{radio:{}},interactions:[{type:"active-region"}]}),d0=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="column",t}return(0,ef.ZT)(t,e),t.getDefaultOptions=function(){return dQ},t.prototype.changeData=function(e){this.updateOption({data:e});var t=this.options,i=t.yField,n=t.xField,r=t.isPercent;dU({chart:this.chart,options:this.options}),this.chart.changeData(r?dg(e,i,n,i):e)},t.prototype.getDefaultOptions=function(){return t.getDefaultOptions()},t.prototype.getSchemaAdaptor=function(){return dz},t}(dc),d1="$$percentage$$",d2="$$mappingValue$$",d4="$$conversion$$",d5="$$totalPercentage$$",d6="$$x$$",d3="$$y$$",d9={appendPadding:[0,80],minSize:0,maxSize:1,meta:((q={})[d2]={min:0,max:1,nice:!1},q),label:{style:{fill:"#fff",fontSize:12}},tooltip:{showTitle:!1,showMarkers:!1,shared:!1},conversionTag:{offsetX:10,offsetY:0,style:{fontSize:12,fill:"rgba(0,0,0,0.45)"}}},d7="CONVERSION_TAG_NAME";function d8(e,t,i){var n=i.yField,r=i.maxSize,o=i.minSize,s=(0,em.U2)((0,em.UT)(t,n),[n]),a=(0,em.hj)(r)?r:1,l=(0,em.hj)(o)?o:0;return(0,em.UI)(e,function(t,i){var r=(t[n]||0)/s;return t[d1]=r,t[d2]=(a-l)*r+l,t[d4]=[(0,em.U2)(e,[i-1,n]),t[n]],t})}function ce(e){return function(t){var i=t.chart,n=t.options,r=n.conversionTag,o=n.filteredData||i.getOptions().data;if(r){var s=r.formatter;o.forEach(function(t,n){if(!(n<=0||Number.isNaN(t[d2]))){var a=e(t,n,o,{top:!0,name:d7,text:{content:(0,em.mf)(s)?s(t,o):s,offsetX:r.offsetX,offsetY:r.offsetY,position:"end",autoRotate:!1,style:(0,ef.pi)({textAlign:"start",textBaseline:"middle"},r.style)}});i.annotation().line(a)}})}return t}}function ct(e){var t=e.chart,i=e.options,n=i.data,r=void 0===n?[]:n,o=d8(r,r,{yField:i.yField,maxSize:i.maxSize,minSize:i.minSize});return t.data(o),e}function ci(e){var t=e.chart,i=e.options,n=i.xField,r=i.yField,o=i.color,s=i.tooltip,a=i.label,l=i.shape,h=i.funnelStyle,u=i.state,d=u9(s,[n,r]),c=d.fields,g=d.formatter;return de({chart:t,options:{type:"interval",xField:n,yField:d2,colorField:n,tooltipFields:(0,em.kJ)(c)&&c.concat([d1,d4]),mapping:{shape:void 0===l?"funnel":l,tooltip:g,color:o,style:h},label:a,state:u}}),uv(e.chart,"interval").adjust("symmetric"),e}function cn(e){var t=e.chart,i=e.options.isTransposed;return t.coordinate({type:"rect",actions:i?[]:[["transpose"],["scale",1,-1]]}),e}function cr(e){var t=e.options,i=e.chart,n=t.maxSize,r=(0,em.U2)(i,["geometries","0","dataArray"],[]),o=(0,em.U2)(i,["options","data","length"]),s=(0,em.UI)(r,function(e){return(0,em.U2)(e,["0","nextPoints","0","x"])*o-.5});return ce(function(e,t,i,r){var o=n-(n-e[d2])/2;return(0,ef.pi)((0,ef.pi)({},r),{start:[s[t-1]||t-.5,o],end:[s[t-1]||t-.5,o+.05]})})(e),e}function co(e){return um(ct,ci,cn,cr)(e)}function cs(e){var t,i=e.chart,n=e.options,r=n.data,o=void 0===r?[]:r,s=n.yField;return i.data(o),i.scale(((t={})[s]={sync:!0},t)),e}function ca(e){var t=e.chart,i=e.options,n=i.data,r=i.xField,o=i.yField,s=i.color,a=i.compareField,l=i.isTransposed,h=i.tooltip,u=i.maxSize,d=i.minSize,c=i.label,g=i.funnelStyle,p=i.state,f=i.showFacetTitle;return t.facet("mirror",{fields:[a],transpose:!l,padding:l?0:[32,0,0,0],showTitle:f,eachView:function(e,t){var i=l?t.rowIndex:t.columnIndex;l||e.coordinate({type:"rect",actions:[["transpose"],["scale",0===i?-1:1,-1]]});var f=d8(t.data,n,{yField:o,maxSize:u,minSize:d});e.data(f);var m=u9(h,[r,o,a]),v=m.fields,E=m.formatter;de({chart:e,options:{type:"interval",xField:r,yField:d2,colorField:r,tooltipFields:(0,em.kJ)(v)&&v.concat([d1,d4]),mapping:{shape:"funnel",tooltip:E,color:s,style:g},label:!1!==c&&up({},l?{offset:0===i?10:-23,position:0===i?"bottom":"top"}:{offset:10,position:"left",style:{textAlign:0===i?"end":"start"}},c),state:p}})}}),e}function cl(e){var t=e.chart,i=e.index,n=e.options,r=n.conversionTag,o=n.isTransposed;((0,em.hj)(i)?[t]:t.views).forEach(function(e,t){var s=(0,em.U2)(e,["geometries","0","dataArray"],[]),a=(0,em.U2)(e,["options","data","length"]),l=(0,em.UI)(s,function(e){return(0,em.U2)(e,["0","nextPoints","0","x"])*a-.5});ce(function(e,n,s,a){var h=0===(i||t)?-1:1;return up({},a,{start:[l[n-1]||n-.5,e[d2]],end:[l[n-1]||n-.5,e[d2]+.05],text:o?{style:{textAlign:"start"}}:{offsetX:!1!==r?h*r.offsetX:0,style:{textAlign:0===(i||t)?"end":"start"}}})})(up({},{chart:e,options:n}))})}function ch(e){return e.chart.once("beforepaint",function(){return cl(e)}),e}function cu(e){var t=e.chart,i=e.options,n=i.data,r=void 0===n?[]:n,o=i.yField,s=(0,em.u4)(r,function(e,t){return e+(t[o]||0)},0),a=(0,em.UT)(r,o)[o],l=(0,em.UI)(r,function(e,t){var i=[],n=[];if(e[d5]=(e[o]||0)/s,t){var l=r[t-1][d6],h=r[t-1][d3];i[0]=l[3],n[0]=h[3],i[1]=l[2],n[1]=h[2]}else i[0]=-.5,n[0]=1,i[1]=.5,n[1]=1;return n[2]=n[1]-e[d5],i[2]=(n[2]+1)/4,n[3]=n[2],i[3]=-i[2],e[d6]=i,e[d3]=n,e[d1]=(e[o]||0)/a,e[d4]=[(0,em.U2)(r,[t-1,o]),e[o]],e});return t.data(l),e}function cd(e){var t=e.chart,i=e.options,n=i.xField,r=i.yField,o=i.color,s=i.tooltip,a=i.label,l=i.funnelStyle,h=i.state,u=u9(s,[n,r]),d=u.fields,c=u.formatter;return de({chart:t,options:{type:"polygon",xField:d6,yField:d3,colorField:n,tooltipFields:(0,em.kJ)(d)&&d.concat([d1,d4]),label:a,state:h,mapping:{tooltip:c,color:o,style:l}}}),e}function cc(e){var t=e.chart,i=e.options.isTransposed;return t.coordinate({type:"rect",actions:i?[["transpose"],["reflect","x"]]:[]}),e}function cg(e){return ce(function(e,t,i,n){return(0,ef.pi)((0,ef.pi)({},n),{start:[e[d6][1],e[d3][1]],end:[e[d6][1]+.05,e[d3][1]]})})(e),e}function cp(e){var t,i=e.chart,n=e.options,r=n.data,o=void 0===r?[]:r,s=n.yField;return i.data(o),i.scale(((t={})[s]={sync:!0},t)),e}function cf(e){var t=e.chart,i=e.options,n=i.seriesField,r=i.isTransposed,o=i.showFacetTitle;return t.facet("rect",{fields:[n],padding:[r?0:32,10,0,10],showTitle:o,eachView:function(t,i){co(up({},e,{chart:t,options:{data:i.data}}))}}),e}var cm=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.rendering=!1,t}return(0,ef.ZT)(t,e),t.prototype.change=function(e){var t=this;if(!this.rendering){var i=e.seriesField,n=e.compareField,r=n?cl:cr,o=this.context.view,s=i||n?o.views:[o];(0,em.UI)(s,function(i,n){var o=i.getController("annotation"),s=(0,em.hX)((0,em.U2)(o,["option"],[]),function(e){return e.name!==d7});o.clear(!0),(0,em.S6)(s,function(e){"object"==typeof e&&i.annotation()[e.type](e)});var a=(0,em.U2)(i,["filteredData"],i.getOptions().data);r({chart:i,index:n,options:(0,ef.pi)((0,ef.pi)({},e),{filteredData:d8(a,a,e)})}),i.filterData(a),t.rendering=!0,i.render(!0)})}this.rendering=!1},t}(rS),cv="funnel-conversion-tag",cE="funnel-afterrender",c_={trigger:"afterrender",action:"".concat(cv,":change")};function cC(e){var t,i=e.options,n=i.compareField,r=i.xField,o=i.yField,s=i.locale,a=i.funnelStyle,l=i.data,h=u3(s);return(n||a)&&(t=function(e){return up({},n&&{lineWidth:1,stroke:"#fff"},(0,em.mf)(a)?a(e):a)}),up({options:{label:n?{fields:[r,o,n,d1,d4],formatter:function(e){return"".concat(e[o])}}:{fields:[r,o,d1,d4],offset:0,position:"middle",formatter:function(e){return"".concat(e[r]," ").concat(e[o])}},tooltip:{title:r,formatter:function(e){return{name:e[r],value:e[o]}}},conversionTag:{formatter:function(e){return"".concat(h.get(["conversionTag","label"]),": ").concat(dk.apply(void 0,e[d4]))}}}},e,{options:{funnelStyle:t,data:(0,em.d9)(l)}})}function cS(e){var t=e.options,i=t.compareField,n=t.dynamicHeight;return t.seriesField?um(cp,cf)(e):i?um(cs,ca,ch)(e):n?um(cu,cd,cc,cg)(e):co(e)}function cy(e){var t,i=e.options,n=i.xAxis,r=i.yAxis,o=i.xField,s=i.yField;return um(u0(((t={})[o]=n,t[s]=r,t)))(e)}function cT(e){return e.chart.axis(!1),e}function cb(e){var t=e.chart,i=e.options.legend;return!1===i?t.legend(!1):t.legend(i),e}function cA(e){var t=e.chart,i=e.options,n=i.interactions,r=i.dynamicHeight;return(0,em.S6)(n,function(e){!1===e.enable?t.removeInteraction(e.type):t.interaction(e.type,e.cfg||{})}),r?t.removeInteraction(cE):t.interaction(cE,{start:[(0,ef.pi)((0,ef.pi)({},c_),{arg:i})]}),e}function cR(e){return um(cC,cS,cy,cT,u$,cA,cb,uj,uq,u1())(e)}rA(cv,cm),r3(cE,{start:[c_]});var cL=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="funnel",t}return(0,ef.ZT)(t,e),t.getDefaultOptions=function(){return d9},t.prototype.getDefaultOptions=function(){return t.getDefaultOptions()},t.prototype.getSchemaAdaptor=function(){return cR},t.prototype.setState=function(e,t,i){void 0===i&&(i=!0);var n=u_(this.chart);(0,em.S6)(n,function(n){t(n.getData())&&n.setState(e,i)})},t.prototype.getStates=function(){var e=u_(this.chart),t=[];return(0,em.S6)(e,function(e){var i=e.getData(),n=e.getStates();(0,em.S6)(n,function(n){t.push({data:i,state:n,geometry:e.geometry,element:e})})}),t},t.CONVERSATION_FIELD=d4,t.PERCENT_FIELD=d1,t.TOTAL_PERCENT_FIELD=d5,t}(dc),cN="range",cI="type",cw="percent",cO="indicator-view",cx="range-view",cD={percent:0,range:{ticks:[]},innerRadius:.9,radius:.95,startAngle:-7/6*Math.PI,endAngle:1/6*Math.PI,syncViewPadding:!0,axis:{line:null,label:{offset:-24,style:{textAlign:"center",textBaseline:"middle"}},subTickLine:{length:-8},tickLine:{length:-12},grid:null},indicator:{pointer:{style:{lineWidth:5,lineCap:"round"}},pin:{style:{r:9.75,lineWidth:4.5,fill:"#fff"}}},statistic:{title:!1},meta:((Z={})[cN]={sync:"v"},Z[cw]={sync:"v",tickCount:5,tickInterval:.2},Z),animation:!1};function cM(e){var t;return[((t={})[cw]=(0,em.uZ)(e,0,1),t)]}function ck(e,t){var i=(0,em.U2)(t,["ticks"],[]),n=(0,em.dp)(i)?(0,em.jj)(i):[0,(0,em.uZ)(e,0,1),1];return n[0]||n.shift(),n.map(function(t,i){var r;return(r={})[cN]=t-(n[i-1]||0),r[cI]="".concat(i),r[cw]=e,r})}function cP(e){var t=e.chart,i=e.options,n=i.percent,r=i.range,o=i.radius,s=i.innerRadius,a=i.startAngle,l=i.endAngle,h=i.axis,u=i.indicator,d=i.gaugeStyle,c=i.type,g=i.meter,p=r.color,f=r.width;if(u){var m=cM(n),v=t.createView({id:cO});v.data(m),v.point().position("".concat(cw,"*1")).shape(u.shape||"gauge-indicator").customInfo({defaultColor:t.getTheme().defaultColor,indicator:u}),v.coordinate("polar",{startAngle:a,endAngle:l,radius:s*o}),v.axis(cw,h),v.scale(cw,us(h,un))}var E=ck(n,i.range),_=t.createView({id:cx});return _.data(E),dn({chart:_,options:{xField:"1",yField:cN,seriesField:cI,rawFields:[cw],isStack:!0,interval:{color:(0,em.HD)(p)?[p,"#f0f0f0"]:p,style:d,shape:"meter"===c?"meter-gauge":null},args:{zIndexReversed:!0,sortZIndex:!0},minColumnWidth:f,maxColumnWidth:f}}).ext.geometry.customInfo({meter:g}),_.coordinate("polar",{innerRadius:s,radius:o,startAngle:a,endAngle:l}).transpose(),e}function cF(e){var t;return um(u0(((t={range:{min:0,max:1,maxLimit:1,minLimit:0}})[cw]={},t)))(e)}function cB(e,t){var i=e.chart,n=e.options,r=n.statistic,o=n.percent;if(i.getController("annotation").clear(!0),r){var s=r.content,a=void 0;s&&(a=up({},{content:"".concat((100*o).toFixed(2),"%"),style:{opacity:.75,fontSize:"30px",lineHeight:1,textAlign:"center",color:"rgba(44,53,66,0.85)"}},s)),uw(i,{statistic:(0,ef.pi)((0,ef.pi)({},r),{content:a})},{percent:o})}return t&&i.render(!0),e}function cU(e){var t=e.chart,i=e.options.tooltip;return i?t.tooltip(up({showTitle:!1,showMarkers:!1,containerTpl:'
    ',domStyles:{"g2-tooltip":{padding:"4px 8px",fontSize:"10px"}},customContent:function(e,t){var i=(0,em.U2)(t,[0,"data",cw],0);return"".concat((100*i).toFixed(2),"%")}},i)):t.tooltip(!1),e}function cH(e){return e.chart.legend(!1),e}function cV(e){return um(uq,uj,cP,cF,cU,cB,uX,u1(),cH)(e)}o$("point","gauge-indicator",{draw:function(e,t){var i=e.customInfo,n=i.indicator,r=i.defaultColor,o=n.pointer,s=n.pin,a=t.addGroup(),l=this.parsePoint({x:0,y:0});return o&&a.addShape("line",{name:"pointer",attrs:(0,ef.pi)({x1:l.x,y1:l.y,x2:e.x,y2:e.y,stroke:r},o.style)}),s&&a.addShape("circle",{name:"pin",attrs:(0,ef.pi)({x:l.x,y:l.y,stroke:r},s.style)}),a}}),o$("interval","meter-gauge",{draw:function(e,t){var i=e.customInfo.meter,n=void 0===i?{}:i,r=n.steps,o=void 0===r?50:r,s=n.stepRatio,a=void 0===s?.5:s;o=o<1?1:o,a=(0,em.uZ)(a,0,1);var l=this.coordinate,h=l.startAngle,u=l.endAngle,d=0;a>0&&a<1&&(d=(u-h)/o/(a/(1-a)+1-1/o));for(var c=d/(1-a)*a,g=t.addGroup(),p=this.coordinate.getCenter(),f=this.coordinate.getRadius(),m=sr.getAngle(e,this.coordinate),v=m.startAngle,E=m.endAngle,_=v;_1?l/(n-1):a.max),i||n||(h=l/(Math.ceil(Math.log(s.length)/Math.LN2)+1));var u={},d=(0,em.vM)(o,r);(0,em.xb)(d)?(0,em.S6)(o,function(e){var i=cG(e[t],h,n),r="".concat(i[0],"-").concat(i[1]);(0,em.wH)(u,r)||(u[r]={range:i,count:0}),u[r].count+=1}):Object.keys(d).forEach(function(e){(0,em.S6)(d[e],function(i){var o=cG(i[t],h,n),s="".concat(o[0],"-").concat(o[1]),a="".concat(s,"-").concat(e);(0,em.wH)(u,a)||(u[a]={range:o,count:0},u[a][r]=e),u[a].count+=1})});var c=[];return(0,em.S6)(u,function(e){c.push(e)}),c}var cY="range",cK="count",c$=up({},dc.getDefaultOptions(),{columnStyle:{stroke:"#FFFFFF"},tooltip:{shared:!0,showMarkers:!1},interactions:[{type:"active-region"}]});function cX(e){var t=e.chart,i=e.options,n=i.data,r=i.binField,o=i.binNumber,s=i.binWidth,a=i.color,l=i.stackField,h=i.legend,u=i.columnStyle,d=cz(n,r,s,o,l);return t.data(d),dn(up({},e,{options:{xField:cY,yField:cK,seriesField:l,isStack:!0,interval:{color:a,style:u}}})),h&&l?t.legend(l,h):t.legend(!1),e}function cj(e){var t,i=e.options,n=i.xAxis,r=i.yAxis;return um(u0(((t={})[cY]=n,t[cK]=r,t)))(e)}function cq(e){var t=e.chart,i=e.options,n=i.xAxis,r=i.yAxis;return!1===n?t.axis(cY,!1):t.axis(cY,n),!1===r?t.axis(cK,!1):t.axis(cK,r),e}function cZ(e){var t=e.chart,i=e.options.label,n=uv(t,"interval");if(i){var r=i.callback,o=(0,ef._T)(i,["callback"]);n.label({fields:[cK],callback:r,cfg:uC(o)})}else n.label(!1);return e}function cJ(e){return um(uq,uY("columnStyle"),cX,cj,cq,uZ,cZ,u$,uX,uj)(e)}var cQ=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="histogram",t}return(0,ef.ZT)(t,e),t.getDefaultOptions=function(){return c$},t.prototype.changeData=function(e){this.updateOption({data:e});var t=this.options,i=t.binField,n=t.binNumber,r=t.binWidth,o=t.stackField;this.chart.changeData(cz(e,i,r,n,o))},t.prototype.getDefaultOptions=function(){return t.getDefaultOptions()},t.prototype.getSchemaAdaptor=function(){return cJ},t}(dc),c0=up({},dc.getDefaultOptions(),{tooltip:{shared:!0,showMarkers:!0,showCrosshairs:!0,crosshairs:{type:"x"}},legend:{position:"top-left",radio:{}},isStack:!1});rA("marker-active",function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.active=function(){var e=this.getView(),t=this.context.event;if(t.data){var i=t.data.items,n=e.geometries.filter(function(e){return"point"===e.type});(0,em.S6)(n,function(e){(0,em.S6)(e.elements,function(e){var t=-1!==(0,em.cx)(i,function(t){return t.data===e.data});e.setState("active",t)})})}},t.prototype.reset=function(){var e=this.getView().geometries.filter(function(e){return"point"===e.type});(0,em.S6)(e,function(e){(0,em.S6)(e.elements,function(e){e.setState("active",!1)})})},t.prototype.getView=function(){return this.context.view},t}(rS)),r3("marker-active",{start:[{trigger:"tooltip:show",action:"marker-active:active"}],end:[{trigger:"tooltip:hide",action:"marker-active:reset"}]});var c1=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="line",t}return(0,ef.ZT)(t,e),t.getDefaultOptions=function(){return c0},t.prototype.changeData=function(e){this.updateOption({data:e}),df({chart:this.chart,options:this.options}),this.chart.changeData(e)},t.prototype.getDefaultOptions=function(){return t.getDefaultOptions()},t.prototype.getSchemaAdaptor=function(){return dS},t}(dc),c2=up({},dc.getDefaultOptions(),{legend:{position:"right",radio:{}},tooltip:{shared:!1,showTitle:!1,showMarkers:!1},label:{layout:{type:"limit-in-plot",cfg:{action:"ellipsis"}}},pieStyle:{stroke:"white",lineWidth:1},statistic:{title:{style:{fontWeight:300,color:"#4B535E",textAlign:"center",fontSize:"20px",lineHeight:1}},content:{style:{fontWeight:"bold",color:"rgba(44,53,66,0.85)",textAlign:"center",fontSize:"32px",lineHeight:1}}},theme:{components:{annotation:{text:{animate:!1}}}}}),c4=[1,0,0,0,1,0,0,0,1];function c5(e,t){var i=t?(0,ef.ev)([],t,!0):(0,ef.ev)([],c4,!0);return sr.transform(i,e)}var c6=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getActiveElements=function(){var e=sr.getDelegationObject(this.context);if(e){var t=this.context.view,i=e.component,n=e.item,r=i.get("field");if(r)return t.geometries[0].elements.filter(function(e){return e.getModel().data[r]===n.value})}return[]},t.prototype.getActiveElementLabels=function(){var e=this.context.view,t=this.getActiveElements();return e.geometries[0].labelsContainer.getChildren().filter(function(e){return t.find(function(t){return(0,em.Xy)(t.getData(),e.get("data"))})})},t.prototype.transfrom=function(e){void 0===e&&(e=7.5);var t=this.getActiveElements(),i=this.getActiveElementLabels();t.forEach(function(t,n){var r=i[n],o=t.geometry.coordinate;if(o.isPolar&&o.isTransposed){var s=sr.getAngle(t.getModel(),o),a=(s.startAngle+s.endAngle)/2,l=e,h=l*Math.cos(a),u=l*Math.sin(a);t.shape.setMatrix(c5([["t",h,u]])),r.setMatrix(c5([["t",h,u]]))}})},t.prototype.active=function(){this.transfrom()},t.prototype.reset=function(){this.transfrom(0)},t}(rS),c3=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getAnnotations=function(e){return(e||this.context.view).getController("annotation").option},t.prototype.getInitialAnnotation=function(){return this.initialAnnotation},t.prototype.init=function(){var e=this,t=this.context.view;t.removeInteraction("tooltip"),t.on("afterchangesize",function(){var i=e.getAnnotations(t);e.initialAnnotation=i})},t.prototype.change=function(e){var t,i,n=this.context,r=n.view,o=n.event;this.initialAnnotation||(this.initialAnnotation=this.getAnnotations());var s=(0,em.U2)(o,["data","data"]);if(o.type.match("legend-item")){var a=sr.getDelegationObject(this.context),l=r.getGroupedFields()[0];if(a&&l){var h=a.item;s=r.getData().find(function(e){return e[l]===h.value})}}if(s){var u=(0,em.U2)(e,"annotations",[]),d=(0,em.U2)(e,"statistic",{});r.getController("annotation").clear(!0),(0,em.S6)(u,function(e){"object"==typeof e&&r.annotation()[e.type](e)}),uI(r,{statistic:d,plotType:"pie"},s),r.render(!0)}var c=((i=this.context.event.target)&&(t=i.get("element")),t);c&&c.shape.toFront()},t.prototype.reset=function(){var e=this.context.view;e.getController("annotation").clear(!0);var t=this.getInitialAnnotation();(0,em.S6)(t,function(t){e.annotation()[t.type](t)}),e.render(!0)},t}(rS),c9="pie-statistic";function c7(e,t){return(0,em.yW)(uh(e,t),function(e){return 0===e[t]})}function c8(e){var t=e.chart,i=e.options,n=i.data,r=i.angleField,o=i.colorField,s=i.color,a=i.pieStyle,l=i.shape,h=uh(n,r);if(c7(h,r)){var u="$$percentage$$";h=h.map(function(e){var t;return(0,ef.pi)((0,ef.pi)({},e),((t={})[u]=1/h.length,t))}),t.data(h);var d=up({},e,{options:{xField:"1",yField:u,seriesField:o,isStack:!0,interval:{color:s,shape:l,style:a},args:{zIndexReversed:!0,sortZIndex:!0}}});dn(d)}else{t.data(h);var d=up({},e,{options:{xField:"1",yField:r,seriesField:o,isStack:!0,interval:{color:s,shape:l,style:a},args:{zIndexReversed:!0,sortZIndex:!0}}});dn(d)}return e}function ge(e){var t,i=e.chart,n=e.options,r=n.meta,o=n.colorField,s=up({},r);return i.scale(s,((t={})[o]={type:"cat"},t)),e}function gt(e){var t=e.chart,i=e.options,n=i.radius,r=i.innerRadius,o=i.startAngle,s=i.endAngle;return t.coordinate({type:"theta",cfg:{radius:n,innerRadius:r,startAngle:o,endAngle:s}}),e}function gi(e){var t=e.chart,i=e.options,n=i.label,r=i.colorField,o=i.angleField,s=t.geometries[0];if(n){var a=n.callback,l=uC((0,ef._T)(n,["callback"]));if(l.content){var h=l.content;l.content=function(e,i,n){var s=e[r],a=e[o],l=t.getScaleByField(o),u=null==l?void 0:l.scale(a);return(0,em.mf)(h)?h((0,ef.pi)((0,ef.pi)({},e),{percent:u}),i,n):(0,em.HD)(h)?uO(h,{value:a,name:s,percentage:(0,em.hj)(u)&&!(0,em.UM)(a)?"".concat((100*u).toFixed(2),"%"):null}):h}}var u=l.type?({inner:"",outer:"pie-outer",spider:"pie-spider"})[l.type]:"pie-outer",d=l.layout?(0,em.kJ)(l.layout)?l.layout:[l.layout]:[];l.layout=(u?[{type:u}]:[]).concat(d),s.label({fields:r?[o,r]:[o],callback:a,cfg:(0,ef.pi)((0,ef.pi)({},l),{offset:function(e,t){var i;switch(e){case"inner":if(i="-30%",(0,em.HD)(t)&&t.endsWith("%"))return .01*parseFloat(t)>0?i:t;return t<0?t:i;case"outer":if(i=12,(0,em.HD)(t)&&t.endsWith("%"))return .01*parseFloat(t)<0?i:t;return t>0?t:i;default:return t}}(l.type,l.offset),type:"pie"})})}else s.label(!1);return e}function gn(e){var t=e.innerRadius,i=e.statistic,n=e.angleField,r=e.colorField,o=e.meta,s=u3(e.locale);if(t&&i){var a=up({},c2.statistic,i),l=a.title,h=a.content;return!1!==l&&(l=up({},{formatter:function(e){var t=e?e[r]:(0,em.UM)(l.content)?s.get(["statistic","total"]):l.content;return((0,em.U2)(o,[r,"formatter"])||function(e){return e})(t)}},l)),!1!==h&&(h=up({},{formatter:function(e,t){var i,r=e?e[n]:(i=null,(0,em.S6)(t,function(e){"number"==typeof e[n]&&(i+=e[n])}),i),s=(0,em.U2)(o,[n,"formatter"])||function(e){return e};return e?s(r):(0,em.UM)(h.content)?s(r):h.content}},h)),up({},{statistic:{title:l,content:h}},e)}return e}function gr(e){var t=e.chart,i=gn(e.options),n=i.innerRadius,r=i.statistic;return t.getController("annotation").clear(!0),um(u1())(e),n&&r&&uI(t,{statistic:r,plotType:"pie"}),e}function go(e){var t=e.chart,i=e.options,n=i.tooltip,r=i.colorField,o=i.angleField,s=i.data;if(!1===n)t.tooltip(n);else if(t.tooltip(up({},n,{shared:!1})),c7(s,o)){var a=(0,em.U2)(n,"fields"),l=(0,em.U2)(n,"formatter");(0,em.xb)((0,em.U2)(n,"fields"))&&(a=[r,o],l=l||function(e){return{name:e[r],value:(0,em.BB)(e[o])}}),t.geometries[0].tooltip(a.join("*"),u8(a,l))}return e}function gs(e){var t=e.chart,i=gn(e.options),n=i.interactions,r=i.statistic,o=i.annotations;return(0,em.S6)(n,function(e){var i,n;if(!1===e.enable)t.removeInteraction(e.type);else if("pie-statistic-active"===e.type){var s=[];(null===(i=e.cfg)||void 0===i?void 0:i.start)||(s=[{trigger:"element:mouseenter",action:"".concat(c9,":change"),arg:{statistic:r,annotations:o}}]),(0,em.S6)(null===(n=e.cfg)||void 0===n?void 0:n.start,function(e){s.push((0,ef.pi)((0,ef.pi)({},e),{arg:{statistic:r,annotations:o}}))}),t.interaction(e.type,up({},e.cfg,{start:s}))}else t.interaction(e.type,e.cfg||{})}),e}function ga(e){return um(uY("pieStyle"),c8,ge,uq,gt,uK,go,gi,uZ,gr,gs,uj)(e)}rA(c9,c3),r3("pie-statistic-active",{start:[{trigger:"element:mouseenter",action:"pie-statistic:change"}],end:[{trigger:"element:mouseleave",action:"pie-statistic:reset"}]}),rA("pie-legend",c6),r3("pie-legend-active",{start:[{trigger:"legend-item:mouseenter",action:"pie-legend:active"}],end:[{trigger:"legend-item:mouseleave",action:"pie-legend:reset"}]});var gl=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="pie",t}return(0,ef.ZT)(t,e),t.getDefaultOptions=function(){return c2},t.prototype.changeData=function(e){this.chart.emit(M.BEFORE_CHANGE_DATA,o_.fromData(this.chart,M.BEFORE_CHANGE_DATA,null));var t=this.options,i=this.options.angleField,n=uh(t.data,i),r=uh(e,i);c7(n,i)||c7(r,i)?this.update({data:e}):(this.updateOption({data:e}),this.chart.data(r),gr({chart:this.chart,options:this.options}),this.chart.render(!0)),this.chart.emit(M.AFTER_CHANGE_DATA,o_.fromData(this.chart,M.AFTER_CHANGE_DATA,null))},t.prototype.getDefaultOptions=function(){return t.getDefaultOptions()},t.prototype.getSchemaAdaptor=function(){return ga},t}(dc),gh={percent:.2,color:["#FAAD14","#E8EDF3"],animation:{}};function gu(e){var t=(0,em.uZ)(uS(e)?e:0,0,1);return[{current:"".concat(t),type:"current",percent:t},{current:"".concat(t),type:"target",percent:1}]}function gd(e){var t=e.chart,i=e.options,n=i.percent,r=i.progressStyle,o=i.color,s=i.barWidthRatio;return t.data(gu(n)),dn(up({},e,{options:{xField:"current",yField:"percent",seriesField:"type",widthRatio:s,interval:{style:r,color:(0,em.HD)(o)?[o,"#E8EDF3"]:o},args:{zIndexReversed:!0,sortZIndex:!0}}})),t.tooltip(!1),t.axis(!1),t.legend(!1),e}function gc(e){return e.chart.coordinate("rect").transpose(),e}function gg(e){return um(gd,u0({}),gc,uj,uq,u1())(e)}var gp=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="process",t}return(0,ef.ZT)(t,e),t.getDefaultOptions=function(){return gh},t.prototype.changeData=function(e){this.updateOption({percent:e}),this.chart.changeData(gu(e))},t.prototype.getDefaultOptions=function(){return t.getDefaultOptions()},t.prototype.getSchemaAdaptor=function(){return gg},t}(dc);function gf(e){var t=e.chart,i=e.options,n=i.innerRadius,r=i.radius;return t.coordinate("theta",{innerRadius:n,radius:r}),e}function gm(e,t){var i=e.chart,n=e.options,r=n.innerRadius,o=n.statistic,s=n.percent,a=n.meta;if(i.getController("annotation").clear(!0),r&&o){var l=(0,em.U2)(a,["percent","formatter"])||function(e){return"".concat((100*e).toFixed(2),"%")},h=o.content;h&&(h=up({},h,{content:(0,em.UM)(h.content)?l(s):h.content})),uI(i,{statistic:(0,ef.pi)((0,ef.pi)({},o),{content:h}),plotType:"ring-progress"},{percent:s})}return t&&i.render(!0),e}function gv(e){return um(gd,u0({}),gf,gm,uj,uq,u1())(e)}var gE={percent:.2,innerRadius:.8,radius:.98,color:["#FAAD14","#E8EDF3"],statistic:{title:!1,content:{style:{fontSize:"14px",fontWeight:300,fill:"#4D4D4D",textAlign:"center",textBaseline:"middle"}}},animation:{}},g_=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="ring-process",t}return(0,ef.ZT)(t,e),t.getDefaultOptions=function(){return gE},t.prototype.changeData=function(e){this.chart.emit(M.BEFORE_CHANGE_DATA,o_.fromData(this.chart,M.BEFORE_CHANGE_DATA,null)),this.updateOption({percent:e}),this.chart.data(gu(e)),gm({chart:this.chart,options:this.options},!0),this.chart.emit(M.AFTER_CHANGE_DATA,o_.fromData(this.chart,M.AFTER_CHANGE_DATA,null))},t.prototype.getDefaultOptions=function(){return t.getDefaultOptions()},t.prototype.getSchemaAdaptor=function(){return gv},t}(dc),gC=i(56645),gS={exp:gC.regressionExp,linear:gC.regressionLinear,loess:gC.regressionLoess,log:gC.regressionLog,poly:gC.regressionPoly,pow:gC.regressionPow,quad:gC.regressionQuad},gy=function(e,t){var i=t.view,n=t.options,r=n.xField,o=n.yField,s=i.getScaleByField(r),a=i.getScaleByField(o);return function(e,t,i){var n=[],r=e[0],o=null;if(e.length<=2)return function(e,t){var i=[];if(e.length){i.push(["M",e[0].x,e[0].y]);for(var n=1,r=e.length;n
    ',itemTpl:"{value}",domStyles:{"g2-tooltip":{padding:"2px 4px",fontSize:"10px"}},showCrosshairs:!0,crosshairs:{type:"x"}},gZ={appendPadding:2,tooltip:(0,ef.pi)({},gq),animation:{}};function gJ(e){var t=e.chart,i=e.options,n=i.data,r=i.color,o=i.areaStyle,s=i.point,a=i.line,l=null==s?void 0:s.state,h=gj(n);t.data(h);var u=up({},e,{options:{xField:"x",yField:"y",area:{color:r,style:o},line:a,point:s}}),d=up({},u,{options:{tooltip:!1}}),c=up({},u,{options:{tooltip:!1,state:l}});return dt(u),dr(d),ds(c),t.axis(!1),t.legend(!1),e}function gQ(e){var t,i,n=e.options,r=n.xAxis,o=n.yAxis,s=gj(n.data);return um(u0(((t={}).x=r,t.y=o,t),((i={}).x={type:"cat"},i.y=ua(s,"y"),i)))(e)}function g0(e){return um(uY("areaStyle"),gJ,gQ,u$,uq,uj,u1())(e)}var g1={appendPadding:2,tooltip:(0,ef.pi)({},gq),color:"l(90) 0:#E5EDFE 1:#ffffff",areaStyle:{fillOpacity:.6},line:{size:1,color:"#5B8FF9"},animation:{}},g2=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="tiny-area",t}return(0,ef.ZT)(t,e),t.getDefaultOptions=function(){return g1},t.prototype.changeData=function(e){this.updateOption({data:e});var t=this.chart;gQ({chart:t,options:this.options}),t.changeData(gj(e))},t.prototype.getDefaultOptions=function(){return t.getDefaultOptions()},t.prototype.getSchemaAdaptor=function(){return g0},t}(dc);function g4(e){var t=e.chart,i=e.options,n=i.data,r=i.color,o=i.columnStyle,s=i.columnWidthRatio,a=gj(n);return t.data(a),dn(up({},e,{options:{xField:"x",yField:"y",widthRatio:s,interval:{style:o,color:r}}})),t.axis(!1),t.legend(!1),t.interaction("element-active"),e}function g5(e){return um(uq,uY("columnStyle"),g4,gQ,u$,uj,u1())(e)}var g6={appendPadding:2,tooltip:(0,ef.pi)({},{showTitle:!1,shared:!0,showMarkers:!1,customContent:function(e,t){return"".concat((0,em.U2)(t,[0,"data","y"],0))},containerTpl:'
    ',itemTpl:"{value}",domStyles:{"g2-tooltip":{padding:"2px 4px",fontSize:"10px"}}}),animation:{}},g3=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="tiny-column",t}return(0,ef.ZT)(t,e),t.getDefaultOptions=function(){return g6},t.prototype.changeData=function(e){this.updateOption({data:e});var t=this.chart;gQ({chart:t,options:this.options}),t.changeData(gj(e))},t.prototype.getDefaultOptions=function(){return t.getDefaultOptions()},t.prototype.getSchemaAdaptor=function(){return g5},t}(dc);function g9(e){var t=e.chart,i=e.options,n=i.data,r=i.color,o=i.lineStyle,s=i.point,a=null==s?void 0:s.state,l=gj(n);t.data(l);var h=up({},e,{options:{xField:"x",yField:"y",line:{color:r,style:o},point:s}}),u=up({},h,{options:{tooltip:!1,state:a}});return dr(h),ds(u),t.axis(!1),t.legend(!1),e}function g7(e){return um(g9,gQ,uq,u$,uj,u1())(e)}var g8=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="tiny-line",t}return(0,ef.ZT)(t,e),t.getDefaultOptions=function(){return gZ},t.prototype.changeData=function(e){this.updateOption({data:e});var t=this.chart;gQ({chart:t,options:this.options}),t.changeData(gj(e))},t.prototype.getDefaultOptions=function(){return t.getDefaultOptions()},t.prototype.getSchemaAdaptor=function(){return g7},t}(dc),pe={line:dS,pie:ga,column:dz,bar:dq,area:dA,gauge:cV,"tiny-line":g7,"tiny-column":g5,"tiny-area":g0,"ring-progress":gv,progress:gg,scatter:gM,histogram:cJ,funnel:cR,stock:g$},pt={line:c1,pie:gl,column:d0,bar:dJ,area:dL,gauge:cW,"tiny-line":g8,"tiny-column":g3,"tiny-area":g2,"ring-progress":g_,progress:gp,scatter:gP,histogram:cQ,funnel:cL,stock:gX},pi={pie:{label:!1},column:{tooltip:{showMarkers:!1}},bar:{tooltip:{showMarkers:!1}}};function pn(e,t,i){var n=pt[e];if(!n){console.error("could not find ".concat(e," plot"));return}(0,pe[e])({chart:t,options:up({},n.getDefaultOptions(),(0,em.U2)(pi,e,{}),i)})}function pr(e){var t=e.chart,i=e.options,n=i.views,r=i.legend;return(0,em.S6)(n,function(e){var i=e.region,n=e.data,r=e.meta,o=e.axes,s=e.coordinate,a=e.interactions,l=e.annotations,h=e.tooltip,u=e.geometries,d=t.createView({region:i});d.data(n);var c={};o&&(0,em.S6)(o,function(e,t){c[t]=us(e,un)}),c=up({},r,c),d.scale(c),o?(0,em.S6)(o,function(e,t){d.axis(t,e)}):d.axis(!1),d.coordinate(s),(0,em.S6)(u,function(e){var t=de({chart:d,options:e}).ext,i=e.adjust;i&&t.geometry.adjust(i)}),(0,em.S6)(a,function(e){!1===e.enable?d.removeInteraction(e.type):d.interaction(e.type,e.cfg)}),(0,em.S6)(l,function(e){d.annotation()[e.type]((0,ef.pi)({},e))}),"boolean"==typeof e.animation?d.animate(!1):(d.animate(!0),(0,em.S6)(d.geometries,function(t){t.animate(e.animation)})),h&&(d.interaction("tooltip"),d.tooltip(h))}),r?(0,em.S6)(r,function(e,i){t.legend(i,e)}):t.legend(!1),t.tooltip(i.tooltip),e}function po(e){var t=e.chart,i=e.options,n=i.plots,r=i.data,o=void 0===r?[]:r;return(0,em.S6)(n,function(e){var i=e.type,n=e.region,r=e.options,s=void 0===r?{}:r,a=e.top,l=s.tooltip;if(a){pn(i,t,(0,ef.pi)((0,ef.pi)({},s),{data:o}));return}var h=t.createView((0,ef.pi)({region:n},us(s,dd)));l&&h.interaction("tooltip"),pn(i,h,(0,ef.pi)({data:o},s))}),e}function ps(e){var t=e.chart,i=e.options;return t.option("slider",i.slider),e}function pa(e){return um(uj,pr,po,uX,uj,uq,u$,ps,u1())(e)}rA("association",function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getAssociationItems=function(e,t){var i,n=this.context.event,r=t||{},o=r.linkField,s=r.dim,a=[];if(null===(i=n.data)||void 0===i?void 0:i.data){var l=n.data.data;(0,em.S6)(e,function(e){var t,i,n=o;if("x"===s?n=e.getXScale().field:"y"===s?n=null===(t=e.getYScales().find(function(e){return e.field===n}))||void 0===t?void 0:t.field:n||(n=null===(i=e.getGroupScales()[0])||void 0===i?void 0:i.field),n){var r=(0,em.UI)(uE(e),function(t){var i,r,o=!1,s=!1,a=(0,em.kJ)(l)?(0,em.U2)(l[0],n):(0,em.U2)(l,n);return(i=n,r=t.getModel().data,((0,em.kJ)(r)?r[0][i]:r[i])===a)?o=!0:s=!0,{element:t,view:e,active:o,inactive:s}});a.push.apply(a,r)}})}return a},t.prototype.showTooltip=function(e){var t=uM(this.context.view),i=this.getAssociationItems(t,e);(0,em.S6)(i,function(e){if(e.active){var t=e.element.shape.getCanvasBBox();e.view.showTooltip({x:t.minX+t.width/2,y:t.minY+t.height/2})}})},t.prototype.hideTooltip=function(){var e=uM(this.context.view);(0,em.S6)(e,function(e){e.hideTooltip()})},t.prototype.active=function(e){var t=uD(this.context.view),i=this.getAssociationItems(t,e);(0,em.S6)(i,function(e){var t=e.active,i=e.element;t&&i.setState("active",!0)})},t.prototype.selected=function(e){var t=uD(this.context.view),i=this.getAssociationItems(t,e);(0,em.S6)(i,function(e){var t=e.active,i=e.element;t&&i.setState("selected",!0)})},t.prototype.highlight=function(e){var t=uD(this.context.view),i=this.getAssociationItems(t,e);(0,em.S6)(i,function(e){var t=e.inactive,i=e.element;t&&i.setState("inactive",!0)})},t.prototype.reset=function(){var e=uD(this.context.view);(0,em.S6)(e,function(e){var t;t=uE(e),(0,em.S6)(t,function(e){e.hasState("active")&&e.setState("active",!1),e.hasState("selected")&&e.setState("selected",!1),e.hasState("inactive")&&e.setState("inactive",!1)})})},t}(rS)),r3("association-active",{start:[{trigger:"element:mouseenter",action:"association:active"}],end:[{trigger:"element:mouseleave",action:"association:reset"}]}),r3("association-selected",{start:[{trigger:"element:mouseenter",action:"association:selected"}],end:[{trigger:"element:mouseleave",action:"association:reset"}]}),r3("association-highlight",{start:[{trigger:"element:mouseenter",action:"association:highlight"}],end:[{trigger:"element:mouseleave",action:"association:reset"}]}),r3("association-tooltip",{start:[{trigger:"element:mousemove",action:"association:showTooltip"}],end:[{trigger:"element:mouseleave",action:"association:hideTooltip"}]});var pl=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="mix",t}return(0,ef.ZT)(t,e),t.prototype.getSchemaAdaptor=function(){return pa},t}(dc);(L=J||(J={})).DEV="DEV",L.BETA="BETA",L.STABLE="STABLE",Object.defineProperty(function(){},"MultiView",{get:function(){var e,t;return e=J.STABLE,t="MultiView",console.warn(e===J.DEV?"Plot '".concat(t,"' is in DEV stage, just give us issues."):e===J.BETA?"Plot '".concat(t,"' is in BETA stage, DO NOT use it in production env."):e===J.STABLE?"Plot '".concat(t,"' is in STABLE stage, import it by \"import { ").concat(t," } from '@antv/g2plot'\"."):"invalid Stage type."),pl},enumerable:!1,configurable:!0});var ph="first-axes-view",pu="second-axes-view",pd="series-field-key";function pc(e,t,i,n,r){var o=[];t.forEach(function(t){n.forEach(function(n){var r,s=((r={})[e]=n[e],r[i]=t,r[t]=n[t],r);o.push(s)})});var s=Object.values((0,em.vM)(o,i)),a=s[0],l=void 0===a?[]:a,h=s[1],u=void 0===h?[]:h;return r?[l.reverse(),u.reverse()]:[l,u]}function pg(e){return"vertical"!==e}function pp(e,t,i){var n=t[0],r=t[1],o=n.autoPadding,s=r.autoPadding,a=e.__axisPosition,l=a.layout,h=a.position;if(pg(l)&&"top"===h&&(n.autoPadding=i.instance(o.top,0,o.bottom,o.left),r.autoPadding=i.instance(s.top,o.left,s.bottom,0)),pg(l)&&"bottom"===h&&(n.autoPadding=i.instance(o.top,o.right/2+5,o.bottom,o.left),r.autoPadding=i.instance(s.top,s.right,s.bottom,o.right/2+5)),!pg(l)&&"bottom"===h){var u=o.left>=s.left?o.left:s.left;n.autoPadding=i.instance(o.top,o.right,o.bottom/2+5,u),r.autoPadding=i.instance(o.bottom/2+5,s.right,s.bottom,u)}if(!pg(l)&&"top"===h){var u=o.left>=s.left?o.left:s.left;n.autoPadding=i.instance(o.top,o.right,0,u),r.autoPadding=i.instance(0,s.right,o.top,u)}}function pf(e){var t,i,n=e.chart,r=e.options,o=r.data,s=r.xField,a=r.yField,l=r.color,h=r.barStyle,u=r.widthRatio,d=r.legend,c=r.layout,g=pc(s,a,pd,o,pg(c));d?n.legend(pd,d):!1===d&&n.legend(!1);var p=g[0],f=g[1];return pg(c)?((t=n.createView({region:{start:{x:0,y:0},end:{x:.5,y:1}},id:ph})).coordinate().transpose().reflect("x"),(i=n.createView({region:{start:{x:.5,y:0},end:{x:1,y:1}},id:pu})).coordinate().transpose(),t.data(p),i.data(f)):(t=n.createView({region:{start:{x:0,y:0},end:{x:1,y:.5}},id:ph}),(i=n.createView({region:{start:{x:0,y:.5},end:{x:1,y:1}},id:pu})).coordinate().reflect("y"),t.data(p),i.data(f)),dn(up({},e,{chart:t,options:{widthRatio:u,xField:s,yField:a[0],seriesField:pd,interval:{color:l,style:h}}})),dn(up({},e,{chart:i,options:{xField:s,yField:a[1],seriesField:pd,widthRatio:u,interval:{color:l,style:h}}})),e}function pm(e){var t,i,n,r=e.options,o=e.chart,s=r.xAxis,a=r.yAxis,l=r.xField,h=r.yField,u=ux(o,ph),d=ux(o,pu),c={};return(0,em.XP)((null==r?void 0:r.meta)||{}).map(function(e){(0,em.U2)(null==r?void 0:r.meta,[e,"alias"])&&(c[e]=r.meta[e].alias)}),o.scale(((t={})[pd]={sync:!0,formatter:function(e){return(0,em.U2)(c,e,e)}},t)),u0(((i={})[l]=s,i[h[0]]=a[h[0]],i))(up({},e,{chart:u})),u0(((n={})[l]=s,n[h[1]]=a[h[1]],n))(up({},e,{chart:d})),e}function pv(e){var t=e.chart,i=e.options,n=i.xAxis,r=i.yAxis,o=i.xField,s=i.yField,a=i.layout,l=ux(t,ph),h=ux(t,pu);return(null==n?void 0:n.position)==="bottom"?h.axis(o,(0,ef.pi)((0,ef.pi)({},n),{label:{formatter:function(){return""}}})):h.axis(o,!1),!1===n?l.axis(o,!1):l.axis(o,(0,ef.pi)({position:pg(a)?"top":"bottom"},n)),!1===r?(l.axis(s[0],!1),h.axis(s[1],!1)):(l.axis(s[0],r[s[0]]),h.axis(s[1],r[s[1]])),t.__axisPosition={position:l.getOptions().axes[o].position,layout:a},e}function pE(e){var t=e.chart;return uX(up({},e,{chart:ux(t,ph)})),uX(up({},e,{chart:ux(t,pu)})),e}function p_(e){var t=e.chart,i=e.options,n=i.yField,r=i.yAxis;return u2(up({},e,{chart:ux(t,ph),options:{yAxis:r[n[0]]}})),u2(up({},e,{chart:ux(t,pu),options:{yAxis:r[n[1]]}})),e}function pC(e){var t=e.chart;return uq(up({},e,{chart:ux(t,ph)})),uq(up({},e,{chart:ux(t,pu)})),uq(e),e}function pS(e){var t=e.chart;return uj(up({},e,{chart:ux(t,ph)})),uj(up({},e,{chart:ux(t,pu)})),e}function py(e){var t,i,n=this,r=e.chart,o=e.options,s=o.label,a=o.yField,l=o.layout,h=ux(r,ph),u=ux(r,pu),d=uv(h,"interval"),c=uv(u,"interval");if(s){var g=s.callback,p=(0,ef._T)(s,["callback"]);p.position||(p.position="middle"),void 0===p.offset&&(p.offset=2);var f=(0,ef.pi)({},p);if(pg(l)){var m=(null===(t=f.style)||void 0===t?void 0:t.textAlign)||("middle"===p.position?"center":"left");p.style=up({},p.style,{textAlign:m}),f.style=up({},f.style,{textAlign:{left:"right",right:"left",center:"center"}[m]})}else{var v={top:"bottom",bottom:"top",middle:"middle"};"string"==typeof p.position?p.position=v[p.position]:"function"==typeof p.position&&(p.position=function(){for(var e=[],t=0;t1?"".concat(t,"_").concat(i):"".concat(t)}function pk(e){var t=e.data,i=e.xField,n=e.measureField,r=e.rangeField,o=e.targetField,s=e.layout,a=[],l=[];t.forEach(function(e,t){var s=[e[r]].flat();s.sort(function(e,t){return e-t}),s.forEach(function(n,o){var l,h=0===o?n:s[o]-s[o-1];a.push(((l={rKey:"".concat(r,"_").concat(o)})[i]=i?e[i]:String(t),l[r]=h,l))});var h=[e[n]].flat();h.forEach(function(r,o){var s;a.push(((s={mKey:pM(h,n,o)})[i]=i?e[i]:String(t),s[n]=r,s))});var u=[e[o]].flat();u.forEach(function(n,r){var s;a.push(((s={tKey:pM(u,o,r)})[i]=i?e[i]:String(t),s[o]=n,s))}),l.push(e[r],e[n],e[o])});var h=Math.min.apply(Math,l.flat(1/0)),u=Math.max.apply(Math,l.flat(1/0));return h=h>0?0:h,"vertical"===s&&a.reverse(),{min:h,max:u,ds:a}}function pP(e){var t=e.chart,i=e.options,n=i.bulletStyle,r=i.targetField,o=i.rangeField,s=i.measureField,a=i.xField,l=i.color,h=i.layout,u=i.size,d=i.label,c=pk(i),g=c.min,p=c.max,f=c.ds;return t.data(f),dn(up({},e,{options:{xField:a,yField:o,seriesField:"rKey",isStack:!0,label:(0,em.U2)(d,"range"),interval:{color:(0,em.U2)(l,"range"),style:(0,em.U2)(n,"range"),size:(0,em.U2)(u,"range")}}})),t.geometries[0].tooltip(!1),dn(up({},e,{options:{xField:a,yField:s,seriesField:"mKey",isStack:!0,label:(0,em.U2)(d,"measure"),interval:{color:(0,em.U2)(l,"measure"),style:(0,em.U2)(n,"measure"),size:(0,em.U2)(u,"measure")}}})),ds(up({},e,{options:{xField:a,yField:r,seriesField:"tKey",label:(0,em.U2)(d,"target"),point:{color:(0,em.U2)(l,"target"),style:(0,em.U2)(n,"target"),size:(0,em.mf)((0,em.U2)(u,"target"))?function(e){return(0,em.U2)(u,"target")(e)/2}:(0,em.U2)(u,"target")/2,shape:"horizontal"===h?"line":"hyphen"}}})),"horizontal"===h&&t.coordinate().transpose(),(0,ef.pi)((0,ef.pi)({},e),{ext:{data:{min:g,max:p}}})}function pF(e){var t,i,n=e.options,r=e.ext,o=n.xAxis,s=n.yAxis,a=n.targetField,l=n.rangeField,h=n.measureField,u=n.xField,d=r.data;return um(u0(((t={})[u]=o,t[h]=s,t),((i={})[h]={min:null==d?void 0:d.min,max:null==d?void 0:d.max,sync:!0},i[a]={sync:"".concat(h)},i[l]={sync:"".concat(h)},i)))(e)}function pB(e){var t=e.chart,i=e.options,n=i.xAxis,r=i.yAxis,o=i.xField,s=i.measureField,a=i.rangeField,l=i.targetField;return t.axis("".concat(a),!1),t.axis("".concat(l),!1),!1===n?t.axis("".concat(o),!1):t.axis("".concat(o),n),!1===r?t.axis("".concat(s),!1):t.axis("".concat(s),r),e}function pU(e){var t=e.chart,i=e.options.legend;return t.removeInteraction("legend-filter"),t.legend(i),t.legend("rKey",!1),t.legend("mKey",!1),t.legend("tKey",!1),e}function pH(e){var t=e.chart,i=e.options,n=i.label,r=i.measureField,o=i.targetField,s=i.rangeField,a=t.geometries,l=a[0],h=a[1],u=a[2];return(0,em.U2)(n,"range")?l.label("".concat(s),(0,ef.pi)({layout:[{type:"limit-in-plot"}]},uC(n.range))):l.label(!1),(0,em.U2)(n,"measure")?h.label("".concat(r),(0,ef.pi)({layout:[{type:"limit-in-plot"}]},uC(n.measure))):h.label(!1),(0,em.U2)(n,"target")?u.label("".concat(o),(0,ef.pi)({layout:[{type:"limit-in-plot"}]},uC(n.target))):u.label(!1),e}function pV(e){um(pP,pF,pB,pU,uq,pH,u$,uX,uj)(e)}!function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="box",t}(0,ef.ZT)(t,e),t.getDefaultOptions=function(){return pR},t.prototype.changeData=function(e){this.updateOption({data:e});var t=this.options.yField,i=this.chart.views.find(function(e){return e.id===pA});i&&i.data(e),this.chart.changeData(pL(e,t))},t.prototype.getDefaultOptions=function(){return t.getDefaultOptions()},t.prototype.getSchemaAdaptor=function(){return pD}}(dc);var pW=up({},dc.getDefaultOptions(),{layout:"horizontal",size:{range:30,measure:20,target:20},xAxis:{tickLine:!1,line:null},bulletStyle:{range:{fillOpacity:.5}},label:{measure:{position:"right"}},tooltip:{showMarkers:!1}});!function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="bullet",t}(0,ef.ZT)(t,e),t.getDefaultOptions=function(){return pW},t.prototype.changeData=function(e){this.updateOption({data:e});var t=pk(this.options),i=t.min,n=t.max,r=t.ds;pF({options:this.options,ext:{data:{min:i,max:n}},chart:this.chart}),this.chart.changeData(r)},t.prototype.getSchemaAdaptor=function(){return pV},t.prototype.getDefaultOptions=function(){return t.getDefaultOptions()}}(dc);var pG={y:0,nodeWidthRatio:.05,weight:!1,nodePaddingRatio:.1,id:function(e){return e.id},source:function(e){return e.source},target:function(e){return e.target},sourceWeight:function(e){return e.value||1},targetWeight:function(e){return e.value||1},sortBy:null},pz="name",pY="source",pK={nodeStyle:{opacity:1,fillOpacity:1,lineWidth:1},edgeStyle:{opacity:.5,lineWidth:2},label:{fields:["x","name"],callback:function(e,t){return{offsetX:(e[0]+e[1])/2>.5?-4:4,content:t}},labelEmit:!0,style:{fill:"#8c8c8c"}},tooltip:{showTitle:!1,showMarkers:!1,fields:["source","target","value","isNode"],showContent:function(e){return!(0,em.U2)(e,[0,"data","isNode"])},formatter:function(e){var t=e.source,i=e.target,n=e.value;return{name:"".concat(t," -> ").concat(i),value:n}}},interactions:[{type:"element-active"}],weight:!0,nodePaddingRatio:.1,nodeWidthRatio:.05};function p$(e){var t,i,n,r,o,s,a=e.options,l=a.data,h=a.sourceField,u=a.targetField,d=a.weightField,c=a.nodePaddingRatio,g=a.nodeWidthRatio,p=a.rawFields,f=void 0===p?[]:p,m=ul(l,h,u,d),v=(t=(0,em.f0)({},pG,{weight:!0,nodePaddingRatio:c,nodeWidthRatio:g}),i={},n=m.nodes,r=m.links,n.forEach(function(e){i[t.id(e)]=e}),(0,em.U5)(i,function(e,i){e.inEdges=r.filter(function(e){return"".concat(t.target(e))==="".concat(i)}),e.outEdges=r.filter(function(e){return"".concat(t.source(e))==="".concat(i)}),e.edges=e.outEdges.concat(e.inEdges),e.frequency=e.edges.length,e.value=0,e.inEdges.forEach(function(i){e.value+=t.targetWeight(i)}),e.outEdges.forEach(function(i){e.value+=t.sourceWeight(i)})}),!(s=({weight:function(e,t){return t.value-e.value},frequency:function(e,t){return t.frequency-e.frequency},id:function(e,t){return"".concat(o.id(e)).localeCompare("".concat(o.id(t)))}})[(o=t).sortBy])&&(0,em.mf)(o.sortBy)&&(s=o.sortBy),s&&n.sort(s),{nodes:function(e,t){var i=e.length;if(!i)throw TypeError("Invalid nodes: it's empty!");if(t.weight){var n=t.nodePaddingRatio;if(n<0||n>=1)throw TypeError("Invalid nodePaddingRatio: it must be in range [0, 1)!");var r=n/(2*i),o=t.nodeWidthRatio;if(o<=0||o>=1)throw TypeError("Invalid nodeWidthRatio: it must be in range (0, 1)!");var s=0;e.forEach(function(e){s+=e.value}),e.forEach(function(e){e.weight=e.value/s,e.width=e.weight*(1-n),e.height=o}),e.forEach(function(i,n){for(var s=0,a=n-1;a>=0;a--)s+=e[a].width+2*r;var l=i.minX=r+s,h=i.maxX=i.minX+i.width,u=i.minY=t.y-o/2,d=i.maxY=u+o;i.x=[l,h,h,l],i.y=[u,u,d,d]})}else{var a=1/i;e.forEach(function(e,i){e.x=(i+.5)*a,e.y=t.y})}return e}(n,t),links:function(e,t,i){if(i.weight){var n={};(0,em.U5)(e,function(e,t){n[t]=e.value}),t.forEach(function(t){var r=i.source(t),o=i.target(t),s=e[r],a=e[o];if(s&&a){var l=n[r],h=i.sourceWeight(t),u=s.minX+(s.value-l)/s.value*s.width,d=u+h/s.value*s.width;n[r]-=h;var c=n[o],g=i.targetWeight(t),p=a.minX+(a.value-c)/a.value*a.width,f=p+g/a.value*a.width;n[o]-=g;var m=i.y;t.x=[u,d,p,f],t.y=[m,m,m,m],t.source=s,t.target=a}})}else t.forEach(function(t){var n=e[i.source(t)],r=e[i.target(t)];n&&r&&(t.x=[n.x,r.x],t.y=[n.y,r.y],t.source=n,t.target=r)});return t}(i,r,t)}),E=v.nodes,_=v.links,C=E.map(function(e){return(0,ef.pi)((0,ef.pi)({},us(e,(0,ef.ev)(["id","x","y","name"],f,!0))),{isNode:!0})}),S=_.map(function(e){return(0,ef.pi)((0,ef.pi)({source:e.source.name,target:e.target.name,name:e.source.name||e.target.name},us(e,(0,ef.ev)(["x","y","value"],f,!0))),{isNode:!1})});return(0,ef.pi)((0,ef.pi)({},e),{ext:(0,ef.pi)((0,ef.pi)({},e.ext),{chordData:{nodesData:C,edgesData:S}})})}function pX(e){var t;return e.chart.scale(((t={x:{sync:!0,nice:!0},y:{sync:!0,nice:!0,max:1}})[pz]={sync:"color"},t[pY]={sync:"color"},t)),e}function pj(e){return e.chart.axis(!1),e}function pq(e){return e.chart.legend(!1),e}function pZ(e){var t=e.chart,i=e.options.tooltip;return t.tooltip(i),e}function pJ(e){return e.chart.coordinate("polar").reflect("y"),e}function pQ(e){var t=e.chart,i=e.options,n=e.ext.chordData.nodesData,r=i.nodeStyle,o=i.label,s=i.tooltip,a=t.createView();return a.data(n),da({chart:a,options:{xField:"x",yField:"y",seriesField:pz,polygon:{style:r},label:o,tooltip:s}}),e}function p0(e){var t=e.chart,i=e.options,n=e.ext.chordData.edgesData,r=i.edgeStyle,o=i.tooltip,s=t.createView();return s.data(n),di({chart:s,options:{xField:"x",yField:"y",seriesField:pY,edge:{style:r,shape:"arc"},tooltip:o}}),e}function p1(e){var t=e.chart;return uk(t,e.options.animation,0>=(0,em.U2)(t,["views","length"],0)?t.geometries:(0,em.u4)(t.views,function(e,t){return e.concat(t.geometries)},t.geometries)),e}function p2(e){return um(uq,p$,pJ,pX,pj,pq,pZ,p0,pQ,uX,uZ,p1)(e)}!function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="chord",t}(0,ef.ZT)(t,e),t.getDefaultOptions=function(){return pK},t.prototype.getDefaultOptions=function(){return t.getDefaultOptions()},t.prototype.getSchemaAdaptor=function(){return p2}}(dc);var p4=["x","y","r","name","value","path","depth"],p5={colorField:"name",autoFit:!0,pointStyle:{lineWidth:0,stroke:"#fff"},legend:!1,hierarchyConfig:{size:[1,1],padding:0},label:{fields:["name"],layout:{type:"limit-in-shape"}},tooltip:{showMarkers:!1,showTitle:!1},drilldown:{enabled:!1}},p6="drilldown-bread-crumb",p3={position:"top-left",dividerText:"/",textStyle:{fontSize:12,fill:"rgba(0, 0, 0, 0.65)",cursor:"pointer"},activeTextStyle:{fill:"#87B5FF"}},p9="hierarchy-data-transform-params",p7=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.name="drill-down",t.historyCache=[],t.breadCrumbGroup=null,t.breadCrumbCfg=p3,t}return(0,ef.ZT)(t,e),t.prototype.click=function(){var e=(0,em.U2)(this.context,["event","data","data"]);if(!e)return!1;this.drill(e),this.drawBreadCrumb()},t.prototype.resetPosition=function(){if(this.breadCrumbGroup){var e=this.context.view.getCoordinate(),t=this.breadCrumbGroup,i=t.getBBox(),n=this.getButtonCfg().position,r={x:e.start.x,y:e.end.y-(i.height+10)};e.isPolar&&(r={x:0,y:0}),"bottom-left"===n&&(r={x:e.start.x,y:e.start.y});var o=sr.transform(null,[["t",r.x+0,r.y+i.height+5]]);t.setMatrix(o)}},t.prototype.back=function(){(0,em.dp)(this.historyCache)&&this.backTo(this.historyCache.slice(0,-1))},t.prototype.reset=function(){this.historyCache[0]&&this.backTo(this.historyCache.slice(0,1)),this.historyCache=[],this.hideCrumbGroup()},t.prototype.drill=function(e){var t=this.context.view,i=(0,em.U2)(t,["interactions","drill-down","cfg","transformData"],function(e){return e}),n=i((0,ef.pi)({data:e.data},e[p9]));t.changeData(n);for(var r=[],o=e;o;){var s=o.data;r.unshift({id:"".concat(s.name,"_").concat(o.height,"_").concat(o.depth),name:s.name,children:i((0,ef.pi)({data:s},e[p9]))}),o=o.parent}this.historyCache=(this.historyCache||[]).slice(0,-1).concat(r)},t.prototype.backTo=function(e){if(e&&!(e.length<=0)){var t=this.context.view,i=(0,em.Z$)(e).children;t.changeData(i),e.length>1?(this.historyCache=e,this.drawBreadCrumb()):(this.historyCache=[],this.hideCrumbGroup())}},t.prototype.getButtonCfg=function(){var e=this.context.view,t=(0,em.U2)(e,["interactions","drill-down","cfg","drillDownConfig"]);return up(this.breadCrumbCfg,null==t?void 0:t.breadCrumb,this.cfg)},t.prototype.drawBreadCrumb=function(){this.drawBreadCrumbGroup(),this.resetPosition(),this.breadCrumbGroup.show()},t.prototype.drawBreadCrumbGroup=function(){var e=this,t=this.getButtonCfg(),i=this.historyCache;this.breadCrumbGroup?this.breadCrumbGroup.clear():this.breadCrumbGroup=this.context.view.foregroundGroup.addGroup({name:p6});var n=0;i.forEach(function(r,o){var s=e.breadCrumbGroup.addShape({type:"text",id:r.id,name:"".concat(p6,"_").concat(r.name,"_text"),attrs:(0,ef.pi)((0,ef.pi)({text:0!==o||(0,em.UM)(t.rootText)?r.name:t.rootText},t.textStyle),{x:n,y:0})}),a=s.getBBox();if(n+=a.width+4,s.on("click",function(t){var n,r=t.target.get("id");if(r!==(null===(n=(0,em.Z$)(i))||void 0===n?void 0:n.id)){var o=i.slice(0,i.findIndex(function(e){return e.id===r})+1);e.backTo(o)}}),s.on("mouseenter",function(e){var n;e.target.get("id")!==(null===(n=(0,em.Z$)(i))||void 0===n?void 0:n.id)?s.attr(t.activeTextStyle):s.attr({cursor:"default"})}),s.on("mouseleave",function(){s.attr(t.textStyle)}),o0&&i*i>n*n+r*r}function fi(e,t){for(var i=0;i(s*=s)?(n=(h+s-r)/(2*h),o=Math.sqrt(Math.max(0,s/h-n*n)),i.x=e.x-n*a-o*l,i.y=e.y-n*l+o*a):(n=(h+r-s)/(2*h),o=Math.sqrt(Math.max(0,r/h-n*n)),i.x=t.x+n*a-o*l,i.y=t.y+n*l+o*a)):(i.x=t.x+i.r,i.y=t.y)}function fs(e,t){var i=e.r+t.r-1e-6,n=t.x-e.x,r=t.y-e.y;return i>0&&i*i>n*n+r*r}function fa(e){var t=e._,i=e.next._,n=t.r+i.r,r=(t.x*i.r+i.x*t.r)/n,o=(t.y*i.r+i.y*t.r)/n;return r*r+o*o}function fl(e){this._=e,this.next=null,this.previous=null}function fh(e){var t,i,n,r,o,s,a,l,h,u,d,c;if(!(r=(e="object"==typeof(c=e)&&"length"in c?c:Array.from(c)).length))return 0;if((t=e[0]).x=0,t.y=0,!(r>1))return t.r;if(i=e[1],t.x=-i.r,i.x=t.r,i.y=0,!(r>2))return t.r+i.r;fo(i,t,n=e[2]),t=new fl(t),i=new fl(i),n=new fl(n),t.next=n.previous=i,i.next=t.previous=n,n.next=i.previous=t;e:for(a=3;a=0;)t+=i[n].value;else t=1;e.value=t}function fC(e,t){e instanceof Map?(e=[void 0,e],void 0===t&&(t=fy)):void 0===t&&(t=fS);for(var i,n,r,o,s,a=new fA(e),l=[a];i=l.pop();)if((r=t(i.data))&&(s=(r=Array.from(r)).length))for(i.children=r,o=s-1;o>=0;--o)l.push(n=r[o]=new fA(r[o])),n.parent=i,n.depth=i.depth+1;return a.eachBefore(fb)}function fS(e){return e.children}function fy(e){return Array.isArray(e)?e[1]:null}function fT(e){void 0!==e.data.value&&(e.value=e.data.value),e.data=e.data.data}function fb(e){var t=0;do e.height=t;while((e=e.parent)&&e.height<++t)}function fA(e){this.data=e,this.depth=this.height=0,this.parent=null}fA.prototype=fC.prototype={constructor:fA,count:function(){return this.eachAfter(f_)},each:function(e,t){let i=-1;for(let n of this)e.call(t,n,++i,this);return this},eachAfter:function(e,t){for(var i,n,r,o=this,s=[o],a=[],l=-1;o=s.pop();)if(a.push(o),i=o.children)for(n=0,r=i.length;n=0;--n)o.push(i[n]);return this},find:function(e,t){let i=-1;for(let n of this)if(e.call(t,n,++i,this))return n},sum:function(e){return this.eachAfter(function(t){for(var i=+e(t.data)||0,n=t.children,r=n&&n.length;--r>=0;)i+=n[r].value;t.value=i})},sort:function(e){return this.eachBefore(function(t){t.children&&t.children.sort(e)})},path:function(e){for(var t=this,i=function(e,t){if(e===t)return e;var i=e.ancestors(),n=t.ancestors(),r=null;for(e=i.pop(),t=n.pop();e===t;)r=e,e=i.pop(),t=n.pop();return r}(t,e),n=[t];t!==i;)n.push(t=t.parent);for(var r=n.length;e!==i;)n.splice(r,0,e),e=e.parent;return n},ancestors:function(){for(var e=this,t=[e];e=e.parent;)t.push(e);return t},descendants:function(){return Array.from(this)},leaves:function(){var e=[];return this.eachBefore(function(t){t.children||e.push(t)}),e},links:function(){var e=this,t=[];return e.each(function(i){i!==e&&t.push({source:i.parent,target:i})}),t},copy:function(){return fC(this).eachBefore(fT)},[Symbol.iterator]:function*(){var e,t,i,n,r=this,o=[r];do for(e=o.reverse(),o=[];r=e.pop();)if(yield r,t=r.children)for(i=0,n=t.length;i0&&i1;)n="".concat(null===(t=s.parent.data)||void 0===t?void 0:t.name," / ").concat(n),s=s.parent;if(o&&e.depth>2)return null;var l=up({},e.data,(0,ef.pi)((0,ef.pi)((0,ef.pi)({},us(e.data,r)),{path:n}),e));l.ext=i,l[p9]={hierarchyConfig:i,rawFields:r,enableDrillDown:o},a.push(l)}),a}function fM(e,t,i){var n=ub([e,t]),r=n[0],o=n[1],s=n[2],a=n[3],l=i.width,h=i.height,u=l-(a+o),d=h-(r+s),c=Math.min(u,d),g=(u-c)/2,p=(d-c)/2;return{finalPadding:[r+p,o+g,s+p,a+g],finalSize:c<0?0:c}}function fk(e){var t=e.chart,i=Math.min(t.viewBBox.width,t.viewBBox.height);return up({options:{size:function(e){return e.r*i}}},e)}function fP(e){var t=e.options,i=e.chart,n=i.viewBBox,r=t.padding,o=t.appendPadding,s=t.drilldown,a=o;(null==s?void 0:s.enabled)&&(a=ub([uT(i.appendPadding,(0,em.U2)(s,["breadCrumb","position"])),o]));var l=fM(r,a,n).finalPadding;return i.padding=l,i.appendPadding=0,e}function fF(e){var t=e.chart,i=e.options,n=t.padding,r=t.appendPadding,o=i.color,s=i.colorField,a=i.pointStyle,l=i.hierarchyConfig,h=i.sizeField,u=i.rawFields,d=void 0===u?[]:u,c=i.drilldown,g=fD({data:i.data,hierarchyConfig:l,enableDrillDown:null==c?void 0:c.enabled,rawFields:d});t.data(g);var p=fM(n,r,t.viewBBox).finalSize,f=function(e){return e.r*p};return h&&(f=function(e){return e[h]*p}),ds(up({},e,{options:{xField:"x",yField:"y",seriesField:s,sizeField:h,rawFields:(0,ef.ev)((0,ef.ev)([],p4,!0),d,!0),point:{color:o,style:a,shape:"circle",size:f}}})),e}function fB(e){return um(u0({},{x:{min:0,max:1,minLimit:0,maxLimit:1,nice:!0},y:{min:0,max:1,minLimit:0,maxLimit:1,nice:!0}}))(e)}function fU(e){var t=e.chart,i=e.options.tooltip;if(!1===i)t.tooltip(!1);else{var n=i;(0,em.U2)(i,"fields")||(n=up({},{customItems:function(e){return e.map(function(e){var i=(0,em.U2)(t.getOptions(),"scales"),n=(0,em.U2)(i,["name","formatter"],function(e){return e}),r=(0,em.U2)(i,["value","formatter"],function(e){return e});return(0,ef.pi)((0,ef.pi)({},e),{name:n(e.data.name),value:r(e.data.value)})})}},n)),t.tooltip(n)}return e}function fH(e){return e.chart.axis(!1),e}function fV(e){var t,i,n;return uX({chart:e.chart,options:(i=(t=e.options).drilldown,n=t.interactions,(null==i?void 0:i.enabled)?up({},t,{interactions:(0,ef.ev)((0,ef.ev)([],void 0===n?[]:n,!0),[{type:"drill-down",cfg:{drillDownConfig:i,transformData:fD,enableDrillDown:!0}}],!1)}):t)}),e}function fW(e){return um(uY("pointStyle"),fk,fP,uq,fB,fF,fH,uK,fU,fV,uj,u1())(e)}function fG(e){var t=(0,em.U2)(e,["event","data","data"],{});return(0,em.kJ)(t.children)&&t.children.length>0}function fz(e){var t=e.view.getCoordinate(),i=t.innerRadius;if(i){var n=e.event,r=n.x,o=n.y,s=t.center;return Math.sqrt(Math.pow(s.x-r,2)+Math.pow(s.y-o,2))-1)||(t=Math.min(h,u),i=Math.max(h,u),n>=t&&n<=i)}),e.getRootView().render(!0)}};function f4(e){var t,i=e.options,n=i.geometryOptions,r=void 0===n?[]:n,o=i.xField,s=i.yField,a=(0,em.yW)(r,function(e){var t=e.geometry;return t===et.Line||void 0===t});return up({},{options:{geometryOptions:[],meta:((t={})[o]={type:"cat",sync:!0,range:a?[0,1]:void 0},t),tooltip:{showMarkers:a,showCrosshairs:a,shared:!0,crosshairs:{type:"x"}},interactions:a?[{type:"legend-visible-filter"}]:[{type:"legend-visible-filter"},{type:"active-region"}],legend:{position:"top-left"}}},e,{options:{yAxis:fQ(s,i.yAxis),geometryOptions:[fJ(o,s[0],r[0]),fJ(o,s[1],r[1])],annotations:fQ(s,i.annotations)}})}function f5(e){var t,i,n=e.chart,r=e.options.geometryOptions,o={line:0,column:1};return[{type:null===(t=r[0])||void 0===t?void 0:t.geometry,id:fY},{type:null===(i=r[1])||void 0===i?void 0:i.geometry,id:fK}].sort(function(e,t){return-o[e.type]+o[t.type]}).forEach(function(e){return n.createView({id:e.id})}),e}function f6(e){var t=e.chart,i=e.options,n=i.xField,r=i.yField,o=i.geometryOptions,s=i.data,a=i.tooltip;return[(0,ef.pi)((0,ef.pi)({},o[0]),{id:fY,data:s[0],yField:r[0]}),(0,ef.pi)((0,ef.pi)({},o[1]),{id:fK,data:s[1],yField:r[1]})].forEach(function(e){var i=e.id,r=e.data,o=e.yField,s=fZ(e)&&e.isPercent,l=s?dg(r,o,n,o):r,h=ux(t,i).data(l),u=s?(0,ef.pi)({formatter:function(t){return{name:t[e.seriesField]||o,value:(100*Number(t[o])).toFixed(2)+"%"}}},a):a;!function(e){var t=e.options,i=e.chart,n=t.geometryOption,r=n.isStack,o=n.color,s=n.seriesField,a=n.groupField,l=n.isGroup,h=["xField","yField"];if(fq(n)){dr(up({},e,{options:(0,ef.pi)((0,ef.pi)((0,ef.pi)({},us(t,h)),n),{line:{color:n.color,style:n.lineStyle}})})),ds(up({},e,{options:(0,ef.pi)((0,ef.pi)((0,ef.pi)({},us(t,h)),n),{point:n.point&&(0,ef.pi)({color:o,shape:"circle"},n.point)})}));var u=[];l&&u.push({type:"dodge",dodgeBy:a||s,customOffset:0}),r&&u.push({type:"stack"}),u.length&&(0,em.S6)(i.geometries,function(e){e.adjust(u)})}fZ(n)&&dz(up({},e,{options:(0,ef.pi)((0,ef.pi)((0,ef.pi)({},us(t,h)),n),{widthRatio:n.columnWidthRatio,interval:(0,ef.pi)((0,ef.pi)({},us(n,["color"])),{style:n.columnStyle})})}))}({chart:h,options:{xField:n,yField:o,tooltip:u,geometryOption:e}})}),e}function f3(e){var t,i=e.chart,n=e.options.geometryOptions,r=(null===(t=i.getTheme())||void 0===t?void 0:t.colors10)||[],o=0;return i.once("beforepaint",function(){(0,em.S6)(n,function(e,t){var n=ux(i,0===t?fY:fK);if(!e.color){var s=n.getGroupScales(),a=(0,em.U2)(s,[0,"values","length"],1),l=r.slice(o,o+a).concat(0===t?[]:r);n.geometries.forEach(function(t){e.seriesField?t.color(e.seriesField,l):t.color(l[0])}),o+=a}}),i.render(!0)}),e}function f9(e){var t,i,n=e.chart,r=e.options,o=r.xAxis,s=r.yAxis,a=r.xField,l=r.yField;return u0(((t={})[a]=o,t[l[0]]=s[0],t))(up({},e,{chart:ux(n,fY)})),u0(((i={})[a]=o,i[l[1]]=s[1],i))(up({},e,{chart:ux(n,fK)})),e}function f7(e){var t=e.chart,i=e.options,n=ux(t,fY),r=ux(t,fK),o=i.xField,s=i.yField,a=i.xAxis,l=i.yAxis;return t.axis(o,!1),t.axis(s[0],!1),t.axis(s[1],!1),n.axis(o,a),n.axis(s[0],f0(l[0],ee.Left)),r.axis(o,!1),r.axis(s[1],f0(l[1],ee.Right)),e}function f8(e){var t=e.chart,i=e.options.tooltip,n=ux(t,fY),r=ux(t,fK);return t.tooltip(i),n.tooltip({shared:!0}),r.tooltip({shared:!0}),e}function me(e){var t=e.chart;return uX(up({},e,{chart:ux(t,fY)})),uX(up({},e,{chart:ux(t,fK)})),e}function mt(e){var t=e.chart,i=e.options.annotations,n=(0,em.U2)(i,[0]),r=(0,em.U2)(i,[1]);return u1(n)(up({},e,{chart:ux(t,fY),options:{annotations:n}})),u1(r)(up({},e,{chart:ux(t,fK),options:{annotations:r}})),e}function mi(e){var t=e.chart;return uq(up({},e,{chart:ux(t,fY)})),uq(up({},e,{chart:ux(t,fK)})),uq(e),e}function mn(e){var t=e.chart;return uj(up({},e,{chart:ux(t,fY)})),uj(up({},e,{chart:ux(t,fK)})),e}function mr(e){var t=e.chart,i=e.options.yAxis;return u2(up({},e,{chart:ux(t,fY),options:{yAxis:i[0]}})),u2(up({},e,{chart:ux(t,fK),options:{yAxis:i[1]}})),e}function mo(e){var t=e.chart,i=e.options,n=i.legend,r=i.geometryOptions,o=i.yField,s=i.data,a=ux(t,fY),l=ux(t,fK);if(!1===n)t.legend(!1);else if((0,em.Kn)(n)&&!0===n.custom)t.legend(n);else{var h=(0,em.U2)(r,[0,"legend"],n),u=(0,em.U2)(r,[1,"legend"],n);t.once("beforepaint",function(){var e=s[0].length?f1({view:a,geometryOption:r[0],yField:o[0],legend:h}):[],i=s[1].length?f1({view:l,geometryOption:r[1],yField:o[1],legend:u}):[];t.legend(up({},n,{custom:!0,items:e.concat(i)}))}),r[0].seriesField&&a.legend(r[0].seriesField,h),r[1].seriesField&&l.legend(r[1].seriesField,u),t.on("legend-item:click",function(e){var i=(0,em.U2)(e,"gEvent.delegateObject",{});if(i&&i.item){var n=i.item,r=n.value,s=n.isGeometry,a=n.viewId;if(s){if((0,em.cx)(o,function(e){return e===r})>-1){var l=(0,em.U2)(ux(t,a),"geometries");(0,em.S6)(l,function(e){e.changeVisible(!i.item.unchecked)})}}else{var h=(0,em.U2)(t.getController("legend"),"option.items",[]);(0,em.S6)(t.views,function(e){var i=e.getGroupScales();(0,em.S6)(i,function(t){t.values&&t.values.indexOf(r)>-1&&e.filter(t.field,function(e){return!(0,em.sE)(h,function(t){return t.value===e}).unchecked})}),t.render(!0)})}}})}return e}function ms(e){var t=e.chart,i=e.options.slider,n=ux(t,fY),r=ux(t,fK);return i&&(n.option("slider",i),n.on("slider:valuechanged",function(e){var t=e.event,i=t.value,n=t.originValue;(0,em.Xy)(i,n)||f2(r,i)}),t.once("afterpaint",function(){if(!(0,em.jn)(i)){var e=i.start,t=i.end;(e||t)&&f2(r,[e,t])}})),e}function ma(e){return um(f4,f5,mi,f6,f9,f7,mr,f8,me,mt,mn,f3,mo,ms)(e)}function ml(e){var t=e.chart,i=e.options,n=i.type,r=i.data,o=i.fields,s=i.eachView,a=(0,em.CE)(i,["type","data","fields","eachView","axes","meta","tooltip","coordinate","theme","legend","interactions","annotations"]);return t.data(r),t.facet(n,(0,ef.pi)((0,ef.pi)({},a),{fields:o,eachView:function(e,t){var i,n,r,o,a,l,h,u,d,c,g=s(e,t);if(g.geometries)i=g.data,n=g.coordinate,r=g.interactions,o=g.annotations,a=g.animation,l=g.tooltip,h=g.axes,u=g.meta,d=g.geometries,i&&e.data(i),c={},h&&(0,em.S6)(h,function(e,t){c[t]=us(e,un)}),c=up({},u,c),e.scale(c),n&&e.coordinate(n),!1===h?e.axis(!1):(0,em.S6)(h,function(t,i){e.axis(i,t)}),(0,em.S6)(d,function(t){var i=de({chart:e,options:t}).ext,n=t.adjust;n&&i.geometry.adjust(n)}),(0,em.S6)(r,function(t){!1===t.enable?e.removeInteraction(t.type):e.interaction(t.type,t.cfg)}),(0,em.S6)(o,function(t){e.annotation()[t.type]((0,ef.pi)({},t))}),uk(e,a),l?(e.interaction("tooltip"),e.tooltip(l)):!1===l&&e.removeInteraction("tooltip");else{var p=g.options;p.tooltip&&e.interaction("tooltip"),pn(g.type,e,p)}}})),e}function mh(e){var t=e.chart,i=e.options,n=i.axes,r=i.meta,o=i.tooltip,s=i.coordinate,a=i.theme,l=i.legend,h=i.interactions,u=i.annotations,d={};return n&&(0,em.S6)(n,function(e,t){d[t]=us(e,un)}),d=up({},r,d),t.scale(d),t.coordinate(s),n?(0,em.S6)(n,function(e,i){t.axis(i,e)}):t.axis(!1),o?(t.interaction("tooltip"),t.tooltip(o)):!1===o&&t.removeInteraction("tooltip"),t.legend(l),a&&t.theme(a),(0,em.S6)(h,function(e){!1===e.enable?t.removeInteraction(e.type):t.interaction(e.type,e.cfg)}),(0,em.S6)(u,function(e){t.annotation()[e.type]((0,ef.pi)({},e))}),e}function mu(e){return um(uq,ml,mh)(e)}!function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="dual-axes",t}(0,ef.ZT)(t,e),t.prototype.getDefaultOptions=function(){return up({},e.prototype.getDefaultOptions.call(this),{yAxis:[],syncViewPadding:!0})},t.prototype.getSchemaAdaptor=function(){return ma}}(dc);var md={title:{style:{fontSize:12,fill:"rgba(0,0,0,0.65)"}},rowTitle:{style:{fontSize:12,fill:"rgba(0,0,0,0.65)"}},columnTitle:{style:{fontSize:12,fill:"rgba(0,0,0,0.65)"}}};function mc(e){var t=e.chart,i=e.options,n=i.data,r=i.type,o=i.xField,s=i.yField,a=i.colorField,l=i.sizeField,h=i.sizeRatio,u=i.shape,d=i.color,c=i.tooltip,g=i.heatmapStyle,p=i.meta;t.data(n);var f="polygon";"density"===r&&(f="heatmap");var m=u9(c,[o,s,a]),v=m.fields,E=m.formatter,_=1;return(h||0===h)&&(u||l?h<0||h>1?console.warn("sizeRatio is not in effect: It must be a number in [0,1]"):_=h:console.warn("sizeRatio is not in effect: Must define shape or sizeField first")),de(up({},e,{options:{type:f,colorField:a,tooltipFields:v,shapeField:l||"",label:void 0,mapping:{tooltip:E,shape:u&&(l?function(e){var t=n.map(function(e){return e[l]}),i=(null==p?void 0:p[l])||{},r=i.min,o=i.max;return r=(0,em.hj)(r)?r:Math.min.apply(Math,t),o=(0,em.hj)(o)?o:Math.max.apply(Math,t),[u,((0,em.U2)(e,l)-r)/(o-r),_]}:function(){return[u,1,_]}),color:d||a&&t.getTheme().sequenceColors.join("-"),style:g}}})),e}function mg(e){var t,i=e.options,n=i.xAxis,r=i.yAxis,o=i.xField,s=i.yField;return um(u0(((t={})[o]=n,t[s]=r,t)))(e)}function mp(e){var t=e.chart,i=e.options,n=i.xAxis,r=i.yAxis,o=i.xField,s=i.yField;return!1===n?t.axis(o,!1):t.axis(o,n),!1===r?t.axis(s,!1):t.axis(s,r),e}function mf(e){var t=e.chart,i=e.options,n=i.legend,r=i.colorField,o=i.sizeField,s=i.sizeLegend,a=!1!==n;return r&&t.legend(r,!!a&&n),o&&t.legend(o,void 0===s?n:s),a||s||t.legend(!1),e}function mm(e){var t=e.chart,i=e.options,n=i.label,r=i.colorField,o=uv(t,"density"===i.type?"heatmap":"polygon");if(n){if(r){var s=n.callback,a=(0,ef._T)(n,["callback"]);o.label({fields:[r],callback:s,cfg:uC(a)})}}else o.label(!1);return e}function mv(e){var t,i,n=e.chart,r=e.options,o=r.coordinate,s=r.reflect,a=up({actions:[]},null!=o?o:{type:"rect"});return s&&(null===(i=null===(t=a.actions)||void 0===t?void 0:t.push)||void 0===i||i.call(t,["reflect",s])),n.coordinate(a),e}function mE(e){return um(uq,uY("heatmapStyle"),mg,mv,mc,mp,mf,u$,mm,u1(),uX,uj,uZ)(e)}!function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="area",t}(0,ef.ZT)(t,e),t.getDefaultOptions=function(){return md},t.prototype.getDefaultOptions=function(){return t.getDefaultOptions()},t.prototype.getSchemaAdaptor=function(){return mu}}(dc);var m_=up({},dc.getDefaultOptions(),{type:"polygon",legend:!1,coordinate:{type:"rect"},xAxis:{tickLine:null,line:null,grid:{alignTick:!1,line:{style:{lineWidth:1,lineDash:null,stroke:"#f0f0f0"}}}},yAxis:{grid:{alignTick:!1,line:{style:{lineWidth:1,lineDash:null,stroke:"#f0f0f0"}}}}});function mC(e){return[{percent:e,type:"liquid"}]}function mS(e){var t=e.chart,i=e.options,n=i.percent,r=i.liquidStyle,o=i.radius,s=i.outline,a=i.wave,l=i.shape,h=i.shapeStyle,u=i.animation;t.scale({percent:{min:0,max:1}}),t.data(mC(n));var d=dn(up({},e,{options:{xField:"type",yField:"percent",widthRatio:o,interval:{color:i.color||t.getTheme().defaultColor,style:r,shape:"liquid-fill-gauge"}}})).ext.geometry,c=t.getTheme().background;return d.customInfo({percent:n,radius:o,outline:s,wave:a,shape:l,shapeStyle:h,background:c,animation:u}),t.legend(!1),t.axis(!1),t.tooltip(!1),e}function my(e,t){var i=e.chart,n=e.options,r=n.statistic,o=n.percent,s=n.meta;i.getController("annotation").clear(!0);var a=(0,em.U2)(s,["percent","formatter"])||function(e){return"".concat((100*e).toFixed(2),"%")},l=r.content;return l&&(l=up({},l,{content:(0,em.UM)(l.content)?a(o):l.content})),uI(i,{statistic:(0,ef.pi)((0,ef.pi)({},r),{content:l}),plotType:"liquid"},{percent:o}),t&&i.render(!0),e}function mT(e){return um(uq,uY("liquidStyle"),mS,my,u0({}),uj,uX)(e)}o$("polygon","circle",{draw:function(e,t){var i,n,r=e.x,o=e.y,s=this.parsePoints(e.points),a=Math.min(Math.abs(s[2].x-s[1].x),Math.abs(s[1].y-s[0].y))/2,l=Number(e.shape[1]),h=a*Math.sqrt(Number(e.shape[2]))*Math.sqrt(l),u=(null===(i=e.style)||void 0===i?void 0:i.fill)||e.color||(null===(n=e.defaultStyle)||void 0===n?void 0:n.fill);return t.addShape("circle",{attrs:(0,ef.pi)((0,ef.pi)((0,ef.pi)({x:r,y:o,r:h},e.defaultStyle),e.style),{fill:u})})}}),o$("polygon","square",{draw:function(e,t){var i,n,r=e.x,o=e.y,s=this.parsePoints(e.points),a=Math.min(Math.abs(s[2].x-s[1].x),Math.abs(s[1].y-s[0].y)),l=Number(e.shape[1]),h=a*Math.sqrt(Number(e.shape[2]))*Math.sqrt(l),u=(null===(i=e.style)||void 0===i?void 0:i.fill)||e.color||(null===(n=e.defaultStyle)||void 0===n?void 0:n.fill);return t.addShape("rect",{attrs:(0,ef.pi)((0,ef.pi)((0,ef.pi)({x:r-h/2,y:o-h/2,width:h,height:h},e.defaultStyle),e.style),{fill:u})})}}),function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="heatmap",t}(0,ef.ZT)(t,e),t.getDefaultOptions=function(){return m_},t.prototype.getSchemaAdaptor=function(){return mE},t.prototype.getDefaultOptions=function(){return t.getDefaultOptions()}}(dc);var mb={radius:.9,statistic:{title:!1,content:{style:{opacity:.75,fontSize:"30px",lineHeight:"30px",textAlign:"center"}}},outline:{border:2,distance:0},wave:{count:3,length:192},shape:"circle"},mA={pin:function(e,t,i,n){var r=2*i/3,o=Math.max(r,n),s=r/2,a=s+t-o/2,l=Math.asin(s/((o-s)*.85)),h=Math.sin(l)*s,u=Math.cos(l)*s,d=e-u,c=a+h,g=a+s/Math.sin(l);return"\n M ".concat(d," ").concat(c,"\n A ").concat(s," ").concat(s," 0 1 1 ").concat(d+2*u," ").concat(c,"\n Q ").concat(e," ").concat(g," ").concat(e," ").concat(t+o/2,"\n Q ").concat(e," ").concat(g," ").concat(d," ").concat(c,"\n Z \n ")},circle:function(e,t,i,n){var r=i/2,o=n/2;return"\n M ".concat(e," ").concat(t-o," \n a ").concat(r," ").concat(o," 0 1 0 0 ").concat(2*o,"\n a ").concat(r," ").concat(o," 0 1 0 0 ").concat(-(2*o),"\n Z\n ")},diamond:function(e,t,i,n){var r=n/2,o=i/2;return"\n M ".concat(e," ").concat(t-r,"\n L ").concat(e+o," ").concat(t,"\n L ").concat(e," ").concat(t+r,"\n L ").concat(e-o," ").concat(t,"\n Z\n ")},triangle:function(e,t,i,n){var r=n/2,o=i/2;return"\n M ".concat(e," ").concat(t-r,"\n L ").concat(e+o," ").concat(t+r,"\n L ").concat(e-o," ").concat(t+r,"\n Z\n ")},rect:function(e,t,i,n){var r=n/2,o=i/2*.618;return"\n M ".concat(e-o," ").concat(t-r,"\n L ").concat(e+o," ").concat(t-r,"\n L ").concat(e+o," ").concat(t+r,"\n L ").concat(e-o," ").concat(t+r,"\n Z\n ")}};function mR(e){var t=e.chart,i=e.options,n=i.data,r=i.lineStyle,o=i.color,s=i.point,a=i.area;t.data(n);var l=up({},e,{options:{line:{style:r,color:o},point:s?(0,ef.pi)({color:o},s):s,area:a?(0,ef.pi)({color:o},a):a,label:void 0}}),h=up({},l,{options:{tooltip:!1}}),u=up({},l,{options:{tooltip:!1,state:(null==s?void 0:s.state)||i.state}});return dr(l),ds(u),dt(h),e}function mL(e){var t,i=e.options,n=i.xAxis,r=i.yAxis,o=i.xField,s=i.yField;return um(u0(((t={})[o]=n,t[s]=r,t)))(e)}function mN(e){var t=e.chart,i=e.options,n=i.radius,r=i.startAngle,o=i.endAngle;return t.coordinate("polar",{radius:n,startAngle:r,endAngle:o}),e}function mI(e){var t=e.chart,i=e.options,n=i.xField,r=i.xAxis,o=i.yField,s=i.yAxis;return t.axis(n,r),t.axis(o,s),e}function mw(e){var t=e.chart,i=e.options,n=i.label,r=i.yField,o=uv(t,"line");if(n){var s=n.callback,a=(0,ef._T)(n,["callback"]);o.label({fields:[r],callback:s,cfg:uC(a)})}else o.label(!1);return e}function mO(e){return um(mR,mL,uq,mN,mI,uK,u$,mw,uX,uj,u1())(e)}function mx(e){var t=e.chart,i=e.options,n=i.barStyle,r=i.color,o=i.tooltip,s=i.colorField,a=i.type,l=i.xField,h=i.yField,u=i.data,d=i.shape,c=uh(u,h);return t.data(c),dn(up({},e,{options:{tooltip:o,seriesField:s,interval:{style:n,color:r,shape:d||("line"===a?"line":"intervel")},minColumnWidth:i.minBarWidth,maxColumnWidth:i.maxBarWidth,columnBackground:i.barBackground}})),"line"===a&&ds({chart:t,options:{xField:l,yField:h,seriesField:s,point:{shape:"circle",color:r}}}),e}function mD(e){var t,i,n,r,o,s=e.options,a=s.yField,l=s.xField,h=s.data,u=s.isStack,d=s.isGroup,c=s.colorField,g=s.maxAngle,p=uh(u&&!d&&c?(t=[],h.forEach(function(e){var i=t.find(function(t){return t[l]===e[l]});i?i[a]+=e[a]||null:t.push((0,ef.pi)({},e))}),t):h,a);return um(u0(((o={})[a]={min:0,max:(n=(i=p.map(function(e){return e[a]}).filter(function(e){return void 0!==e})).length>0?Math.max.apply(Math,i):0,(r=Math.abs(g)%360)?360*n/r:n)},o)))(e)}function mM(e){var t=e.chart,i=e.options,n=i.radius,r=i.innerRadius,o=i.startAngle,s=i.endAngle;return t.coordinate({type:"polar",cfg:{radius:n,innerRadius:r,startAngle:o,endAngle:s}}).transpose(),e}function mk(e){var t=e.chart,i=e.options,n=i.xField,r=i.xAxis;return t.axis(n,r),e}function mP(e){var t=e.chart,i=e.options,n=i.label,r=i.yField,o=uv(t,"interval");if(n){var s=n.callback,a=(0,ef._T)(n,["callback"]);o.label({fields:[r],callback:s,cfg:(0,ef.pi)((0,ef.pi)({},uC(a)),{type:"polar"})})}else o.label(!1);return e}function mF(e){return um(uY("barStyle"),mx,mD,mk,mM,uX,uj,uq,u$,uK,u1(),mP)(e)}o$("interval","liquid-fill-gauge",{draw:function(e,t){var i,n,r,o=e.customInfo,s=o.percent,a=o.radius,l=o.shape,h=o.shapeStyle,u=o.background,d=o.animation,c=o.outline,g=o.wave,p=c.border,f=c.distance,m=g.count,v=g.length,E=(0,em.u4)(e.points,function(e,t){return Math.min(e,t.x)},1/0),_=this.parsePoint({x:.5,y:.5}),C=this.parsePoint({x:E,y:.5}),S=Math.min(_.x-C.x,C.y*a),y=(i=(0,ef.pi)({opacity:1},e.style),e.color&&!i.fill&&(i.fill=e.color),i),T=(n=(0,em.CD)({},e,c),r=(0,em.CD)({},{fill:"#fff",fillOpacity:0,lineWidth:4},n.style),n.color&&!r.stroke&&(r.stroke=n.color),(0,em.hj)(n.opacity)&&(r.opacity=r.strokeOpacity=n.opacity),r),b=S-p/2,A=("function"==typeof l?l:mA[l]||mA.circle)(_.x,_.y,2*b,2*b);if(h&&t.addShape("path",{name:"shape",attrs:(0,ef.pi)({path:A},h)}),s>0){var R=t.addGroup({name:"waves"}),L=R.setClip({type:"path",attrs:{path:A}});!function(e,t,i,n,r,o,s,a,l,h){for(var u=r.fill,d=r.opacity,c=s.getBBox(),g=c.maxX-c.minX,p=c.maxY-c.minY,f=0;f0;)h-=2*Math.PI;var u=o-e+(h=h/Math.PI/2*i)-2*e;l.push(["M",u,t]);for(var d=0,c=0;c0){var s=this.view.geometries[0],a=s.dataArray,l=o[0].name,h=[];return a.forEach(function(e){e.forEach(function(e){var t=sr.getTooltipItems(e,s)[0];if(!n&&t&&t.name===l){var i=(0,em.UM)(r)?l:r;h.push((0,ef.pi)((0,ef.pi)({},t),{name:t.title,title:i}))}else if(n&&t){var i=(0,em.UM)(r)?t.name||l:r;h.push((0,ef.pi)((0,ef.pi)({},t),{name:t.title,title:i}))}})}),h}return[]},t}(oN),ov["radar-tooltip"]=w,rA("radar-tooltip",function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.init=function(){this.context.view.removeInteraction("tooltip")},t.prototype.show=function(){var e=this.context.event;this.getTooltipController().showTooltip({x:e.x,y:e.y})},t.prototype.hide=function(){this.getTooltipController().hideTooltip()},t.prototype.getTooltipController=function(){return this.context.view.getController("radar-tooltip")},t}(rS)),r3("radar-tooltip",{start:[{trigger:"plot:mousemove",action:"radar-tooltip:show"}],end:[{trigger:"plot:mouseleave",action:"radar-tooltip:hide"}]}),function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="radar",t}(0,ef.ZT)(t,e),t.prototype.changeData=function(e){this.updateOption({data:e}),this.chart.changeData(e)},t.prototype.getDefaultOptions=function(){return up({},e.prototype.getDefaultOptions.call(this),{xAxis:{label:{offset:15},grid:{line:{type:"line"}}},yAxis:{grid:{line:{type:"circle"}}},legend:{position:"top"},tooltip:{shared:!0,showCrosshairs:!0,showMarkers:!0,crosshairs:{type:"xy",line:{style:{stroke:"#565656",lineDash:[4]}},follow:!0}}})},t.prototype.getSchemaAdaptor=function(){return mO}}(dc);var mB=up({},dc.getDefaultOptions(),{interactions:[{type:"element-active"}],legend:!1,tooltip:{showMarkers:!1},xAxis:{grid:null,tickLine:null,line:null},maxAngle:240});function mU(e){var t=e.chart,i=e.options,n=i.data,r=i.sectorStyle,o=i.shape,s=i.color;return t.data(n),um(dn)(up({},e,{options:{marginRatio:1,interval:{style:r,color:s,shape:o}}})),e}function mH(e){var t=e.chart,i=e.options,n=i.label,r=i.xField,o=uv(t,"interval");if(!1===n)o.label(!1);else if((0,em.Kn)(n)){var s=n.callback,a=n.fields,l=(0,ef._T)(n,["callback","fields"]),h=l.offset,u=l.layout;(void 0===h||h>=0)&&(u=u?(0,em.kJ)(u)?u:[u]:[],l.layout=(0,em.hX)(u,function(e){return"limit-in-shape"!==e.type}),l.layout.length||delete l.layout),o.label({fields:a||[r],callback:s,cfg:uC(l)})}else uo(X.WARN,null===n,"the label option must be an Object."),o.label({fields:[r]});return e}function mV(e){var t=e.chart,i=e.options,n=i.legend,r=i.seriesField;return!1===n?t.legend(!1):r&&t.legend(r,n),e}function mW(e){var t=e.chart,i=e.options,n=i.radius,r=i.innerRadius,o=i.startAngle,s=i.endAngle;return t.coordinate({type:"polar",cfg:{radius:n,innerRadius:r,startAngle:o,endAngle:s}}),e}function mG(e){var t,i=e.options,n=i.xAxis,r=i.yAxis,o=i.xField,s=i.yField;return um(u0(((t={})[o]=n,t[s]=r,t)))(e)}function mz(e){var t=e.chart,i=e.options,n=i.xAxis,r=i.yAxis,o=i.xField,s=i.yField;return n?t.axis(o,n):t.axis(o,!1),r?t.axis(s,r):t.axis(s,!1),e}function mY(e){um(uY("sectorStyle"),mU,mG,mH,mW,mz,mV,u$,uX,uj,uq,u1(),uZ)(e)}!function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="radial-bar",t}(0,ef.ZT)(t,e),t.getDefaultOptions=function(){return mB},t.prototype.changeData=function(e){this.updateOption({data:e}),mD({chart:this.chart,options:this.options}),this.chart.changeData(e)},t.prototype.getDefaultOptions=function(){return t.getDefaultOptions()},t.prototype.getSchemaAdaptor=function(){return mF}}(dc);var mK=up({},dc.getDefaultOptions(),{xAxis:!1,yAxis:!1,legend:{position:"right",radio:{}},sectorStyle:{stroke:"#fff",lineWidth:1},label:{layout:{type:"limit-in-shape"}},tooltip:{shared:!0,showMarkers:!1},interactions:[{type:"active-region"}]});!function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="rose",t}(0,ef.ZT)(t,e),t.getDefaultOptions=function(){return mK},t.prototype.changeData=function(e){this.updateOption({data:e}),this.chart.changeData(e)},t.prototype.getDefaultOptions=function(){return t.getDefaultOptions()},t.prototype.getSchemaAdaptor=function(){return mY}}(dc);var m$="name",mX="nodes",mj="edges";function mq(e){return e.target.depth}function mZ(e,t){return e.sourceLinks.length?e.depth:t-1}function mJ(e){return function(){return e}}function mQ(e,t){for(var i=0,n=0;no.findIndex(function(n){return n==="".concat(e[t],"_").concat(e[i])})})}(p,f,m),f,m,v,R);var L=(n={nodeAlign:E,nodePadding:uS(C)?C/i:S,nodeWidth:uS(y)?y/t:T,nodeSort:_,nodeDepth:b},o=(r=(0,em.f0)({},vt,n)).nodeId,s=r.nodeSort,a=r.nodeAlign,l=r.nodeWidth,h=r.nodePadding,u=r.nodeDepth,{nodes:(d=(function(){var e,t,i,n,r=0,o=0,s=1,a=1,l=24,h=8,u=m6,d=mZ,c=m3,g=m9,p=6;function f(f){var v={nodes:c(f),links:g(f)};return function(e){var t=e.nodes,n=e.links;t.forEach(function(e,t){e.index=t,e.sourceLinks=[],e.targetLinks=[]});var r=new Map(t.map(function(e){return[u(e),e]}));if(n.forEach(function(e,t){e.index=t;var i=e.source,n=e.target;"object"!=typeof i&&(i=e.source=m7(r,i)),"object"!=typeof n&&(n=e.target=m7(r,n)),i.sourceLinks.push(e),n.targetLinks.push(e)}),null!=i)for(var o=0;on)throw Error("circular link");r=o,o=new Set}if(e)for(var a=Math.max(m0(i,function(e){return e.depth})+1,0),l=void 0,h=0;hi)throw Error("circular link");n=r,r=new Set}}(v),function(e){var u=function(e){for(var i=e.nodes,n=Math.max(m0(i,function(e){return e.depth})+1,0),o=(s-r-l)/(n-1),a=Array(n).fill(0).map(function(){return[]}),h=0;h=0;--s){for(var a=e[s],l=0;l0){var E=(u/d-h.y0)*i;h.y0+=E,h.y1+=E,_(h)}}void 0===t&&a.sort(m4),a.length&&m(a,r)}})(u,g,f),function(e,i,r){for(var o=1,s=e.length;o0){var E=(u/d-h.y0)*i;h.y0+=E,h.y1+=E,_(h)}}void 0===t&&a.sort(m4),a.length&&m(a,r)}}(u,g,f)}}(v),m8(v),v}function m(e,t){var i=e.length>>1,r=e[i];E(e,r.y0-n,i-1,t),v(e,r.y1+n,i+1,t),E(e,a,e.length-1,t),v(e,o,0,t)}function v(e,t,i,r){for(;i1e-6&&(o.y0+=s,o.y1+=s),t=o.y1+n}}function E(e,t,i,r){for(;i>=0;--i){var o=e[i],s=(o.y1-t)*r;s>1e-6&&(o.y0-=s,o.y1-=s),t=o.y0-n}}function _(e){var t=e.sourceLinks,n=e.targetLinks;if(void 0===i){for(var r=0;r "+e.target,value:e.value}}},nodeWidthRatio:.008,nodePaddingRatio:.01,animation:{appear:{animation:"wave-in"},enter:{animation:"wave-in"}}}},t.prototype.changeData=function(e){this.updateOption({data:e});var t=vi(this.options,this.chart.width,this.chart.height),i=t.nodes,n=t.edges,r=ux(this.chart,mX),o=ux(this.chart,mj);r.changeData(i),o.changeData(n)},t.prototype.getSchemaAdaptor=function(){return vl},t.prototype.getDefaultOptions=function(){return t.getDefaultOptions()}}(dc);var vh="ancestor-node",vu="value",vd="path",vc=[vd,fR,fN,fL,"name","depth","height"],vg=up({},dc.getDefaultOptions(),{innerRadius:0,radius:.85,hierarchyConfig:{field:"value"},tooltip:{shared:!0,showMarkers:!1,offset:20,showTitle:!1},legend:!1,sunburstStyle:{lineWidth:.5,stroke:"#FFF"},drilldown:{enabled:!0}});function vp(e){e.x0=Math.round(e.x0),e.y0=Math.round(e.y0),e.x1=Math.round(e.x1),e.y1=Math.round(e.y1)}function vf(e,t,i,n,r){for(var o,s=e.children,a=-1,l=s.length,h=e.value&&(n-t)/e.value;++a0)throw Error("cycle");return o}return i.id=function(t){return arguments.length?(e=fd(t),i):e},i.parentId=function(e){return arguments.length?(t=fd(e),i):t},i}function vN(e,t){return e.parent===t.parent?1:2}function vI(e){var t=e.children;return t?t[0]:e.t}function vw(e){var t=e.children;return t?t[t.length-1]:e.t}function vO(e,t){this._=e,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=t}function vx(){var e=vN,t=1,i=1,n=null;function r(r){var l=function(e){for(var t,i,n,r,o,s=new vO(e,0),a=[s];t=a.pop();)if(n=t._.children)for(t.children=Array(o=n.length),r=o-1;r>=0;--r)a.push(i=t.children[r]=new vO(n[r],r)),i.parent=t;return(s.parent=new vO(null,0)).children=[s],s}(r);if(l.eachAfter(o),l.parent.m=-l.z,l.eachBefore(s),n)r.eachBefore(a);else{var h=r,u=r,d=r;r.eachBefore(function(e){e.xu.x&&(u=e),e.depth>d.depth&&(d=e)});var c=h===u?1:e(h,u)/2,g=c-h.x,p=t/(u.x+c+g),f=i/(d.depth||1);r.eachBefore(function(e){e.x=(e.x+g)*p,e.y=e.depth*f})}return r}function o(t){var i=t.children,n=t.parent.children,r=t.i?n[t.i-1]:null;if(i){!function(e){for(var t,i=0,n=0,r=e.children,o=r.length;--o>=0;)t=r[o],t.z+=i,t.m+=i,i+=t.s+(n+=t.c)}(t);var o=(i[0].z+i[i.length-1].z)/2;r?(t.z=r.z+e(t._,r._),t.m=t.z-o):t.z=o}else r&&(t.z=r.z+e(t._,r._));t.parent.A=function(t,i,n){if(i){for(var r,o,s,a=t,l=t,h=i,u=a.parent.children[0],d=a.m,c=l.m,g=h.m,p=u.m;h=vw(h),a=vI(a),h&&a;)u=vI(u),(l=vw(l)).a=t,(s=h.z+g-a.z-d+e(h._,a._))>0&&(function(e,t,i){var n=i/(t.i-e.i);t.c-=n,t.s+=i,e.c+=n,t.z+=i,t.m+=i}((r=h,o=n,r.a.parent===t.parent?r.a:o),t,s),d+=s,c+=s),g+=h.m,d+=a.m,p+=u.m,c+=l.m;h&&!vw(l)&&(l.t=h,l.m+=g-c),a&&!vI(u)&&(u.t=a,u.m+=d-p,n=t)}return n}(t,r,t.parent.A||n[0])}function s(e){e._.x=e.z+e.parent.m,e.m+=e.parent.m}function a(e){e.x*=t,e.y=e.depth*i}return r.separation=function(t){return arguments.length?(e=t,r):e},r.size=function(e){return arguments.length?(n=!1,t=+e[0],i=+e[1],r):n?null:[t,i]},r.nodeSize=function(e){return arguments.length?(n=!0,t=+e[0],i=+e[1],r):n?[t,i]:null},r}function vD(e,t,i,n,r){for(var o,s=e.children,a=-1,l=s.length,h=e.value&&(r-i)/e.value;++ac&&(c=a),(g=Math.max(c/(m=u*u*f),m/d))>p){u-=a;break}p=g}v.push(s={value:u,dice:l1?t:1)},i}(vM);function vF(){var e=vP,t=!1,i=1,n=1,r=[0],o=fc,s=fc,a=fc,l=fc,h=fc;function u(e){return e.x0=e.y0=0,e.x1=i,e.y1=n,e.eachBefore(d),r=[0],t&&e.eachBefore(vp),e}function d(t){var i=r[t.depth],n=t.x0+i,u=t.y0+i,d=t.x1-i,c=t.y1-i;d=i-1){var u=a[t];u.x0=r,u.y0=o,u.x1=s,u.y1=l;return}for(var d=h[t],c=n/2+d,g=t+1,p=i-1;g>>1;h[f]l-o){var E=n?(r*v+s*m)/n:s;e(t,g,m,r,o,E,l),e(g,i,v,E,o,s,l)}else{var _=n?(o*v+l*m)/n:l;e(t,g,m,r,o,s,_),e(g,i,v,r,_,s,l)}}(0,l,e.value,t,i,n,r)}function vU(e,t,i,n,r){(1&e.depth?vD:vf)(e,t,i,n,r)}var vH=function e(t){function i(e,i,n,r,o){if((s=e._squarify)&&s.ratio===t)for(var s,a,l,h,u,d=-1,c=s.length,g=e.value;++d1?t:1)},i}(vM),vV={field:"value",tile:"treemapSquarify",size:[1,1],round:!1,ignoreParentValue:!0,padding:0,paddingInner:0,paddingOuter:0,paddingTop:0,paddingRight:0,paddingBottom:0,paddingLeft:0,as:["x","y"],sort:function(e,t){return t.value-e.value},ratio:.5*(1+Math.sqrt(5))};function vW(e,t){var i,n,r,o=(t=(0,em.f0)({},vV,t)).as;if(!(0,em.kJ)(o)||2!==o.length)throw TypeError('Invalid as: it must be an array with 2 strings (e.g. [ "x", "y" ])!');try{r=fw(t)}catch(e){console.warn(e)}var s=(i=t.tile,n=t.ratio,"treemapSquarify"===i?ep[i].ratio(n):ep[i]),a=vF().tile(s).size(t.size).round(t.round).padding(t.padding).paddingInner(t.paddingInner).paddingOuter(t.paddingOuter).paddingTop(t.paddingTop).paddingRight(t.paddingRight).paddingBottom(t.paddingBottom).paddingLeft(t.paddingLeft)(fC(e).sum(function(e){return t.ignoreParentValue&&e.children?0:e[r]}).sort(t.sort)),l=o[0],h=o[1];return a.each(function(e){e[l]=[e.x0,e.x1,e.x1,e.x0],e[h]=[e.y1,e.y1,e.y0,e.y0],["x0","x1","y0","y1"].forEach(function(t){-1===o.indexOf(t)&&delete e[t]})}),fO(a)}function vG(e){var t=e.data,i=e.colorField,n=e.rawFields,r=e.hierarchyConfig,o=void 0===r?{}:r,s=o.activeDepth,a=e.seriesField,l=e.type||"partition",h=({partition:vE,treemap:vW})[l](t,(0,ef.pi)((0,ef.pi)({field:a||"value"},(0,em.CE)(o,["activeDepth"])),{type:"hierarchy.".concat(l),as:["x","y"]})),u=[];return h.forEach(function(e){if(0===e.depth||s>0&&e.depth>s)return null;for(var t,r,l,h,d,c,g=e.data.name,p=(0,ef.pi)({},e);p.depth>1;)g="".concat(null===(r=p.parent.data)||void 0===r?void 0:r.name," / ").concat(g),p=p.parent;var f=(0,ef.pi)((0,ef.pi)((0,ef.pi)({},us(e.data,(0,ef.ev)((0,ef.ev)([],n||[],!0),[o.field],!1))),((t={})[vd]=g,t[vh]=p.data.name,t)),e);a&&(f[a]=e.data[a]||(null===(h=null===(l=e.parent)||void 0===l?void 0:l.data)||void 0===h?void 0:h[a])),i&&(f[i]=e.data[i]||(null===(c=null===(d=e.parent)||void 0===d?void 0:d.data)||void 0===c?void 0:c[i])),f.ext=o,f[p9]={hierarchyConfig:o,colorField:i,rawFields:n},u.push(f)}),u}function vz(e){var t,i=e.chart,n=e.options,r=n.color,o=n.colorField,s=void 0===o?vh:o,a=n.sunburstStyle,l=n.rawFields,h=void 0===l?[]:l,u=n.shape,d=vG(n);return i.data(d),a&&(t=function(e){return up({},{fillOpacity:Math.pow(.85,e.depth)},(0,em.mf)(a)?a(e):a)}),da(up({},e,{options:{xField:"x",yField:"y",seriesField:s,rawFields:(0,em.jj)((0,ef.ev)((0,ef.ev)([],vc,!0),h,!0)),polygon:{color:r,style:t,shape:u}}})),e}function vY(e){return e.chart.axis(!1),e}function vK(e){var t=e.chart,i=e.options.label,n=uv(t,"polygon");if(i){var r=i.fields,o=i.callback,s=(0,ef._T)(i,["fields","callback"]);n.label({fields:void 0===r?["name"]:r,callback:o,cfg:uC(s)})}else n.label(!1);return e}function v$(e){var t=e.chart,i=e.options,n=i.innerRadius,r=i.radius,o=i.reflect,s=t.coordinate({type:"polar",cfg:{innerRadius:n,radius:r}});return o&&s.reflect(o),e}function vX(e){var t,i=e.options,n=i.hierarchyConfig,r=i.meta;return um(u0({},((t={})[vu]=(0,em.U2)(r,(0,em.U2)(n,["field"],"value")),t)))(e)}function vj(e){var t=e.chart,i=e.options.tooltip;if(!1===i)t.tooltip(!1);else{var n=i;(0,em.U2)(i,"fields")||(n=up({},{customItems:function(e){return e.map(function(e){var i=(0,em.U2)(t.getOptions(),"scales"),n=(0,em.U2)(i,[vd,"formatter"],function(e){return e}),r=(0,em.U2)(i,[vu,"formatter"],function(e){return e});return(0,ef.pi)((0,ef.pi)({},e),{name:n(e.data[vd]),value:r(e.data.value)})})}},n)),t.tooltip(n)}return e}function vq(e){var t,i,n=e.chart,r=e.options,o=r.drilldown;return uX({chart:n,options:(t=r.drilldown,i=r.interactions,(null==t?void 0:t.enabled)?up({},r,{interactions:(0,ef.ev)((0,ef.ev)([],void 0===i?[]:i,!0),[{type:"drill-down",cfg:{drillDownConfig:t,transformData:vG}}],!1)}):r)}),(null==o?void 0:o.enabled)&&(n.appendPadding=uT(n.appendPadding,(0,em.U2)(o,["breadCrumb","position"]))),e}function vZ(e){return um(uq,uY("sunburstStyle"),vz,vY,vX,uK,v$,vj,vK,vq,uj,u1())(e)}function vJ(e,t){if((0,em.kJ)(e))return e.find(function(e){return e.type===t})}function vQ(e,t){var i=vJ(e,t);return i&&!1!==i.enable}function v0(e){var t=e.interactions,i=e.drilldown;return(0,em.U2)(i,"enabled")||vQ(t,"treemap-drill-down")}function v1(e){var t=e.data,i=e.colorField,n=e.enableDrillDown,r=e.hierarchyConfig,o=vW(t,(0,ef.pi)((0,ef.pi)({},r),{type:"hierarchy.treemap",field:"value",as:["x","y"]})),s=[];return o.forEach(function(e){if(0===e.depth||n&&1!==e.depth||!n&&e.children)return null;var o=e.ancestors().map(function(e){return{data:e.data,height:e.height,value:e.value}}),a=n&&(0,em.kJ)(t.path)?o.concat(t.path.slice(1)):o,l=Object.assign({},e.data,(0,ef.pi)({x:e.x,y:e.y,depth:e.depth,value:e.value,path:a},e));if(!e.data[i]&&e.parent){var h=e.ancestors().find(function(e){return e.data[i]});l[i]=null==h?void 0:h.data[i]}else l[i]=e.data[i];l[p9]={hierarchyConfig:r,colorField:i,enableDrillDown:n},s.push(l)}),s}function v2(e){return up({options:{rawFields:["value"],tooltip:{fields:["name","value",e.options.colorField,"path"],formatter:function(e){return{name:e.name,value:e.value}}}}},e)}function v4(e){var t=e.chart,i=e.options,n=i.color,r=i.colorField,o=i.rectStyle,s=i.hierarchyConfig,a=i.rawFields,l=v1({data:i.data,colorField:i.colorField,enableDrillDown:v0(i),hierarchyConfig:s});return t.data(l),da(up({},e,{options:{xField:"x",yField:"y",seriesField:r,rawFields:a,polygon:{color:n,style:o}}})),t.coordinate().reflect("y"),e}function v5(e){return e.chart.axis(!1),e}function v6(e){var t,i,n=e.chart,r=e.options,o=r.interactions,s=r.drilldown;uX({chart:n,options:(t=r.drilldown,i=r.interactions,v0(r)?up({},r,{interactions:(0,ef.ev)((0,ef.ev)([],void 0===i?[]:i,!0),[{type:"drill-down",cfg:{drillDownConfig:t,transformData:v1}}],!1)}):r)});var a=vJ(o,"view-zoom");return a&&(!1!==a.enable?n.getCanvas().on("mousewheel",function(e){e.preventDefault()}):n.getCanvas().off("mousewheel")),v0(r)&&(n.appendPadding=uT(n.appendPadding,(0,em.U2)(s,["breadCrumb","position"]))),e}function v3(e){return um(v2,uq,uY("rectStyle"),v4,v5,uK,u$,v6,uj,u1())(e)}!function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="sunburst",t}(0,ef.ZT)(t,e),t.getDefaultOptions=function(){return vg},t.prototype.getDefaultOptions=function(){return t.getDefaultOptions()},t.prototype.getSchemaAdaptor=function(){return vZ},t.SUNBURST_ANCESTOR_FIELD=vh,t.SUNBURST_PATH_FIELD=vd,t.NODE_ANCESTORS_FIELD=fN}(dc);var v9={colorField:"name",rectStyle:{lineWidth:1,stroke:"#fff"},hierarchyConfig:{tile:"treemapSquarify"},label:{fields:["name"],layout:{type:"limit-in-shape"}},tooltip:{showMarkers:!1,showTitle:!1},drilldown:{enabled:!1,breadCrumb:{position:"bottom-left",rootText:"初始",dividerText:"/",textStyle:{fontSize:12,fill:"rgba(0, 0, 0, 0.65)",cursor:"pointer"},activeTextStyle:{fill:"#87B5FF"}}}};!function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="treemap",t}(0,ef.ZT)(t,e),t.getDefaultOptions=function(){return v9},t.prototype.changeData=function(e){var t,i=this.options,n=i.colorField,r=i.interactions,o=i.hierarchyConfig;this.updateOption({data:e});var s=v1({data:e,colorField:n,enableDrillDown:vQ(r,"treemap-drill-down"),hierarchyConfig:o});this.chart.changeData(s),(t=this.chart.interactions["drill-down"])&&t.context.actions.find(function(e){return"drill-down-action"===e.name}).reset()},t.prototype.getDefaultOptions=function(){return t.getDefaultOptions()},t.prototype.getSchemaAdaptor=function(){return v3}}(dc);var v7="path",v8={appendPadding:[10,0,20,0],blendMode:"multiply",tooltip:{showTitle:!1,showMarkers:!1,fields:["id","size"],formatter:function(e){return{name:e.id,value:e.size}}},legend:{position:"top-left"},label:{style:{textAlign:"center",fill:"#fff"}},interactions:[{type:"legend-filter",enable:!1}],state:{active:{style:{stroke:"#000"}},selected:{style:{stroke:"#000",lineWidth:2}},inactive:{style:{fillOpacity:.3,strokeOpacity:.3}}},defaultInteractions:["tooltip","venn-legend-active"]};function Ee(e){e&&e.geometries[0].elements.forEach(function(e){e.shape.toFront()})}var Et=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.syncElementsPos=function(){Ee(this.context.view)},t.prototype.active=function(){e.prototype.active.call(this),this.syncElementsPos()},t.prototype.toggle=function(){e.prototype.toggle.call(this),this.syncElementsPos()},t.prototype.reset=function(){e.prototype.reset.call(this),this.syncElementsPos()},t}(rb("element-active")),Ei=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.syncElementsPos=function(){Ee(this.context.view)},t.prototype.highlight=function(){e.prototype.highlight.call(this),this.syncElementsPos()},t.prototype.toggle=function(){e.prototype.toggle.call(this),this.syncElementsPos()},t.prototype.clear=function(){e.prototype.clear.call(this),this.syncElementsPos()},t.prototype.reset=function(){e.prototype.reset.call(this),this.syncElementsPos()},t}(rb("element-highlight")),En=rb("element-selected"),Er=rb("element-single-selected"),Eo=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.syncElementsPos=function(){Ee(this.context.view)},t.prototype.selected=function(){e.prototype.selected.call(this),this.syncElementsPos()},t.prototype.toggle=function(){e.prototype.toggle.call(this),this.syncElementsPos()},t.prototype.reset=function(){e.prototype.reset.call(this),this.syncElementsPos()},t}(En),Es=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.syncElementsPos=function(){Ee(this.context.view)},t.prototype.selected=function(){e.prototype.selected.call(this),this.syncElementsPos()},t.prototype.toggle=function(){e.prototype.toggle.call(this),this.syncElementsPos()},t.prototype.reset=function(){e.prototype.reset.call(this),this.syncElementsPos()},t}(Er);rA("venn-element-active",Et),rA("venn-element-highlight",Ei),rA("venn-element-selected",Eo),rA("venn-element-single-selected",Es),r3("venn-element-active",{start:[{trigger:"element:mouseenter",action:"venn-element-active:active"}],end:[{trigger:"element:mouseleave",action:"venn-element-active:reset"}]}),r3("venn-element-highlight",{start:[{trigger:"element:mouseenter",action:"venn-element-highlight:highlight"}],end:[{trigger:"element:mouseleave",action:"venn-element-highlight:reset"}]}),r3("venn-element-selected",{start:[{trigger:"element:click",action:"venn-element-selected:toggle"}],rollback:[{trigger:"dblclick",action:["venn-element-selected:reset"]}]}),r3("venn-element-single-selected",{start:[{trigger:"element:click",action:"venn-element-single-selected:toggle"}],rollback:[{trigger:"dblclick",action:["venn-element-single-selected:reset"]}]}),r3("venn-legend-active",{start:[{trigger:"legend-item:mouseenter",action:["list-active:active","venn-element-active:active"]}],end:[{trigger:"legend-item:mouseleave",action:["list-active:reset","venn-element-active:reset"]}]}),r3("venn-legend-highlight",{start:[{trigger:"legend-item:mouseenter",action:["legend-item-highlight:highlight","venn-element-highlight:highlight"]}],end:[{trigger:"legend-item:mouseleave",action:["legend-item-highlight:reset","venn-element-highlight:reset"]}]}),oV("venn",function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,ef.ZT)(t,e),t.prototype.getLabelPoint=function(e,t,i){var n=e.data,r=n.x,o=n.y,s=e.customLabelInfo,a=s.offsetX,l=s.offsetY;return{content:e.content[i],x:r+a,y:o+l}},t}(o3));var Ea=Array.isArray,El=" \n\v\f\r \xa0 ᠎              \u2028\u2029",Eh=RegExp("([a-z])["+El+",]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?["+El+"]*,?["+El+"]*)+)","ig"),Eu=RegExp("(-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)["+El+"]*,?["+El+"]*","ig");o$("schema","venn",{draw:function(e,t){var i=function(e){if(!e)return null;if(Ea(e))return e;var t={a:7,c:6,o:2,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,u:3,z:0},i=[];return String(e).replace(Eh,function(e,n,r){var o=[],s=n.toLowerCase();if(r.replace(Eu,function(e,t){t&&o.push(+t)}),"m"===s&&o.length>2&&(i.push([n].concat(o.splice(0,2))),s="l",n="m"===n?"l":"L"),"o"===s&&1===o.length&&i.push([n,o[0]]),"r"===s)i.push([n].concat(o));else for(;o.length>=t[s]&&(i.push([n].concat(o.splice(0,t[s]))),t[s]););return""}),i}(e.data[v7]),n=up({},e.defaultStyle,{fill:e.color},e.style),r=t.addGroup({name:"venn-shape"});r.addShape("path",{attrs:(0,ef.pi)((0,ef.pi)({},n),{path:i}),name:"venn-path"});var o=e.customInfo,s=o.offsetX,a=o.offsetY,l=sr.transform(null,[["t",s,a]]);return r.setMatrix(l),r},getMarker:function(e){var t=e.color;return{symbol:"circle",style:{lineWidth:0,stroke:t,fill:t,r:4}}}});var Ed={normal:function(e){return e},multiply:function(e,t){return e*t/255},screen:function(e,t){return 255*(1-(1-e/255)*(1-t/255))},overlay:function(e,t){return t<128?2*e*t/255:255*(1-2*(1-e/255)*(1-t/255))},darken:function(e,t){return e>t?t:e},lighten:function(e,t){return e>t?e:t},dodge:function(e,t){return 255===e?255:(e=255*(t/255)/(1-e/255))>255?255:e},burn:function(e,t){return 255===t?255:0===e?0:255*(1-Math.min(1,(1-t/255)/(e/255)))}},Ec=function(e){if(!Ed[e])throw Error("unknown blend mode "+e);return Ed[e]};function Eg(e){var t,i=e.replace("/s+/g","");return"string"!=typeof i||i.startsWith("rgba")||i.startsWith("#")?(i.startsWith("rgba")&&(t=i.replace("rgba(","").replace(")","").split(",")),i.startsWith("#")&&(t=eQ.rgb2arr(i).concat([1])),t.map(function(e,t){return 3===t?Number(e):0|e})):eQ.rgb2arr(eQ.toRGB(i)).concat([1])}var Ep=i(69916);function Ef(e,t){var i,n=function(e){for(var t=[],i=0;it[i].radius+1e-10)return!1;return!0}(t,e)}),o=0,s=0,a=[];if(r.length>1){var l=EC(r);for(i=0;i-1){var f=e[d.parentIndex[p]],m=Math.atan2(d.x-f.x,d.y-f.y),v=Math.atan2(u.x-f.x,u.y-f.y),E=v-m;E<0&&(E+=2*Math.PI);var _=v-E/2,C=Ev(c,{x:f.x+f.radius*Math.sin(_),y:f.y+f.radius*Math.cos(_)});C>2*f.radius&&(C=2*f.radius),(null===g||g.width>C)&&(g={circle:f,width:C,p1:d,p2:u})}null!==g&&(a.push(g),o+=Em(g.circle.radius,g.width),u=d)}}else{var S=e[0];for(i=1;iMath.abs(S.radius-e[i].radius)){y=!0;break}y?o=s=0:(o=S.radius*S.radius*Math.PI,a.push({circle:S,p1:{x:S.x,y:S.y+S.radius},p2:{x:S.x-1e-10,y:S.y+S.radius},width:2*S.radius}))}return s/=2,t&&(t.area=o+s,t.arcArea=o,t.polygonArea=s,t.arcs=a,t.innerPoints=r,t.intersectionPoints=n),o+s}function Em(e,t){return e*e*Math.acos(1-t/e)-(e-t)*Math.sqrt(t*(2*e-t))}function Ev(e,t){return Math.sqrt((e.x-t.x)*(e.x-t.x)+(e.y-t.y)*(e.y-t.y))}function EE(e,t,i){if(i>=e+t)return 0;if(i<=Math.abs(e-t))return Math.PI*Math.min(e,t)*Math.min(e,t);var n=e-(i*i-t*t+e*e)/(2*i),r=t-(i*i-e*e+t*t)/(2*i);return Em(e,n)+Em(t,r)}function E_(e,t){var i=Ev(e,t),n=e.radius,r=t.radius;if(i>=n+r||i<=Math.abs(n-r))return[];var o=(n*n-r*r+i*i)/(2*i),s=Math.sqrt(n*n-o*o),a=e.x+o*(t.x-e.x)/i,l=e.y+o*(t.y-e.y)/i,h=-(t.y-e.y)*(s/i),u=-(t.x-e.x)*(s/i);return[{x:a+h,y:l-u},{x:a-h,y:l+u}]}function EC(e){for(var t={x:0,y:0},i=0;i=Math.min(r[u].size,r[d].size)&&(h=0),o[u].push({set:d,size:l.size,weight:h}),o[d].push({set:u,size:l.size,weight:h})}var c=[];for(i in o)if(o.hasOwnProperty(i)){for(var g=0,s=0;s=8){var r=function(e,t){var i,n,r,o,s,a=(t=t||{}).restarts||10,l=[],h={};for(r=0;r=Math.min(l[t].size,l[r].size)?s=1:e.size<=1e-10&&(s=-1),n[t][r]=n[r][t]=s}),{distances:i,constraints:n}),c=d.distances,g=d.constraints,p=(0,Ep.norm2)(c.map(Ep.norm2))/c.length;c=c.map(function(e){return e.map(function(e){return e/p})});var f=function(e,t){return function(e,t,i,n){var r,o=0;for(r=0;r0&&p<=d||c<0&&p>=d||(o+=2*f*f,t[2*r]+=4*f*(s-h),t[2*r+1]+=4*f*(a-u),t[2*l]+=4*f*(h-s),t[2*l+1]+=4*f*(u-a))}return o}(e,t,c,g)};for(r=0;rt?1:-1}),t=0;t=a&&(s=r[n],a=l)}var h=(0,Ep.nelderMead)(function(e){return -1*ES({x:e[0],y:e[1]},t,i)},[s.x,s.y],{maxIterations:500,minErrorDelta:1e-10}).x,u={x:h[0],y:h[1]},d=!0;for(n=0;nt[n].radius){d=!1;break}for(n=0;n0&&console.log("WARNING: area "+o+" not represented on screen")}return i}(l,a);return a.forEach(function(e){var t=e.sets,i=t.join(",");e.id=i;var n=function(e){var t={};Ef(e,t);var i=t.arcs;if(0===i.length)return"M 0 0";if(1==i.length){var n,r,o,s,a,l=i[0].circle;return n=l.x,r=l.y,o=l.radius,s=[],a=n-o,s.push("M",a,r),s.push("A",o,o,0,1,0,a+2*o,r),s.push("A",o,o,0,1,0,a,r),s.join(" ")}for(var h=["\nM",i[0].p2.x,i[0].p2.y],u=0;uc;h.push("\nA",c,c,0,g?1:0,1,d.p1.x,d.p1.y)}return h.join(" ")}(t.map(function(e){return l[e]}));/[zZ]$/.test(n)||(n+=" Z"),e[v7]=n;var r=h[i]||{x:0,y:0};(0,em.f0)(e,r)}),a}(i,Math.max(d.width-(l+u),0),Math.max(d.height-(a+h),0),0);t.data(c);var g=dl(up({},e,{options:{xField:"x",yField:"y",sizeField:o,seriesField:"id",rawFields:[r,o],schema:{shape:"venn",style:n}}})).ext.geometry;g.customInfo({offsetX:u,offsetY:a});var p=function(e,t){var i=e.options.color;if("function"!=typeof i){var n=ER(e,t,"string"==typeof i?[i]:i);return function(e){return n(e.id)}}return i}(e,c);return"function"==typeof p&&g.color("id",function(t){return p(c.find(function(e){return e.id===t}),ER(e,c)(t))}),e}function Ew(e){var t=e.chart,i=e.options.label,n=uy(t.appendPadding),r=n[0],o=n[3],s=uv(t,"schema");if(i){var a=i.callback,l=(0,ef._T)(i,["callback"]);s.label({fields:["id"],callback:a,cfg:(0,em.b$)({},uC(l),{type:"venn",customLabelInfo:{offsetX:o,offsetY:r}})})}else s.label(!1);return e}function EO(e){var t=e.chart,i=e.options,n=i.legend,r=i.sizeField;return t.legend("id",n),t.legend(r,!1),e}function Ex(e){return e.chart.axis(!1),e}function ED(e){var t=e.options,i=e.chart,n=t.interactions;if(n){var r={"legend-active":"venn-legend-active","legend-highlight":"venn-legend-highlight"};uX(up({},e,{options:{interactions:n.map(function(e){return(0,ef.pi)((0,ef.pi)({},e),{type:r[e.type]||e.type})})}}))}return i.removeInteraction("legend-active"),i.removeInteraction("legend-highlight"),e}function EM(e){return um(EL,uq,EN,EI,Ew,u0({}),EO,Ex,u$,ED,uj)(e)}!function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="venn",t}(0,ef.ZT)(t,e),t.getDefaultOptions=function(){return v8},t.prototype.getDefaultOptions=function(){return t.getDefaultOptions()},t.prototype.getSchemaAdaptor=function(){return EM},t.prototype.triggerResize=function(){this.chart.destroyed||(this.chart.forceFit(),this.chart.clear(),this.execAdaptor(),this.chart.render(!0))}}(dc);var Ek="violinY",EP="minMax",EF="quantile",EB="median",EU="violin_view",EH=up({},dc.getDefaultOptions(),{syncViewPadding:!0,kde:{type:"triangular",sampleSize:32,width:3},violinStyle:{lineWidth:1,fillOpacity:.3,strokeOpacity:.75},xAxis:{grid:{line:null},tickLine:{alignTick:!1}},yAxis:{grid:{line:{style:{lineWidth:.5,lineDash:[4,4]}}}},legend:{position:"top-left"},tooltip:{showMarkers:!1}}),EV=i(53843),EW=i.n(EV);function EG(e,t){var i=e.length*t;if(0===e.length)throw Error("quantile requires at least one data point.");if(t<0||t>1)throw Error("quantiles must be between 0 and 1");return 1===t?e[e.length-1]:0===t?e[0]:i%1!=0?e[Math.ceil(i)-1]:e.length%2==0?(e[i-1]+e[i])/2:e[i]}function Ez(e,t,i){var n=e[t];e[t]=e[i],e[i]=n}function EY(e,t,i,n){for(i=i||0,n=n||e.length-1;n>i;){if(n-i>600){var r=n-i+1,o=t-i+1,s=Math.log(r),a=.5*Math.exp(2*s/3),l=.5*Math.sqrt(s*a*(r-a)/r);o-r/2<0&&(l*=-1);var h=Math.max(i,Math.floor(t-o*a/r+l)),u=Math.min(n,Math.floor(t+(r-o)*a/r+l));EY(e,t,h,u)}var d=e[t],c=i,g=n;for(Ez(e,i,t),e[n]>d&&Ez(e,i,n);cd;)g--}e[i]===d?Ez(e,i,g):Ez(e,++g,n),g<=t&&(i=g+1),t<=g&&(n=g-1)}}function EK(e,t){var i=e.slice();if(Array.isArray(t)){!function(e,t){for(var i=[0],n=0;n0?u:d};return dn(up({},e,{options:{xField:r,yField:_e,seriesField:r,rawFields:[o,_t,_n,_e],widthRatio:l,interval:{style:h,shape:g||"waterfall",color:f}}})).ext.geometry.customInfo((0,ef.pi)((0,ef.pi)({},p),{leaderLine:a})),e}function _l(e){var t,i,n=e.options,r=n.xAxis,o=n.yAxis,s=n.xField,a=n.yField,l=n.meta,h=up({},{alias:a},(0,em.U2)(l,a));return um(u0(((t={})[s]=r,t[a]=o,t[_e]=o,t),up({},l,((i={})[_e]=h,i[_t]=h,i[_i]=h,i))))(e)}function _h(e){var t=e.chart,i=e.options,n=i.xAxis,r=i.yAxis,o=i.xField,s=i.yField;return!1===n?t.axis(o,!1):t.axis(o,n),!1===r?(t.axis(s,!1),t.axis(_e,!1)):(t.axis(s,r),t.axis(_e,r)),e}function _u(e){var t=e.chart,i=e.options,n=i.legend,r=i.total,o=i.risingFill,s=i.fallingFill,a=u3(i.locale);if(!1===n)t.legend(!1);else{var l=[{name:a.get(["general","increase"]),value:"increase",marker:{symbol:"square",style:{r:5,fill:o}}},{name:a.get(["general","decrease"]),value:"decrease",marker:{symbol:"square",style:{r:5,fill:s}}}];r&&l.push({name:r.label||"",value:"total",marker:{symbol:"square",style:up({},{r:5},(0,em.U2)(r,"style"))}}),t.legend(up({},{custom:!0,position:"top",items:l},n)),t.removeInteraction("legend-filter")}return e}function _d(e){var t=e.chart,i=e.options,n=i.label,r=i.labelMode,o=i.xField,s=uv(t,"interval");if(n){var a=n.callback,l=(0,ef._T)(n,["callback"]);s.label({fields:"absolute"===r?[_i,o]:[_t,o],callback:a,cfg:uC(l)})}else s.label(!1);return e}function _c(e){var t=e.chart,i=e.options,n=i.tooltip,r=i.xField,o=i.yField;if(!1!==n){t.tooltip((0,ef.pi)({showCrosshairs:!1,showMarkers:!1,shared:!0,fields:[o]},n));var s=t.geometries[0];(null==n?void 0:n.formatter)?s.tooltip("".concat(r,"*").concat(o),n.formatter):s.tooltip(o)}else t.tooltip(!1);return e}function _g(e){return um(_s,uq,_a,_l,_h,_u,_c,_d,uZ,uX,uj,u1())(e)}o$("interval","waterfall",{draw:function(e,t){var i=e.customInfo,n=e.points,r=e.nextPoints,o=t.addGroup(),s=this.parsePath(function(e){for(var t=[],i=0;i>2),e.width=2048/t,e.height=2048/t,(g=e.getContext("2d",{willReadFrequently:!0})).fillStyle=g.strokeStyle="red",g.textAlign="center",{context:g,ratio:t}),v=c.board?c.board:_A((i[0]>>5)*i[1]),E=u.length,_=[],C=u.map(function(e,t,i){return e.text=_E.call(this,e,t,i),e.font=n.call(this,e,t,i),e.style=_C.call(this,e,t,i),e.weight=o.call(this,e,t,i),e.rotate=s.call(this,e,t,i),e.size=~~r.call(this,e,t,i),e.padding=a.call(this,e,t,i),e}).sort(function(e,t){return t.size-e.size}),S=-1,y=c.board?[{x:0,y:0},{x:p,y:f}]:null;return function(){for(var e=Date.now();Date.now()-e>1,t.y=f*(h()+.5)>>1,function(e,t,i,n){if(!t.sprite){var r=e.context,o=e.ratio;r.clearRect(0,0,2048/o,2048/o);var s=0,a=0,l=0,h=i.length;for(--n;++n>5<<5,d=~~Math.max(Math.abs(f+m),Math.abs(f-m))}else u=u+31>>5<<5;if(d>l&&(l=d),s+u>=2048&&(s=0,a+=l,l=0),a+d>=2048)break;r.translate((s+(u>>1))/o,(a+(d>>1))/o),t.rotate&&r.rotate(t.rotate*_v),r.fillText(t.text,0,0),t.padding&&(r.lineWidth=2*t.padding,r.strokeText(t.text,0,0)),r.restore(),t.width=u,t.height=d,t.xoff=s,t.yoff=a,t.x1=u>>1,t.y1=d>>1,t.x0=-t.x1,t.y0=-t.y1,t.hasText=!0,s+=u}for(var E=r.getImageData(0,0,2048/o,2048/o).data,_=[];--n>=0;)if((t=i[n]).hasText){for(var u=t.width,C=u>>5,d=t.y1-t.y0,S=0;S>5),R=E[(a+b)*2048+(s+S)<<2]?1<<31-S%32:0;_[A]|=R,y|=R}y?T=b:(t.y0++,d--,b--,a++)}t.y1=t.y0+T,t.sprite=_.slice(0,(t.y1-t.y0)*C)}}}(m,t,C,S),t.hasText&&function(e,t,n){for(var r,o,s,a=t.x,u=t.y,d=Math.sqrt(i[0]*i[0]+i[1]*i[1]),c=l(i),g=.5>h()?1:-1,p=-g;(r=c(p+=g))&&!(Math.min(Math.abs(o=~~r[0]),Math.abs(s=~~r[1]))>=d);)if(t.x=a+o,t.y=u+s,!(t.x+t.x0<0)&&!(t.y+t.y0<0)&&!(t.x+t.x1>i[0])&&!(t.y+t.y1>i[1])&&(!n||!function(e,t,i){i>>=5;for(var n,r=e.sprite,o=e.width>>5,s=e.x-(o<<4),a=127&s,l=32-a,h=e.y1-e.y0,u=(e.y+e.y0)*i+(s>>5),d=0;d>>a:0))&t[u+c])return!0;u+=i}return!1}(t,e,i[0]))&&(!n||t.x+t.x1>n[0].x&&t.x+t.x0n[0].y&&t.y+t.y0>5,v=i[0]>>5,E=t.x-(m<<4),_=127&E,C=32-_,S=t.y1-t.y0,y=void 0,T=(t.y+t.y0)*v+(E>>5),b=0;b>>_:0);T+=v}return delete t.sprite,!0}return!1}(v,t,y)&&(_.push(t),y?c.hasImage||function(e,t){var i=e[0],n=e[1];t.x+t.x0n.x&&(n.x=t.x+t.x1),t.y+t.y1>n.y&&(n.y=t.y+t.y1)}(y,t):y=[{x:t.x+t.x0,y:t.y+t.y0},{x:t.x+t.x1,y:t.y+t.y1}],t.x-=i[0]>>1,t.y-=i[1]>>1)}c._tags=_,c._bounds=y}(),c},c.createMask=function(e){var t=document.createElement("canvas"),n=i[0],r=i[1];if(n&&r){var o=n>>5,s=_A((n>>5)*r);t.width=n,t.height=r;var a=t.getContext("2d");a.drawImage(e,0,0,e.width,e.height,0,0,n,r);for(var l=a.getImageData(0,0,n,r).data,h=0;h>5),g=h*n+u<<2,p=l[g]>=250&&l[g+1]>=250&&l[g+2]>=250?1<<31-u%32:0;s[d]|=p}c.board=s,c.hasImage=!0}},c.timeInterval=function(e){d=null==e?1/0:e},c.words=function(e){u=e},c.size=function(e){i=[+e[0],+e[1]]},c.font=function(e){n=_R(e)},c.fontWeight=function(e){o=_R(e)},c.rotate=function(e){s=_R(e)},c.spiral=function(e){l=_L[e]||e},c.fontSize=function(e){r=_R(e)},c.padding=function(e){a=_R(e)},c.random=function(e){h=_R(e)},["font","fontSize","fontWeight","padding","rotate","size","spiral","timeInterval","random"].forEach(function(e){(0,em.UM)(t[e])||c[e](t[e])}),c.words(W),t.imageMask&&c.createMask(t.imageMask),(g=c.start()._tags).forEach(function(e){e.x+=t.size[0]/2,e.y+=t.size[1]/2}),f=(p=t.size)[0],m=p[1],g.push({text:"",value:0,x:0,y:0,opacity:0}),g.push({text:"",value:0,x:f,y:m,opacity:0}),g}function _I(e){var t=e.chart,i=e.options,n=i.colorField,r=i.color,o=_N(e);return t.data(o),ds(up({},e,{options:{xField:"x",yField:"y",seriesField:n&&_p,rawFields:(0,em.mf)(r)&&(0,ef.ev)((0,ef.ev)([],(0,em.U2)(i,"rawFields",[]),!0),["datum"],!1),point:{color:r,shape:"word-cloud"}}})).ext.geometry.label(!1),t.coordinate().reflect("y"),t.axis(!1),e}function _w(e){return um(u0({x:{nice:!1},y:{nice:!1}}))(e)}function _O(e){var t=e.chart,i=e.options,n=i.legend,r=i.colorField;return!1===n?t.legend(!1):r&&t.legend(_p,n),e}function _x(e){um(_I,_w,u$,_O,uX,uj,uq,uZ)(e)}o$("point","word-cloud",{draw:function(e,t){var i=e.x,n=e.y,r=t.addShape("text",{attrs:(0,ef.pi)((0,ef.pi)({},{fontSize:e.data.size,text:e.data.text,textAlign:"center",fontFamily:e.data.font,fontWeight:e.data.weight,fill:e.color||e.defaultStyle.stroke,textBaseline:"alphabetic"}),{x:i,y:n})}),o=e.data.rotate;return"number"==typeof o&&sr.rotate(r,o*Math.PI/180),r}}),function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="word-cloud",t}(0,ef.ZT)(t,e),t.getDefaultOptions=function(){return _f},t.prototype.changeData=function(e){this.updateOption({data:e}),this.options.imageMask?this.render():this.chart.changeData(_N({chart:this.chart,options:this.options}))},t.prototype.getDefaultOptions=function(){return t.getDefaultOptions()},t.prototype.render=function(){var t=this;return new Promise(function(i){var n=t.options.imageMask;if(!n){e.prototype.render.call(t),i();return}var r=function(n){t.options=(0,ef.pi)((0,ef.pi)({},t.options),{imageMask:n||null}),e.prototype.render.call(t),i()};new Promise(function(e,t){if(n instanceof HTMLImageElement){e(n);return}if((0,em.HD)(n)){var i=new Image;i.crossOrigin="anonymous",i.src=n,i.onload=function(){e(i)},i.onerror=function(){uo(X.ERROR,!1,"image %s load failed !!!",n),t()};return}uo(X.WARN,void 0===n,"The type of imageMask option must be String or HTMLImageElement."),t()}).then(r).catch(r)})},t.prototype.getSchemaAdaptor=function(){return _x},t.prototype.triggerResize=function(){var t=this;this.chart.destroyed||(this.execAdaptor(),window.setTimeout(function(){e.prototype.triggerResize.call(t)}))}}(dc),function(e){function t(t,i,n,r){var o=e.call(this,t,up({},r,i))||this;return o.type="g2-plot",o.defaultOptions=r,o.adaptor=n,o}(0,ef.ZT)(t,e),t.prototype.getDefaultOptions=function(){return this.defaultOptions},t.prototype.getSchemaAdaptor=function(){return this.adaptor}}(dc),u6["en-US"]={locale:"en-US",general:{increase:"Increase",decrease:"Decrease",root:"Root"},statistic:{total:"Total"},conversionTag:{label:"Rate"},legend:{},tooltip:{},slider:{},scrollbar:{},waterfall:{total:"Total"}},u6["zh-CN"]={locale:"zh-CN",general:{increase:"增加",decrease:"减少",root:"初始"},statistic:{total:"总计"},conversionTag:{label:"转化率"},legend:{},tooltip:{},slider:{},scrollbar:{},waterfall:{total:"总计"}}},31506:function(e,t,i){"use strict";i.d(t,{Dg:function(){return h},lh:function(){return a},m$:function(){return o},vs:function(){return l},zu:function(){return s}});var n=i(35600),r=i(31437);function o(e,t,i){var r=[0,0,0,0,0,0,0,0,0];return n.vc(r,i),n.Jp(e,r,t)}function s(e,t,i){var r=[0,0,0,0,0,0,0,0,0];return n.Us(r,i),n.Jp(e,r,t)}function a(e,t,i){var r=[0,0,0,0,0,0,0,0,0];return n.xJ(r,i),n.Jp(e,r,t)}function l(e,t){for(var i=e?[].concat(e):[1,0,0,0,1,0,0,0,1],r=0,l=t.length;r=0;return i?o?2*Math.PI-n:n:o?n:2*Math.PI-n}},39499:function(e,t,i){"use strict";i.d(t,{e9:function(){return l},Wq:function(){return L},tr:function(){return c},wb:function(){return f},zx:function(){return S}});var n=i(21030),r=/[MLHVQTCSAZ]([^MLHVQTCSAZ]*)/ig,o=/[^\s\,]+/ig,s=function(e){var t=e||[];return(0,n.kJ)(t)?t:(0,n.HD)(t)?(t=t.match(r),(0,n.S6)(t,function(e,i){if((e=e.match(o))[0].length>1){var r=e[0].charAt(0);e.splice(1,0,e[0].substr(1)),e[0]=r}(0,n.S6)(e,function(t,i){isNaN(t)||(e[i]=+t)}),t[i]=e}),t):void 0},a=i(31437),l=function(e,t,i){void 0===t&&(t=!1),void 0===i&&(i=[[0,0],[1,1]]);for(var n,r,o,s=!!t,l=[],h=0,u=e.length;h2&&(i.push([n].concat(o.splice(0,2))),s="l",n="m"===n?"l":"L"),"o"===s&&1===o.length&&i.push([n,o[0]]),"r"===s)i.push([n].concat(o));else for(;o.length>=t[s]&&(i.push([n].concat(o.splice(0,t[s]))),t[s]););return""}),i}var g=/[a-z]/;function p(e,t){return[t[0]+(t[0]-e[0]),t[1]+(t[1]-e[1])]}function f(e){var t=c(e);if(!t||!t.length)return[["M",0,0]];for(var i=!1,n=0;n=0){i=!0;break}}if(!i)return t;var o=[],s=0,a=0,l=0,h=0,u=0,d=t[0];("M"===d[0]||"m"===d[0])&&(s=+d[1],a=+d[2],l=s,h=a,u++,o[0]=["M",s,a]);for(var n=u,f=t.length;n1&&(i*=Math.sqrt(p),r*=Math.sqrt(p));var f=i*i*(g*g)+r*r*(c*c),m=f?Math.sqrt((i*i*(r*r)-f)/f):1;s===a&&(m*=-1),isNaN(m)&&(m=0);var C=r?m*i*g/r:0,S=i?-(m*r)*c/i:0,y=(l+u)/2+Math.cos(o)*C-Math.sin(o)*S,T=(h+d)/2+Math.sin(o)*C+Math.cos(o)*S,b=[(c-C)/i,(g-S)/r],A=[(-1*c-C)/i,(-1*g-S)/r],R=E([1,0],b),L=E(b,A);return -1>=v(b,A)&&(L=Math.PI),v(b,A)>=1&&(L=0),0===a&&L>0&&(L-=2*Math.PI),1===a&&L<0&&(L+=2*Math.PI),{cx:y,cy:T,rx:_(e,[u,d])?0:i,ry:_(e,[u,d])?0:r,startAngle:R,endAngle:R+L,xRotation:o,arcFlag:s,sweepFlag:a}}(i,u);c.arcParams=g}if("Z"===d)i=o,r=e[a+1];else{var p=u.length;i=[u[p-2],u[p-1]]}r&&"Z"===r[0]&&(r=e[a],t[a]&&(t[a].prePoint=i)),c.currentPoint=i,t[a]&&_(i,t[a].currentPoint)&&(t[a].prePoint=c.prePoint);var f=r?[r[r.length-2],r[r.length-1]]:null;c.nextPoint=f;var m=c.prePoint;if(["L","H","V"].includes(d))c.startTangent=[m[0]-i[0],m[1]-i[1]],c.endTangent=[i[0]-m[0],i[1]-m[1]];else if("Q"===d){var S=[u[1],u[2]];c.startTangent=[m[0]-S[0],m[1]-S[1]],c.endTangent=[i[0]-S[0],i[1]-S[1]]}else if("T"===d){var y=t[h-1],S=C(y.currentPoint,m);"Q"===y.command?(c.command="Q",c.startTangent=[m[0]-S[0],m[1]-S[1]],c.endTangent=[i[0]-S[0],i[1]-S[1]]):(c.command="TL",c.startTangent=[m[0]-i[0],m[1]-i[1]],c.endTangent=[i[0]-m[0],i[1]-m[1]])}else if("C"===d){var T=[u[1],u[2]],b=[u[3],u[4]];c.startTangent=[m[0]-T[0],m[1]-T[1]],c.endTangent=[i[0]-b[0],i[1]-b[1]],0===c.startTangent[0]&&0===c.startTangent[1]&&(c.startTangent=[T[0]-b[0],T[1]-b[1]]),0===c.endTangent[0]&&0===c.endTangent[1]&&(c.endTangent=[b[0]-T[0],b[1]-T[1]])}else if("S"===d){var y=t[h-1],T=C(y.currentPoint,m),b=[u[1],u[2]];"C"===y.command?(c.command="C",c.startTangent=[m[0]-T[0],m[1]-T[1]],c.endTangent=[i[0]-b[0],i[1]-b[1]]):(c.command="SQ",c.startTangent=[m[0]-b[0],m[1]-b[1]],c.endTangent=[i[0]-b[0],i[1]-b[1]])}else if("A"===d){var A=.001,R=c.arcParams||{},L=R.cx,N=void 0===L?0:L,I=R.cy,w=void 0===I?0:I,O=R.rx,x=void 0===O?0:O,D=R.ry,M=void 0===D?0:D,k=R.sweepFlag,P=void 0===k?0:k,F=R.startAngle,B=void 0===F?0:F,U=R.endAngle,H=void 0===U?0:U;0===P&&(A*=-1);var V=x*Math.cos(B-A)+N,W=M*Math.sin(B-A)+w;c.startTangent=[V-o[0],W-o[1]];var G=x*Math.cos(B+H+A)+N,z=M*Math.sin(B+H-A)+w;c.endTangent=[m[0]-G,m[1]-z]}t.push(c)}return t}function y(e){return 1e-6>Math.abs(e)?0:e<0?-1:1}function T(e,t,i){var n=!1,r=e.length;if(r<=2)return!1;for(var o=0;o0!=y(l[1]-i)>0&&0>y(t-(i-a[1])*(a[0]-l[0])/(a[1]-l[1])-a[0])&&(n=!n)}return n}var b=function(e,t,i){return e>=t&&e<=i};function A(e){for(var t=[],i=e.length,n=0;n1){var s=e[0],a=e[i-1];t.push({from:{x:a[0],y:a[1]},to:{x:s[0],y:s[1]}})}return t}function R(e){var t=e.map(function(e){return e[0]}),i=e.map(function(e){return e[1]});return{minX:Math.min.apply(null,t),maxX:Math.max.apply(null,t),minY:Math.min.apply(null,i),maxY:Math.max.apply(null,i)}}function L(e,t){if(e.length<2||t.length<2)return!1;var i=R(e),r=R(t);if(r.minX>i.maxX||r.maxXi.maxY||r.maxY.001*l*h){var d=(r.x*s.y-r.y*s.x)/a,c=(r.x*o.y-r.y*o.x)/a;b(d,0,1)&&b(c,0,1)&&(u={x:e.x+d*o.x,y:e.y+d*o.y})}return u}(i.from,i.to,e.from,e.to))return t=!0,!1}),t)return l=!0,!1}),l}},21030:function(e,t,i){"use strict";i.d(t,{Ct:function(){return eY},f0:function(){return ew},uZ:function(){return z},VS:function(){return ef},d9:function(){return ev},FX:function(){return o},Ds:function(){return eE},b$:function(){return eC},e5:function(){return a},S6:function(){return p},yW:function(){return B},hX:function(){return s},sE:function(){return _},cx:function(){return C},Wx:function(){return S},ri:function(){return Y},xH:function(){return y},U5:function(){return Q},U2:function(){return eO},Lo:function(){return ez},rx:function(){return R},ru:function(){return G},vM:function(){return V},Ms:function(){return W},wH:function(){return ee},YM:function(){return P},q9:function(){return o},cq:function(){return eS},kJ:function(){return c},jn:function(){return ea},J_:function(){return el},kK:function(){return eg},xb:function(){return eT},Xy:function(){return eA},mf:function(){return u},BD:function(){return m},UM:function(){return d},Ft:function(){return eh},hj:function(){return K},vQ:function(){return $},Kn:function(){return g},PO:function(){return E},HD:function(){return x},P9:function(){return h},o8:function(){return ec},XP:function(){return f},Z$:function(){return F},vl:function(){return en},UI:function(){return eR},Q8:function(){return eN},Fp:function(){return b},UT:function(){return X},HP:function(){return e_},VV:function(){return A},F:function(){return j},CD:function(){return ew},wQ:function(){return q},ZT:function(){return eH},CE:function(){return ek},ei:function(){return eM},u4:function(){return w},Od:function(){return O},U7:function(){return ep},t8:function(){return ex},dp:function(){return eV},G:function(){return U},MR:function(){return D},ng:function(){return er},P2:function(){return eP},qo:function(){return eF},c$:function(){return J},BB:function(){return ei},jj:function(){return M},EL:function(){return eU},jC:function(){return eo},VO:function(){return et},I:function(){return k}});var n,r=function(e){return null!==e&&"function"!=typeof e&&isFinite(e.length)},o=function(e,t){return!!r(e)&&e.indexOf(t)>-1},s=function(e,t){if(!r(e))return e;for(var i=[],n=0;nt[r])return 1;if(e[r]i?i:e},Y=function(e,t){var i=t.toString(),n=i.indexOf(".");if(-1===n)return Math.round(e);var r=i.substr(n+1).length;return r>20&&(r=20),parseFloat(e.toFixed(r))},K=function(e){return h(e,"Number")};function $(e,t,i){return void 0===i&&(i=1e-5),Math.abs(e-t)n&&(i=o,n=s)}return i}},j=function(e,t){if(c(e)){for(var i,n=1/0,r=0;rt?(n&&(clearTimeout(n),n=null),a=h,s=e.apply(r,o),n||(r=o=null)):n||!1===i.trailing||(n=setTimeout(l,u)),s};return h.cancel=function(){clearTimeout(n),a=0,n=r=o=null},h},eF=function(e){return r(e)?Array.prototype.slice.call(e):[]},eB={},eU=function(e){return eB[e=e||"g"]?eB[e]+=1:eB[e]=1,e+eB[e]},eH=function(){};function eV(e){return d(e)?0:r(e)?e.length:Object.keys(e).length}var eW=i(97582),eG=e_(function(e,t){void 0===t&&(t={});var i=t.fontSize,r=t.fontFamily,o=t.fontWeight,s=t.fontStyle,a=t.fontVariant;return n||(n=document.createElement("canvas").getContext("2d")),n.font=[s,a,o,i+"px",r].join(" "),n.measureText(x(e)?e:"").width},function(e,t){return void 0===t&&(t={}),(0,eW.pr)([e],et(t)).join("")}),ez=function(e,t,i,n){void 0===n&&(n="...");var r,o,s=eG(n,i),a=x(e)?e:ei(e),l=t,h=[];if(eG(e,i)<=t)return e;for(;!((o=eG(r=a.substr(0,16),i))+s>l)||!(o>l);)if(h.push(r),l-=o,!(a=a.substr(16)))return h.join("");for(;!((o=eG(r=a.substr(0,1),i))+s>l);)if(h.push(r),l-=o,!(a=a.substr(1)))return h.join("");return""+h.join("")+n},eY=function(){function e(){this.map={}}return e.prototype.has=function(e){return void 0!==this.map[e]},e.prototype.get=function(e,t){var i=this.map[e];return void 0===i?t:i},e.prototype.set=function(e,t){this.map[e]=t},e.prototype.clear=function(){this.map={}},e.prototype.delete=function(e){delete this.map[e]},e.prototype.size=function(){return Object.keys(this.map).length},e}()},53406:function(e,t,i){"use strict";i.d(t,{r:function(){return eO}});var n,r,o,s,a,l=i(87462),h=i(63366),u=i(67294),d=i(33703),c=i(73546),g=i(82690);function p(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function f(e){var t=p(e).Element;return e instanceof t||e instanceof Element}function m(e){var t=p(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function v(e){if("undefined"==typeof ShadowRoot)return!1;var t=p(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}var E=Math.max,_=Math.min,C=Math.round;function S(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function y(){return!/^((?!chrome|android).)*safari/i.test(S())}function T(e,t,i){void 0===t&&(t=!1),void 0===i&&(i=!1);var n=e.getBoundingClientRect(),r=1,o=1;t&&m(e)&&(r=e.offsetWidth>0&&C(n.width)/e.offsetWidth||1,o=e.offsetHeight>0&&C(n.height)/e.offsetHeight||1);var s=(f(e)?p(e):window).visualViewport,a=!y()&&i,l=(n.left+(a&&s?s.offsetLeft:0))/r,h=(n.top+(a&&s?s.offsetTop:0))/o,u=n.width/r,d=n.height/o;return{width:u,height:d,top:h,right:l+u,bottom:h+d,left:l,x:l,y:h}}function b(e){var t=p(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function A(e){return e?(e.nodeName||"").toLowerCase():null}function R(e){return((f(e)?e.ownerDocument:e.document)||window.document).documentElement}function L(e){return T(R(e)).left+b(e).scrollLeft}function N(e){return p(e).getComputedStyle(e)}function I(e){var t=N(e),i=t.overflow,n=t.overflowX,r=t.overflowY;return/auto|scroll|overlay|hidden/.test(i+r+n)}function w(e){var t=T(e),i=e.offsetWidth,n=e.offsetHeight;return 1>=Math.abs(t.width-i)&&(i=t.width),1>=Math.abs(t.height-n)&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:i,height:n}}function O(e){return"html"===A(e)?e:e.assignedSlot||e.parentNode||(v(e)?e.host:null)||R(e)}function x(e,t){void 0===t&&(t=[]);var i,n=function e(t){return["html","body","#document"].indexOf(A(t))>=0?t.ownerDocument.body:m(t)&&I(t)?t:e(O(t))}(e),r=n===(null==(i=e.ownerDocument)?void 0:i.body),o=p(n),s=r?[o].concat(o.visualViewport||[],I(n)?n:[]):n,a=t.concat(s);return r?a:a.concat(x(O(s)))}function D(e){return m(e)&&"fixed"!==N(e).position?e.offsetParent:null}function M(e){for(var t=p(e),i=D(e);i&&["table","td","th"].indexOf(A(i))>=0&&"static"===N(i).position;)i=D(i);return i&&("html"===A(i)||"body"===A(i)&&"static"===N(i).position)?t:i||function(e){var t=/firefox/i.test(S());if(/Trident/i.test(S())&&m(e)&&"fixed"===N(e).position)return null;var i=O(e);for(v(i)&&(i=i.host);m(i)&&0>["html","body"].indexOf(A(i));){var n=N(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||t&&"filter"===n.willChange||t&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(e)||t}var k="bottom",P="right",F="left",B="auto",U=["top",k,P,F],H="start",V="viewport",W="popper",G=U.reduce(function(e,t){return e.concat([t+"-"+H,t+"-end"])},[]),z=[].concat(U,[B]).reduce(function(e,t){return e.concat([t,t+"-"+H,t+"-end"])},[]),Y=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"],K={placement:"bottom",modifiers:[],strategy:"absolute"};function $(){for(var e=arguments.length,t=Array(e),i=0;i=0?"x":"y"}function J(e){var t,i=e.reference,n=e.element,r=e.placement,o=r?j(r):null,s=r?q(r):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case"top":t={x:a,y:i.y-n.height};break;case k:t={x:a,y:i.y+i.height};break;case P:t={x:i.x+i.width,y:l};break;case F:t={x:i.x-n.width,y:l};break;default:t={x:i.x,y:i.y}}var h=o?Z(o):null;if(null!=h){var u="y"===h?"height":"width";switch(s){case H:t[h]=t[h]-(i[u]/2-n[u]/2);break;case"end":t[h]=t[h]+(i[u]/2-n[u]/2)}}return t}var Q={top:"auto",right:"auto",bottom:"auto",left:"auto"};function ee(e){var t,i,n,r,o,s,a,l=e.popper,h=e.popperRect,u=e.placement,d=e.variation,c=e.offsets,g=e.position,f=e.gpuAcceleration,m=e.adaptive,v=e.roundOffsets,E=e.isFixed,_=c.x,S=void 0===_?0:_,y=c.y,T=void 0===y?0:y,b="function"==typeof v?v({x:S,y:T}):{x:S,y:T};S=b.x,T=b.y;var A=c.hasOwnProperty("x"),L=c.hasOwnProperty("y"),I=F,w="top",O=window;if(m){var x=M(l),D="clientHeight",B="clientWidth";x===p(l)&&"static"!==N(x=R(l)).position&&"absolute"===g&&(D="scrollHeight",B="scrollWidth"),("top"===u||(u===F||u===P)&&"end"===d)&&(w=k,T-=(E&&x===O&&O.visualViewport?O.visualViewport.height:x[D])-h.height,T*=f?1:-1),(u===F||("top"===u||u===k)&&"end"===d)&&(I=P,S-=(E&&x===O&&O.visualViewport?O.visualViewport.width:x[B])-h.width,S*=f?1:-1)}var U=Object.assign({position:g},m&&Q),H=!0===v?(t={x:S,y:T},i=p(l),n=t.x,r=t.y,{x:C(n*(o=i.devicePixelRatio||1))/o||0,y:C(r*o)/o||0}):{x:S,y:T};return(S=H.x,T=H.y,f)?Object.assign({},U,((a={})[w]=L?"0":"",a[I]=A?"0":"",a.transform=1>=(O.devicePixelRatio||1)?"translate("+S+"px, "+T+"px)":"translate3d("+S+"px, "+T+"px, 0)",a)):Object.assign({},U,((s={})[w]=L?T+"px":"",s[I]=A?S+"px":"",s.transform="",s))}var et={left:"right",right:"left",bottom:"top",top:"bottom"};function ei(e){return e.replace(/left|right|bottom|top/g,function(e){return et[e]})}var en={start:"end",end:"start"};function er(e){return e.replace(/start|end/g,function(e){return en[e]})}function eo(e,t){var i=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(i&&v(i)){var n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function es(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function ea(e,t,i){var n,r,o,s,a,l,h,u,d,c;return t===V?es(function(e,t){var i=p(e),n=R(e),r=i.visualViewport,o=n.clientWidth,s=n.clientHeight,a=0,l=0;if(r){o=r.width,s=r.height;var h=y();(h||!h&&"fixed"===t)&&(a=r.offsetLeft,l=r.offsetTop)}return{width:o,height:s,x:a+L(e),y:l}}(e,i)):f(t)?((n=T(t,!1,"fixed"===i)).top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n):es((r=R(e),s=R(r),a=b(r),l=null==(o=r.ownerDocument)?void 0:o.body,h=E(s.scrollWidth,s.clientWidth,l?l.scrollWidth:0,l?l.clientWidth:0),u=E(s.scrollHeight,s.clientHeight,l?l.scrollHeight:0,l?l.clientHeight:0),d=-a.scrollLeft+L(r),c=-a.scrollTop,"rtl"===N(l||s).direction&&(d+=E(s.clientWidth,l?l.clientWidth:0)-h),{width:h,height:u,x:d,y:c}))}function el(){return{top:0,right:0,bottom:0,left:0}}function eh(e){return Object.assign({},el(),e)}function eu(e,t){return t.reduce(function(t,i){return t[i]=e,t},{})}function ed(e,t){void 0===t&&(t={});var i,n,r,o,s,a,l,h=t,u=h.placement,d=void 0===u?e.placement:u,c=h.strategy,g=void 0===c?e.strategy:c,p=h.boundary,v=h.rootBoundary,C=h.elementContext,S=void 0===C?W:C,y=h.altBoundary,b=h.padding,L=void 0===b?0:b,I=eh("number"!=typeof L?L:eu(L,U)),w=e.rects.popper,D=e.elements[void 0!==y&&y?S===W?"reference":W:S],F=(i=f(D)?D:D.contextElement||R(e.elements.popper),a=(s=[].concat("clippingParents"===(n=void 0===p?"clippingParents":p)?(r=x(O(i)),f(o=["absolute","fixed"].indexOf(N(i).position)>=0&&m(i)?M(i):i)?r.filter(function(e){return f(e)&&eo(e,o)&&"body"!==A(e)}):[]):[].concat(n),[void 0===v?V:v]))[0],(l=s.reduce(function(e,t){var n=ea(i,t,g);return e.top=E(n.top,e.top),e.right=_(n.right,e.right),e.bottom=_(n.bottom,e.bottom),e.left=E(n.left,e.left),e},ea(i,a,g))).width=l.right-l.left,l.height=l.bottom-l.top,l.x=l.left,l.y=l.top,l),B=T(e.elements.reference),H=J({reference:B,element:w,strategy:"absolute",placement:d}),G=es(Object.assign({},w,H)),z=S===W?G:B,Y={top:F.top-z.top+I.top,bottom:z.bottom-F.bottom+I.bottom,left:F.left-z.left+I.left,right:z.right-F.right+I.right},K=e.modifiersData.offset;if(S===W&&K){var $=K[d];Object.keys(Y).forEach(function(e){var t=[P,k].indexOf(e)>=0?1:-1,i=["top",k].indexOf(e)>=0?"y":"x";Y[e]+=$[i]*t})}return Y}function ec(e,t,i){return E(e,_(t,i))}function eg(e,t,i){return void 0===i&&(i={x:0,y:0}),{top:e.top-t.height-i.y,right:e.right-t.width+i.x,bottom:e.bottom-t.height+i.y,left:e.left-t.width-i.x}}function ep(e){return["top",P,k,F].some(function(t){return e[t]>=0})}var ef=(o=void 0===(r=(n={defaultModifiers:[{name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,i=e.instance,n=e.options,r=n.scroll,o=void 0===r||r,s=n.resize,a=void 0===s||s,l=p(t.elements.popper),h=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&h.forEach(function(e){e.addEventListener("scroll",i.update,X)}),a&&l.addEventListener("resize",i.update,X),function(){o&&h.forEach(function(e){e.removeEventListener("scroll",i.update,X)}),a&&l.removeEventListener("resize",i.update,X)}},data:{}},{name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,i=e.name;t.modifiersData[i]=J({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},{name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,i=e.options,n=i.gpuAcceleration,r=i.adaptive,o=i.roundOffsets,s=void 0===o||o,a={placement:j(t.placement),variation:q(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:void 0===n||n,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,ee(Object.assign({},a,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:void 0===r||r,roundOffsets:s})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,ee(Object.assign({},a,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:s})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},{name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach(function(e){var i=t.styles[e]||{},n=t.attributes[e]||{},r=t.elements[e];m(r)&&A(r)&&(Object.assign(r.style,i),Object.keys(n).forEach(function(e){var t=n[e];!1===t?r.removeAttribute(e):r.setAttribute(e,!0===t?"":t)}))})},effect:function(e){var t=e.state,i={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,i.popper),t.styles=i,t.elements.arrow&&Object.assign(t.elements.arrow.style,i.arrow),function(){Object.keys(t.elements).forEach(function(e){var n=t.elements[e],r=t.attributes[e]||{},o=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:i[e]).reduce(function(e,t){return e[t]="",e},{});m(n)&&A(n)&&(Object.assign(n.style,o),Object.keys(r).forEach(function(e){n.removeAttribute(e)}))})}},requires:["computeStyles"]},{name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,i=e.options,n=e.name,r=i.offset,o=void 0===r?[0,0]:r,s=z.reduce(function(e,i){var n,r,s,a,l,h;return e[i]=(n=t.rects,s=[F,"top"].indexOf(r=j(i))>=0?-1:1,l=(a="function"==typeof o?o(Object.assign({},n,{placement:i})):o)[0],h=a[1],l=l||0,h=(h||0)*s,[F,P].indexOf(r)>=0?{x:h,y:l}:{x:l,y:h}),e},{}),a=s[t.placement],l=a.x,h=a.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=h),t.modifiersData[n]=s}},{name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,i=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var r=i.mainAxis,o=void 0===r||r,s=i.altAxis,a=void 0===s||s,l=i.fallbackPlacements,h=i.padding,u=i.boundary,d=i.rootBoundary,c=i.altBoundary,g=i.flipVariations,p=void 0===g||g,f=i.allowedAutoPlacements,m=t.options.placement,v=j(m)===m,E=l||(v||!p?[ei(m)]:function(e){if(j(e)===B)return[];var t=ei(e);return[er(e),t,er(t)]}(m)),_=[m].concat(E).reduce(function(e,i){var n,r,o,s,a,l,c,g,m,v,E,_;return e.concat(j(i)===B?(r=(n={placement:i,boundary:u,rootBoundary:d,padding:h,flipVariations:p,allowedAutoPlacements:f}).placement,o=n.boundary,s=n.rootBoundary,a=n.padding,l=n.flipVariations,g=void 0===(c=n.allowedAutoPlacements)?z:c,0===(E=(v=(m=q(r))?l?G:G.filter(function(e){return q(e)===m}):U).filter(function(e){return g.indexOf(e)>=0})).length&&(E=v),Object.keys(_=E.reduce(function(e,i){return e[i]=ed(t,{placement:i,boundary:o,rootBoundary:s,padding:a})[j(i)],e},{})).sort(function(e,t){return _[e]-_[t]})):i)},[]),C=t.rects.reference,S=t.rects.popper,y=new Map,T=!0,b=_[0],A=0;A<_.length;A++){var R=_[A],L=j(R),N=q(R)===H,I=["top",k].indexOf(L)>=0,w=I?"width":"height",O=ed(t,{placement:R,boundary:u,rootBoundary:d,altBoundary:c,padding:h}),x=I?N?P:F:N?k:"top";C[w]>S[w]&&(x=ei(x));var D=ei(x),M=[];if(o&&M.push(O[L]<=0),a&&M.push(O[x]<=0,O[D]<=0),M.every(function(e){return e})){b=R,T=!1;break}y.set(R,M)}if(T)for(var V=p?3:1,W=function(e){var t=_.find(function(t){var i=y.get(t);if(i)return i.slice(0,e).every(function(e){return e})});if(t)return b=t,"break"},Y=V;Y>0&&"break"!==W(Y);Y--);t.placement!==b&&(t.modifiersData[n]._skip=!0,t.placement=b,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}},{name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,i=e.options,n=e.name,r=i.mainAxis,o=i.altAxis,s=i.boundary,a=i.rootBoundary,l=i.altBoundary,h=i.padding,u=i.tether,d=void 0===u||u,c=i.tetherOffset,g=void 0===c?0:c,p=ed(t,{boundary:s,rootBoundary:a,padding:h,altBoundary:l}),f=j(t.placement),m=q(t.placement),v=!m,C=Z(f),S="x"===C?"y":"x",y=t.modifiersData.popperOffsets,T=t.rects.reference,b=t.rects.popper,A="function"==typeof g?g(Object.assign({},t.rects,{placement:t.placement})):g,R="number"==typeof A?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),L=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,N={x:0,y:0};if(y){if(void 0===r||r){var I,O="y"===C?"top":F,x="y"===C?k:P,D="y"===C?"height":"width",B=y[C],U=B+p[O],V=B-p[x],W=d?-b[D]/2:0,G=m===H?T[D]:b[D],z=m===H?-b[D]:-T[D],Y=t.elements.arrow,K=d&&Y?w(Y):{width:0,height:0},$=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:el(),X=$[O],J=$[x],Q=ec(0,T[D],K[D]),ee=v?T[D]/2-W-Q-X-R.mainAxis:G-Q-X-R.mainAxis,et=v?-T[D]/2+W+Q+J+R.mainAxis:z+Q+J+R.mainAxis,ei=t.elements.arrow&&M(t.elements.arrow),en=ei?"y"===C?ei.clientTop||0:ei.clientLeft||0:0,er=null!=(I=null==L?void 0:L[C])?I:0,eo=B+ee-er-en,es=B+et-er,ea=ec(d?_(U,eo):U,B,d?E(V,es):V);y[C]=ea,N[C]=ea-B}if(void 0!==o&&o){var eh,eu,eg="x"===C?"top":F,ep="x"===C?k:P,ef=y[S],em="y"===S?"height":"width",ev=ef+p[eg],eE=ef-p[ep],e_=-1!==["top",F].indexOf(f),eC=null!=(eu=null==L?void 0:L[S])?eu:0,eS=e_?ev:ef-T[em]-b[em]-eC+R.altAxis,ey=e_?ef+T[em]+b[em]-eC-R.altAxis:eE,eT=d&&e_?(eh=ec(eS,ef,ey))>ey?ey:eh:ec(d?eS:ev,ef,d?ey:eE);y[S]=eT,N[S]=eT-ef}t.modifiersData[n]=N}},requiresIfExists:["offset"]},{name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,i,n=e.state,r=e.name,o=e.options,s=n.elements.arrow,a=n.modifiersData.popperOffsets,l=j(n.placement),h=Z(l),u=[F,P].indexOf(l)>=0?"height":"width";if(s&&a){var d=eh("number"!=typeof(t="function"==typeof(t=o.padding)?t(Object.assign({},n.rects,{placement:n.placement})):t)?t:eu(t,U)),c=w(s),g="y"===h?"top":F,p="y"===h?k:P,f=n.rects.reference[u]+n.rects.reference[h]-a[h]-n.rects.popper[u],m=a[h]-n.rects.reference[h],v=M(s),E=v?"y"===h?v.clientHeight||0:v.clientWidth||0:0,_=d[g],C=E-c[u]-d[p],S=E/2-c[u]/2+(f/2-m/2),y=ec(_,S,C);n.modifiersData[r]=((i={})[h]=y,i.centerOffset=y-S,i)}},effect:function(e){var t=e.state,i=e.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=t.elements.popper.querySelector(n)))&&eo(t.elements.popper,n)&&(t.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,i=e.name,n=t.rects.reference,r=t.rects.popper,o=t.modifiersData.preventOverflow,s=ed(t,{elementContext:"reference"}),a=ed(t,{altBoundary:!0}),l=eg(s,n),h=eg(a,r,o),u=ep(l),d=ep(h);t.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:h,isReferenceHidden:u,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":d})}}]}).defaultModifiers)?[]:r,a=void 0===(s=n.defaultOptions)?K:s,function(e,t,i){void 0===i&&(i=a);var n,r={placement:"bottom",orderedModifiers:[],options:Object.assign({},K,a),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},s=[],l=!1,h={state:r,setOptions:function(i){var n,l,d,c,g,p="function"==typeof i?i(r.options):i;u(),r.options=Object.assign({},a,r.options,p),r.scrollParents={reference:f(e)?x(e):e.contextElement?x(e.contextElement):[],popper:x(t)};var m=(l=Object.keys(n=[].concat(o,r.options.modifiers).reduce(function(e,t){var i=e[t.name];return e[t.name]=i?Object.assign({},i,t,{options:Object.assign({},i.options,t.options),data:Object.assign({},i.data,t.data)}):t,e},{})).map(function(e){return n[e]}),d=new Map,c=new Set,g=[],l.forEach(function(e){d.set(e.name,e)}),l.forEach(function(e){c.has(e.name)||function e(t){c.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach(function(t){if(!c.has(t)){var i=d.get(t);i&&e(i)}}),g.push(t)}(e)}),Y.reduce(function(e,t){return e.concat(g.filter(function(e){return e.phase===t}))},[]));return r.orderedModifiers=m.filter(function(e){return e.enabled}),r.orderedModifiers.forEach(function(e){var t=e.name,i=e.options,n=e.effect;if("function"==typeof n){var o=n({state:r,name:t,instance:h,options:void 0===i?{}:i});s.push(o||function(){})}}),h.update()},forceUpdate:function(){if(!l){var e,t,i,n,o,s,a,u,d,c,g,f,v=r.elements,E=v.reference,_=v.popper;if($(E,_)){r.rects={reference:(t=M(_),i="fixed"===r.options.strategy,n=m(t),u=m(t)&&(s=C((o=t.getBoundingClientRect()).width)/t.offsetWidth||1,a=C(o.height)/t.offsetHeight||1,1!==s||1!==a),d=R(t),c=T(E,u,i),g={scrollLeft:0,scrollTop:0},f={x:0,y:0},(n||!n&&!i)&&(("body"!==A(t)||I(d))&&(g=(e=t)!==p(e)&&m(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:b(e)),m(t)?(f=T(t,!0),f.x+=t.clientLeft,f.y+=t.clientTop):d&&(f.x=L(d))),{x:c.left+g.scrollLeft-f.x,y:c.top+g.scrollTop-f.y,width:c.width,height:c.height}),popper:w(_)},r.reset=!1,r.placement=r.options.placement,r.orderedModifiers.forEach(function(e){return r.modifiersData[e.name]=Object.assign({},e.data)});for(var S=0;S{!r&&s(("function"==typeof n?n():n)||document.body)},[n,r]),(0,c.Z)(()=>{if(o&&!r)return(0,eE.Z)(t,o),()=>{(0,eE.Z)(t,null)}},[t,o,r]),r)?u.isValidElement(i)?u.cloneElement(i,{ref:a}):(0,e_.jsx)(u.Fragment,{children:i}):(0,e_.jsx)(u.Fragment,{children:o?ev.createPortal(i,o):o})});var eS=i(34867);function ey(e){return(0,eS.Z)("MuiPopper",e)}(0,i(1588).Z)("MuiPopper",["root"]);var eT=i(7293);let eb=u.createContext({disableDefaultClasses:!1}),eA=["anchorEl","children","direction","disablePortal","modifiers","open","placement","popperOptions","popperRef","slotProps","slots","TransitionProps","ownerState"],eR=["anchorEl","children","container","direction","disablePortal","keepMounted","modifiers","open","placement","popperOptions","popperRef","style","transition","slotProps","slots"];function eL(e){return"function"==typeof e?e():e}let eN=()=>(0,em.Z)({root:["root"]},function(e){let{disableDefaultClasses:t}=u.useContext(eb);return i=>t?"":e(i)}(ey)),eI={},ew=u.forwardRef(function(e,t){var i;let{anchorEl:n,children:r,direction:o,disablePortal:s,modifiers:a,open:g,placement:p,popperOptions:f,popperRef:m,slotProps:v={},slots:E={},TransitionProps:_}=e,C=(0,h.Z)(e,eA),S=u.useRef(null),y=(0,d.Z)(S,t),T=u.useRef(null),b=(0,d.Z)(T,m),A=u.useRef(b);(0,c.Z)(()=>{A.current=b},[b]),u.useImperativeHandle(m,()=>T.current,[]);let R=function(e,t){if("ltr"===t)return e;switch(e){case"bottom-end":return"bottom-start";case"bottom-start":return"bottom-end";case"top-end":return"top-start";case"top-start":return"top-end";default:return e}}(p,o),[L,N]=u.useState(R),[I,w]=u.useState(eL(n));u.useEffect(()=>{T.current&&T.current.forceUpdate()}),u.useEffect(()=>{n&&w(eL(n))},[n]),(0,c.Z)(()=>{if(!I||!g)return;let e=e=>{N(e.placement)},t=[{name:"preventOverflow",options:{altBoundary:s}},{name:"flip",options:{altBoundary:s}},{name:"onUpdate",enabled:!0,phase:"afterWrite",fn:({state:t})=>{e(t)}}];null!=a&&(t=t.concat(a)),f&&null!=f.modifiers&&(t=t.concat(f.modifiers));let i=ef(I,S.current,(0,l.Z)({placement:R},f,{modifiers:t}));return A.current(i),()=>{i.destroy(),A.current(null)}},[I,s,a,g,f,R]);let O={placement:L};null!==_&&(O.TransitionProps=_);let x=eN(),D=null!=(i=E.root)?i:"div",M=(0,eT.y)({elementType:D,externalSlotProps:v.root,externalForwardedProps:C,additionalProps:{role:"tooltip",ref:y},ownerState:e,className:x.root});return(0,e_.jsx)(D,(0,l.Z)({},M,{children:"function"==typeof r?r(O):r}))}),eO=u.forwardRef(function(e,t){let i;let{anchorEl:n,children:r,container:o,direction:s="ltr",disablePortal:a=!1,keepMounted:d=!1,modifiers:c,open:p,placement:f="bottom",popperOptions:m=eI,popperRef:v,style:E,transition:_=!1,slotProps:C={},slots:S={}}=e,y=(0,h.Z)(e,eR),[T,b]=u.useState(!0);if(!d&&!p&&(!_||T))return null;if(o)i=o;else if(n){let e=eL(n);i=e&&void 0!==e.nodeType?(0,g.Z)(e).body:(0,g.Z)(null).body}let A=!p&&d&&(!_||T)?"none":void 0;return(0,e_.jsx)(eC,{disablePortal:a,container:i,children:(0,e_.jsx)(ew,(0,l.Z)({anchorEl:n,direction:s,disablePortal:a,modifiers:c,ref:t,open:_?!T:p,placement:f,popperOptions:m,popperRef:v,slotProps:C,slots:S},y,{style:(0,l.Z)({position:"fixed",top:0,left:0,display:A},E),TransitionProps:_?{in:p,onEnter:()=>{b(!1)},onExited:()=>{b(!0)}}:void 0,children:r}))})})},70758:function(e,t,i){"use strict";i.d(t,{U:function(){return l}});var n=i(87462),r=i(67294),o=i(99962),s=i(33703),a=i(30437);function l(e={}){let{disabled:t=!1,focusableWhenDisabled:i,href:l,rootRef:h,tabIndex:u,to:d,type:c}=e,g=r.useRef(),[p,f]=r.useState(!1),{isFocusVisibleRef:m,onFocus:v,onBlur:E,ref:_}=(0,o.Z)(),[C,S]=r.useState(!1);t&&!i&&C&&S(!1),r.useEffect(()=>{m.current=C},[C,m]);let[y,T]=r.useState(""),b=e=>t=>{var i;C&&t.preventDefault(),null==(i=e.onMouseLeave)||i.call(e,t)},A=e=>t=>{var i;E(t),!1===m.current&&S(!1),null==(i=e.onBlur)||i.call(e,t)},R=e=>t=>{var i,n;g.current||(g.current=t.currentTarget),v(t),!0===m.current&&(S(!0),null==(n=e.onFocusVisible)||n.call(e,t)),null==(i=e.onFocus)||i.call(e,t)},L=()=>{let e=g.current;return"BUTTON"===y||"INPUT"===y&&["button","submit","reset"].includes(null==e?void 0:e.type)||"A"===y&&(null==e?void 0:e.href)},N=e=>i=>{if(!t){var n;null==(n=e.onClick)||n.call(e,i)}},I=e=>i=>{var n;t||(f(!0),document.addEventListener("mouseup",()=>{f(!1)},{once:!0})),null==(n=e.onMouseDown)||n.call(e,i)},w=e=>i=>{var n,r;null==(n=e.onKeyDown)||n.call(e,i),!i.defaultMuiPrevented&&(i.target!==i.currentTarget||L()||" "!==i.key||i.preventDefault(),i.target!==i.currentTarget||" "!==i.key||t||f(!0),i.target!==i.currentTarget||L()||"Enter"!==i.key||t||(null==(r=e.onClick)||r.call(e,i),i.preventDefault()))},O=e=>i=>{var n,r;i.target===i.currentTarget&&f(!1),null==(n=e.onKeyUp)||n.call(e,i),i.target!==i.currentTarget||L()||t||" "!==i.key||i.defaultMuiPrevented||null==(r=e.onClick)||r.call(e,i)},x=r.useCallback(e=>{var t;T(null!=(t=null==e?void 0:e.tagName)?t:"")},[]),D=(0,s.Z)(x,h,_,g),M={};return void 0!==u&&(M.tabIndex=u),"BUTTON"===y?(M.type=null!=c?c:"button",i?M["aria-disabled"]=t:M.disabled=t):""!==y&&(l||d||(M.role="button",M.tabIndex=null!=u?u:0),t&&(M["aria-disabled"]=t,M.tabIndex=i?null!=u?u:0:-1)),{getRootProps:(t={})=>{let i=(0,n.Z)({},(0,a._)(e),(0,a._)(t)),r=(0,n.Z)({type:c},i,M,t,{onBlur:A(i),onClick:N(i),onFocus:R(i),onKeyDown:w(i),onKeyUp:O(i),onMouseDown:I(i),onMouseLeave:b(i),ref:D});return delete r.onFocusVisible,r},focusVisible:C,setFocusVisible:S,active:p,rootRef:D}}},26558:function(e,t,i){"use strict";i.d(t,{Z:function(){return r}});var n=i(67294);let r=n.createContext(null)},22644:function(e,t,i){"use strict";i.d(t,{F:function(){return n}});let n={blur:"list:blur",focus:"list:focus",itemClick:"list:itemClick",itemHover:"list:itemHover",itemsChange:"list:itemsChange",keyDown:"list:keyDown",resetHighlight:"list:resetHighlight",textNavigation:"list:textNavigation"}},7333:function(e,t,i){"use strict";i.d(t,{R$:function(){return a},Rl:function(){return o}});var n=i(87462),r=i(22644);function o(e,t,i){var n;let r,o;let{items:s,isItemDisabled:a,disableListWrap:l,disabledItemsFocusable:h,itemComparer:u,focusManagement:d}=i,c=s.length-1,g=null==e?-1:s.findIndex(t=>u(t,e)),p=!l;switch(t){case"reset":if(-1==("DOM"===d?0:-1))return null;r=0,o="next",p=!1;break;case"start":r=0,o="next",p=!1;break;case"end":r=c,o="previous",p=!1;break;default:{let e=g+t;e<0?!p&&-1!==g||Math.abs(t)>1?(r=0,o="next"):(r=c,o="previous"):e>c?!p||Math.abs(t)>1?(r=c,o="previous"):(r=0,o="next"):(r=e,o=t>=0?"next":"previous")}}let f=function(e,t,i,n,r,o){if(0===i.length||!n&&i.every((e,t)=>r(e,t)))return -1;let s=e;for(;;){if(!o&&"next"===t&&s===i.length||!o&&"previous"===t&&-1===s)return -1;let e=!n&&r(i[s],s);if(!e)return s;s+="next"===t?1:-1,o&&(s=(s+i.length)%i.length)}}(r,o,s,h,a,p);return -1!==f||null===e||a(e,g)?null!=(n=s[f])?n:null:e}function s(e,t,i){let{itemComparer:r,isItemDisabled:o,selectionMode:s,items:a}=i,{selectedValues:l}=t,h=a.findIndex(t=>r(e,t));if(o(e,h))return t;let u="none"===s?[]:"single"===s?r(l[0],e)?l:[e]:l.some(t=>r(t,e))?l.filter(t=>!r(t,e)):[...l,e];return(0,n.Z)({},t,{selectedValues:u,highlightedValue:e})}function a(e,t){let{type:i,context:a}=t;switch(i){case r.F.keyDown:return function(e,t,i){let r=t.highlightedValue,{orientation:a,pageSize:l}=i;switch(e){case"Home":return(0,n.Z)({},t,{highlightedValue:o(r,"start",i)});case"End":return(0,n.Z)({},t,{highlightedValue:o(r,"end",i)});case"PageUp":return(0,n.Z)({},t,{highlightedValue:o(r,-l,i)});case"PageDown":return(0,n.Z)({},t,{highlightedValue:o(r,l,i)});case"ArrowUp":if("vertical"!==a)break;return(0,n.Z)({},t,{highlightedValue:o(r,-1,i)});case"ArrowDown":if("vertical"!==a)break;return(0,n.Z)({},t,{highlightedValue:o(r,1,i)});case"ArrowLeft":if("vertical"===a)break;return(0,n.Z)({},t,{highlightedValue:o(r,"horizontal-ltr"===a?-1:1,i)});case"ArrowRight":if("vertical"===a)break;return(0,n.Z)({},t,{highlightedValue:o(r,"horizontal-ltr"===a?1:-1,i)});case"Enter":case" ":if(null===t.highlightedValue)break;return s(t.highlightedValue,t,i)}return t}(t.key,e,a);case r.F.itemClick:return s(t.item,e,a);case r.F.blur:return"DOM"===a.focusManagement?e:(0,n.Z)({},e,{highlightedValue:null});case r.F.textNavigation:return function(e,t,i){let{items:r,isItemDisabled:s,disabledItemsFocusable:a,getItemAsString:l}=i,h=t.length>1,u=h?e.highlightedValue:o(e.highlightedValue,1,i);for(let d=0;dl(e,i.highlightedValue)))?a:null:"DOM"===h&&0===t.length&&(u=o(null,"reset",r));let d=null!=(s=i.selectedValues)?s:[],c=d.filter(t=>e.some(e=>l(e,t)));return(0,n.Z)({},i,{highlightedValue:u,selectedValues:c})}(t.items,t.previousItems,e,a);case r.F.resetHighlight:return(0,n.Z)({},e,{highlightedValue:o(null,"reset",a)});default:return e}}},96592:function(e,t,i){"use strict";i.d(t,{s:function(){return _}});var n=i(87462),r=i(67294),o=i(33703),s=i(22644),a=i(7333);let l="select:change-selection",h="select:change-highlight";var u=i(78031),d=i(6414);function c(e,t){let i=r.useRef(e);return r.useEffect(()=>{i.current=e},null!=t?t:[e]),i}let g={},p=()=>{},f=(e,t)=>e===t,m=()=>!1,v=e=>"string"==typeof e?e:String(e),E=()=>({highlightedValue:null,selectedValues:[]});function _(e){let{controlledProps:t=g,disabledItemsFocusable:i=!1,disableListWrap:_=!1,focusManagement:C="activeDescendant",getInitialState:S=E,getItemDomElement:y,getItemId:T,isItemDisabled:b=m,rootRef:A,onStateChange:R=p,items:L,itemComparer:N=f,getItemAsString:I=v,onChange:w,onHighlightChange:O,onItemsChange:x,orientation:D="vertical",pageSize:M=5,reducerActionContext:k=g,selectionMode:P="single",stateReducer:F}=e,B=r.useRef(null),U=(0,o.Z)(A,B),H=r.useCallback((e,t,i)=>{if(null==O||O(e,t,i),"DOM"===C&&null!=t&&(i===s.F.itemClick||i===s.F.keyDown||i===s.F.textNavigation)){var n;null==y||null==(n=y(t))||n.focus()}},[y,O,C]),V=r.useMemo(()=>({highlightedValue:N,selectedValues:(e,t)=>(0,d.H)(e,t,N)}),[N]),W=r.useCallback((e,t,i,n,r)=>{switch(null==R||R(e,t,i,n,r),t){case"highlightedValue":H(e,i,n);break;case"selectedValues":null==w||w(e,i,n)}},[H,w,R]),G=r.useMemo(()=>({disabledItemsFocusable:i,disableListWrap:_,focusManagement:C,isItemDisabled:b,itemComparer:N,items:L,getItemAsString:I,onHighlightChange:H,orientation:D,pageSize:M,selectionMode:P,stateComparers:V}),[i,_,C,b,N,L,I,H,D,M,P,V]),z=S(),Y=null!=F?F:a.R$,K=r.useMemo(()=>(0,n.Z)({},k,G),[k,G]),[$,X]=(0,u.r)({reducer:Y,actionContext:K,initialState:z,controlledProps:t,stateComparers:V,onStateChange:W}),{highlightedValue:j,selectedValues:q}=$,Z=function(e){let t=r.useRef({searchString:"",lastTime:null});return r.useCallback(i=>{if(1===i.key.length&&" "!==i.key){let n=t.current,r=i.key.toLowerCase(),o=performance.now();n.searchString.length>0&&n.lastTime&&o-n.lastTime>500?n.searchString=r:(1!==n.searchString.length||r!==n.searchString)&&(n.searchString+=r),n.lastTime=o,e(n.searchString,i)}},[e])}((e,t)=>X({type:s.F.textNavigation,event:t,searchString:e})),J=c(q),Q=c(j),ee=r.useRef([]);r.useEffect(()=>{(0,d.H)(ee.current,L,N)||(X({type:s.F.itemsChange,event:null,items:L,previousItems:ee.current}),ee.current=L,null==x||x(L))},[L,N,X,x]);let{notifySelectionChanged:et,notifyHighlightChanged:ei,registerHighlightChangeHandler:en,registerSelectionChangeHandler:er}=function(){let e=function(){let e=r.useRef();return e.current||(e.current=function(){let e=new Map;return{subscribe:function(t,i){let n=e.get(t);return n?n.add(i):(n=new Set([i]),e.set(t,n)),()=>{n.delete(i),0===n.size&&e.delete(t)}},publish:function(t,...i){let n=e.get(t);n&&n.forEach(e=>e(...i))}}}()),e.current}(),t=r.useCallback(t=>{e.publish(l,t)},[e]),i=r.useCallback(t=>{e.publish(h,t)},[e]),n=r.useCallback(t=>e.subscribe(l,t),[e]),o=r.useCallback(t=>e.subscribe(h,t),[e]);return{notifySelectionChanged:t,notifyHighlightChanged:i,registerSelectionChangeHandler:n,registerHighlightChangeHandler:o}}();r.useEffect(()=>{et(q)},[q,et]),r.useEffect(()=>{ei(j)},[j,ei]);let eo=e=>t=>{var i;if(null==(i=e.onKeyDown)||i.call(e,t),t.defaultMuiPrevented)return;let n=["Home","End","PageUp","PageDown"];"vertical"===D?n.push("ArrowUp","ArrowDown"):n.push("ArrowLeft","ArrowRight"),"activeDescendant"===C&&n.push(" ","Enter"),n.includes(t.key)&&t.preventDefault(),X({type:s.F.keyDown,key:t.key,event:t}),Z(t)},es=e=>t=>{var i,n;null==(i=e.onBlur)||i.call(e,t),t.defaultMuiPrevented||null!=(n=B.current)&&n.contains(t.relatedTarget)||X({type:s.F.blur,event:t})},ea=r.useCallback(e=>{var t;let i=L.findIndex(t=>N(t,e)),n=(null!=(t=J.current)?t:[]).some(t=>null!=t&&N(e,t)),r=b(e,i),o=null!=Q.current&&N(e,Q.current),s="DOM"===C;return{disabled:r,focusable:s,highlighted:o,index:i,selected:n}},[L,b,N,J,Q,C]),el=r.useMemo(()=>({dispatch:X,getItemState:ea,registerHighlightChangeHandler:en,registerSelectionChangeHandler:er}),[X,ea,en,er]);return r.useDebugValue({state:$}),{contextValue:el,dispatch:X,getRootProps:(e={})=>(0,n.Z)({},e,{"aria-activedescendant":"activeDescendant"===C&&null!=j?T(j):void 0,onBlur:es(e),onKeyDown:eo(e),tabIndex:"DOM"===C?-1:0,ref:U}),rootRef:U,state:$}}},43069:function(e,t,i){"use strict";i.d(t,{J:function(){return h}});var n=i(87462),r=i(67294),o=i(33703),s=i(73546),a=i(22644),l=i(26558);function h(e){let t;let{handlePointerOverEvents:i=!1,item:h,rootRef:u}=e,d=r.useRef(null),c=(0,o.Z)(d,u),g=r.useContext(l.Z);if(!g)throw Error("useListItem must be used within a ListProvider");let{dispatch:p,getItemState:f,registerHighlightChangeHandler:m,registerSelectionChangeHandler:v}=g,{highlighted:E,selected:_,focusable:C}=f(h),S=function(){let[,e]=r.useState({});return r.useCallback(()=>{e({})},[])}();(0,s.Z)(()=>m(function(e){e!==h||E?e!==h&&E&&S():S()})),(0,s.Z)(()=>v(function(e){_?e.includes(h)||S():e.includes(h)&&S()}),[v,S,_,h]);let y=r.useCallback(e=>t=>{var i;null==(i=e.onClick)||i.call(e,t),t.defaultPrevented||p({type:a.F.itemClick,item:h,event:t})},[p,h]),T=r.useCallback(e=>t=>{var i;null==(i=e.onMouseOver)||i.call(e,t),t.defaultPrevented||p({type:a.F.itemHover,item:h,event:t})},[p,h]);return C&&(t=E?0:-1),{getRootProps:(e={})=>(0,n.Z)({},e,{onClick:y(e),onPointerOver:i?T(e):void 0,ref:c,tabIndex:t}),highlighted:E,rootRef:c,selected:_}}},10238:function(e,t,i){"use strict";i.d(t,{$:function(){return o}});var n=i(87462),r=i(28442);function o(e,t,i){return void 0===e||(0,r.X)(e)?t:(0,n.Z)({},t,{ownerState:(0,n.Z)({},t.ownerState,i)})}},6414:function(e,t,i){"use strict";function n(e,t,i=(e,t)=>e===t){return e.length===t.length&&e.every((e,n)=>i(e,t[n]))}i.d(t,{H:function(){return n}})},2900:function(e,t,i){"use strict";i.d(t,{f:function(){return r}});var n=i(87462);function r(e,t){return function(i={}){let r=(0,n.Z)({},i,e(i)),o=(0,n.Z)({},r,t(r));return o}}},30437:function(e,t,i){"use strict";function n(e,t=[]){if(void 0===e)return{};let i={};return Object.keys(e).filter(i=>i.match(/^on[A-Z]/)&&"function"==typeof e[i]&&!t.includes(i)).forEach(t=>{i[t]=e[t]}),i}i.d(t,{_:function(){return n}})},28442:function(e,t,i){"use strict";function n(e){return"string"==typeof e}i.d(t,{X:function(){return n}})},24407:function(e,t,i){"use strict";i.d(t,{L:function(){return a}});var n=i(87462),r=i(90512),o=i(30437);function s(e){if(void 0===e)return{};let t={};return Object.keys(e).filter(t=>!(t.match(/^on[A-Z]/)&&"function"==typeof e[t])).forEach(i=>{t[i]=e[i]}),t}function a(e){let{getSlotProps:t,additionalProps:i,externalSlotProps:a,externalForwardedProps:l,className:h}=e;if(!t){let e=(0,r.Z)(null==l?void 0:l.className,null==a?void 0:a.className,h,null==i?void 0:i.className),t=(0,n.Z)({},null==i?void 0:i.style,null==l?void 0:l.style,null==a?void 0:a.style),o=(0,n.Z)({},i,l,a);return e.length>0&&(o.className=e),Object.keys(t).length>0&&(o.style=t),{props:o,internalRef:void 0}}let u=(0,o._)((0,n.Z)({},l,a)),d=s(a),c=s(l),g=t(u),p=(0,r.Z)(null==g?void 0:g.className,null==i?void 0:i.className,h,null==l?void 0:l.className,null==a?void 0:a.className),f=(0,n.Z)({},null==g?void 0:g.style,null==i?void 0:i.style,null==l?void 0:l.style,null==a?void 0:a.style),m=(0,n.Z)({},g,i,c,d);return p.length>0&&(m.className=p),Object.keys(f).length>0&&(m.style=f),{props:m,internalRef:g.ref}}},71276:function(e,t,i){"use strict";function n(e,t,i){return"function"==typeof e?e(t,i):e}i.d(t,{x:function(){return n}})},12247:function(e,t,i){"use strict";i.d(t,{Y:function(){return o},s:function(){return r}});var n=i(67294);let r=n.createContext(null);function o(){let[e,t]=n.useState(new Map),i=n.useRef(new Set),r=n.useCallback(function(e){i.current.delete(e),t(t=>{let i=new Map(t);return i.delete(e),i})},[]),o=n.useCallback(function(e,n){let o;return o="function"==typeof e?e(i.current):e,i.current.add(o),t(e=>{let t=new Map(e);return t.set(o,n),t}),{id:o,deregister:()=>r(o)}},[r]),s=n.useMemo(()=>(function(e){let t=Array.from(e.keys()).map(t=>{let i=e.get(t);return{key:t,subitem:i}});return t.sort((e,t)=>{let i=e.subitem.ref.current,n=t.subitem.ref.current;return null===i||null===n||i===n?0:i.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_PRECEDING?1:-1}),new Map(t.map(e=>[e.key,e.subitem]))})(e),[e]),a=n.useCallback(function(e){return Array.from(s.keys()).indexOf(e)},[s]),l=n.useMemo(()=>({getItemIndex:a,registerItem:o,totalSubitemCount:e.size}),[a,o,e.size]);return{contextValue:l,subitems:s}}r.displayName="CompoundComponentContext"},14072:function(e,t,i){"use strict";i.d(t,{B:function(){return s}});var n=i(67294),r=i(73546),o=i(12247);function s(e,t){let i=n.useContext(o.s);if(null===i)throw Error("useCompoundItem must be used within a useCompoundParent");let{registerItem:s}=i,[a,l]=n.useState("function"==typeof e?void 0:e);return(0,r.Z)(()=>{let{id:i,deregister:n}=s(e,t);return l(i),n},[s,t,e]),{id:a,index:void 0!==a?i.getItemIndex(a):-1,totalItemCount:i.totalSubitemCount}}},78031:function(e,t,i){"use strict";i.d(t,{r:function(){return h}});var n=i(87462),r=i(67294);function o(e,t){return e===t}let s={},a=()=>{};function l(e,t){let i=(0,n.Z)({},e);return Object.keys(t).forEach(e=>{void 0!==t[e]&&(i[e]=t[e])}),i}function h(e){let t=r.useRef(null),{reducer:i,initialState:h,controlledProps:u=s,stateComparers:d=s,onStateChange:c=a,actionContext:g}=e,p=r.useCallback((e,n)=>{t.current=n;let r=l(e,u),o=i(r,n);return o},[u,i]),[f,m]=r.useReducer(p,h),v=r.useCallback(e=>{m((0,n.Z)({},e,{context:g}))},[g]);return!function(e){let{nextState:t,initialState:i,stateComparers:n,onStateChange:s,controlledProps:a,lastActionRef:h}=e,u=r.useRef(i);r.useEffect(()=>{if(null===h.current)return;let e=l(u.current,a);Object.keys(t).forEach(i=>{var r,a,l;let u=null!=(r=n[i])?r:o,d=t[i],c=e[i];(null!=c||null==d)&&(null==c||null!=d)&&(null==c||null==d||u(d,c))||null==s||s(null!=(a=h.current.event)?a:null,i,d,null!=(l=h.current.type)?l:"",t)}),u.current=t,h.current=null},[u,t,h,s,n,a])}({nextState:f,initialState:h,stateComparers:null!=d?d:s,onStateChange:null!=c?c:a,controlledProps:u,lastActionRef:t}),[l(f,u),v]}},7293:function(e,t,i){"use strict";i.d(t,{y:function(){return u}});var n=i(87462),r=i(63366),o=i(33703),s=i(10238),a=i(24407),l=i(71276);let h=["elementType","externalSlotProps","ownerState","skipResolvingSlotProps"];function u(e){var t;let{elementType:i,externalSlotProps:u,ownerState:d,skipResolvingSlotProps:c=!1}=e,g=(0,r.Z)(e,h),p=c?{}:(0,l.x)(u,d),{props:f,internalRef:m}=(0,a.L)((0,n.Z)({},g,{externalSlotProps:p})),v=(0,o.Z)(m,null==p?void 0:p.ref,null==(t=e.additionalProps)?void 0:t.ref),E=(0,s.$)(i,(0,n.Z)({},f,{ref:v}),d);return E}},48665:function(e,t,i){"use strict";i.d(t,{Z:function(){return v}});var n=i(87462),r=i(63366),o=i(67294),s=i(90512),a=i(49731),l=i(86523),h=i(39707),u=i(96682),d=i(85893);let c=["className","component"];var g=i(37078),p=i(1812),f=i(2548);let m=function(e={}){let{themeId:t,defaultTheme:i,defaultClassName:g="MuiBox-root",generateClassName:p}=e,f=(0,a.ZP)("div",{shouldForwardProp:e=>"theme"!==e&&"sx"!==e&&"as"!==e})(l.Z),m=o.forwardRef(function(e,o){let a=(0,u.Z)(i),l=(0,h.Z)(e),{className:m,component:v="div"}=l,E=(0,r.Z)(l,c);return(0,d.jsx)(f,(0,n.Z)({as:v,ref:o,className:(0,s.Z)(m,p?p(g):g),theme:t&&a[t]||a},E))});return m}({themeId:f.Z,defaultTheme:p.Z,defaultClassName:"MuiBox-root",generateClassName:g.Z.generate});var v=m},41118:function(e,t,i){"use strict";i.d(t,{Z:function(){return y}});var n=i(63366),r=i(87462),o=i(67294),s=i(90512),a=i(94780),l=i(14142),h=i(18719),u=i(20407),d=i(74312),c=i(78653),g=i(26821);function p(e){return(0,g.d6)("MuiCard",e)}(0,g.sI)("MuiCard",["root","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","variantPlain","variantOutlined","variantSoft","variantSolid","sizeSm","sizeMd","sizeLg","horizontal","vertical"]);var f=i(58859),m=i(30220),v=i(85893);let E=["className","color","component","invertedColors","size","variant","children","orientation","slots","slotProps"],_=e=>{let{size:t,variant:i,color:n,orientation:r}=e,o={root:["root",r,i&&`variant${(0,l.Z)(i)}`,n&&`color${(0,l.Z)(n)}`,t&&`size${(0,l.Z)(t)}`]};return(0,a.Z)(o,p,{})},C=(0,d.Z)("div",{name:"JoyCard",slot:"Root",overridesResolver:(e,t)=>t.root})(({theme:e,ownerState:t})=>{var i,n;let{p:o,padding:s,borderRadius:a}=(0,f.V)({theme:e,ownerState:t},["p","padding","borderRadius"]);return[(0,r.Z)({"--Icon-color":"neutral"!==t.color||"solid"===t.variant?"currentColor":e.vars.palette.text.icon,"--Card-childRadius":"max((var(--Card-radius) - var(--variant-borderWidth, 0px)) - var(--Card-padding), min(var(--Card-padding) / 2, (var(--Card-radius) - var(--variant-borderWidth, 0px)) / 2))","--AspectRatio-radius":"var(--Card-childRadius)","--unstable_actionMargin":"calc(-1 * var(--variant-borderWidth, 0px))","--unstable_actionRadius":"var(--Card-radius)","--CardCover-radius":"calc(var(--Card-radius) - var(--variant-borderWidth, 0px))","--CardOverflow-offset":"calc(-1 * var(--Card-padding))","--CardOverflow-radius":"calc(var(--Card-radius) - var(--variant-borderWidth, 0px))","--Divider-inset":"calc(-1 * var(--Card-padding))"},"sm"===t.size&&{"--Card-radius":e.vars.radius.sm,"--Card-padding":"0.625rem",gap:"0.5rem"},"md"===t.size&&{"--Card-radius":e.vars.radius.md,"--Card-padding":"1rem",gap:"0.75rem 1rem"},"lg"===t.size&&{"--Card-radius":e.vars.radius.lg,"--Card-padding":"1.5rem",gap:"1rem 1.5rem"},{padding:"var(--Card-padding)",borderRadius:"var(--Card-radius)",backgroundColor:e.vars.palette.background.surface,position:"relative",display:"flex",flexDirection:"horizontal"===t.orientation?"row":"column"},e.typography[`body-${t.size}`],null==(i=e.variants[t.variant])?void 0:i[t.color]),"context"!==t.color&&t.invertedColors&&(null==(n=e.colorInversion[t.variant])?void 0:n[t.color]),void 0!==o&&{"--Card-padding":o},void 0!==s&&{"--Card-padding":s},void 0!==a&&{"--Card-radius":a}]}),S=o.forwardRef(function(e,t){let i=(0,u.Z)({props:e,name:"JoyCard"}),{className:a,color:l="neutral",component:d="div",invertedColors:g=!1,size:p="md",variant:f="outlined",children:S,orientation:y="vertical",slots:T={},slotProps:b={}}=i,A=(0,n.Z)(i,E),{getColor:R}=(0,c.VT)(f),L=R(e.color,l),N=(0,r.Z)({},i,{color:L,component:d,orientation:y,size:p,variant:f}),I=_(N),w=(0,r.Z)({},A,{component:d,slots:T,slotProps:b}),[O,x]=(0,m.Z)("root",{ref:t,className:(0,s.Z)(I.root,a),elementType:C,externalForwardedProps:w,ownerState:N}),D=(0,v.jsx)(O,(0,r.Z)({},x,{children:o.Children.map(S,(e,t)=>{if(!o.isValidElement(e))return e;let i={};if((0,h.Z)(e,["Divider"])){i.inset="inset"in e.props?e.props.inset:"context";let t="vertical"===y?"horizontal":"vertical";i.orientation="orientation"in e.props?e.props.orientation:t}return(0,h.Z)(e,["CardOverflow"])&&("horizontal"===y&&(i["data-parent"]="Card-horizontal"),"vertical"===y&&(i["data-parent"]="Card-vertical")),0===t&&(i["data-first-child"]=""),t===o.Children.count(S)-1&&(i["data-last-child"]=""),o.cloneElement(e,i)})}));return g?(0,v.jsx)(c.do,{variant:f,children:D}):D});var y=S},30208:function(e,t,i){"use strict";i.d(t,{Z:function(){return _}});var n=i(87462),r=i(63366),o=i(67294),s=i(90512),a=i(94780),l=i(20407),h=i(74312),u=i(26821);function d(e){return(0,u.d6)("MuiCardContent",e)}(0,u.sI)("MuiCardContent",["root"]);let c=(0,u.sI)("MuiCardOverflow",["root","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","variantPlain","variantOutlined","variantSoft","variantSolid"]);var g=i(30220),p=i(85893);let f=["className","component","children","orientation","slots","slotProps"],m=()=>(0,a.Z)({root:["root"]},d,{}),v=(0,h.Z)("div",{name:"JoyCardContent",slot:"Root",overridesResolver:(e,t)=>t.root})(({ownerState:e})=>({display:"flex",flexDirection:"horizontal"===e.orientation?"row":"column",flex:9999,zIndex:1,columnGap:"var(--Card-padding)",rowGap:"max(2px, calc(0.1875 * var(--Card-padding)))",padding:"var(--unstable_padding)",[`.${c.root} > &`]:{"--unstable_padding":"calc(var(--Card-padding) * 0.75) 0px"}})),E=o.forwardRef(function(e,t){let i=(0,l.Z)({props:e,name:"JoyCardContent"}),{className:o,component:a="div",children:h,orientation:u="vertical",slots:d={},slotProps:c={}}=i,E=(0,r.Z)(i,f),_=(0,n.Z)({},E,{component:a,slots:d,slotProps:c}),C=(0,n.Z)({},i,{component:a,orientation:u}),S=m(),[y,T]=(0,g.Z)("root",{ref:t,className:(0,s.Z)(S.root,o),elementType:v,externalForwardedProps:_,ownerState:C});return(0,p.jsx)(y,(0,n.Z)({},T,{children:h}))});var _=E},76043:function(e,t,i){"use strict";var n=i(67294);let r=n.createContext(void 0);t.Z=r},43614:function(e,t,i){"use strict";var n=i(67294);let r=n.createContext(void 0);t.Z=r},50984:function(e,t,i){"use strict";i.d(t,{C:function(){return s}});var n=i(87462);i(67294);var r=i(74312),o=i(58859);i(85893);let s=(0,r.Z)("ul")(({theme:e,ownerState:t})=>{var i;let{p:r,padding:s,borderRadius:a}=(0,o.V)({theme:e,ownerState:t},["p","padding","borderRadius"]);function l(i){return"sm"===i?{"--ListDivider-gap":"0.25rem","--ListItem-minHeight":"2rem","--ListItem-paddingY":"0.25rem","--ListItem-paddingX":"0.5rem","--ListItemDecorator-size":"horizontal"===t.orientation?"1.5rem":"2rem","--Icon-fontSize":e.vars.fontSize.lg}:"md"===i?{"--ListDivider-gap":"0.375rem","--ListItem-minHeight":"2.5rem","--ListItem-paddingY":"0.375rem","--ListItem-paddingX":"0.75rem","--ListItemDecorator-size":"horizontal"===t.orientation?"1.75rem":"2.5rem","--Icon-fontSize":e.vars.fontSize.xl}:"lg"===i?{"--ListDivider-gap":"0.5rem","--ListItem-minHeight":"3rem","--ListItem-paddingY":"0.5rem","--ListItem-paddingX":"1rem","--ListItemDecorator-size":"horizontal"===t.orientation?"2.25rem":"3rem","--Icon-fontSize":e.vars.fontSize.xl2}:{}}return[t.nesting&&(0,n.Z)({},l(t.instanceSize),{"--ListItem-paddingRight":"var(--ListItem-paddingX)","--ListItem-paddingLeft":"var(--NestedListItem-paddingLeft)","--ListItemButton-marginBlock":"0px","--ListItemButton-marginInline":"0px","--ListItem-marginBlock":"0px","--ListItem-marginInline":"0px",padding:0,marginInlineStart:"var(--NestedList-marginLeft)",marginInlineEnd:"var(--NestedList-marginRight)",marginBlockStart:"var(--List-gap)",marginBlockEnd:"initial"}),!t.nesting&&(0,n.Z)({},l(t.size),{"--List-gap":"0px","--List-nestedInsetStart":"0px","--ListItem-paddingLeft":"var(--ListItem-paddingX)","--ListItem-paddingRight":"var(--ListItem-paddingX)","--unstable_List-childRadius":"calc(max(var(--List-radius) - var(--List-padding), min(var(--List-padding) / 2, var(--List-radius) / 2)) - var(--variant-borderWidth, 0px))","--ListItem-radius":"var(--unstable_List-childRadius)","--ListItem-startActionTranslateX":"calc(0.5 * var(--ListItem-paddingLeft))","--ListItem-endActionTranslateX":"calc(-0.5 * var(--ListItem-paddingRight))",margin:"initial"},e.typography[`body-${t.size}`],"horizontal"===t.orientation?(0,n.Z)({},t.wrap?{padding:"var(--List-padding)",marginInlineStart:"calc(-1 * var(--List-gap))",marginBlockStart:"calc(-1 * var(--List-gap))"}:{paddingInline:"var(--List-padding, var(--ListDivider-gap))",paddingBlock:"var(--List-padding)"}):{paddingBlock:"var(--List-padding, var(--ListDivider-gap))",paddingInline:"var(--List-padding)"}),(0,n.Z)({boxSizing:"border-box",borderRadius:"var(--List-radius)",listStyle:"none",display:"flex",flexDirection:"horizontal"===t.orientation?"row":"column"},t.wrap&&{flexWrap:"wrap"},{flexGrow:1,position:"relative"},null==(i=e.variants[t.variant])?void 0:i[t.color],{"--unstable_List-borderWidth":"var(--variant-borderWidth, 0px)"},void 0!==a&&{"--List-radius":a},void 0!==r&&{"--List-padding":r},void 0!==s&&{"--List-padding":s})]});(0,r.Z)(s,{name:"JoyList",slot:"Root",overridesResolver:(e,t)=>t.root})({})},3419:function(e,t,i){"use strict";i.d(t,{Z:function(){return u},M:function(){return h}});var n=i(87462),r=i(67294),o=i(40780);let s=r.createContext(!1),a=r.createContext(!1);var l=i(85893);let h={"--NestedList-marginRight":"0px","--NestedList-marginLeft":"0px","--NestedListItem-paddingLeft":"var(--ListItem-paddingX)","--ListItemButton-marginBlock":"0px","--ListItemButton-marginInline":"0px","--ListItem-marginBlock":"0px","--ListItem-marginInline":"0px"};var u=function(e){let{children:t,nested:i,row:h=!1,wrap:u=!1}=e,d=(0,l.jsx)(o.Z.Provider,{value:h,children:(0,l.jsx)(s.Provider,{value:u,children:r.Children.map(t,(e,i)=>r.isValidElement(e)?r.cloneElement(e,(0,n.Z)({},0===i&&{"data-first-child":""},i===r.Children.count(t)-1&&{"data-last-child":""})):e)})});return void 0===i?d:(0,l.jsx)(a.Provider,{value:i,children:d})}},40780:function(e,t,i){"use strict";var n=i(67294);let r=n.createContext(!1);t.Z=r},39984:function(e,t,i){"use strict";i.d(t,{r:function(){return l}});var n=i(87462);i(67294);var r=i(74312),o=i(26821);let s=(0,o.sI)("MuiListItem",["root","startAction","endAction","nested","nesting","sticky","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","variantPlain","variantSoft","variantOutlined","variantSolid"]),a=(0,o.sI)("MuiListItemButton",["root","horizontal","vertical","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","focusVisible","disabled","selected","variantPlain","variantSoft","variantOutlined","variantSolid"]);i(85893);let l=(0,r.Z)("div")(({theme:e,ownerState:t})=>{var i,r,o,l,h;return(0,n.Z)({"--Icon-margin":"initial","--Icon-color":"neutral"!==t.color||"solid"===t.variant?"currentColor":e.vars.palette.text.icon,WebkitTapHighlightColor:"transparent",boxSizing:"border-box",position:"relative",font:"inherit",display:"flex",flexDirection:"row",alignItems:"center",alignSelf:"stretch"},"vertical"===t.orientation&&{flexDirection:"column",justifyContent:"center"},{textAlign:"initial",textDecoration:"initial",backgroundColor:"initial",cursor:"pointer",marginInline:"var(--ListItemButton-marginInline)",marginBlock:"var(--ListItemButton-marginBlock)"},void 0===t["data-first-child"]&&{marginInlineStart:t.row?"var(--List-gap)":void 0,marginBlockStart:t.row?void 0:"var(--List-gap)"},{paddingBlock:"calc(var(--ListItem-paddingY) - var(--variant-borderWidth, 0px))",paddingInlineStart:"calc(var(--ListItem-paddingLeft) + var(--ListItem-startActionWidth, var(--unstable_startActionWidth, 0px)))",paddingInlineEnd:"calc(var(--ListItem-paddingRight) + var(--ListItem-endActionWidth, var(--unstable_endActionWidth, 0px)))",minBlockSize:"var(--ListItem-minHeight)",border:"1px solid transparent",borderRadius:"var(--ListItem-radius)",flex:"var(--unstable_ListItem-flex, none)",fontSize:"inherit",lineHeight:"inherit",minInlineSize:0,[e.focus.selector]:(0,n.Z)({},e.focus.default,{zIndex:1})},null==(i=e.variants[t.variant])?void 0:i[t.color],{[`.${s.root} > &`]:{"--unstable_ListItem-flex":"1 0 0%"},[`&.${a.selected}`]:(0,n.Z)({},null==(r=e.variants[`${t.variant}Active`])?void 0:r[t.color],{"--Icon-color":"currentColor"}),[`&:not(.${a.selected}, [aria-selected="true"])`]:{"&:hover":null==(o=e.variants[`${t.variant}Hover`])?void 0:o[t.color],"&:active":null==(l=e.variants[`${t.variant}Active`])?void 0:l[t.color]},[`&.${a.disabled}`]:(0,n.Z)({},null==(h=e.variants[`${t.variant}Disabled`])?void 0:h[t.color])})});(0,r.Z)(l,{name:"JoyListItemButton",slot:"Root",overridesResolver:(e,t)=>t.root})(({ownerState:e,theme:t})=>(0,n.Z)({},!e.row&&{[`&.${a.selected}`]:{fontWeight:t.vars.fontWeight.md}}))},57814:function(e,t,i){"use strict";i.d(t,{Z:function(){return R}});var n=i(87462),r=i(63366),o=i(67294),s=i(94780),a=i(92996),l=i(33703),h=i(43069),u=i(14072),d=i(30220),c=i(39984),g=i(74312),p=i(20407),f=i(78653),m=i(55907),v=i(26821);function E(e){return(0,v.d6)("MuiOption",e)}let _=(0,v.sI)("MuiOption",["root","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","focusVisible","disabled","selected","highlighted","variantPlain","variantSoft","variantOutlined","variantSolid"]);var C=i(40780),S=i(85893);let y=["component","children","disabled","value","label","variant","color","slots","slotProps"],T=e=>{let{disabled:t,highlighted:i,selected:n}=e;return(0,s.Z)({root:["root",t&&"disabled",i&&"highlighted",n&&"selected"]},E,{})},b=(0,g.Z)(c.r,{name:"JoyOption",slot:"Root",overridesResolver:(e,t)=>t.root})(({theme:e,ownerState:t})=>{var i;let n=null==(i=e.variants[`${t.variant}Hover`])?void 0:i[t.color];return{[`&.${_.highlighted}:not([aria-selected="true"])`]:{backgroundColor:null==n?void 0:n.backgroundColor}}}),A=o.forwardRef(function(e,t){var i;let s=(0,p.Z)({props:e,name:"JoyOption"}),{component:c="li",children:g,disabled:v=!1,value:E,label:_,variant:A="plain",color:R="neutral",slots:L={},slotProps:N={}}=s,I=(0,r.Z)(s,y),w=o.useContext(C.Z),{variant:O=A,color:x=R}=(0,m.yP)(e.variant,e.color),D=o.useRef(null),M=(0,l.Z)(D,t),k=null!=_?_:"string"==typeof g?g:null==(i=D.current)?void 0:i.innerText,{getRootProps:P,selected:F,highlighted:B,index:U}=function(e){let{value:t,label:i,disabled:r,rootRef:s,id:d}=e,{getRootProps:c,rootRef:g,highlighted:p,selected:f}=(0,h.J)({item:t}),m=(0,a.Z)(d),v=o.useRef(null),E=o.useMemo(()=>({disabled:r,label:i,value:t,ref:v,id:m}),[r,i,t,m]),{index:_}=(0,u.B)(t,E),C=(0,l.Z)(s,v,g);return{getRootProps:(e={})=>(0,n.Z)({},e,c(e),{id:m,ref:C,role:"option","aria-selected":f}),highlighted:p,index:_,selected:f,rootRef:C}}({disabled:v,label:k,value:E,rootRef:M}),{getColor:H}=(0,f.VT)(O),V=H(e.color,x),W=(0,n.Z)({},s,{disabled:v,selected:F,highlighted:B,index:U,component:c,variant:O,color:V,row:w}),G=T(W),z=(0,n.Z)({},I,{component:c,slots:L,slotProps:N}),[Y,K]=(0,d.Z)("root",{ref:t,getSlotProps:P,elementType:b,externalForwardedProps:z,className:G.root,ownerState:W});return(0,S.jsx)(Y,(0,n.Z)({},K,{children:g}))});var R=A},99056:function(e,t,i){"use strict";i.d(t,{Z:function(){return ea}});var n,r=i(63366),o=i(87462),s=i(67294),a=i(90512),l=i(14142),h=i(33703),u=i(53406),d=i(92996),c=i(73546),g=i(70758);let p={buttonClick:"buttonClick"};var f=i(96592);let m=e=>{let{label:t,value:i}=e;return"string"==typeof t?t:"string"==typeof i?i:String(e)};var v=i(12247),E=i(7333),_=i(22644);function C(e,t){var i,n,r;let{open:s}=e,{context:{selectionMode:a}}=t;if(t.type===p.buttonClick){let n=null!=(i=e.selectedValues[0])?i:(0,E.Rl)(null,"start",t.context);return(0,o.Z)({},e,{open:!s,highlightedValue:s?null:n})}let l=(0,E.R$)(e,t);switch(t.type){case _.F.keyDown:if(e.open){if("Escape"===t.event.key||"single"===a&&("Enter"===t.event.key||" "===t.event.key))return(0,o.Z)({},l,{open:!1})}else{if("Enter"===t.event.key||" "===t.event.key||"ArrowDown"===t.event.key)return(0,o.Z)({},e,{open:!0,highlightedValue:null!=(n=e.selectedValues[0])?n:(0,E.Rl)(null,"start",t.context)});if("ArrowUp"===t.event.key)return(0,o.Z)({},e,{open:!0,highlightedValue:null!=(r=e.selectedValues[0])?r:(0,E.Rl)(null,"end",t.context)})}break;case _.F.itemClick:if("single"===a)return(0,o.Z)({},l,{open:!1});break;case _.F.blur:return(0,o.Z)({},l,{open:!1})}return l}var S=i(2900);let y={clip:"rect(1px, 1px, 1px, 1px)",clipPath:"inset(50%)",height:"1px",width:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",left:"50%",bottom:0},T=()=>{};function b(e){return Array.isArray(e)?0===e.length?"":JSON.stringify(e.map(e=>e.value)):(null==e?void 0:e.value)==null?"":"string"==typeof e.value||"number"==typeof e.value?e.value:JSON.stringify(e.value)}function A(e){e.preventDefault()}var R=i(26558),L=i(85893);function N(e){let{value:t,children:i}=e,{dispatch:n,getItemIndex:r,getItemState:o,registerHighlightChangeHandler:a,registerSelectionChangeHandler:l,registerItem:h,totalSubitemCount:u}=t,d=s.useMemo(()=>({dispatch:n,getItemState:o,getItemIndex:r,registerHighlightChangeHandler:a,registerSelectionChangeHandler:l}),[n,r,o,a,l]),c=s.useMemo(()=>({getItemIndex:r,registerItem:h,totalSubitemCount:u}),[h,r,u]);return(0,L.jsx)(v.s.Provider,{value:c,children:(0,L.jsx)(R.Z.Provider,{value:d,children:i})})}var I=i(94780),w=i(50984),O=i(3419),x=i(43614),D=i(74312),M=i(20407),k=i(30220),P=i(26821);function F(e){return(0,P.d6)("MuiSvgIcon",e)}(0,P.sI)("MuiSvgIcon",["root","colorInherit","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","fontSizeInherit","fontSizeXs","fontSizeSm","fontSizeMd","fontSizeLg","fontSizeXl","fontSizeXl2","fontSizeXl3","fontSizeXl4","sizeSm","sizeMd","sizeLg"]);let B=["children","className","color","component","fontSize","htmlColor","inheritViewBox","titleAccess","viewBox","size","slots","slotProps"],U=e=>{let{color:t,size:i,fontSize:n}=e,r={root:["root",t&&"inherit"!==t&&`color${(0,l.Z)(t)}`,i&&`size${(0,l.Z)(i)}`,n&&`fontSize${(0,l.Z)(n)}`]};return(0,I.Z)(r,F,{})},H={sm:"xl",md:"xl2",lg:"xl3"},V=(0,D.Z)("svg",{name:"JoySvgIcon",slot:"Root",overridesResolver:(e,t)=>t.root})(({theme:e,ownerState:t})=>{var i;return(0,o.Z)({},t.instanceSize&&{"--Icon-fontSize":e.vars.fontSize[H[t.instanceSize]]},t.instanceFontSize&&"inherit"!==t.instanceFontSize&&{"--Icon-fontSize":e.vars.fontSize[t.instanceFontSize]},{userSelect:"none",margin:"var(--Icon-margin)",width:"1em",height:"1em",display:"inline-block",fill:t.hasSvgAsChild?void 0:"currentColor",flexShrink:0,fontSize:`var(--Icon-fontSize, ${e.vars.fontSize[H[t.size]]||"unset"})`},t.fontSize&&"inherit"!==t.fontSize&&{fontSize:`var(--Icon-fontSize, ${e.fontSize[t.fontSize]})`},!t.htmlColor&&(0,o.Z)({color:`var(--Icon-color, ${e.vars.palette.text.icon})`},"inherit"===t.color&&{color:"inherit"},"inherit"!==t.color&&"context"!==t.color&&e.vars.palette[t.color]&&{color:`rgba(${null==(i=e.vars.palette[t.color])?void 0:i.mainChannel} / 1)`}))}),W=s.forwardRef(function(e,t){let i=(0,M.Z)({props:e,name:"JoySvgIcon"}),{children:n,className:l,color:h,component:u="svg",fontSize:d,htmlColor:c,inheritViewBox:g=!1,titleAccess:p,viewBox:f="0 0 24 24",size:m="md",slots:v={},slotProps:E={}}=i,_=(0,r.Z)(i,B),C=s.isValidElement(n)&&"svg"===n.type,S=(0,o.Z)({},i,{color:h,component:u,size:m,instanceSize:e.size,fontSize:d,instanceFontSize:e.fontSize,inheritViewBox:g,viewBox:f,hasSvgAsChild:C}),y=U(S),T=(0,o.Z)({},_,{component:u,slots:v,slotProps:E}),[b,A]=(0,k.Z)("root",{ref:t,className:(0,a.Z)(y.root,l),elementType:V,externalForwardedProps:T,ownerState:S,additionalProps:(0,o.Z)({color:c,focusable:!1},p&&{role:"img"},!p&&{"aria-hidden":!0},!g&&{viewBox:f},C&&n.props)});return(0,L.jsxs)(b,(0,o.Z)({},A,{children:[C?n.props.children:n,p?(0,L.jsx)("title",{children:p}):null]}))});var G=function(e,t){function i(i,n){return(0,L.jsx)(W,(0,o.Z)({"data-testid":`${t}Icon`,ref:n},i,{children:e}))}return i.muiName=W.muiName,s.memo(s.forwardRef(i))}((0,L.jsx)("path",{d:"m12 5.83 2.46 2.46c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L12.7 3.7a.9959.9959 0 0 0-1.41 0L8.12 6.88c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0L12 5.83zm0 12.34-2.46-2.46a.9959.9959 0 0 0-1.41 0c-.39.39-.39 1.02 0 1.41l3.17 3.18c.39.39 1.02.39 1.41 0l3.17-3.17c.39-.39.39-1.02 0-1.41a.9959.9959 0 0 0-1.41 0L12 18.17z"}),"Unfold"),z=i(78653),Y=i(58859);function K(e){return(0,P.d6)("MuiSelect",e)}let $=(0,P.sI)("MuiSelect",["root","button","indicator","startDecorator","endDecorator","popper","listbox","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","variantPlain","variantOutlined","variantSoft","variantSolid","sizeSm","sizeMd","sizeLg","focusVisible","disabled","expanded"]);var X=i(76043),j=i(55907);let q=["action","autoFocus","children","defaultValue","defaultListboxOpen","disabled","getSerializedValue","placeholder","listboxId","listboxOpen","onChange","onListboxOpenChange","onClose","renderValue","required","value","size","variant","color","startDecorator","endDecorator","indicator","aria-describedby","aria-label","aria-labelledby","id","name","slots","slotProps"];function Z(e){var t;return null!=(t=null==e?void 0:e.label)?t:""}let J=[{name:"offset",options:{offset:[0,4]}},{name:"equalWidth",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:({state:e})=>{e.styles.popper.width=`${e.rects.reference.width}px`}}],Q=e=>{let{color:t,disabled:i,focusVisible:n,size:r,variant:o,open:s}=e,a={root:["root",i&&"disabled",n&&"focusVisible",s&&"expanded",o&&`variant${(0,l.Z)(o)}`,t&&`color${(0,l.Z)(t)}`,r&&`size${(0,l.Z)(r)}`],button:["button"],startDecorator:["startDecorator"],endDecorator:["endDecorator"],indicator:["indicator",s&&"expanded"],listbox:["listbox",s&&"expanded",i&&"disabled"]};return(0,I.Z)(a,K,{})},ee=(0,D.Z)("div",{name:"JoySelect",slot:"Root",overridesResolver:(e,t)=>t.root})(({theme:e,ownerState:t})=>{var i,n,r,s;let a=null==(i=e.variants[`${t.variant}`])?void 0:i[t.color],{borderRadius:l}=(0,Y.V)({theme:e,ownerState:t},["borderRadius"]);return[(0,o.Z)({"--Select-radius":e.vars.radius.sm,"--Select-gap":"0.5rem","--Select-placeholderOpacity":.64,"--Select-decoratorColor":e.vars.palette.text.icon,"--Select-focusedThickness":e.vars.focus.thickness},"context"===t.color?{"--Select-focusedHighlight":e.vars.palette.focusVisible}:{"--Select-focusedHighlight":null==(n=e.vars.palette["neutral"===t.color?"primary":t.color])?void 0:n[500]},{"--Select-indicatorColor":null!=a&&a.backgroundColor?null==a?void 0:a.color:e.vars.palette.text.tertiary},"sm"===t.size&&{"--Select-minHeight":"2rem","--Select-paddingInline":"0.5rem","--Select-decoratorChildHeight":"min(1.5rem, var(--Select-minHeight))","--Icon-fontSize":e.vars.fontSize.xl},"md"===t.size&&{"--Select-minHeight":"2.5rem","--Select-paddingInline":"0.75rem","--Select-decoratorChildHeight":"min(2rem, var(--Select-minHeight))","--Icon-fontSize":e.vars.fontSize.xl2},"lg"===t.size&&{"--Select-minHeight":"3rem","--Select-paddingInline":"1rem","--Select-decoratorChildHeight":"min(2.375rem, var(--Select-minHeight))","--Icon-fontSize":e.vars.fontSize.xl2},{"--Select-decoratorChildOffset":"min(calc(var(--Select-paddingInline) - (var(--Select-minHeight) - 2 * var(--variant-borderWidth, 0px) - var(--Select-decoratorChildHeight)) / 2), var(--Select-paddingInline))","--_Select-paddingBlock":"max((var(--Select-minHeight) - 2 * var(--variant-borderWidth, 0px) - var(--Select-decoratorChildHeight)) / 2, 0px)","--Select-decoratorChildRadius":"max(var(--Select-radius) - var(--variant-borderWidth, 0px) - var(--_Select-paddingBlock), min(var(--_Select-paddingBlock) + var(--variant-borderWidth, 0px), var(--Select-radius) / 2))","--Button-minHeight":"var(--Select-decoratorChildHeight)","--IconButton-size":"var(--Select-decoratorChildHeight)","--Button-radius":"var(--Select-decoratorChildRadius)","--IconButton-radius":"var(--Select-decoratorChildRadius)",boxSizing:"border-box"},"plain"!==t.variant&&{boxShadow:e.shadow.xs},{minWidth:0,minHeight:"var(--Select-minHeight)",position:"relative",display:"flex",alignItems:"center",borderRadius:"var(--Select-radius)",cursor:"pointer"},!(null!=a&&a.backgroundColor)&&{backgroundColor:e.vars.palette.background.surface},t.size&&{paddingBlock:({sm:2,md:3,lg:4})[t.size]},{paddingInline:"var(--Select-paddingInline)"},e.typography[`body-${t.size}`],a,{"&::before":{boxSizing:"border-box",content:'""',display:"block",position:"absolute",pointerEvents:"none",top:0,left:0,right:0,bottom:0,zIndex:1,borderRadius:"inherit",margin:"calc(var(--variant-borderWidth, 0px) * -1)"},[`&.${$.focusVisible}`]:{"--Select-indicatorColor":null==a?void 0:a.color,"&::before":{boxShadow:"inset 0 0 0 var(--Select-focusedThickness) var(--Select-focusedHighlight)"}},[`&.${$.disabled}`]:{"--Select-indicatorColor":"inherit"}}),{"&:hover":null==(r=e.variants[`${t.variant}Hover`])?void 0:r[t.color],[`&.${$.disabled}`]:null==(s=e.variants[`${t.variant}Disabled`])?void 0:s[t.color]},void 0!==l&&{"--Select-radius":l}]}),et=(0,D.Z)("button",{name:"JoySelect",slot:"Button",overridesResolver:(e,t)=>t.button})(({ownerState:e})=>(0,o.Z)({border:0,outline:0,background:"none",padding:0,fontSize:"inherit",color:"inherit",alignSelf:"stretch",display:"flex",alignItems:"center",flex:1,fontFamily:"inherit",cursor:"pointer",whiteSpace:"nowrap",overflow:"hidden"},(null===e.value||void 0===e.value)&&{opacity:"var(--Select-placeholderOpacity)"},{"&::before":{content:'""',display:"block",position:"absolute",top:"calc(-1 * var(--variant-borderWidth, 0px))",left:"calc(-1 * var(--variant-borderWidth, 0px))",right:"calc(-1 * var(--variant-borderWidth, 0px))",bottom:"calc(-1 * var(--variant-borderWidth, 0px))",borderRadius:"var(--Select-radius)"}})),ei=(0,D.Z)(w.C,{name:"JoySelect",slot:"Listbox",overridesResolver:(e,t)=>t.listbox})(({theme:e,ownerState:t})=>{var i;let n="context"===t.color?void 0:null==(i=e.variants[t.variant])?void 0:i[t.color];return(0,o.Z)({"--focus-outline-offset":`calc(${e.vars.focus.thickness} * -1)`,"--ListItem-stickyBackground":(null==n?void 0:n.backgroundColor)||(null==n?void 0:n.background)||e.vars.palette.background.popup,"--ListItem-stickyTop":"calc(var(--List-padding, var(--ListDivider-gap)) * -1)"},O.M,{minWidth:"max-content",maxHeight:"44vh",overflow:"auto",outline:0,boxShadow:e.shadow.md,borderRadius:`var(--List-radius, ${e.vars.radius.sm})`,zIndex:`var(--unstable_popup-zIndex, ${e.vars.zIndex.popup})`},!(null!=n&&n.backgroundColor)&&{backgroundColor:e.vars.palette.background.popup})}),en=(0,D.Z)("span",{name:"JoySelect",slot:"StartDecorator",overridesResolver:(e,t)=>t.startDecorator})({"--Button-margin":"0 0 0 calc(var(--Select-decoratorChildOffset) * -1)","--IconButton-margin":"0 0 0 calc(var(--Select-decoratorChildOffset) * -1)","--Icon-margin":"0 0 0 calc(var(--Select-paddingInline) / -4)",display:"inherit",alignItems:"center",color:"var(--Select-decoratorColor)",marginInlineEnd:"var(--Select-gap)"}),er=(0,D.Z)("span",{name:"JoySelect",slot:"EndDecorator",overridesResolver:(e,t)=>t.endDecorator})({"--Button-margin":"0 calc(var(--Select-decoratorChildOffset) * -1) 0 0","--IconButton-margin":"0 calc(var(--Select-decoratorChildOffset) * -1) 0 0","--Icon-margin":"0 calc(var(--Select-paddingInline) / -4) 0 0",display:"inherit",alignItems:"center",color:"var(--Select-decoratorColor)",marginInlineStart:"var(--Select-gap)"}),eo=(0,D.Z)("span",{name:"JoySelect",slot:"Indicator"})(({ownerState:e,theme:t})=>(0,o.Z)({},"sm"===e.size&&{"--Icon-fontSize":t.vars.fontSize.lg},"md"===e.size&&{"--Icon-fontSize":t.vars.fontSize.xl},"lg"===e.size&&{"--Icon-fontSize":t.vars.fontSize.xl2},{"--Icon-color":"neutral"!==e.color||"solid"===e.variant?"currentColor":t.vars.palette.text.icon,display:"inherit",alignItems:"center",marginInlineStart:"var(--Select-gap)",marginInlineEnd:"calc(var(--Select-paddingInline) / -4)",[`.${$.endDecorator} + &`]:{marginInlineStart:"calc(var(--Select-gap) / 2)"},[`&.${$.expanded}, .${$.disabled} > &`]:{"--Icon-color":"currentColor"}})),es=s.forwardRef(function(e,t){var i,l,E,_,R,I,w;let D=(0,M.Z)({props:e,name:"JoySelect"}),{action:P,autoFocus:F,children:B,defaultValue:U,defaultListboxOpen:H=!1,disabled:V,getSerializedValue:W,placeholder:Y,listboxId:K,listboxOpen:es,onChange:ea,onListboxOpenChange:el,onClose:eh,renderValue:eu,required:ed=!1,value:ec,size:eg="md",variant:ep="outlined",color:ef="neutral",startDecorator:em,endDecorator:ev,indicator:eE=n||(n=(0,L.jsx)(G,{})),"aria-describedby":e_,"aria-label":eC,"aria-labelledby":eS,id:ey,name:eT,slots:eb={},slotProps:eA={}}=D,eR=(0,r.Z)(D,q),eL=s.useContext(X.Z),eN=null!=(i=null!=(l=e.disabled)?l:null==eL?void 0:eL.disabled)?i:V,eI=null!=(E=null!=(_=e.size)?_:null==eL?void 0:eL.size)?E:eg,{getColor:ew}=(0,z.VT)(ep),eO=ew(e.color,null!=eL&&eL.error?"danger":null!=(R=null==eL?void 0:eL.color)?R:ef),ex=null!=eu?eu:Z,[eD,eM]=s.useState(null),ek=s.useRef(null),eP=s.useRef(null),eF=s.useRef(null),eB=(0,h.Z)(t,ek);s.useImperativeHandle(P,()=>({focusVisible:()=>{var e;null==(e=eP.current)||e.focus()}}),[]),s.useEffect(()=>{eM(ek.current)},[]),s.useEffect(()=>{F&&eP.current.focus()},[F]);let eU=s.useCallback(e=>{null==el||el(e),e||null==eh||eh()},[eh,el]),{buttonActive:eH,buttonFocusVisible:eV,contextValue:eW,disabled:eG,getButtonProps:ez,getListboxProps:eY,getHiddenInputProps:eK,getOptionMetadata:e$,open:eX,value:ej}=function(e){let t,i,n;let{areOptionsEqual:r,buttonRef:a,defaultOpen:l=!1,defaultValue:u,disabled:E=!1,listboxId:_,listboxRef:R,multiple:L=!1,name:N,required:I,onChange:w,onHighlightChange:O,onOpenChange:x,open:D,options:M,getOptionAsString:k=m,getSerializedValue:P=b,value:F}=e,B=s.useRef(null),U=(0,h.Z)(a,B),H=s.useRef(null),V=(0,d.Z)(_);void 0===F&&void 0===u?t=[]:void 0!==u&&(t=L?u:null==u?[]:[u]);let W=s.useMemo(()=>{if(void 0!==F)return L?F:null==F?[]:[F]},[F,L]),{subitems:G,contextValue:z}=(0,v.Y)(),Y=s.useMemo(()=>null!=M?new Map(M.map((e,t)=>[e.value,{value:e.value,label:e.label,disabled:e.disabled,ref:s.createRef(),id:`${V}_${t}`}])):G,[M,G,V]),K=(0,h.Z)(R,H),{getRootProps:$,active:X,focusVisible:j,rootRef:q}=(0,g.U)({disabled:E,rootRef:U}),Z=s.useMemo(()=>Array.from(Y.keys()),[Y]),J=s.useCallback(e=>{if(void 0!==r){let t=Z.find(t=>r(t,e));return Y.get(t)}return Y.get(e)},[Y,r,Z]),Q=s.useCallback(e=>{var t;let i=J(e);return null!=(t=null==i?void 0:i.disabled)&&t},[J]),ee=s.useCallback(e=>{let t=J(e);return t?k(t):""},[J,k]),et=s.useMemo(()=>({selectedValues:W,open:D}),[W,D]),ei=s.useCallback(e=>{var t;return null==(t=Y.get(e))?void 0:t.id},[Y]),en=s.useCallback((e,t)=>{if(L)null==w||w(e,t);else{var i;null==w||w(e,null!=(i=t[0])?i:null)}},[L,w]),er=s.useCallback((e,t)=>{null==O||O(e,null!=t?t:null)},[O]),eo=s.useCallback((e,t,i)=>{if("open"===t&&(null==x||x(i),!1===i&&(null==e?void 0:e.type)!=="blur")){var n;null==(n=B.current)||n.focus()}},[x]),es={getInitialState:()=>{var e;return{highlightedValue:null,selectedValues:null!=(e=t)?e:[],open:l}},getItemId:ei,controlledProps:et,itemComparer:r,isItemDisabled:Q,rootRef:q,onChange:en,onHighlightChange:er,onStateChange:eo,reducerActionContext:s.useMemo(()=>({multiple:L}),[L]),items:Z,getItemAsString:ee,selectionMode:L?"multiple":"single",stateReducer:C},{dispatch:ea,getRootProps:el,contextValue:eh,state:{open:eu,highlightedValue:ed,selectedValues:ec},rootRef:eg}=(0,f.s)(es),ep=e=>t=>{var i;if(null==e||null==(i=e.onMouseDown)||i.call(e,t),!t.defaultMuiPrevented){let e={type:p.buttonClick,event:t};ea(e)}};(0,c.Z)(()=>{if(null!=ed){var e;let t=null==(e=J(ed))?void 0:e.ref;if(!H.current||!(null!=t&&t.current))return;let i=H.current.getBoundingClientRect(),n=t.current.getBoundingClientRect();n.topi.bottom&&(H.current.scrollTop+=n.bottom-i.bottom)}},[ed,J]);let ef=s.useCallback(e=>J(e),[J]),em=(e={})=>(0,o.Z)({},e,{onMouseDown:ep(e),ref:eg,role:"combobox","aria-expanded":eu,"aria-controls":V});s.useDebugValue({selectedOptions:ec,highlightedOption:ed,open:eu});let ev=s.useMemo(()=>(0,o.Z)({},eh,z),[eh,z]);if(i=e.multiple?ec:ec.length>0?ec[0]:null,L)n=i.map(e=>ef(e)).filter(e=>void 0!==e);else{var eE;n=null!=(eE=ef(i))?eE:null}return{buttonActive:X,buttonFocusVisible:j,buttonRef:q,contextValue:ev,disabled:E,dispatch:ea,getButtonProps:(e={})=>{let t=(0,S.f)($,el),i=(0,S.f)(t,em);return i(e)},getHiddenInputProps:(e={})=>(0,o.Z)({name:N,tabIndex:-1,"aria-hidden":!0,required:!!I||void 0,value:P(n),onChange:T,style:y},e),getListboxProps:(e={})=>(0,o.Z)({},e,{id:V,role:"listbox","aria-multiselectable":L?"true":void 0,ref:K,onMouseDown:A}),getOptionMetadata:ef,listboxRef:eg,open:eu,options:Z,value:i,highlightedOption:ed}}({buttonRef:eP,defaultOpen:H,defaultValue:U,disabled:eN,getSerializedValue:W,listboxId:K,multiple:!1,name:eT,required:ed,onChange:ea,onOpenChange:eU,open:es,value:ec}),eq=(0,o.Z)({},D,{active:eH,defaultListboxOpen:H,disabled:eG,focusVisible:eV,open:eX,renderValue:ex,value:ej,size:eI,variant:ep,color:eO}),eZ=Q(eq),eJ=(0,o.Z)({},eR,{slots:eb,slotProps:eA}),eQ=s.useMemo(()=>{var e;return null!=(e=e$(ej))?e:null},[e$,ej]),[e0,e1]=(0,k.Z)("root",{ref:eB,className:eZ.root,elementType:ee,externalForwardedProps:eJ,ownerState:eq}),[e2,e4]=(0,k.Z)("button",{additionalProps:{"aria-describedby":null!=e_?e_:null==eL?void 0:eL["aria-describedby"],"aria-label":eC,"aria-labelledby":null!=eS?eS:null==eL?void 0:eL.labelId,"aria-required":ed?"true":void 0,id:null!=ey?ey:null==eL?void 0:eL.htmlFor,name:eT},className:eZ.button,elementType:et,externalForwardedProps:eJ,getSlotProps:ez,ownerState:eq}),[e5,e6]=(0,k.Z)("listbox",{additionalProps:{ref:eF,anchorEl:eD,open:eX,placement:"bottom",keepMounted:!0},className:eZ.listbox,elementType:ei,externalForwardedProps:eJ,getSlotProps:eY,ownerState:(0,o.Z)({},eq,{nesting:!1,row:!1,wrap:!1}),getSlotOwnerState:e=>({size:e.size||eI,variant:e.variant||ep,color:e.color||(e.disablePortal?eO:ef),disableColorInversion:!e.disablePortal})}),[e3,e9]=(0,k.Z)("startDecorator",{className:eZ.startDecorator,elementType:en,externalForwardedProps:eJ,ownerState:eq}),[e7,e8]=(0,k.Z)("endDecorator",{className:eZ.endDecorator,elementType:er,externalForwardedProps:eJ,ownerState:eq}),[te,tt]=(0,k.Z)("indicator",{className:eZ.indicator,elementType:eo,externalForwardedProps:eJ,ownerState:eq}),ti=s.useMemo(()=>[...J,...e6.modifiers||[]],[e6.modifiers]),tn=null;return eD&&(tn=(0,L.jsx)(e5,(0,o.Z)({},e6,{className:(0,a.Z)(e6.className,(null==(I=e6.ownerState)?void 0:I.color)==="context"&&$.colorContext),modifiers:ti},!(null!=(w=D.slots)&&w.listbox)&&{as:u.r,slots:{root:e6.as||"ul"}},{children:(0,L.jsx)(N,{value:eW,children:(0,L.jsx)(j.Yb,{variant:ep,color:ef,children:(0,L.jsx)(x.Z.Provider,{value:"select",children:(0,L.jsx)(O.Z,{nested:!0,children:B})})})})})),e6.disablePortal||(tn=(0,L.jsx)(z.ZP.Provider,{value:void 0,children:tn}))),(0,L.jsxs)(s.Fragment,{children:[(0,L.jsxs)(e0,(0,o.Z)({},e1,{children:[em&&(0,L.jsx)(e3,(0,o.Z)({},e9,{children:em})),(0,L.jsx)(e2,(0,o.Z)({},e4,{children:eQ?ex(eQ):Y})),ev&&(0,L.jsx)(e7,(0,o.Z)({},e8,{children:ev})),eE&&(0,L.jsx)(te,(0,o.Z)({},tt,{children:eE})),(0,L.jsx)("input",(0,o.Z)({},eK()))]})),tn]})});var ea=es},61685:function(e,t,i){"use strict";i.d(t,{Z:function(){return y}});var n=i(63366),r=i(87462),o=i(67294),s=i(90512),a=i(14142),l=i(94780),h=i(20407),u=i(78653),d=i(74312),c=i(26821);function g(e){return(0,c.d6)("MuiTable",e)}(0,c.sI)("MuiTable",["root","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","variantPlain","variantOutlined","variantSoft","variantSolid","sizeSm","sizeMd","sizeLg","stickyHeader","stickyFooter","noWrap","hoverRow","borderAxisNone","borderAxisX","borderAxisXBetween","borderAxisY","borderAxisYBetween","borderAxisBoth","borderAxisBothBetween"]);var p=i(40911),f=i(30220),m=i(85893);let v=["className","component","children","borderAxis","hoverRow","noWrap","size","variant","color","stripe","stickyHeader","stickyFooter","slots","slotProps"],E=e=>{let{size:t,variant:i,color:n,borderAxis:r,stickyHeader:o,stickyFooter:s,noWrap:h,hoverRow:u}=e,d={root:["root",o&&"stickyHeader",s&&"stickyFooter",h&&"noWrap",u&&"hoverRow",r&&`borderAxis${(0,a.Z)(r)}`,i&&`variant${(0,a.Z)(i)}`,n&&`color${(0,a.Z)(n)}`,t&&`size${(0,a.Z)(t)}`]};return(0,l.Z)(d,g,{})},_={getColumnExceptFirst:()=>"& tr > *:not(:first-of-type), & tr > th + td, & tr > td + th",getCell:()=>"& th, & td",getHeadCell:()=>"& th",getHeaderCell:()=>"& thead th",getHeaderCellOfRow:e=>`& thead tr:nth-of-type(${e}) th`,getBottomHeaderCell:()=>"& thead th:not([colspan])",getHeaderNestedFirstColumn:()=>"& thead tr:not(:first-of-type) th:not([colspan]):first-of-type",getDataCell:()=>"& td",getDataCellExceptLastRow:()=>"& tr:not(:last-of-type) > td",getBodyCellExceptLastRow(){return`${this.getDataCellExceptLastRow()}, & tr:not(:last-of-type) > th[scope="row"]`},getBodyCellOfRow:e=>"number"==typeof e&&e<0?`& tbody tr:nth-last-of-type(${Math.abs(e)}) td, & tbody tr:nth-last-of-type(${Math.abs(e)}) th[scope="row"]`:`& tbody tr:nth-of-type(${e}) td, & tbody tr:nth-of-type(${e}) th[scope="row"]`,getBodyRow:e=>void 0===e?"& tbody tr":`& tbody tr:nth-of-type(${e})`,getFooterCell:()=>"& tfoot th, & tfoot td",getFooterFirstRowCell:()=>"& tfoot tr:not(:last-of-type) th, & tfoot tr:not(:last-of-type) td"},C=(0,d.Z)("table",{name:"JoyTable",slot:"Root",overridesResolver:(e,t)=>t.root})(({theme:e,ownerState:t})=>{var i,n,o,s,a,l,h;let u=null==(i=e.variants[t.variant])?void 0:i[t.color];return[(0,r.Z)({"--Table-headerUnderlineThickness":"2px","--TableCell-borderColor":null!=(n=null==u?void 0:u.borderColor)?n:e.vars.palette.divider,"--TableCell-headBackground":`var(--Sheet-background, ${e.vars.palette.background.surface})`},"sm"===t.size&&{"--unstable_TableCell-height":"var(--TableCell-height, 32px)","--TableCell-paddingX":"0.25rem","--TableCell-paddingY":"0.25rem"},"md"===t.size&&{"--unstable_TableCell-height":"var(--TableCell-height, 40px)","--TableCell-paddingX":"0.5rem","--TableCell-paddingY":"0.375rem"},"lg"===t.size&&{"--unstable_TableCell-height":"var(--TableCell-height, 48px)","--TableCell-paddingX":"0.75rem","--TableCell-paddingY":"0.5rem"},{tableLayout:"fixed",width:"100%",borderSpacing:"0px",borderCollapse:"separate",borderRadius:"var(--TableCell-cornerRadius, var(--unstable_actionRadius))"},e.typography[`body-${({sm:"xs",md:"sm",lg:"md"})[t.size]}`],null==(o=e.variants[t.variant])?void 0:o[t.color],{"& caption":{color:e.vars.palette.text.tertiary,padding:"calc(2 * var(--TableCell-paddingY)) var(--TableCell-paddingX)"},[_.getDataCell()]:(0,r.Z)({padding:"var(--TableCell-paddingY) var(--TableCell-paddingX)",height:"var(--unstable_TableCell-height)",borderColor:"var(--TableCell-borderColor)",backgroundColor:"var(--TableCell-dataBackground)"},t.noWrap&&{textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"}),[_.getHeadCell()]:{textAlign:"left",padding:"var(--TableCell-paddingY) var(--TableCell-paddingX)",backgroundColor:"var(--TableCell-headBackground)",height:"var(--unstable_TableCell-height)",fontWeight:e.vars.fontWeight.lg,borderColor:"var(--TableCell-borderColor)",color:e.vars.palette.text.secondary,textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"},[_.getHeaderCell()]:{verticalAlign:"bottom","&:first-of-type":{borderTopLeftRadius:"var(--TableCell-cornerRadius, var(--unstable_actionRadius))"},"&:last-of-type":{borderTopRightRadius:"var(--TableCell-cornerRadius, var(--unstable_actionRadius))"}},"& tfoot tr > *":{backgroundColor:`var(--TableCell-footBackground, ${e.vars.palette.background.level1})`,"&:first-of-type":{borderBottomLeftRadius:"var(--TableCell-cornerRadius, var(--unstable_actionRadius))"},"&:last-of-type":{borderBottomRightRadius:"var(--TableCell-cornerRadius, var(--unstable_actionRadius))"}}}),((null==(s=t.borderAxis)?void 0:s.startsWith("x"))||(null==(a=t.borderAxis)?void 0:a.startsWith("both")))&&{[_.getHeaderCell()]:{borderBottomWidth:1,borderBottomStyle:"solid"},[_.getBottomHeaderCell()]:{borderBottomWidth:"var(--Table-headerUnderlineThickness)",borderBottomStyle:"solid"},[_.getBodyCellExceptLastRow()]:{borderBottomWidth:1,borderBottomStyle:"solid"},[_.getFooterCell()]:{borderTopWidth:1,borderTopStyle:"solid"}},((null==(l=t.borderAxis)?void 0:l.startsWith("y"))||(null==(h=t.borderAxis)?void 0:h.startsWith("both")))&&{[`${_.getColumnExceptFirst()}, ${_.getHeaderNestedFirstColumn()}`]:{borderLeftWidth:1,borderLeftStyle:"solid"}},("x"===t.borderAxis||"both"===t.borderAxis)&&{[_.getHeaderCellOfRow(1)]:{borderTopWidth:1,borderTopStyle:"solid"},[_.getBodyCellOfRow(-1)]:{borderBottomWidth:1,borderBottomStyle:"solid"},[_.getFooterCell()]:{borderBottomWidth:1,borderBottomStyle:"solid"}},("y"===t.borderAxis||"both"===t.borderAxis)&&{"& tr > *:first-of-type":{borderLeftWidth:1,borderLeftStyle:"solid"},"& tr > *:last-of-type:not(:first-of-type)":{borderRightWidth:1,borderRightStyle:"solid"}},t.stripe&&{[_.getBodyRow(t.stripe)]:{background:`var(--TableRow-stripeBackground, ${e.vars.palette.background.level2})`,color:e.vars.palette.text.primary}},t.hoverRow&&{[_.getBodyRow()]:{"&:hover":{background:`var(--TableRow-hoverBackground, ${e.vars.palette.background.level3})`}}},t.stickyHeader&&{[_.getHeaderCell()]:{position:"sticky",top:0,zIndex:e.vars.zIndex.table},[_.getHeaderCellOfRow(2)]:{top:"var(--unstable_TableCell-height)"}},t.stickyFooter&&{[_.getFooterCell()]:{position:"sticky",bottom:0,zIndex:e.vars.zIndex.table,color:e.vars.palette.text.secondary,fontWeight:e.vars.fontWeight.lg},[_.getFooterFirstRowCell()]:{bottom:"var(--unstable_TableCell-height)"}}]}),S=o.forwardRef(function(e,t){let i=(0,h.Z)({props:e,name:"JoyTable"}),{className:o,component:a,children:l,borderAxis:d="xBetween",hoverRow:c=!1,noWrap:g=!1,size:_="md",variant:S="plain",color:y="neutral",stripe:T,stickyHeader:b=!1,stickyFooter:A=!1,slots:R={},slotProps:L={}}=i,N=(0,n.Z)(i,v),{getColor:I}=(0,u.VT)(S),w=I(e.color,y),O=(0,r.Z)({},i,{borderAxis:d,hoverRow:c,noWrap:g,component:a,size:_,color:w,variant:S,stripe:T,stickyHeader:b,stickyFooter:A}),x=E(O),D=(0,r.Z)({},N,{component:a,slots:R,slotProps:L}),[M,k]=(0,f.Z)("root",{ref:t,className:(0,s.Z)(x.root,o),elementType:C,externalForwardedProps:D,ownerState:O});return(0,m.jsx)(p.eu.Provider,{value:!0,children:(0,m.jsx)(M,(0,r.Z)({},k,{children:l}))})});var y=S},40911:function(e,t,i){"use strict";i.d(t,{eu:function(){return C},ZP:function(){return L}});var n=i(63366),r=i(87462),o=i(67294),s=i(14142),a=i(18719),l=i(39707),h=i(94780),u=i(74312),d=i(20407),c=i(78653),g=i(30220),p=i(26821);function f(e){return(0,p.d6)("MuiTypography",e)}(0,p.sI)("MuiTypography",["root","h1","h2","h3","h4","title-lg","title-md","title-sm","body-lg","body-md","body-sm","body-xs","noWrap","gutterBottom","startDecorator","endDecorator","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","variantPlain","variantOutlined","variantSoft","variantSolid"]);var m=i(85893);let v=["color","textColor"],E=["component","gutterBottom","noWrap","level","levelMapping","children","endDecorator","startDecorator","variant","slots","slotProps"],_=o.createContext(!1),C=o.createContext(!1),S=e=>{let{gutterBottom:t,noWrap:i,level:n,color:r,variant:o}=e,a={root:["root",n,t&&"gutterBottom",i&&"noWrap",r&&`color${(0,s.Z)(r)}`,o&&`variant${(0,s.Z)(o)}`],startDecorator:["startDecorator"],endDecorator:["endDecorator"]};return(0,h.Z)(a,f,{})},y=(0,u.Z)("span",{name:"JoyTypography",slot:"StartDecorator",overridesResolver:(e,t)=>t.startDecorator})({display:"inline-flex",marginInlineEnd:"clamp(4px, var(--Typography-gap, 0.375em), 0.75rem)"}),T=(0,u.Z)("span",{name:"JoyTypography",slot:"endDecorator",overridesResolver:(e,t)=>t.endDecorator})({display:"inline-flex",marginInlineStart:"clamp(4px, var(--Typography-gap, 0.375em), 0.75rem)"}),b=(0,u.Z)("span",{name:"JoyTypography",slot:"Root",overridesResolver:(e,t)=>t.root})(({theme:e,ownerState:t})=>{var i,n,o,s,a;let l="inherit"!==t.level?null==(i=e.typography[t.level])?void 0:i.lineHeight:"1";return(0,r.Z)({"--Icon-fontSize":`calc(1em * ${l})`},t.color&&{"--Icon-color":"currentColor"},{margin:"var(--Typography-margin, 0px)"},t.nesting?{display:"inline"}:(0,r.Z)({display:"block"},t.unstable_hasSkeleton&&{position:"relative"}),(t.startDecorator||t.endDecorator)&&(0,r.Z)({display:"flex",alignItems:"center"},t.nesting&&(0,r.Z)({display:"inline-flex"},t.startDecorator&&{verticalAlign:"bottom"})),t.level&&"inherit"!==t.level&&e.typography[t.level],{fontSize:`var(--Typography-fontSize, ${t.level&&"inherit"!==t.level&&null!=(n=null==(o=e.typography[t.level])?void 0:o.fontSize)?n:"inherit"})`},t.noWrap&&{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},t.gutterBottom&&{marginBottom:"0.35em"},t.color&&"context"!==t.color&&{color:`rgba(${null==(s=e.vars.palette[t.color])?void 0:s.mainChannel} / 1)`},t.variant&&(0,r.Z)({borderRadius:e.vars.radius.xs,paddingBlock:"min(0.1em, 4px)",paddingInline:"0.25em"},!t.nesting&&{marginInline:"-0.25em"},null==(a=e.variants[t.variant])?void 0:a[t.color]))}),A={h1:"h1",h2:"h2",h3:"h3",h4:"h4","title-lg":"p","title-md":"p","title-sm":"p","body-lg":"p","body-md":"p","body-sm":"p","body-xs":"span",inherit:"p"},R=o.forwardRef(function(e,t){let i=(0,d.Z)({props:e,name:"JoyTypography"}),{color:s,textColor:h}=i,u=(0,n.Z)(i,v),p=o.useContext(_),f=o.useContext(C),R=(0,l.Z)((0,r.Z)({},u,{color:h})),{component:L,gutterBottom:N=!1,noWrap:I=!1,level:w="body-md",levelMapping:O=A,children:x,endDecorator:D,startDecorator:M,variant:k,slots:P={},slotProps:F={}}=R,B=(0,n.Z)(R,E),{getColor:U}=(0,c.VT)(k),H=U(e.color,k?null!=s?s:"neutral":s),V=p||f?e.level||"inherit":w,W=(0,a.Z)(x,["Skeleton"]),G=L||(p?"span":O[V]||A[V]||"span"),z=(0,r.Z)({},R,{level:V,component:G,color:H,gutterBottom:N,noWrap:I,nesting:p,variant:k,unstable_hasSkeleton:W}),Y=S(z),K=(0,r.Z)({},B,{component:G,slots:P,slotProps:F}),[$,X]=(0,g.Z)("root",{ref:t,className:Y.root,elementType:b,externalForwardedProps:K,ownerState:z}),[j,q]=(0,g.Z)("startDecorator",{className:Y.startDecorator,elementType:y,externalForwardedProps:K,ownerState:z}),[Z,J]=(0,g.Z)("endDecorator",{className:Y.endDecorator,elementType:T,externalForwardedProps:K,ownerState:z});return(0,m.jsx)(_.Provider,{value:!0,children:(0,m.jsxs)($,(0,r.Z)({},X,{children:[M&&(0,m.jsx)(j,(0,r.Z)({},q,{children:M})),W?o.cloneElement(x,{variant:x.props.variant||"inline"}):x,D&&(0,m.jsx)(Z,(0,r.Z)({},J,{children:D}))]}))})});R.muiName="Typography";var L=R},78653:function(e,t,i){"use strict";i.d(t,{VT:function(){return l},do:function(){return h}});var n=i(67294),r=i(38629),o=i(1812),s=i(85893);let a=n.createContext(void 0),l=e=>{let t=n.useContext(a);return{getColor:(i,n)=>t&&e&&t.includes(e)?i||"context":i||n}};function h({children:e,variant:t}){var i;let n=(0,r.F)();return(0,s.jsx)(a.Provider,{value:t?(null!=(i=n.colorInversionConfig)?i:o.Z.colorInversionConfig)[t]:void 0,children:e})}t.ZP=a},58859:function(e,t,i){"use strict";i.d(t,{V:function(){return r}});var n=i(87462);let r=({theme:e,ownerState:t},i)=>{let r={};return t.sx&&(function t(i){if("function"==typeof i){let n=i(e);t(n)}else Array.isArray(i)?i.forEach(e=>{"boolean"!=typeof e&&t(e)}):"object"==typeof i&&(r=(0,n.Z)({},r,i))}(t.sx),i.forEach(t=>{let i=r[t];if("string"==typeof i||"number"==typeof i){if("borderRadius"===t){if("number"==typeof i)r[t]=`${i}px`;else{var n;r[t]=(null==(n=e.vars)?void 0:n.radius[i])||i}}else -1!==["p","padding","m","margin"].indexOf(t)&&"number"==typeof i?r[t]=e.spacing(i):r[t]=i}else"function"==typeof i?r[t]=i(e):r[t]=void 0})),r}},74312:function(e,t,i){"use strict";var n=i(70182),r=i(1812),o=i(2548);let s=(0,n.ZP)({defaultTheme:r.Z,themeId:o.Z});t.Z=s},20407:function(e,t,i){"use strict";i.d(t,{Z:function(){return a}});var n=i(87462),r=i(39214),o=i(1812),s=i(2548);function a({props:e,name:t}){return(0,r.Z)({props:e,name:t,defaultTheme:(0,n.Z)({},o.Z,{components:{}}),themeId:s.Z})}},55907:function(e,t,i){"use strict";i.d(t,{Yb:function(){return a},yP:function(){return s}});var n=i(67294),r=i(85893);let o=n.createContext(void 0);function s(e,t){var i;let r,s;let a=n.useContext(o),[l,h]="string"==typeof a?a.split(":"):[],u=(i=l||void 0,r=h||void 0,s=i,"outlined"===i&&(r="neutral",s="plain"),"plain"===i&&(r="neutral"),{variant:s,color:r});return u.variant=e||u.variant,u.color=t||u.color,u}function a({children:e,color:t,variant:i}){return(0,r.jsx)(o.Provider,{value:`${i||""}:${t||""}`,children:e})}},30220:function(e,t,i){"use strict";i.d(t,{Z:function(){return p}});var n=i(87462),r=i(63366),o=i(33703),s=i(71276),a=i(24407),l=i(10238),h=i(78653);let u=["className","elementType","ownerState","externalForwardedProps","getSlotOwnerState","internalForwardedProps"],d=["component","slots","slotProps"],c=["component"],g=["disableColorInversion"];function p(e,t){let{className:i,elementType:p,ownerState:f,externalForwardedProps:m,getSlotOwnerState:v,internalForwardedProps:E}=t,_=(0,r.Z)(t,u),{component:C,slots:S={[e]:void 0},slotProps:y={[e]:void 0}}=m,T=(0,r.Z)(m,d),b=S[e]||p,A=(0,s.x)(y[e],f),R=(0,a.L)((0,n.Z)({className:i},_,{externalForwardedProps:"root"===e?T:void 0,externalSlotProps:A})),{props:{component:L},internalRef:N}=R,I=(0,r.Z)(R.props,c),w=(0,o.Z)(N,null==A?void 0:A.ref,t.ref),O=v?v(I):{},{disableColorInversion:x=!1}=O,D=(0,r.Z)(O,g),M=(0,n.Z)({},f,D),{getColor:k}=(0,h.VT)(M.variant);if("root"===e){var P;M.color=null!=(P=I.color)?P:f.color}else x||(M.color=k(I.color,M.color));let F="root"===e?L||C:L,B=(0,l.$)(b,(0,n.Z)({},"root"===e&&!C&&!S[e]&&E,"root"!==e&&!S[e]&&E,I,F&&{as:F},{ref:w}),M);return Object.keys(D).forEach(e=>{delete B[e]}),[b,B]}},39707:function(e,t,i){"use strict";i.d(t,{Z:function(){return h}});var n=i(87462),r=i(63366),o=i(59766),s=i(44920);let a=["sx"],l=e=>{var t,i;let n={systemProps:{},otherProps:{}},r=null!=(t=null==e||null==(i=e.theme)?void 0:i.unstable_sxConfig)?t:s.Z;return Object.keys(e).forEach(t=>{r[t]?n.systemProps[t]=e[t]:n.otherProps[t]=e[t]}),n};function h(e){let t;let{sx:i}=e,s=(0,r.Z)(e,a),{systemProps:h,otherProps:u}=l(s);return t=Array.isArray(i)?[h,...i]:"function"==typeof i?(...e)=>{let t=i(...e);return(0,o.P)(t)?(0,n.Z)({},h,t):h}:(0,n.Z)({},h,i),(0,n.Z)({},u,{sx:t})}},2093:function(e,t,i){"use strict";var n=i(97582),r=i(67294),o=i(92770);t.Z=function(e,t){(0,r.useEffect)(function(){var t=e(),i=!1;return!function(){(0,n.mG)(this,void 0,void 0,function(){return(0,n.Jh)(this,function(e){switch(e.label){case 0:if(!(0,o.mf)(t[Symbol.asyncIterator]))return[3,4];e.label=1;case 1:return[4,t.next()];case 2:if(e.sent().done||i)return[3,3];return[3,1];case 3:return[3,6];case 4:return[4,t];case 5:e.sent(),e.label=6;case 6:return[2]}})})}(),function(){i=!0}},t)}},56645:function(e,t){!function(e){"use strict";function t(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var i=[],n=!0,r=!1,o=void 0;try{for(var s,a=e[Symbol.iterator]();!(n=(s=a.next()).done)&&(i.push(s.value),!t||i.length!==t);n=!0);}catch(e){r=!0,o=e}finally{try{n||null==a.return||a.return()}finally{if(r)throw o}}return i}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance")}()}function i(e,t,i,n){e=e.filter(function(e,n){var r=t(e,n),o=i(e,n);return null!=r&&isFinite(r)&&null!=o&&isFinite(o)}),n&&e.sort(function(e,i){return t(e)-t(i)});for(var r,o,s,a=e.length,l=new Float64Array(a),h=new Float64Array(a),u=0,d=0,c=0;cn&&(e.splice(a+1,0,c),r=!0)}return r}(r)&&s<1e4;);return r}function a(e,t,i,n){var r=n-e*e,o=1e-24>Math.abs(r)?0:(i-e*t)/r;return[t-o*e,o]}function l(){var e,i=function(e){return e[0]},o=function(e){return e[1]};function s(s){var l=0,h=0,u=0,d=0,c=0,g=e?+e[0]:1/0,p=e?+e[1]:-1/0;n(s,i,o,function(t,i){++l,h+=(t-h)/l,u+=(i-u)/l,d+=(t*i-d)/l,c+=(t*t-c)/l,!e&&(tp&&(p=t))});var f=t(a(h,u,d,c),2),m=f[0],v=f[1],E=function(e){return v*e+m},_=[[g,E(g)],[p,E(p)]];return _.a=v,_.b=m,_.predict=E,_.rSquared=r(s,i,o,u,E),_}return s.domain=function(t){return arguments.length?(e=t,s):e},s.x=function(e){return arguments.length?(i=e,s):i},s.y=function(e){return arguments.length?(o=e,s):o},s}function h(){var e,o=function(e){return e[0]},a=function(e){return e[1]};function l(l){var h,u,d,c,g=t(i(l,o,a),4),p=g[0],f=g[1],m=g[2],v=g[3],E=p.length,_=0,C=0,S=0,y=0,T=0;for(h=0;hL&&(L=t))});var N=S-_*_,I=_*N-C*C,w=(T*_-y*C)/I,O=(y*N-T*C)/I,x=-w*_,D=function(e){return w*(e-=m)*e+O*e+x+v},M=s(R,L,D);return M.a=w,M.b=O-2*w*m,M.c=x-O*m+w*m*m+v,M.predict=D,M.rSquared=r(l,o,a,b,D),M}return l.domain=function(t){return arguments.length?(e=t,l):e},l.x=function(e){return arguments.length?(o=e,l):o},l.y=function(e){return arguments.length?(a=e,l):a},l}e.regressionExp=function(){var e,i=function(e){return e[0]},o=function(e){return e[1]};function l(l){var h=0,u=0,d=0,c=0,g=0,p=0,f=e?+e[0]:1/0,m=e?+e[1]:-1/0;n(l,i,o,function(t,i){var n=Math.log(i),r=t*i;++h,u+=(i-u)/h,c+=(r-c)/h,p+=(t*r-p)/h,d+=(i*n-d)/h,g+=(r*n-g)/h,!e&&(tm&&(m=t))});var v=t(a(c/u,d/u,g/u,p/u),2),E=v[0],_=v[1];E=Math.exp(E);var C=function(e){return E*Math.exp(_*e)},S=s(f,m,C);return S.a=E,S.b=_,S.predict=C,S.rSquared=r(l,i,o,u,C),S}return l.domain=function(t){return arguments.length?(e=t,l):e},l.x=function(e){return arguments.length?(i=e,l):i},l.y=function(e){return arguments.length?(o=e,l):o},l},e.regressionLinear=l,e.regressionLoess=function(){var e=function(e){return e[0]},n=function(e){return e[1]},r=.3;function o(o){for(var s=t(i(o,e,n,!0),4),l=s[0],h=s[1],u=s[2],d=s[3],c=l.length,g=Math.max(2,~~(r*c)),p=new Float64Array(c),f=new Float64Array(c),m=new Float64Array(c).fill(1),v=-1;++v<=2;){for(var E=[0,g-1],_=0;_l[y]-C?S:y,b=0,A=0,R=0,L=0,N=0,I=1/Math.abs(l[T]-C||1),w=S;w<=y;++w){var O,x=l[w],D=h[w],M=(O=1-(O=Math.abs(C-x)*I)*O*O)*O*O*m[w],k=x*M;b+=M,A+=k,R+=D*M,L+=D*k,N+=x*k}var P=t(a(A/b,R/b,L/b,N/b),2),F=P[0],B=P[1];p[_]=F+B*C,f[_]=Math.abs(h[_]-p[_]),function(e,t,i){var n=e[t],r=i[0],o=i[1]+1;if(!(o>=e.length))for(;t>r&&e[o]-n<=n-e[r];)i[0]=++r,i[1]=o,++o}(l,_+1,E)}if(2===v)break;var U=function(e){e.sort(function(e,t){return e-t});var t=e.length/2;return t%1==0?(e[t-1]+e[t])/2:e[Math.floor(t)]}(f);if(1e-12>Math.abs(U))break;for(var H,V,W=0;W=1?1e-12:(V=1-H*H)*V}return function(e,t,i,n){for(var r,o=e.length,s=[],a=0,l=0,h=[];am&&(m=t))});var E=t(a(d,c,g,p),2),_=E[0],C=E[1],S=function(e){return C*Math.log(e)/v+_},y=s(f,m,S);return y.a=C,y.b=_,y.predict=S,y.rSquared=r(h,i,o,c,S),y}return h.domain=function(t){return arguments.length?(e=t,h):e},h.x=function(e){return arguments.length?(i=e,h):i},h.y=function(e){return arguments.length?(o=e,h):o},h.base=function(e){return arguments.length?(l=e,h):l},h},e.regressionPoly=function(){var e,o=function(e){return e[0]},a=function(e){return e[1]},u=3;function d(d){if(1===u){var c,g,p,f,m,v=l().x(o).y(a).domain(e)(d);return v.coefficients=[v.b,v.a],delete v.a,delete v.b,v}if(2===u){var E=h().x(o).y(a).domain(e)(d);return E.coefficients=[E.c,E.b,E.a],delete E.a,delete E.b,delete E.c,E}var _=t(i(d,o,a),4),C=_[0],S=_[1],y=_[2],T=_[3],b=C.length,A=[],R=[],L=u+1,N=0,I=0,w=e?+e[0]:1/0,O=e?+e[1]:-1/0;for(n(d,o,a,function(t,i){++I,N+=(i-N)/I,!e&&(tO&&(O=t))}),c=0;cMath.abs(e[t][r])&&(r=i);for(n=t;n=t;n--)e[n][i]-=e[n][t]*e[t][i]/e[t][t]}for(i=s-1;i>=0;--i){for(o=0,n=i+1;n=0;--r)for(s=t[r],a=1,l[r]+=s,o=1;o<=r;++o)a*=(r+1-o)/o,l[r-o]+=s*Math.pow(i,o)*a;return l[0]+=n,l}(L,x,-y,T),M.predict=D,M.rSquared=r(d,o,a,N,D),M}return d.domain=function(t){return arguments.length?(e=t,d):e},d.x=function(e){return arguments.length?(o=e,d):o},d.y=function(e){return arguments.length?(a=e,d):a},d.order=function(e){return arguments.length?(u=e,d):u},d},e.regressionPow=function(){var e,i=function(e){return e[0]},o=function(e){return e[1]};function l(l){var h=0,u=0,d=0,c=0,g=0,p=0,f=e?+e[0]:1/0,m=e?+e[1]:-1/0;n(l,i,o,function(t,i){var n=Math.log(t),r=Math.log(i);++h,u+=(n-u)/h,d+=(r-d)/h,c+=(n*r-c)/h,g+=(n*n-g)/h,p+=(i-p)/h,!e&&(tm&&(m=t))});var v=t(a(u,d,c,g),2),E=v[0],_=v[1];E=Math.exp(E);var C=function(e){return E*Math.pow(e,_)},S=s(f,m,C);return S.a=E,S.b=_,S.predict=C,S.rSquared=r(l,i,o,p,C),S}return l.domain=function(t){return arguments.length?(e=t,l):e},l.x=function(e){return arguments.length?(i=e,l):i},l.y=function(e){return arguments.length?(o=e,l):o},l},e.regressionQuad=h,Object.defineProperty(e,"__esModule",{value:!0})}(t)},43631:function(e,t,i){"use strict";i.d(t,{qY:function(){return g}});var n=i(83454),r=function(e,t,i){if(i||2==arguments.length)for(var n,r=0,o=t.length;rh+a*s*u||d>=f)p=s;else{if(Math.abs(g)<=-l*u)return s;g*(p-c)>=0&&(p=c),c=s,f=d}return 0}s=s||1,a=a||1e-6,l=l||.1;for(var m=0;m<10;++m){if(o(r.x,1,n.x,s,t),d=r.fx=e(r.x,r.fxprime),g=i(r.fxprime,t),d>h+a*s*u||m&&d>=c)return f(p,s,c);if(Math.abs(g)<=-l*u)break;if(g>=0)return f(s,p,d);c=d,p=s,s*=2}return s}e.bisect=function(e,t,i,n){var r=(n=n||{}).maxIterations||100,o=n.tolerance||1e-10,s=e(t),a=e(i),l=i-t;if(s*a>0)throw"Initial bisect points must have opposite signs";if(0===s)return t;if(0===a)return i;for(var h=0;h=0&&(t=u),Math.abs(l)=f[p-1].fx){var N=!1;if(S.fx>L.fx?(o(y,1+c,C,-c,L),y.fx=e(y),y.fx=1)break;for(m=1;m=n(d.fxprime))break}return a.history&&a.history.push({x:d.x.slice(),fx:d.fx,fxprime:d.fxprime.slice(),alpha:p}),d},e.gradientDescent=function(e,t,i){for(var r=(i=i||{}).maxIterations||100*t.length,s=i.learnRate||.001,a={x:t.slice(),fx:0,fxprime:t.slice()},l=0;l=n(a.fxprime)));++l);return a},e.gradientDescentLineSearch=function(e,t,i){i=i||{};var o,a={x:t.slice(),fx:0,fxprime:t.slice()},l={x:t.slice(),fx:0,fxprime:t.slice()},h=i.maxIterations||100*t.length,u=i.learnRate||1,d=t.slice(),c=i.c1||.001,g=i.c2||.1,p=[];if(i.history){var f=e;e=function(e,t){return p.push(e.slice()),f(e,t)}}a.fx=e(a.x,a.fxprime);for(var m=0;mn(a.fxprime)));++m);return a},e.zeros=t,e.zerosM=function(e,i){return t(e).map(function(){return t(i)})},e.norm2=n,e.weightedSum=o,e.scale=r}(t)},49685:function(e,t,i){"use strict";i.d(t,{WT:function(){return n}});var n="undefined"!=typeof Float32Array?Float32Array:Array;Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)})},35600:function(e,t,i){"use strict";function n(e,t){var i=t[0],n=t[1],r=t[2],o=t[3],s=t[4],a=t[5],l=t[6],h=t[7],u=t[8],d=u*s-a*h,c=-u*o+a*l,g=h*o-s*l,p=i*d+n*c+r*g;return p?(p=1/p,e[0]=d*p,e[1]=(-u*n+r*h)*p,e[2]=(a*n-r*s)*p,e[3]=c*p,e[4]=(u*i-r*l)*p,e[5]=(-a*i+r*o)*p,e[6]=g*p,e[7]=(-h*i+n*l)*p,e[8]=(s*i-n*o)*p,e):null}function r(e,t,i){var n=t[0],r=t[1],o=t[2],s=t[3],a=t[4],l=t[5],h=t[6],u=t[7],d=t[8],c=i[0],g=i[1],p=i[2],f=i[3],m=i[4],v=i[5],E=i[6],_=i[7],C=i[8];return e[0]=c*n+g*s+p*h,e[1]=c*r+g*a+p*u,e[2]=c*o+g*l+p*d,e[3]=f*n+m*s+v*h,e[4]=f*r+m*a+v*u,e[5]=f*o+m*l+v*d,e[6]=E*n+_*s+C*h,e[7]=E*r+_*a+C*u,e[8]=E*o+_*l+C*d,e}function o(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=t[0],e[7]=t[1],e[8]=1,e}function s(e,t){var i=Math.sin(t),n=Math.cos(t);return e[0]=n,e[1]=i,e[2]=0,e[3]=-i,e[4]=n,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e}function a(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=t[1],e[5]=0,e[6]=0,e[7]=0,e[8]=1,e}i.d(t,{Jp:function(){return r},U_:function(){return n},Us:function(){return s},vc:function(){return o},xJ:function(){return a}})},31437:function(e,t,i){"use strict";i.d(t,{$X:function(){return s},AK:function(){return g},EU:function(){return f},Fp:function(){return l},Fv:function(){return c},I6:function(){return m},IH:function(){return o},TE:function(){return u},VV:function(){return a},bA:function(){return h},kE:function(){return d},kK:function(){return p},lu:function(){return v}});var n,r=i(49685);function o(e,t,i){return e[0]=t[0]+i[0],e[1]=t[1]+i[1],e}function s(e,t,i){return e[0]=t[0]-i[0],e[1]=t[1]-i[1],e}function a(e,t,i){return e[0]=Math.min(t[0],i[0]),e[1]=Math.min(t[1],i[1]),e}function l(e,t,i){return e[0]=Math.max(t[0],i[0]),e[1]=Math.max(t[1],i[1]),e}function h(e,t,i){return e[0]=t[0]*i,e[1]=t[1]*i,e}function u(e,t){return Math.hypot(t[0]-e[0],t[1]-e[1])}function d(e){return Math.hypot(e[0],e[1])}function c(e,t){var i=t[0],n=t[1],r=i*i+n*n;return r>0&&(r=1/Math.sqrt(r)),e[0]=t[0]*r,e[1]=t[1]*r,e}function g(e,t){return e[0]*t[0]+e[1]*t[1]}function p(e,t,i){var n=t[0],r=t[1];return e[0]=i[0]*n+i[3]*r+i[6],e[1]=i[1]*n+i[4]*r+i[7],e}function f(e,t){var i=e[0],n=e[1],r=t[0],o=t[1],s=Math.sqrt(i*i+n*n)*Math.sqrt(r*r+o*o);return Math.acos(Math.min(Math.max(s&&(i*r+n*o)/s,-1),1))}function m(e,t){return e[0]===t[0]&&e[1]===t[1]}var v=s;n=new r.WT(2),r.WT!=Float32Array&&(n[0]=0,n[1]=0)},9488:function(e,t,i){"use strict";var n,r;function o(e,t=0){return e[e.length-(1+t)]}function s(e){if(0===e.length)throw Error("Invalid tail call");return[e.slice(0,e.length-1),e[e.length-1]]}function a(e,t,i=(e,t)=>e===t){if(e===t)return!0;if(!e||!t||e.length!==t.length)return!1;for(let n=0,r=e.length;n0))return e;n=e-1}}return-(i+1)}(e.length,n=>i(e[n],t))}function u(e){return e.filter(e=>!!e)}function d(e){return!Array.isArray(e)||0===e.length}function c(e){return Array.isArray(e)&&e.length>0}function g(e,t=e=>e){let i=new Set;return e.filter(e=>{let n=t(e);return!i.has(n)&&(i.add(n),!0)})}function p(e,t){let i=function(e,t){for(let i=e.length-1;i>=0;i--){let n=e[i];if(t(n))return i}return -1}(e,t);if(-1!==i)return e[i]}function f(e,t){return e.length>0?e[0]:t}function m(e,t){let i="number"==typeof t?e:0;"number"==typeof t?i=e:(i=0,t=e);let n=[];if(i<=t)for(let e=i;et;e--)n.push(e);return n}function v(e,t,i){let n=e.slice(0,t),r=e.slice(t);return n.concat(i,r)}function E(e,t){let i=e.indexOf(t);i>-1&&(e.splice(i,1),e.unshift(t))}function _(e,t){let i=e.indexOf(t);i>-1&&(e.splice(i,1),e.push(t))}function C(e,t){for(let i of t)e.push(i)}function S(e,t,i,n){let r=y(e,t),o=e.splice(r,i);return!function(e,t,i){let n=y(e,t),r=e.length,o=i.length;e.length=r+o;for(let t=r-1;t>=n;t--)e[t+o]=e[t];for(let t=0;tt(e(i),e(n))}function b(e,t){if(0===e.length)return;let i=e[0];for(let n=1;n=0&&(i=r)}return i}function A(e,t){return function(e,t){if(0===e.length)return;let i=e[0];for(let n=1;n0&&(i=r)}return i}(e,(e,i)=>-t(e,i))}i.d(t,{EB:function(){return g},Gb:function(){return o},H9:function(){return R},JH:function(){return s},LS:function(){return l},Of:function(){return c},VJ:function(){return A},W$:function(){return L},XY:function(){return d},Xh:function(){return f},Zv:function(){return v},al:function(){return _},dF:function(){return p},db:function(){return S},fS:function(){return a},jV:function(){return b},kX:function(){return u},ry:function(){return h},tT:function(){return T},vA:function(){return C},w6:function(){return m},zI:function(){return E}}),(r=n||(n={})).isLessThan=function(e){return e<0},r.isGreaterThan=function(e){return e>0},r.isNeitherLessOrGreaterThan=function(e){return 0===e},r.greaterThan=1,r.lessThan=-1,r.neitherLessOrGreaterThan=0;class R{constructor(e){this.items=e,this.firstIdx=0,this.lastIdx=this.items.length-1}get length(){return this.lastIdx-this.firstIdx+1}takeWhile(e){let t=this.firstIdx;for(;t=0&&e(this.items[t]);)t--;let i=t===this.lastIdx?null:this.items.slice(t+1,this.lastIdx+1);return this.lastIdx=t,i}peek(){if(0!==this.length)return this.items[this.firstIdx]}dequeue(){let e=this.items[this.firstIdx];return this.firstIdx++,e}takeCount(e){let t=this.items.slice(this.firstIdx,this.firstIdx+e);return this.firstIdx+=e,t}}class L{constructor(e){this.iterate=e}toArray(){let e=[];return this.iterate(t=>(e.push(t),!0)),e}filter(e){return new L(t=>this.iterate(i=>!e(i)||t(i)))}map(e){return new L(t=>this.iterate(i=>t(e(i))))}findLast(e){let t;return this.iterate(i=>(e(i)&&(t=i),!0)),t}findLastMaxBy(e){let t;let i=!0;return this.iterate(r=>((i||n.isGreaterThan(e(r,t)))&&(i=!1,t=r),!0)),t}}L.empty=new L(e=>{})},53725:function(e,t,i){"use strict";var n;i.d(t,{$:function(){return n}}),function(e){function t(e){return e&&"object"==typeof e&&"function"==typeof e[Symbol.iterator]}e.is=t;let i=Object.freeze([]);function*n(e){yield e}e.empty=function(){return i},e.single=n,e.wrap=function(e){return t(e)?e:n(e)},e.from=function(e){return e||i},e.isEmpty=function(e){return!e||!0===e[Symbol.iterator]().next().done},e.first=function(e){return e[Symbol.iterator]().next().value},e.some=function(e,t){for(let i of e)if(t(i))return!0;return!1},e.find=function(e,t){for(let i of e)if(t(i))return i},e.filter=function*(e,t){for(let i of e)t(i)&&(yield i)},e.map=function*(e,t){let i=0;for(let n of e)yield t(n,i++)},e.concat=function*(...e){for(let t of e)for(let e of t)yield e},e.reduce=function(e,t,i){let n=i;for(let i of e)n=t(n,i);return n},e.slice=function*(e,t,i=e.length){for(t<0&&(t+=e.length),i<0?i+=e.length:i>e.length&&(i=e.length);tr}]}}(n||(n={}))},91741:function(e,t,i){"use strict";i.d(t,{S:function(){return r}});class n{constructor(e){this.element=e,this.next=n.Undefined,this.prev=n.Undefined}}n.Undefined=new n(void 0);class r{constructor(){this._first=n.Undefined,this._last=n.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===n.Undefined}clear(){let e=this._first;for(;e!==n.Undefined;){let t=e.next;e.prev=n.Undefined,e.next=n.Undefined,e=t}this._first=n.Undefined,this._last=n.Undefined,this._size=0}unshift(e){return this._insert(e,!1)}push(e){return this._insert(e,!0)}_insert(e,t){let i=new n(e);if(this._first===n.Undefined)this._first=i,this._last=i;else if(t){let e=this._last;this._last=i,i.prev=e,e.next=i}else{let e=this._first;this._first=i,i.next=e,e.prev=i}this._size+=1;let r=!1;return()=>{r||(r=!0,this._remove(i))}}shift(){if(this._first!==n.Undefined){let e=this._first.element;return this._remove(this._first),e}}pop(){if(this._last!==n.Undefined){let e=this._last.element;return this._remove(this._last),e}}_remove(e){if(e.prev!==n.Undefined&&e.next!==n.Undefined){let t=e.prev;t.next=e.next,e.next.prev=t}else e.prev===n.Undefined&&e.next===n.Undefined?(this._first=n.Undefined,this._last=n.Undefined):e.next===n.Undefined?(this._last=this._last.prev,this._last.next=n.Undefined):e.prev===n.Undefined&&(this._first=this._first.next,this._first.prev=n.Undefined);this._size-=1}*[Symbol.iterator](){let e=this._first;for(;e!==n.Undefined;)yield e.element,e=e.next}}},36248:function(e,t,i){"use strict";i.d(t,{$E:function(){return a},I8:function(){return function e(t){if(!t||"object"!=typeof t||t instanceof RegExp)return t;let i=Array.isArray(t)?[]:{};return Object.entries(t).forEach(([t,n])=>{i[t]=n&&"object"==typeof n?e(n):n}),i}},IU:function(){return l},_A:function(){return r},fS:function(){return function e(t,i){let n,r;if(t===i)return!0;if(null==t||null==i||typeof t!=typeof i||"object"!=typeof t||Array.isArray(t)!==Array.isArray(i))return!1;if(Array.isArray(t)){if(t.length!==i.length)return!1;for(n=0;n{o in t?r&&((0,n.Kn)(t[o])&&(0,n.Kn)(i[o])?e(t[o],i[o],r):t[o]=i[o]):t[o]=i[o]}),t):i}},rs:function(){return s}});var n=i(98401);function r(e){if(!e||"object"!=typeof e)return e;let t=[e];for(;t.length>0;){let e=t.shift();for(let i in Object.freeze(e),e)if(o.call(e,i)){let r=e[i];"object"!=typeof r||Object.isFrozen(r)||(0,n.fU)(r)||t.push(r)}}return e}let o=Object.prototype.hasOwnProperty;function s(e,t){return function e(t,i,r){if((0,n.Jp)(t))return t;let s=i(t);if(void 0!==s)return s;if(Array.isArray(t)){let n=[];for(let o of t)n.push(e(o,i,r));return n}if((0,n.Kn)(t)){if(r.has(t))throw Error("Cannot clone recursive data-structure");r.add(t);let n={};for(let s in t)o.call(t,s)&&(n[s]=e(t[s],i,r));return r.delete(t),n}return t}(e,t,new Set)}function a(e){let t=[];for(let i of function(e){let t=[];for(;Object.prototype!==e;)t=t.concat(Object.getOwnPropertyNames(e)),e=Object.getPrototypeOf(e);return t}(e))"function"==typeof e[i]&&t.push(i);return t}function l(e,t){let i=e=>function(){let i=Array.prototype.slice.call(arguments,0);return t(e,i)},n={};for(let t of e)n[t]=i(t);return n}},1432:function(e,t,i){"use strict";let n,r;i.d(t,{$L:function(){return y},ED:function(){return E},G6:function(){return k},IJ:function(){return C},OS:function(){return I},dz:function(){return _},fn:function(){return N},gn:function(){return b},i7:function(){return D},li:function(){return f},n2:function(){return T},r:function(){return x},tY:function(){return S},tq:function(){return A},un:function(){return P},vU:function(){return M}});var o,s=i(63580),a=i(83454);let l=!1,h=!1,u=!1,d=!1,c=!1,g=!1,p=!1,f="object"==typeof self?self:"object"==typeof i.g?i.g:{};void 0!==f.vscode&&void 0!==f.vscode.process?r=f.vscode.process:void 0!==a&&(r=a);let m="string"==typeof(null===(o=null==r?void 0:r.versions)||void 0===o?void 0:o.electron),v=m&&(null==r?void 0:r.type)==="renderer";if("object"!=typeof navigator||v){if("object"==typeof r){l="win32"===r.platform,h="darwin"===r.platform,(u="linux"===r.platform)&&r.env.SNAP&&r.env.SNAP_REVISION,r.env.CI||r.env.BUILD_ARTIFACTSTAGINGDIRECTORY;let e=r.env.VSCODE_NLS_CONFIG;if(e)try{let t=JSON.parse(e);t.availableLanguages["*"],t.locale,t.osLocale,t._translationsConfigFile}catch(e){}d=!0}else console.error("Unable to resolve platform.")}else l=(n=navigator.userAgent).indexOf("Windows")>=0,h=n.indexOf("Macintosh")>=0,g=(n.indexOf("Macintosh")>=0||n.indexOf("iPad")>=0||n.indexOf("iPhone")>=0)&&!!navigator.maxTouchPoints&&navigator.maxTouchPoints>0,u=n.indexOf("Linux")>=0,p=(null==n?void 0:n.indexOf("Mobi"))>=0,c=!0,s.aj(s.NC({key:"ensureLoaderPluginIsLoaded",comment:["{Locked}"]},"_")),navigator.language;let E=l,_=h,C=u,S=d,y=c,T=c&&"function"==typeof f.importScripts,b=g,A=p,R=n,L="function"==typeof f.postMessage&&!f.importScripts,N=(()=>{if(L){let e=[];f.addEventListener("message",t=>{if(t.data&&t.data.vscodeScheduleAsyncWork)for(let i=0,n=e.length;i{let n=++t;e.push({id:n,callback:i}),f.postMessage({vscodeScheduleAsyncWork:n},"*")}}return e=>setTimeout(e)})(),I=h||g?2:l?1:3,w=!0,O=!1;function x(){if(!O){O=!0;let e=new Uint8Array(2);e[0]=1,e[1]=2;let t=new Uint16Array(e.buffer);w=513===t[0]}return w}let D=!!(R&&R.indexOf("Chrome")>=0),M=!!(R&&R.indexOf("Firefox")>=0),k=!!(!D&&R&&R.indexOf("Safari")>=0),P=!!(R&&R.indexOf("Edg/")>=0);R&&R.indexOf("Android")},98401:function(e,t,i){"use strict";function n(e){return"string"==typeof e}function r(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}function o(e){let t=Object.getPrototypeOf(Uint8Array);return"object"==typeof e&&e instanceof t}function s(e){return"number"==typeof e&&!isNaN(e)}function a(e){return!!e&&"function"==typeof e[Symbol.iterator]}function l(e){return!0===e||!1===e}function h(e){return void 0===e}function u(e){return!d(e)}function d(e){return h(e)||null===e}function c(e,t){if(!e)throw Error(t?`Unexpected type, expected '${t}'`:"Unexpected type")}function g(e){if(d(e))throw Error("Assertion Failed: argument is undefined or null");return e}function p(e){return"function"==typeof e}function f(e,t){let i=Math.min(e.length,t.length);for(let r=0;rs.maxLen){let n=t-s.maxLen/2;return n<0?n=0:o+=n,r=r.substring(n,t+s.maxLen/2),e(t,i,r,o,s)}let a=Date.now(),h=t-1-o,u=-1,d=null;for(let e=1;!(Date.now()-a>=s.timeBudget);e++){let t=h-s.windowSize*e;i.lastIndex=Math.max(0,t);let n=function(e,t,i,n){let r;for(;r=e.exec(t);){let t=r.index||0;if(t<=i&&e.lastIndex>=i)return r;if(n>0&&t>n)break}return null}(i,r,h,u);if(!n&&d||(d=n,t<=0))break;u=t}if(d){let e={word:d[0],startColumn:o+1+d.index,endColumn:o+1+d.index+d[0].length};return i.lastIndex=0,e}return null}},vu:function(){return o}});var n=i(53725),r=i(91741);let o="`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?",s=function(e=""){let t="(-?\\d*\\.\\d\\w*)|([^";for(let i of o)e.indexOf(i)>=0||(t+="\\"+i);return RegExp(t+="\\s]+)","g")}();function a(e){let t=s;if(e&&e instanceof RegExp){if(e.global)t=e;else{let i="g";e.ignoreCase&&(i+="i"),e.multiline&&(i+="m"),e.unicode&&(i+="u"),t=new RegExp(e.source,i)}}return t.lastIndex=0,t}let l=new r.S;l.unshift({maxLen:1e3,windowSize:15,timeBudget:150})},77119:function(e,t,i){"use strict";let n,r,o,s,a,l,h,u,d,c,g,p,f,m,v,E,_,C;i.r(t),i.d(t,{CancellationTokenSource:function(){return k1},Emitter:function(){return k2},KeyCode:function(){return k4},KeyMod:function(){return k5},MarkerSeverity:function(){return k8},MarkerTag:function(){return Pe},Position:function(){return k6},Range:function(){return k3},Selection:function(){return k9},SelectionDirection:function(){return k7},Token:function(){return Pi},Uri:function(){return Pt},editor:function(){return Pn},languages:function(){return Pr}});var S,y,T,b,A,R,L,N,I,w,O,x,D,M,k,P,F,B,U,H,V,W,G,z,Y,K,$,X,j,q,Z,J,Q,ee,et,ei,en,er,eo,es,ea,el,eh,eu,ed,ec,eg,ep,ef,em,ev,eE,e_,eC,eS,ey,eT,eb,eA,eR,eL,eN,eI,ew,eO,ex,eD,eM,ek,eP,eF,eB,eU,eH,eV,eW,eG,ez,eY,eK,e$,eX,ej,eq,eZ,eJ,eQ,e0,e1,e2,e4,e5,e6,e3,e9,e7,e8,te,tt,ti,tn,tr,to,ts,ta,tl,th,tu,td,tc,tg,tp,tf,tm,tv,tE,t_,tC,tS,ty,tT,tb,tA,tR,tL,tN,tI,tw,tO,tx,tD,tM,tk,tP,tF,tB,tU,tH,tV,tW,tG,tz,tY,tK,t$,tX,tj,tq,tZ,tJ,tQ,t0,t1,t2,t4,t5,t6,t3,t9,t7,t8,ie,it,ii,ir,io,is,ia,il,ih,iu,id,ic,ig,ip,im,iv,iE,i_,iC,iS,iy,iT,ib,iA,iR,iL,iN,iI,iw,iO,ix,iD,iM,ik,iP,iF,iB,iU,iH,iV,iW,iG,iz,iY,iK,i$,iX,ij,iq,iZ,iJ,iQ=i(64141);let i0=new class{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(e){setTimeout(()=>{if(e.stack){if(ne.isErrorNoTelemetry(e))throw new ne(e.message+"\n\n"+e.stack);throw Error(e.message+"\n\n"+e.stack)}throw e},0)}}emit(e){this.listeners.forEach(t=>{t(e)})}onUnexpectedError(e){this.unexpectedErrorHandler(e),this.emit(e)}onUnexpectedExternalError(e){this.unexpectedErrorHandler(e)}};function i1(e){i6(e)||i0.onUnexpectedError(e)}function i2(e){i6(e)||i0.onUnexpectedExternalError(e)}function i4(e){if(e instanceof Error){let{name:t,message:i}=e,n=e.stacktrace||e.stack;return{$isError:!0,name:t,message:i,stack:n,noTelemetry:ne.isErrorNoTelemetry(e)}}return e}let i5="Canceled";function i6(e){return e instanceof i3||e instanceof Error&&e.name===i5&&e.message===i5}class i3 extends Error{constructor(){super(i5),this.name=this.message}}function i9(e){return e?Error(`Illegal argument: ${e}`):Error("Illegal argument")}function i7(e){return e?Error(`Illegal state: ${e}`):Error("Illegal state")}class i8 extends Error{constructor(e){super("NotSupported"),e&&(this.message=e)}}class ne extends Error{constructor(e){super(e),this.name="CodeExpectedError"}static fromError(e){if(e instanceof ne)return e;let t=new ne;return t.message=e.message,t.stack=e.stack,t}static isErrorNoTelemetry(e){return"CodeExpectedError"===e.name}}class nt extends Error{constructor(e){super(e||"An unexpected bug occurred."),Object.setPrototypeOf(this,nt.prototype)}}function ni(e){let t;let i=this,n=!1;return function(){return n?t:(n=!0,t=e.apply(i,arguments))}}var nn=i(53725);function nr(e){return e}function no(e){}function ns(e,t){}function na(e){return e}function nl(e){if(nn.$.is(e)){let t=[];for(let i of e)if(i)try{i.dispose()}catch(e){t.push(e)}if(1===t.length)throw t[0];if(t.length>1)throw AggregateError(t,"Encountered errors while disposing of store");return Array.isArray(e)?[]:e}if(e)return e.dispose(),e}function nh(...e){let t=nu(()=>nl(e));return t}function nu(e){let t={dispose:ni(()=>{e()})};return t}class nd{constructor(){var e;this._toDispose=new Set,this._isDisposed=!1,e=this}dispose(){this._isDisposed||(this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(0!==this._toDispose.size)try{nl(this._toDispose)}finally{this._toDispose.clear()}}add(e){if(!e)return e;if(e===this)throw Error("Cannot register a disposable on itself!");return this._isDisposed?nd.DISABLE_DISPOSED_WARNING||console.warn(Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack):this._toDispose.add(e),e}}nd.DISABLE_DISPOSED_WARNING=!1;class nc{constructor(){var e;this._store=new nd,e=this,this._store}dispose(){this._store.dispose()}_register(e){if(e===this)throw Error("Cannot register a disposable on itself!");return this._store.add(e)}}nc.None=Object.freeze({dispose(){}});class ng{constructor(){var e;this._isDisposed=!1,e=this}get value(){return this._isDisposed?void 0:this._value}set value(e){var t;this._isDisposed||e===this._value||(null===(t=this._value)||void 0===t||t.dispose(),this._value=e)}clear(){this.value=void 0}dispose(){var e;this._isDisposed=!0,null===(e=this._value)||void 0===e||e.dispose(),this._value=void 0}}class np{constructor(e){this.object=e}dispose(){}}class nf{constructor(){var e;this._store=new Map,this._isDisposed=!1,e=this}dispose(){this._isDisposed=!0,this.clearAndDisposeAll()}clearAndDisposeAll(){if(this._store.size)try{nl(this._store.values())}finally{this._store.clear()}}get(e){return this._store.get(e)}set(e,t,i=!1){var n;this._isDisposed&&console.warn(Error("Trying to add a disposable to a DisposableMap that has already been disposed of. The added object will be leaked!").stack),i||null===(n=this._store.get(e))||void 0===n||n.dispose(),this._store.set(e,t)}deleteAndDispose(e){var t;null===(t=this._store.get(e))||void 0===t||t.dispose(),this._store.delete(e)}[Symbol.iterator](){return this._store[Symbol.iterator]()}}var nm=i(91741);let nv=globalThis.performance&&"function"==typeof globalThis.performance.now;class nE{static create(e){return new nE(e)}constructor(e){this._now=nv&&!1===e?Date.now:globalThis.performance.now.bind(globalThis.performance),this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}elapsed(){return -1!==this._stopTime?this._stopTime-this._startTime:this._now()-this._startTime}}!function(e){function t(e){return(t,i=null,n)=>{let r,o=!1;return r=e(e=>o?void 0:(r?r.dispose():o=!0,t.call(i,e)),null,n),o&&r.dispose(),r}}function i(e,t,i){return s((i,n=null,r)=>e(e=>i.call(n,t(e)),null,r),i)}function n(e,t,i){return s((i,n=null,r)=>e(e=>{t(e),i.call(n,e)},null,r),i)}function r(e,t,i){return s((i,n=null,r)=>e(e=>t(e)&&i.call(n,e),null,r),i)}function o(e,t,n,r){let o=n;return i(e,e=>o=t(o,e),r)}function s(e,t){let i;let n=new nT({onWillAddFirstListener(){i=e(n.fire,n)},onDidRemoveLastListener(){null==i||i.dispose()}});return null==t||t.add(n),n.event}function a(e,t,i=100,n=!1,r=!1,o,s){let a,l,h,u;let d=0,c=new nT({leakWarningThreshold:o,onWillAddFirstListener(){a=e(e=>{d++,h=t(h,e),n&&!u&&(c.fire(h),h=void 0),l=()=>{let e=h;h=void 0,u=void 0,(!n||d>1)&&c.fire(e),d=0},"number"==typeof i?(clearTimeout(u),u=setTimeout(l,i)):void 0===u&&(u=0,queueMicrotask(l))})},onWillRemoveListener(){r&&d>0&&(null==l||l())},onDidRemoveLastListener(){l=void 0,a.dispose()}});return null==s||s.add(c),c.event}function l(e,t=(e,t)=>e===t,i){let n,o=!0;return r(e,e=>{let i=o||!t(e,n);return o=!1,n=e,i},i)}e.None=()=>nc.None,e.defer=function(e,t){return a(e,()=>void 0,0,void 0,!0,void 0,t)},e.once=t,e.map=i,e.forEach=n,e.filter=r,e.signal=function(e){return e},e.any=function(...e){return(t,i=null,n)=>nh(...e.map(e=>e(e=>t.call(i,e),null,n)))},e.reduce=o,e.debounce=a,e.accumulate=function(t,i=0,n){return e.debounce(t,(e,t)=>e?(e.push(t),e):[t],i,void 0,!0,void 0,n)},e.latch=l,e.split=function(t,i,n){return[e.filter(t,i,n),e.filter(t,e=>!i(e),n)]},e.buffer=function(e,t=!1,i=[]){let n=i.slice(),r=e(e=>{n?n.push(e):s.fire(e)}),o=()=>{null==n||n.forEach(e=>s.fire(e)),n=null},s=new nT({onWillAddFirstListener(){r||(r=e(e=>s.fire(e)))},onDidAddFirstListener(){n&&(t?setTimeout(o):o())},onDidRemoveLastListener(){r&&r.dispose(),r=null}});return s.event};class h{constructor(e){this.event=e,this.disposables=new nd}map(e){return new h(i(this.event,e,this.disposables))}forEach(e){return new h(n(this.event,e,this.disposables))}filter(e){return new h(r(this.event,e,this.disposables))}reduce(e,t){return new h(o(this.event,e,t,this.disposables))}latch(){return new h(l(this.event,void 0,this.disposables))}debounce(e,t=100,i=!1,n=!1,r){return new h(a(this.event,e,t,i,n,r,this.disposables))}on(e,t,i){return this.event(e,t,i)}once(e,i,n){return t(this.event)(e,i,n)}dispose(){this.disposables.dispose()}}e.chain=function(e){return new h(e)},e.fromNodeEventEmitter=function(e,t,i=e=>e){let n=(...e)=>r.fire(i(...e)),r=new nT({onWillAddFirstListener:()=>e.on(t,n),onDidRemoveLastListener:()=>e.removeListener(t,n)});return r.event},e.fromDOMEventEmitter=function(e,t,i=e=>e){let n=(...e)=>r.fire(i(...e)),r=new nT({onWillAddFirstListener:()=>e.addEventListener(t,n),onDidRemoveLastListener:()=>e.removeEventListener(t,n)});return r.event},e.toPromise=function(e){return new Promise(i=>t(e)(i))},e.runAndSubscribe=function(e,t){return t(void 0),e(e=>t(e))},e.runAndSubscribeWithStore=function(e,t){let i=null;function n(e){null==i||i.dispose(),t(e,i=new nd)}n(void 0);let r=e(e=>n(e));return nu(()=>{r.dispose(),null==i||i.dispose()})};class u{constructor(e,t){this._observable=e,this._counter=0,this._hasChanged=!1;this.emitter=new nT({onWillAddFirstListener:()=>{e.addObserver(this)},onDidRemoveLastListener:()=>{e.removeObserver(this)}}),t&&t.add(this.emitter)}beginUpdate(e){this._counter++}handlePossibleChange(e){}handleChange(e,t){this._hasChanged=!0}endUpdate(e){this._counter--,0===this._counter&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}e.fromObservable=function(e,t){let i=new u(e,t);return i.emitter.event},e.fromObservableLight=function(e){return t=>{let i=0,n=!1,r={beginUpdate(){i++},endUpdate(){0==--i&&(e.reportChanges(),n&&(n=!1,t()))},handlePossibleChange(){},handleChange(){n=!0}};return e.addObserver(r),e.reportChanges(),{dispose(){e.removeObserver(r)}}}}}(e7||(e7={}));class n_{constructor(e){this.listenerCount=0,this.invocationCount=0,this.elapsedOverall=0,this.durations=[],this.name=`${e}_${n_._idPool++}`,n_.all.add(this)}start(e){this._stopWatch=new nE,this.listenerCount=e}stop(){if(this._stopWatch){let e=this._stopWatch.elapsed();this.durations.push(e),this.elapsedOverall+=e,this.invocationCount+=1,this._stopWatch=void 0}}}n_.all=new Set,n_._idPool=0;class nC{constructor(e,t=Math.random().toString(18).slice(2,5)){this.threshold=e,this.name=t,this._warnCountdown=0}dispose(){var e;null===(e=this._stacks)||void 0===e||e.clear()}check(e,t){let i=this.threshold;if(i<=0||t{let t=this._stacks.get(e.value)||0;this._stacks.set(e.value,t-1)}}}class nS{static create(){var e;return new nS(null!==(e=Error().stack)&&void 0!==e?e:"")}constructor(e){this.value=e}print(){console.warn(this.value.split("\n").slice(2).join("\n"))}}class ny{constructor(e){this.value=e}}class nT{constructor(e){var t,i,n,r,o;this._size=0,this._options=e,this._leakageMon=(null===(t=this._options)||void 0===t?void 0:t.leakWarningThreshold)?new nC(null!==(n=null===(i=this._options)||void 0===i?void 0:i.leakWarningThreshold)&&void 0!==n?n:-1):void 0,this._perfMon=(null===(r=this._options)||void 0===r?void 0:r._profName)?new n_(this._options._profName):void 0,this._deliveryQueue=null===(o=this._options)||void 0===o?void 0:o.deliveryQueue}dispose(){var e,t,i,n;this._disposed||(this._disposed=!0,(null===(e=this._deliveryQueue)||void 0===e?void 0:e.current)===this&&this._deliveryQueue.reset(),this._listeners&&(this._listeners=void 0,this._size=0),null===(i=null===(t=this._options)||void 0===t?void 0:t.onDidRemoveLastListener)||void 0===i||i.call(t),null===(n=this._leakageMon)||void 0===n||n.dispose())}get event(){var e;return null!==(e=this._event)&&void 0!==e||(this._event=(e,t,i)=>{var n,r,o,s,a;let l;if(this._leakageMon&&this._size>3*this._leakageMon.threshold)return console.warn(`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far`),nc.None;if(this._disposed)return nc.None;t&&(e=e.bind(t));let h=new ny(e);this._leakageMon&&this._size>=Math.ceil(.2*this._leakageMon.threshold)&&(h.stack=nS.create(),l=this._leakageMon.check(h.stack,this._size+1)),this._listeners?this._listeners instanceof ny?(null!==(a=this._deliveryQueue)&&void 0!==a||(this._deliveryQueue=new nA),this._listeners=[this._listeners,h]):this._listeners.push(h):(null===(r=null===(n=this._options)||void 0===n?void 0:n.onWillAddFirstListener)||void 0===r||r.call(n,this),this._listeners=h,null===(s=null===(o=this._options)||void 0===o?void 0:o.onDidAddFirstListener)||void 0===s||s.call(o,this)),this._size++;let u=nu(()=>{null==l||l(),this._removeListener(h)});return i instanceof nd?i.add(u):Array.isArray(i)&&i.push(u),u}),this._event}_removeListener(e){var t,i,n,r;if(null===(i=null===(t=this._options)||void 0===t?void 0:t.onWillRemoveListener)||void 0===i||i.call(t,this),!this._listeners)return;if(1===this._size){this._listeners=void 0,null===(r=null===(n=this._options)||void 0===n?void 0:n.onDidRemoveLastListener)||void 0===r||r.call(n,this),this._size=0;return}let o=this._listeners,s=o.indexOf(e);if(-1===s)throw console.log("disposed?",this._disposed),console.log("size?",this._size),console.log("arr?",JSON.stringify(this._listeners)),Error("Attempted to dispose unknown listener");this._size--,o[s]=void 0;let a=this._deliveryQueue.current===this;if(2*this._size<=o.length){let e=0;for(let t=0;t0}}let nb=()=>new nA;class nA{constructor(){this.i=-1,this.end=0}enqueue(e,t,i){this.i=0,this.end=i,this.current=e,this.value=t}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}class nR extends nT{constructor(e){super(e),this._isPaused=0,this._eventQueue=new nm.S,this._mergeFn=null==e?void 0:e.merge}pause(){this._isPaused++}resume(){if(0!==this._isPaused&&0==--this._isPaused){if(this._mergeFn){if(this._eventQueue.size>0){let e=Array.from(this._eventQueue);this._eventQueue.clear(),super.fire(this._mergeFn(e))}}else for(;!this._isPaused&&0!==this._eventQueue.size;)super.fire(this._eventQueue.shift())}}fire(e){this._size&&(0!==this._isPaused?this._eventQueue.push(e):super.fire(e))}}class nL extends nR{constructor(e){var t;super(e),this._delay=null!==(t=e.delay)&&void 0!==t?t:100}fire(e){this._handle||(this.pause(),this._handle=setTimeout(()=>{this._handle=void 0,this.resume()},this._delay)),super.fire(e)}}class nN extends nT{constructor(e){super(e),this._queuedEvents=[],this._mergeFn=null==e?void 0:e.merge}fire(e){this.hasListeners()&&(this._queuedEvents.push(e),1===this._queuedEvents.length&&queueMicrotask(()=>{this._mergeFn?super.fire(this._mergeFn(this._queuedEvents)):this._queuedEvents.forEach(e=>super.fire(e)),this._queuedEvents=[]}))}}class nI{constructor(){this.buffers=[]}wrapEvent(e){return(t,i,n)=>e(e=>{let n=this.buffers[this.buffers.length-1];n?n.push(()=>t.call(i,e)):t.call(i,e)},void 0,n)}bufferEvents(e){let t=[];this.buffers.push(t);let i=e();return this.buffers.pop(),t.forEach(e=>e()),i}}class nw{constructor(){this.listening=!1,this.inputEvent=e7.None,this.inputEventListener=nc.None,this.emitter=new nT({onDidAddFirstListener:()=>{this.listening=!0,this.inputEventListener=this.inputEvent(this.emitter.fire,this.emitter)},onDidRemoveLastListener:()=>{this.listening=!1,this.inputEventListener.dispose()}}),this.event=this.emitter.event}set input(e){this.inputEvent=e,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=e(this.emitter.fire,this.emitter))}dispose(){this.inputEventListener.dispose(),this.emitter.dispose()}}let nO=Object.freeze(function(e,t){let i=setTimeout(e.bind(t),0);return{dispose(){clearTimeout(i)}}});(y=e8||(e8={})).isCancellationToken=function(e){return e===y.None||e===y.Cancelled||e instanceof nx||!!e&&"object"==typeof e&&"boolean"==typeof e.isCancellationRequested&&"function"==typeof e.onCancellationRequested},y.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:e7.None}),y.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:nO});class nx{constructor(){this._isCancelled=!1,this._emitter=null}cancel(){!this._isCancelled&&(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?nO:(this._emitter||(this._emitter=new nT),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=null)}}class nD{constructor(e){this._token=void 0,this._parentListener=void 0,this._parentListener=e&&e.onCancellationRequested(this.cancel,this)}get token(){return this._token||(this._token=new nx),this._token}cancel(){this._token?this._token instanceof nx&&this._token.cancel():this._token=e8.Cancelled}dispose(e=!1){var t;e&&this.cancel(),null===(t=this._parentListener)||void 0===t||t.dispose(),this._token?this._token instanceof nx&&this._token.dispose():this._token=e8.None}}class nM{constructor(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(null)}define(e,t){this._keyCodeToStr[e]=t,this._strToKeyCode[t.toLowerCase()]=e}keyCodeToStr(e){return this._keyCodeToStr[e]}strToKeyCode(e){return this._strToKeyCode[e.toLowerCase()]||0}}let nk=new nM,nP=new nM,nF=new nM,nB=Array(230),nU={},nH=[],nV=Object.create(null),nW=Object.create(null),nG=[],nz=[];for(let e=0;e<=193;e++)nG[e]=-1;for(let e=0;e<=132;e++)nz[e]=-1;!function(){let e=[],t=[];for(let i of[[1,0,"None",0,"unknown",0,"VK_UNKNOWN","",""],[1,1,"Hyper",0,"",0,"","",""],[1,2,"Super",0,"",0,"","",""],[1,3,"Fn",0,"",0,"","",""],[1,4,"FnLock",0,"",0,"","",""],[1,5,"Suspend",0,"",0,"","",""],[1,6,"Resume",0,"",0,"","",""],[1,7,"Turbo",0,"",0,"","",""],[1,8,"Sleep",0,"",0,"VK_SLEEP","",""],[1,9,"WakeUp",0,"",0,"","",""],[0,10,"KeyA",31,"A",65,"VK_A","",""],[0,11,"KeyB",32,"B",66,"VK_B","",""],[0,12,"KeyC",33,"C",67,"VK_C","",""],[0,13,"KeyD",34,"D",68,"VK_D","",""],[0,14,"KeyE",35,"E",69,"VK_E","",""],[0,15,"KeyF",36,"F",70,"VK_F","",""],[0,16,"KeyG",37,"G",71,"VK_G","",""],[0,17,"KeyH",38,"H",72,"VK_H","",""],[0,18,"KeyI",39,"I",73,"VK_I","",""],[0,19,"KeyJ",40,"J",74,"VK_J","",""],[0,20,"KeyK",41,"K",75,"VK_K","",""],[0,21,"KeyL",42,"L",76,"VK_L","",""],[0,22,"KeyM",43,"M",77,"VK_M","",""],[0,23,"KeyN",44,"N",78,"VK_N","",""],[0,24,"KeyO",45,"O",79,"VK_O","",""],[0,25,"KeyP",46,"P",80,"VK_P","",""],[0,26,"KeyQ",47,"Q",81,"VK_Q","",""],[0,27,"KeyR",48,"R",82,"VK_R","",""],[0,28,"KeyS",49,"S",83,"VK_S","",""],[0,29,"KeyT",50,"T",84,"VK_T","",""],[0,30,"KeyU",51,"U",85,"VK_U","",""],[0,31,"KeyV",52,"V",86,"VK_V","",""],[0,32,"KeyW",53,"W",87,"VK_W","",""],[0,33,"KeyX",54,"X",88,"VK_X","",""],[0,34,"KeyY",55,"Y",89,"VK_Y","",""],[0,35,"KeyZ",56,"Z",90,"VK_Z","",""],[0,36,"Digit1",22,"1",49,"VK_1","",""],[0,37,"Digit2",23,"2",50,"VK_2","",""],[0,38,"Digit3",24,"3",51,"VK_3","",""],[0,39,"Digit4",25,"4",52,"VK_4","",""],[0,40,"Digit5",26,"5",53,"VK_5","",""],[0,41,"Digit6",27,"6",54,"VK_6","",""],[0,42,"Digit7",28,"7",55,"VK_7","",""],[0,43,"Digit8",29,"8",56,"VK_8","",""],[0,44,"Digit9",30,"9",57,"VK_9","",""],[0,45,"Digit0",21,"0",48,"VK_0","",""],[1,46,"Enter",3,"Enter",13,"VK_RETURN","",""],[1,47,"Escape",9,"Escape",27,"VK_ESCAPE","",""],[1,48,"Backspace",1,"Backspace",8,"VK_BACK","",""],[1,49,"Tab",2,"Tab",9,"VK_TAB","",""],[1,50,"Space",10,"Space",32,"VK_SPACE","",""],[0,51,"Minus",88,"-",189,"VK_OEM_MINUS","-","OEM_MINUS"],[0,52,"Equal",86,"=",187,"VK_OEM_PLUS","=","OEM_PLUS"],[0,53,"BracketLeft",92,"[",219,"VK_OEM_4","[","OEM_4"],[0,54,"BracketRight",94,"]",221,"VK_OEM_6","]","OEM_6"],[0,55,"Backslash",93,"\\",220,"VK_OEM_5","\\","OEM_5"],[0,56,"IntlHash",0,"",0,"","",""],[0,57,"Semicolon",85,";",186,"VK_OEM_1",";","OEM_1"],[0,58,"Quote",95,"'",222,"VK_OEM_7","'","OEM_7"],[0,59,"Backquote",91,"`",192,"VK_OEM_3","`","OEM_3"],[0,60,"Comma",87,",",188,"VK_OEM_COMMA",",","OEM_COMMA"],[0,61,"Period",89,".",190,"VK_OEM_PERIOD",".","OEM_PERIOD"],[0,62,"Slash",90,"/",191,"VK_OEM_2","/","OEM_2"],[1,63,"CapsLock",8,"CapsLock",20,"VK_CAPITAL","",""],[1,64,"F1",59,"F1",112,"VK_F1","",""],[1,65,"F2",60,"F2",113,"VK_F2","",""],[1,66,"F3",61,"F3",114,"VK_F3","",""],[1,67,"F4",62,"F4",115,"VK_F4","",""],[1,68,"F5",63,"F5",116,"VK_F5","",""],[1,69,"F6",64,"F6",117,"VK_F6","",""],[1,70,"F7",65,"F7",118,"VK_F7","",""],[1,71,"F8",66,"F8",119,"VK_F8","",""],[1,72,"F9",67,"F9",120,"VK_F9","",""],[1,73,"F10",68,"F10",121,"VK_F10","",""],[1,74,"F11",69,"F11",122,"VK_F11","",""],[1,75,"F12",70,"F12",123,"VK_F12","",""],[1,76,"PrintScreen",0,"",0,"","",""],[1,77,"ScrollLock",84,"ScrollLock",145,"VK_SCROLL","",""],[1,78,"Pause",7,"PauseBreak",19,"VK_PAUSE","",""],[1,79,"Insert",19,"Insert",45,"VK_INSERT","",""],[1,80,"Home",14,"Home",36,"VK_HOME","",""],[1,81,"PageUp",11,"PageUp",33,"VK_PRIOR","",""],[1,82,"Delete",20,"Delete",46,"VK_DELETE","",""],[1,83,"End",13,"End",35,"VK_END","",""],[1,84,"PageDown",12,"PageDown",34,"VK_NEXT","",""],[1,85,"ArrowRight",17,"RightArrow",39,"VK_RIGHT","Right",""],[1,86,"ArrowLeft",15,"LeftArrow",37,"VK_LEFT","Left",""],[1,87,"ArrowDown",18,"DownArrow",40,"VK_DOWN","Down",""],[1,88,"ArrowUp",16,"UpArrow",38,"VK_UP","Up",""],[1,89,"NumLock",83,"NumLock",144,"VK_NUMLOCK","",""],[1,90,"NumpadDivide",113,"NumPad_Divide",111,"VK_DIVIDE","",""],[1,91,"NumpadMultiply",108,"NumPad_Multiply",106,"VK_MULTIPLY","",""],[1,92,"NumpadSubtract",111,"NumPad_Subtract",109,"VK_SUBTRACT","",""],[1,93,"NumpadAdd",109,"NumPad_Add",107,"VK_ADD","",""],[1,94,"NumpadEnter",3,"",0,"","",""],[1,95,"Numpad1",99,"NumPad1",97,"VK_NUMPAD1","",""],[1,96,"Numpad2",100,"NumPad2",98,"VK_NUMPAD2","",""],[1,97,"Numpad3",101,"NumPad3",99,"VK_NUMPAD3","",""],[1,98,"Numpad4",102,"NumPad4",100,"VK_NUMPAD4","",""],[1,99,"Numpad5",103,"NumPad5",101,"VK_NUMPAD5","",""],[1,100,"Numpad6",104,"NumPad6",102,"VK_NUMPAD6","",""],[1,101,"Numpad7",105,"NumPad7",103,"VK_NUMPAD7","",""],[1,102,"Numpad8",106,"NumPad8",104,"VK_NUMPAD8","",""],[1,103,"Numpad9",107,"NumPad9",105,"VK_NUMPAD9","",""],[1,104,"Numpad0",98,"NumPad0",96,"VK_NUMPAD0","",""],[1,105,"NumpadDecimal",112,"NumPad_Decimal",110,"VK_DECIMAL","",""],[0,106,"IntlBackslash",97,"OEM_102",226,"VK_OEM_102","",""],[1,107,"ContextMenu",58,"ContextMenu",93,"","",""],[1,108,"Power",0,"",0,"","",""],[1,109,"NumpadEqual",0,"",0,"","",""],[1,110,"F13",71,"F13",124,"VK_F13","",""],[1,111,"F14",72,"F14",125,"VK_F14","",""],[1,112,"F15",73,"F15",126,"VK_F15","",""],[1,113,"F16",74,"F16",127,"VK_F16","",""],[1,114,"F17",75,"F17",128,"VK_F17","",""],[1,115,"F18",76,"F18",129,"VK_F18","",""],[1,116,"F19",77,"F19",130,"VK_F19","",""],[1,117,"F20",78,"F20",131,"VK_F20","",""],[1,118,"F21",79,"F21",132,"VK_F21","",""],[1,119,"F22",80,"F22",133,"VK_F22","",""],[1,120,"F23",81,"F23",134,"VK_F23","",""],[1,121,"F24",82,"F24",135,"VK_F24","",""],[1,122,"Open",0,"",0,"","",""],[1,123,"Help",0,"",0,"","",""],[1,124,"Select",0,"",0,"","",""],[1,125,"Again",0,"",0,"","",""],[1,126,"Undo",0,"",0,"","",""],[1,127,"Cut",0,"",0,"","",""],[1,128,"Copy",0,"",0,"","",""],[1,129,"Paste",0,"",0,"","",""],[1,130,"Find",0,"",0,"","",""],[1,131,"AudioVolumeMute",117,"AudioVolumeMute",173,"VK_VOLUME_MUTE","",""],[1,132,"AudioVolumeUp",118,"AudioVolumeUp",175,"VK_VOLUME_UP","",""],[1,133,"AudioVolumeDown",119,"AudioVolumeDown",174,"VK_VOLUME_DOWN","",""],[1,134,"NumpadComma",110,"NumPad_Separator",108,"VK_SEPARATOR","",""],[0,135,"IntlRo",115,"ABNT_C1",193,"VK_ABNT_C1","",""],[1,136,"KanaMode",0,"",0,"","",""],[0,137,"IntlYen",0,"",0,"","",""],[1,138,"Convert",0,"",0,"","",""],[1,139,"NonConvert",0,"",0,"","",""],[1,140,"Lang1",0,"",0,"","",""],[1,141,"Lang2",0,"",0,"","",""],[1,142,"Lang3",0,"",0,"","",""],[1,143,"Lang4",0,"",0,"","",""],[1,144,"Lang5",0,"",0,"","",""],[1,145,"Abort",0,"",0,"","",""],[1,146,"Props",0,"",0,"","",""],[1,147,"NumpadParenLeft",0,"",0,"","",""],[1,148,"NumpadParenRight",0,"",0,"","",""],[1,149,"NumpadBackspace",0,"",0,"","",""],[1,150,"NumpadMemoryStore",0,"",0,"","",""],[1,151,"NumpadMemoryRecall",0,"",0,"","",""],[1,152,"NumpadMemoryClear",0,"",0,"","",""],[1,153,"NumpadMemoryAdd",0,"",0,"","",""],[1,154,"NumpadMemorySubtract",0,"",0,"","",""],[1,155,"NumpadClear",131,"Clear",12,"VK_CLEAR","",""],[1,156,"NumpadClearEntry",0,"",0,"","",""],[1,0,"",5,"Ctrl",17,"VK_CONTROL","",""],[1,0,"",4,"Shift",16,"VK_SHIFT","",""],[1,0,"",6,"Alt",18,"VK_MENU","",""],[1,0,"",57,"Meta",91,"VK_COMMAND","",""],[1,157,"ControlLeft",5,"",0,"VK_LCONTROL","",""],[1,158,"ShiftLeft",4,"",0,"VK_LSHIFT","",""],[1,159,"AltLeft",6,"",0,"VK_LMENU","",""],[1,160,"MetaLeft",57,"",0,"VK_LWIN","",""],[1,161,"ControlRight",5,"",0,"VK_RCONTROL","",""],[1,162,"ShiftRight",4,"",0,"VK_RSHIFT","",""],[1,163,"AltRight",6,"",0,"VK_RMENU","",""],[1,164,"MetaRight",57,"",0,"VK_RWIN","",""],[1,165,"BrightnessUp",0,"",0,"","",""],[1,166,"BrightnessDown",0,"",0,"","",""],[1,167,"MediaPlay",0,"",0,"","",""],[1,168,"MediaRecord",0,"",0,"","",""],[1,169,"MediaFastForward",0,"",0,"","",""],[1,170,"MediaRewind",0,"",0,"","",""],[1,171,"MediaTrackNext",124,"MediaTrackNext",176,"VK_MEDIA_NEXT_TRACK","",""],[1,172,"MediaTrackPrevious",125,"MediaTrackPrevious",177,"VK_MEDIA_PREV_TRACK","",""],[1,173,"MediaStop",126,"MediaStop",178,"VK_MEDIA_STOP","",""],[1,174,"Eject",0,"",0,"","",""],[1,175,"MediaPlayPause",127,"MediaPlayPause",179,"VK_MEDIA_PLAY_PAUSE","",""],[1,176,"MediaSelect",128,"LaunchMediaPlayer",181,"VK_MEDIA_LAUNCH_MEDIA_SELECT","",""],[1,177,"LaunchMail",129,"LaunchMail",180,"VK_MEDIA_LAUNCH_MAIL","",""],[1,178,"LaunchApp2",130,"LaunchApp2",183,"VK_MEDIA_LAUNCH_APP2","",""],[1,179,"LaunchApp1",0,"",0,"VK_MEDIA_LAUNCH_APP1","",""],[1,180,"SelectTask",0,"",0,"","",""],[1,181,"LaunchScreenSaver",0,"",0,"","",""],[1,182,"BrowserSearch",120,"BrowserSearch",170,"VK_BROWSER_SEARCH","",""],[1,183,"BrowserHome",121,"BrowserHome",172,"VK_BROWSER_HOME","",""],[1,184,"BrowserBack",122,"BrowserBack",166,"VK_BROWSER_BACK","",""],[1,185,"BrowserForward",123,"BrowserForward",167,"VK_BROWSER_FORWARD","",""],[1,186,"BrowserStop",0,"",0,"VK_BROWSER_STOP","",""],[1,187,"BrowserRefresh",0,"",0,"VK_BROWSER_REFRESH","",""],[1,188,"BrowserFavorites",0,"",0,"VK_BROWSER_FAVORITES","",""],[1,189,"ZoomToggle",0,"",0,"","",""],[1,190,"MailReply",0,"",0,"","",""],[1,191,"MailForward",0,"",0,"","",""],[1,192,"MailSend",0,"",0,"","",""],[1,0,"",114,"KeyInComposition",229,"","",""],[1,0,"",116,"ABNT_C2",194,"VK_ABNT_C2","",""],[1,0,"",96,"OEM_8",223,"VK_OEM_8","",""],[1,0,"",0,"",0,"VK_KANA","",""],[1,0,"",0,"",0,"VK_HANGUL","",""],[1,0,"",0,"",0,"VK_JUNJA","",""],[1,0,"",0,"",0,"VK_FINAL","",""],[1,0,"",0,"",0,"VK_HANJA","",""],[1,0,"",0,"",0,"VK_KANJI","",""],[1,0,"",0,"",0,"VK_CONVERT","",""],[1,0,"",0,"",0,"VK_NONCONVERT","",""],[1,0,"",0,"",0,"VK_ACCEPT","",""],[1,0,"",0,"",0,"VK_MODECHANGE","",""],[1,0,"",0,"",0,"VK_SELECT","",""],[1,0,"",0,"",0,"VK_PRINT","",""],[1,0,"",0,"",0,"VK_EXECUTE","",""],[1,0,"",0,"",0,"VK_SNAPSHOT","",""],[1,0,"",0,"",0,"VK_HELP","",""],[1,0,"",0,"",0,"VK_APPS","",""],[1,0,"",0,"",0,"VK_PROCESSKEY","",""],[1,0,"",0,"",0,"VK_PACKET","",""],[1,0,"",0,"",0,"VK_DBE_SBCSCHAR","",""],[1,0,"",0,"",0,"VK_DBE_DBCSCHAR","",""],[1,0,"",0,"",0,"VK_ATTN","",""],[1,0,"",0,"",0,"VK_CRSEL","",""],[1,0,"",0,"",0,"VK_EXSEL","",""],[1,0,"",0,"",0,"VK_EREOF","",""],[1,0,"",0,"",0,"VK_PLAY","",""],[1,0,"",0,"",0,"VK_ZOOM","",""],[1,0,"",0,"",0,"VK_NONAME","",""],[1,0,"",0,"",0,"VK_PA1","",""],[1,0,"",0,"",0,"VK_OEM_CLEAR","",""]]){let[n,r,o,s,a,l,h,u,d]=i;if(!t[r]&&(t[r]=!0,nH[r]=o,nV[o]=r,nW[o.toLowerCase()]=r,n&&(nG[r]=s,0!==s&&3!==s&&5!==s&&4!==s&&6!==s&&57!==s&&(nz[s]=r))),!e[s]){if(e[s]=!0,!a)throw Error(`String representation missing for key code ${s} around scan code ${o}`);nk.define(s,a),nP.define(s,u||a),nF.define(s,d||u||a)}l&&(nB[l]=s),h&&(nU[h]=s)}nz[3]=46}(),(T=te||(te={})).toString=function(e){return nk.keyCodeToStr(e)},T.fromString=function(e){return nk.strToKeyCode(e)},T.toUserSettingsUS=function(e){return nP.keyCodeToStr(e)},T.toUserSettingsGeneral=function(e){return nF.keyCodeToStr(e)},T.fromUserSettings=function(e){return nP.strToKeyCode(e)||nF.strToKeyCode(e)},T.toElectronAccelerator=function(e){if(e>=98&&e<=113)return null;switch(e){case 16:return"Up";case 18:return"Down";case 15:return"Left";case 17:return"Right"}return nk.keyCodeToStr(e)};var nY=i(1432),nK=i(83454);if(void 0!==nY.li.vscode&&void 0!==nY.li.vscode.process){let e=nY.li.vscode.process;n={get platform(){return e.platform},get arch(){return e.arch},get env(){return e.env},cwd:()=>e.cwd()}}else n=void 0!==nK?{get platform(){return nK.platform},get arch(){return nK.arch},get env(){return nK.env},cwd:()=>nK.env.VSCODE_CWD||nK.cwd()}:{get platform(){return nY.ED?"win32":nY.dz?"darwin":"linux"},get arch(){return},get env(){return{}},cwd:()=>"/"};let n$=n.cwd,nX=n.env,nj=n.platform;class nq extends Error{constructor(e,t,i){let n;"string"==typeof t&&0===t.indexOf("not ")?(n="must not be",t=t.replace(/^not /,"")):n="must be";let r=-1!==e.indexOf(".")?"property":"argument",o=`The "${e}" ${r} ${n} of type ${t}`;super(o+=`. Received type ${typeof i}`),this.code="ERR_INVALID_ARG_TYPE"}}function nZ(e,t){if("string"!=typeof e)throw new nq(t,"string",e)}let nJ="win32"===nj;function nQ(e){return 47===e||92===e}function n0(e){return 47===e}function n1(e){return e>=65&&e<=90||e>=97&&e<=122}function n2(e,t,i,n){let r="",o=0,s=-1,a=0,l=0;for(let h=0;h<=e.length;++h){if(h2){let e=r.lastIndexOf(i);-1===e?(r="",o=0):o=(r=r.slice(0,e)).length-1-r.lastIndexOf(i),s=h,a=0;continue}if(0!==r.length){r="",o=0,s=h,a=0;continue}}t&&(r+=r.length>0?`${i}..`:"..",o=2)}else r.length>0?r+=`${i}${e.slice(s+1,h)}`:r=e.slice(s+1,h),o=h-s-1;s=h,a=0}else 46===l&&-1!==a?++a:a=-1}return r}function n4(e,t){!function(e,t){if(null===e||"object"!=typeof e)throw new nq(t,"Object",e)}(t,"pathObject");let i=t.dir||t.root,n=t.base||`${t.name||""}${t.ext||""}`;return i?i===t.root?`${i}${n}`:`${i}${e}${n}`:n}let n5={resolve(...e){let t="",i="",n=!1;for(let r=e.length-1;r>=-1;r--){let o;if(r>=0){if(nZ(o=e[r],"path"),0===o.length)continue}else 0===t.length?o=n$():(void 0===(o=nX[`=${t}`]||n$())||o.slice(0,2).toLowerCase()!==t.toLowerCase()&&92===o.charCodeAt(2))&&(o=`${t}\\`);let s=o.length,a=0,l="",h=!1,u=o.charCodeAt(0);if(1===s)nQ(u)&&(a=1,h=!0);else if(nQ(u)){if(h=!0,nQ(o.charCodeAt(1))){let e=2,t=2;for(;e2&&nQ(o.charCodeAt(2))&&(h=!0,a=3));if(l.length>0){if(t.length>0){if(l.toLowerCase()!==t.toLowerCase())continue}else t=l}if(n){if(t.length>0)break}else if(i=`${o.slice(a)}\\${i}`,n=h,h&&t.length>0)break}return i=n2(i,!n,"\\",nQ),n?`${t}\\${i}`:`${t}${i}`||"."},normalize(e){let t;nZ(e,"path");let i=e.length;if(0===i)return".";let n=0,r=!1,o=e.charCodeAt(0);if(1===i)return n0(o)?"\\":e;if(nQ(o)){if(r=!0,nQ(e.charCodeAt(1))){let r=2,o=2;for(;r2&&nQ(e.charCodeAt(2))&&(r=!0,n=3));let s=n0&&nQ(e.charCodeAt(i-1))&&(s+="\\"),void 0===t)?r?`\\${s}`:s:r?`${t}\\${s}`:`${t}${s}`},isAbsolute(e){nZ(e,"path");let t=e.length;if(0===t)return!1;let i=e.charCodeAt(0);return nQ(i)||t>2&&n1(i)&&58===e.charCodeAt(1)&&nQ(e.charCodeAt(2))},join(...e){let t,i;if(0===e.length)return".";for(let n=0;n0&&(void 0===t?t=i=r:t+=`\\${r}`)}if(void 0===t)return".";let n=!0,r=0;if("string"==typeof i&&nQ(i.charCodeAt(0))){++r;let e=i.length;e>1&&nQ(i.charCodeAt(1))&&(++r,e>2&&(nQ(i.charCodeAt(2))?++r:n=!1))}if(n){for(;r=2&&(t=`\\${t.slice(r)}`)}return n5.normalize(t)},relative(e,t){if(nZ(e,"from"),nZ(t,"to"),e===t)return"";let i=n5.resolve(e),n=n5.resolve(t);if(i===n||(e=i.toLowerCase())===(t=n.toLowerCase()))return"";let r=0;for(;rr&&92===e.charCodeAt(o-1);)o--;let s=o-r,a=0;for(;aa&&92===t.charCodeAt(l-1);)l--;let h=l-a,u=su){if(92===t.charCodeAt(a+c))return n.slice(a+c+1);if(2===c)return n.slice(a+c)}s>u&&(92===e.charCodeAt(r+c)?d=c:2===c&&(d=3)),-1===d&&(d=0)}let g="";for(c=r+d+1;c<=o;++c)(c===o||92===e.charCodeAt(c))&&(g+=0===g.length?"..":"\\..");return(a+=d,g.length>0)?`${g}${n.slice(a,l)}`:(92===n.charCodeAt(a)&&++a,n.slice(a,l))},toNamespacedPath(e){if("string"!=typeof e||0===e.length)return e;let t=n5.resolve(e);if(t.length<=2)return e;if(92===t.charCodeAt(0)){if(92===t.charCodeAt(1)){let e=t.charCodeAt(2);if(63!==e&&46!==e)return`\\\\?\\UNC\\${t.slice(2)}`}}else if(n1(t.charCodeAt(0))&&58===t.charCodeAt(1)&&92===t.charCodeAt(2))return`\\\\?\\${t}`;return e},dirname(e){nZ(e,"path");let t=e.length;if(0===t)return".";let i=-1,n=0,r=e.charCodeAt(0);if(1===t)return nQ(r)?e:".";if(nQ(r)){if(i=n=1,nQ(e.charCodeAt(1))){let r=2,o=2;for(;r2&&nQ(e.charCodeAt(2))?3:2);let o=-1,s=!0;for(let i=t-1;i>=n;--i)if(nQ(e.charCodeAt(i))){if(!s){o=i;break}}else s=!1;if(-1===o){if(-1===i)return".";o=i}return e.slice(0,o)},basename(e,t){let i;void 0!==t&&nZ(t,"ext"),nZ(e,"path");let n=0,r=-1,o=!0;if(e.length>=2&&n1(e.charCodeAt(0))&&58===e.charCodeAt(1)&&(n=2),void 0!==t&&t.length>0&&t.length<=e.length){if(t===e)return"";let s=t.length-1,a=-1;for(i=e.length-1;i>=n;--i){let l=e.charCodeAt(i);if(nQ(l)){if(!o){n=i+1;break}}else -1===a&&(o=!1,a=i+1),s>=0&&(l===t.charCodeAt(s)?-1==--s&&(r=i):(s=-1,r=a))}return n===r?r=a:-1===r&&(r=e.length),e.slice(n,r)}for(i=e.length-1;i>=n;--i)if(nQ(e.charCodeAt(i))){if(!o){n=i+1;break}}else -1===r&&(o=!1,r=i+1);return -1===r?"":e.slice(n,r)},extname(e){nZ(e,"path");let t=0,i=-1,n=0,r=-1,o=!0,s=0;e.length>=2&&58===e.charCodeAt(1)&&n1(e.charCodeAt(0))&&(t=n=2);for(let a=e.length-1;a>=t;--a){let t=e.charCodeAt(a);if(nQ(t)){if(!o){n=a+1;break}continue}-1===r&&(o=!1,r=a+1),46===t?-1===i?i=a:1!==s&&(s=1):-1!==i&&(s=-1)}return -1===i||-1===r||0===s||1===s&&i===r-1&&i===n+1?"":e.slice(i,r)},format:n4.bind(null,"\\"),parse(e){nZ(e,"path");let t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;let i=e.length,n=0,r=e.charCodeAt(0);if(1===i)return nQ(r)?(t.root=t.dir=e,t):(t.base=t.name=e,t);if(nQ(r)){if(n=1,nQ(e.charCodeAt(1))){let t=2,r=2;for(;t0&&(t.root=e.slice(0,n));let o=-1,s=n,a=-1,l=!0,h=e.length-1,u=0;for(;h>=n;--h){if(nQ(r=e.charCodeAt(h))){if(!l){s=h+1;break}continue}-1===a&&(l=!1,a=h+1),46===r?-1===o?o=h:1!==u&&(u=1):-1!==o&&(u=-1)}return -1!==a&&(-1===o||0===u||1===u&&o===a-1&&o===s+1?t.base=t.name=e.slice(s,a):(t.name=e.slice(s,o),t.base=e.slice(s,a),t.ext=e.slice(o,a))),s>0&&s!==n?t.dir=e.slice(0,s-1):t.dir=t.root,t},sep:"\\",delimiter:";",win32:null,posix:null},n6=(()=>{if(nJ){let e=/\\/g;return()=>{let t=n$().replace(e,"/");return t.slice(t.indexOf("/"))}}return()=>n$()})(),n3={resolve(...e){let t="",i=!1;for(let n=e.length-1;n>=-1&&!i;n--){let r=n>=0?e[n]:n6();nZ(r,"path"),0!==r.length&&(t=`${r}/${t}`,i=47===r.charCodeAt(0))}return(t=n2(t,!i,"/",n0),i)?`/${t}`:t.length>0?t:"."},normalize(e){if(nZ(e,"path"),0===e.length)return".";let t=47===e.charCodeAt(0),i=47===e.charCodeAt(e.length-1);return 0===(e=n2(e,!t,"/",n0)).length?t?"/":i?"./":".":(i&&(e+="/"),t?`/${e}`:e)},isAbsolute:e=>(nZ(e,"path"),e.length>0&&47===e.charCodeAt(0)),join(...e){let t;if(0===e.length)return".";for(let i=0;i0&&(void 0===t?t=n:t+=`/${n}`)}return void 0===t?".":n3.normalize(t)},relative(e,t){if(nZ(e,"from"),nZ(t,"to"),e===t||(e=n3.resolve(e))===(t=n3.resolve(t)))return"";let i=e.length,n=i-1,r=t.length-1,o=no){if(47===t.charCodeAt(1+a))return t.slice(1+a+1);if(0===a)return t.slice(1+a)}else n>o&&(47===e.charCodeAt(1+a)?s=a:0===a&&(s=0))}let l="";for(a=1+s+1;a<=i;++a)(a===i||47===e.charCodeAt(a))&&(l+=0===l.length?"..":"/..");return`${l}${t.slice(1+s)}`},toNamespacedPath:e=>e,dirname(e){if(nZ(e,"path"),0===e.length)return".";let t=47===e.charCodeAt(0),i=-1,n=!0;for(let t=e.length-1;t>=1;--t)if(47===e.charCodeAt(t)){if(!n){i=t;break}}else n=!1;return -1===i?t?"/":".":t&&1===i?"//":e.slice(0,i)},basename(e,t){let i;void 0!==t&&nZ(t,"ext"),nZ(e,"path");let n=0,r=-1,o=!0;if(void 0!==t&&t.length>0&&t.length<=e.length){if(t===e)return"";let s=t.length-1,a=-1;for(i=e.length-1;i>=0;--i){let l=e.charCodeAt(i);if(47===l){if(!o){n=i+1;break}}else -1===a&&(o=!1,a=i+1),s>=0&&(l===t.charCodeAt(s)?-1==--s&&(r=i):(s=-1,r=a))}return n===r?r=a:-1===r&&(r=e.length),e.slice(n,r)}for(i=e.length-1;i>=0;--i)if(47===e.charCodeAt(i)){if(!o){n=i+1;break}}else -1===r&&(o=!1,r=i+1);return -1===r?"":e.slice(n,r)},extname(e){nZ(e,"path");let t=-1,i=0,n=-1,r=!0,o=0;for(let s=e.length-1;s>=0;--s){let a=e.charCodeAt(s);if(47===a){if(!r){i=s+1;break}continue}-1===n&&(r=!1,n=s+1),46===a?-1===t?t=s:1!==o&&(o=1):-1!==t&&(o=-1)}return -1===t||-1===n||0===o||1===o&&t===n-1&&t===i+1?"":e.slice(t,n)},format:n4.bind(null,"/"),parse(e){let t;nZ(e,"path");let i={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return i;let n=47===e.charCodeAt(0);n?(i.root="/",t=1):t=0;let r=-1,o=0,s=-1,a=!0,l=e.length-1,h=0;for(;l>=t;--l){let t=e.charCodeAt(l);if(47===t){if(!a){o=l+1;break}continue}-1===s&&(a=!1,s=l+1),46===t?-1===r?r=l:1!==h&&(h=1):-1!==r&&(h=-1)}if(-1!==s){let t=0===o&&n?1:o;-1===r||0===h||1===h&&r===s-1&&r===o+1?i.base=i.name=e.slice(t,s):(i.name=e.slice(t,r),i.base=e.slice(t,s),i.ext=e.slice(r,s))}return o>0?i.dir=e.slice(0,o-1):n&&(i.dir="/"),i},sep:"/",delimiter:":",win32:null,posix:null};n3.win32=n5.win32=n5,n3.posix=n5.posix=n3;let n9=nJ?n5.normalize:n3.normalize,n7=nJ?n5.resolve:n3.resolve,n8=nJ?n5.relative:n3.relative,re=nJ?n5.dirname:n3.dirname,rt=nJ?n5.basename:n3.basename,ri=nJ?n5.extname:n3.extname,rn=nJ?n5.sep:n3.sep,rr=/^\w[\w\d+.-]*$/,ro=/^\//,rs=/^\/\//,ra=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class rl{static isUri(e){return e instanceof rl||!!e&&"string"==typeof e.authority&&"string"==typeof e.fragment&&"string"==typeof e.path&&"string"==typeof e.query&&"string"==typeof e.scheme&&"string"==typeof e.fsPath&&"function"==typeof e.with&&"function"==typeof e.toString}constructor(e,t,i,n,r,o=!1){"object"==typeof e?(this.scheme=e.scheme||"",this.authority=e.authority||"",this.path=e.path||"",this.query=e.query||"",this.fragment=e.fragment||""):(this.scheme=e||o?e:"file",this.authority=t||"",this.path=function(e,t){switch(e){case"https":case"http":case"file":t?"/"!==t[0]&&(t="/"+t):t="/"}return t}(this.scheme,i||""),this.query=n||"",this.fragment=r||"",function(e,t){if(!e.scheme&&t)throw Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${e.authority}", path: "${e.path}", query: "${e.query}", fragment: "${e.fragment}"}`);if(e.scheme&&!rr.test(e.scheme))throw Error("[UriError]: Scheme contains illegal characters.");if(e.path){if(e.authority){if(!ro.test(e.path))throw Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(rs.test(e.path))throw Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}(this,o))}get fsPath(){return rp(this,!1)}with(e){if(!e)return this;let{scheme:t,authority:i,path:n,query:r,fragment:o}=e;return(void 0===t?t=this.scheme:null===t&&(t=""),void 0===i?i=this.authority:null===i&&(i=""),void 0===n?n=this.path:null===n&&(n=""),void 0===r?r=this.query:null===r&&(r=""),void 0===o?o=this.fragment:null===o&&(o=""),t===this.scheme&&i===this.authority&&n===this.path&&r===this.query&&o===this.fragment)?this:new ru(t,i,n,r,o)}static parse(e,t=!1){let i=ra.exec(e);return i?new ru(i[2]||"",rv(i[4]||""),rv(i[5]||""),rv(i[7]||""),rv(i[9]||""),t):new ru("","","","","")}static file(e){let t="";if(nY.ED&&(e=e.replace(/\\/g,"/")),"/"===e[0]&&"/"===e[1]){let i=e.indexOf("/",2);-1===i?(t=e.substring(2),e="/"):(t=e.substring(2,i),e=e.substring(i)||"/")}return new ru("file",t,e,"","")}static from(e,t){let i=new ru(e.scheme,e.authority,e.path,e.query,e.fragment,t);return i}static joinPath(e,...t){let i;if(!e.path)throw Error("[UriError]: cannot call joinPath on URI without path");return i=nY.ED&&"file"===e.scheme?rl.file(n5.join(rp(e,!0),...t)).path:n3.join(e.path,...t),e.with({path:i})}toString(e=!1){return rf(this,e)}toJSON(){return this}static revive(e){var t,i;if(!e||e instanceof rl)return e;{let n=new ru(e);return n._formatted=null!==(t=e.external)&&void 0!==t?t:null,n._fsPath=e._sep===rh&&null!==(i=e.fsPath)&&void 0!==i?i:null,n}}}let rh=nY.ED?1:void 0;class ru extends rl{constructor(){super(...arguments),this._formatted=null,this._fsPath=null}get fsPath(){return this._fsPath||(this._fsPath=rp(this,!1)),this._fsPath}toString(e=!1){return e?rf(this,!0):(this._formatted||(this._formatted=rf(this,!1)),this._formatted)}toJSON(){let e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=rh),this._formatted&&(e.external=this._formatted),this.path&&(e.path=this.path),this.scheme&&(e.scheme=this.scheme),this.authority&&(e.authority=this.authority),this.query&&(e.query=this.query),this.fragment&&(e.fragment=this.fragment),e}}let rd={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function rc(e,t,i){let n;let r=-1;for(let o=0;o=97&&s<=122||s>=65&&s<=90||s>=48&&s<=57||45===s||46===s||95===s||126===s||t&&47===s||i&&91===s||i&&93===s||i&&58===s)-1!==r&&(n+=encodeURIComponent(e.substring(r,o)),r=-1),void 0!==n&&(n+=e.charAt(o));else{void 0===n&&(n=e.substr(0,o));let t=rd[s];void 0!==t?(-1!==r&&(n+=encodeURIComponent(e.substring(r,o)),r=-1),n+=t):-1===r&&(r=o)}}return -1!==r&&(n+=encodeURIComponent(e.substring(r))),void 0!==n?n:e}function rg(e){let t;for(let i=0;i1&&"file"===e.scheme?`//${e.authority}${e.path}`:47===e.path.charCodeAt(0)&&(e.path.charCodeAt(1)>=65&&90>=e.path.charCodeAt(1)||e.path.charCodeAt(1)>=97&&122>=e.path.charCodeAt(1))&&58===e.path.charCodeAt(2)?t?e.path.substr(1):e.path[1].toLowerCase()+e.path.substr(2):e.path,nY.ED&&(i=i.replace(/\//g,"\\")),i}function rf(e,t){let i=t?rg:rc,n="",{scheme:r,authority:o,path:s,query:a,fragment:l}=e;if(r&&(n+=r+":"),(o||"file"===r)&&(n+="//"),o){let e=o.indexOf("@");if(-1!==e){let t=o.substr(0,e);o=o.substr(e+1),-1===(e=t.lastIndexOf(":"))?n+=i(t,!1,!1):n+=i(t.substr(0,e),!1,!1)+":"+i(t.substr(e+1),!1,!0),n+="@"}-1===(e=(o=o.toLowerCase()).lastIndexOf(":"))?n+=i(o,!1,!0):n+=i(o.substr(0,e),!1,!0)+o.substr(e)}if(s){if(s.length>=3&&47===s.charCodeAt(0)&&58===s.charCodeAt(2)){let e=s.charCodeAt(1);e>=65&&e<=90&&(s=`/${String.fromCharCode(e+32)}:${s.substr(3)}`)}else if(s.length>=2&&58===s.charCodeAt(1)){let e=s.charCodeAt(0);e>=65&&e<=90&&(s=`${String.fromCharCode(e+32)}:${s.substr(2)}`)}n+=i(s,!0,!1)}return a&&(n+="?"+i(a,!1,!1)),l&&(n+="#"+(t?l:rc(l,!1,!1))),n}let rm=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function rv(e){return e.match(rm)?e.replace(rm,e=>(function e(t){try{return decodeURIComponent(t)}catch(i){if(t.length>3)return t.substr(0,3)+e(t.substr(3));return t}})(e)):e}class rE{constructor(e,t){this.lineNumber=e,this.column=t}with(e=this.lineNumber,t=this.column){return e===this.lineNumber&&t===this.column?this:new rE(e,t)}delta(e=0,t=0){return this.with(this.lineNumber+e,this.column+t)}equals(e){return rE.equals(this,e)}static equals(e,t){return!e&&!t||!!e&&!!t&&e.lineNumber===t.lineNumber&&e.column===t.column}isBefore(e){return rE.isBefore(this,e)}static isBefore(e,t){return e.lineNumberi||e===i&&t>n?(this.startLineNumber=i,this.startColumn=n,this.endLineNumber=e,this.endColumn=t):(this.startLineNumber=e,this.startColumn=t,this.endLineNumber=i,this.endColumn=n)}isEmpty(){return r_.isEmpty(this)}static isEmpty(e){return e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn}containsPosition(e){return r_.containsPosition(this,e)}static containsPosition(e,t){return!(t.lineNumbere.endLineNumber)&&(t.lineNumber!==e.startLineNumber||!(t.columne.endColumn))}static strictContainsPosition(e,t){return!(t.lineNumbere.endLineNumber)&&(t.lineNumber!==e.startLineNumber||!(t.column<=e.startColumn))&&(t.lineNumber!==e.endLineNumber||!(t.column>=e.endColumn))}containsRange(e){return r_.containsRange(this,e)}static containsRange(e,t){return!(t.startLineNumbere.endLineNumber)&&!(t.endLineNumber>e.endLineNumber)&&(t.startLineNumber!==e.startLineNumber||!(t.startColumne.endColumn))}strictContainsRange(e){return r_.strictContainsRange(this,e)}static strictContainsRange(e,t){return!(t.startLineNumbere.endLineNumber)&&!(t.endLineNumber>e.endLineNumber)&&(t.startLineNumber!==e.startLineNumber||!(t.startColumn<=e.startColumn))&&(t.endLineNumber!==e.endLineNumber||!(t.endColumn>=e.endColumn))}plusRange(e){return r_.plusRange(this,e)}static plusRange(e,t){let i,n,r,o;return t.startLineNumbere.endLineNumber?(r=t.endLineNumber,o=t.endColumn):t.endLineNumber===e.endLineNumber?(r=t.endLineNumber,o=Math.max(t.endColumn,e.endColumn)):(r=e.endLineNumber,o=e.endColumn),new r_(i,n,r,o)}intersectRanges(e){return r_.intersectRanges(this,e)}static intersectRanges(e,t){let i=e.startLineNumber,n=e.startColumn,r=e.endLineNumber,o=e.endColumn,s=t.startLineNumber,a=t.startColumn,l=t.endLineNumber,h=t.endColumn;return(il?(r=l,o=h):r===l&&(o=Math.min(o,h)),i>r||i===r&&n>o)?null:new r_(i,n,r,o)}equalsRange(e){return r_.equalsRange(this,e)}static equalsRange(e,t){return!e&&!t||!!e&&!!t&&e.startLineNumber===t.startLineNumber&&e.startColumn===t.startColumn&&e.endLineNumber===t.endLineNumber&&e.endColumn===t.endColumn}getEndPosition(){return r_.getEndPosition(this)}static getEndPosition(e){return new rE(e.endLineNumber,e.endColumn)}getStartPosition(){return r_.getStartPosition(this)}static getStartPosition(e){return new rE(e.startLineNumber,e.startColumn)}toString(){return"["+this.startLineNumber+","+this.startColumn+" -> "+this.endLineNumber+","+this.endColumn+"]"}setEndPosition(e,t){return new r_(this.startLineNumber,this.startColumn,e,t)}setStartPosition(e,t){return new r_(e,t,this.endLineNumber,this.endColumn)}collapseToStart(){return r_.collapseToStart(this)}static collapseToStart(e){return new r_(e.startLineNumber,e.startColumn,e.startLineNumber,e.startColumn)}collapseToEnd(){return r_.collapseToEnd(this)}static collapseToEnd(e){return new r_(e.endLineNumber,e.endColumn,e.endLineNumber,e.endColumn)}delta(e){return new r_(this.startLineNumber+e,this.startColumn,this.endLineNumber+e,this.endColumn)}static fromPositions(e,t=e){return new r_(e.lineNumber,e.column,t.lineNumber,t.column)}static lift(e){return e?new r_(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn):null}static isIRange(e){return e&&"number"==typeof e.startLineNumber&&"number"==typeof e.startColumn&&"number"==typeof e.endLineNumber&&"number"==typeof e.endColumn}static areIntersectingOrTouching(e,t){return!(e.endLineNumbere.startLineNumber}toJSON(){return this}}class rC extends r_{constructor(e,t,i,n){super(e,t,i,n),this.selectionStartLineNumber=e,this.selectionStartColumn=t,this.positionLineNumber=i,this.positionColumn=n}toString(){return"["+this.selectionStartLineNumber+","+this.selectionStartColumn+" -> "+this.positionLineNumber+","+this.positionColumn+"]"}equalsSelection(e){return rC.selectionsEqual(this,e)}static selectionsEqual(e,t){return e.selectionStartLineNumber===t.selectionStartLineNumber&&e.selectionStartColumn===t.selectionStartColumn&&e.positionLineNumber===t.positionLineNumber&&e.positionColumn===t.positionColumn}getDirection(){return this.selectionStartLineNumber===this.startLineNumber&&this.selectionStartColumn===this.startColumn?0:1}setEndPosition(e,t){return 0===this.getDirection()?new rC(this.startLineNumber,this.startColumn,e,t):new rC(e,t,this.startLineNumber,this.startColumn)}getPosition(){return new rE(this.positionLineNumber,this.positionColumn)}getSelectionStart(){return new rE(this.selectionStartLineNumber,this.selectionStartColumn)}setStartPosition(e,t){return 0===this.getDirection()?new rC(e,t,this.endLineNumber,this.endColumn):new rC(this.endLineNumber,this.endColumn,e,t)}static fromPositions(e,t=e){return new rC(e.lineNumber,e.column,t.lineNumber,t.column)}static fromRange(e,t){return 0===t?new rC(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn):new rC(e.endLineNumber,e.endColumn,e.startLineNumber,e.startColumn)}static liftSelection(e){return new rC(e.selectionStartLineNumber,e.selectionStartColumn,e.positionLineNumber,e.positionColumn)}static selectionsArrEqual(e,t){if(e&&!t||!e&&t)return!1;if(!e&&!t)return!0;if(e.length!==t.length)return!1;for(let i=0,n=e.length;i{e&&e.dispose()})}get tokenizationSupport(){return this._tokenizationSupport||(this._tokenizationSupport=this.createSupport()),this._tokenizationSupport}}let rD=new class{constructor(){this._tokenizationSupports=new Map,this._factories=new Map,this._onDidChange=new nT,this.onDidChange=this._onDidChange.event,this._colorMap=null}handleChange(e){this._onDidChange.fire({changedLanguages:e,changedColorMap:!1})}register(e,t){return this._tokenizationSupports.set(e,t),this.handleChange([e]),nu(()=>{this._tokenizationSupports.get(e)===t&&(this._tokenizationSupports.delete(e),this.handleChange([e]))})}get(e){return this._tokenizationSupports.get(e)||null}registerFactory(e,t){var i;null===(i=this._factories.get(e))||void 0===i||i.dispose();let n=new rR(this,e,t);return this._factories.set(e,n),nu(()=>{let t=this._factories.get(e);t&&t===n&&(this._factories.delete(e),t.dispose())})}getOrCreate(e){return rA(this,void 0,void 0,function*(){let t=this.get(e);if(t)return t;let i=this._factories.get(e);return!i||i.isResolved?null:(yield i.resolve(),this.get(e))})}isResolved(e){let t=this.get(e);if(t)return!0;let i=this._factories.get(e);return!i||!!i.isResolved}setColorMap(e){this._colorMap=e,this._onDidChange.fire({changedLanguages:Array.from(this._tokenizationSupports.keys()),changedColorMap:!0})}getColorMap(){return this._colorMap}getDefaultBackground(){return this._colorMap&&this._colorMap.length>2?this._colorMap[2]:null}};(N=tl||(tl={}))[N.Unknown=0]="Unknown",N[N.Disabled=1]="Disabled",N[N.Enabled=2]="Enabled",(I=th||(th={}))[I.Invoke=1]="Invoke",I[I.Auto=2]="Auto",(w=tu||(tu={}))[w.None=0]="None",w[w.KeepWhitespace=1]="KeepWhitespace",w[w.InsertAsSnippet=4]="InsertAsSnippet",(O=td||(td={}))[O.Method=0]="Method",O[O.Function=1]="Function",O[O.Constructor=2]="Constructor",O[O.Field=3]="Field",O[O.Variable=4]="Variable",O[O.Class=5]="Class",O[O.Struct=6]="Struct",O[O.Interface=7]="Interface",O[O.Module=8]="Module",O[O.Property=9]="Property",O[O.Event=10]="Event",O[O.Operator=11]="Operator",O[O.Unit=12]="Unit",O[O.Value=13]="Value",O[O.Constant=14]="Constant",O[O.Enum=15]="Enum",O[O.EnumMember=16]="EnumMember",O[O.Keyword=17]="Keyword",O[O.Text=18]="Text",O[O.Color=19]="Color",O[O.File=20]="File",O[O.Reference=21]="Reference",O[O.Customcolor=22]="Customcolor",O[O.Folder=23]="Folder",O[O.TypeParameter=24]="TypeParameter",O[O.User=25]="User",O[O.Issue=26]="Issue",O[O.Snippet=27]="Snippet",(x=tc||(tc={}))[x.Deprecated=1]="Deprecated",(D=tg||(tg={}))[D.Invoke=0]="Invoke",D[D.TriggerCharacter=1]="TriggerCharacter",D[D.TriggerForIncompleteCompletions=2]="TriggerForIncompleteCompletions",(M=tp||(tp={}))[M.EXACT=0]="EXACT",M[M.ABOVE=1]="ABOVE",M[M.BELOW=2]="BELOW",(k=tf||(tf={}))[k.NotSet=0]="NotSet",k[k.ContentFlush=1]="ContentFlush",k[k.RecoverFromMarkers=2]="RecoverFromMarkers",k[k.Explicit=3]="Explicit",k[k.Paste=4]="Paste",k[k.Undo=5]="Undo",k[k.Redo=6]="Redo",(P=tm||(tm={}))[P.LF=1]="LF",P[P.CRLF=2]="CRLF",(F=tv||(tv={}))[F.Text=0]="Text",F[F.Read=1]="Read",F[F.Write=2]="Write",(B=tE||(tE={}))[B.None=0]="None",B[B.Keep=1]="Keep",B[B.Brackets=2]="Brackets",B[B.Advanced=3]="Advanced",B[B.Full=4]="Full",(U=t_||(t_={}))[U.acceptSuggestionOnCommitCharacter=0]="acceptSuggestionOnCommitCharacter",U[U.acceptSuggestionOnEnter=1]="acceptSuggestionOnEnter",U[U.accessibilitySupport=2]="accessibilitySupport",U[U.accessibilityPageSize=3]="accessibilityPageSize",U[U.ariaLabel=4]="ariaLabel",U[U.ariaRequired=5]="ariaRequired",U[U.autoClosingBrackets=6]="autoClosingBrackets",U[U.screenReaderAnnounceInlineSuggestion=7]="screenReaderAnnounceInlineSuggestion",U[U.autoClosingDelete=8]="autoClosingDelete",U[U.autoClosingOvertype=9]="autoClosingOvertype",U[U.autoClosingQuotes=10]="autoClosingQuotes",U[U.autoIndent=11]="autoIndent",U[U.automaticLayout=12]="automaticLayout",U[U.autoSurround=13]="autoSurround",U[U.bracketPairColorization=14]="bracketPairColorization",U[U.guides=15]="guides",U[U.codeLens=16]="codeLens",U[U.codeLensFontFamily=17]="codeLensFontFamily",U[U.codeLensFontSize=18]="codeLensFontSize",U[U.colorDecorators=19]="colorDecorators",U[U.colorDecoratorsLimit=20]="colorDecoratorsLimit",U[U.columnSelection=21]="columnSelection",U[U.comments=22]="comments",U[U.contextmenu=23]="contextmenu",U[U.copyWithSyntaxHighlighting=24]="copyWithSyntaxHighlighting",U[U.cursorBlinking=25]="cursorBlinking",U[U.cursorSmoothCaretAnimation=26]="cursorSmoothCaretAnimation",U[U.cursorStyle=27]="cursorStyle",U[U.cursorSurroundingLines=28]="cursorSurroundingLines",U[U.cursorSurroundingLinesStyle=29]="cursorSurroundingLinesStyle",U[U.cursorWidth=30]="cursorWidth",U[U.disableLayerHinting=31]="disableLayerHinting",U[U.disableMonospaceOptimizations=32]="disableMonospaceOptimizations",U[U.domReadOnly=33]="domReadOnly",U[U.dragAndDrop=34]="dragAndDrop",U[U.dropIntoEditor=35]="dropIntoEditor",U[U.emptySelectionClipboard=36]="emptySelectionClipboard",U[U.experimentalWhitespaceRendering=37]="experimentalWhitespaceRendering",U[U.extraEditorClassName=38]="extraEditorClassName",U[U.fastScrollSensitivity=39]="fastScrollSensitivity",U[U.find=40]="find",U[U.fixedOverflowWidgets=41]="fixedOverflowWidgets",U[U.folding=42]="folding",U[U.foldingStrategy=43]="foldingStrategy",U[U.foldingHighlight=44]="foldingHighlight",U[U.foldingImportsByDefault=45]="foldingImportsByDefault",U[U.foldingMaximumRegions=46]="foldingMaximumRegions",U[U.unfoldOnClickAfterEndOfLine=47]="unfoldOnClickAfterEndOfLine",U[U.fontFamily=48]="fontFamily",U[U.fontInfo=49]="fontInfo",U[U.fontLigatures=50]="fontLigatures",U[U.fontSize=51]="fontSize",U[U.fontWeight=52]="fontWeight",U[U.fontVariations=53]="fontVariations",U[U.formatOnPaste=54]="formatOnPaste",U[U.formatOnType=55]="formatOnType",U[U.glyphMargin=56]="glyphMargin",U[U.gotoLocation=57]="gotoLocation",U[U.hideCursorInOverviewRuler=58]="hideCursorInOverviewRuler",U[U.hover=59]="hover",U[U.inDiffEditor=60]="inDiffEditor",U[U.inlineSuggest=61]="inlineSuggest",U[U.letterSpacing=62]="letterSpacing",U[U.lightbulb=63]="lightbulb",U[U.lineDecorationsWidth=64]="lineDecorationsWidth",U[U.lineHeight=65]="lineHeight",U[U.lineNumbers=66]="lineNumbers",U[U.lineNumbersMinChars=67]="lineNumbersMinChars",U[U.linkedEditing=68]="linkedEditing",U[U.links=69]="links",U[U.matchBrackets=70]="matchBrackets",U[U.minimap=71]="minimap",U[U.mouseStyle=72]="mouseStyle",U[U.mouseWheelScrollSensitivity=73]="mouseWheelScrollSensitivity",U[U.mouseWheelZoom=74]="mouseWheelZoom",U[U.multiCursorMergeOverlapping=75]="multiCursorMergeOverlapping",U[U.multiCursorModifier=76]="multiCursorModifier",U[U.multiCursorPaste=77]="multiCursorPaste",U[U.multiCursorLimit=78]="multiCursorLimit",U[U.occurrencesHighlight=79]="occurrencesHighlight",U[U.overviewRulerBorder=80]="overviewRulerBorder",U[U.overviewRulerLanes=81]="overviewRulerLanes",U[U.padding=82]="padding",U[U.pasteAs=83]="pasteAs",U[U.parameterHints=84]="parameterHints",U[U.peekWidgetDefaultFocus=85]="peekWidgetDefaultFocus",U[U.definitionLinkOpensInPeek=86]="definitionLinkOpensInPeek",U[U.quickSuggestions=87]="quickSuggestions",U[U.quickSuggestionsDelay=88]="quickSuggestionsDelay",U[U.readOnly=89]="readOnly",U[U.readOnlyMessage=90]="readOnlyMessage",U[U.renameOnType=91]="renameOnType",U[U.renderControlCharacters=92]="renderControlCharacters",U[U.renderFinalNewline=93]="renderFinalNewline",U[U.renderLineHighlight=94]="renderLineHighlight",U[U.renderLineHighlightOnlyWhenFocus=95]="renderLineHighlightOnlyWhenFocus",U[U.renderValidationDecorations=96]="renderValidationDecorations",U[U.renderWhitespace=97]="renderWhitespace",U[U.revealHorizontalRightPadding=98]="revealHorizontalRightPadding",U[U.roundedSelection=99]="roundedSelection",U[U.rulers=100]="rulers",U[U.scrollbar=101]="scrollbar",U[U.scrollBeyondLastColumn=102]="scrollBeyondLastColumn",U[U.scrollBeyondLastLine=103]="scrollBeyondLastLine",U[U.scrollPredominantAxis=104]="scrollPredominantAxis",U[U.selectionClipboard=105]="selectionClipboard",U[U.selectionHighlight=106]="selectionHighlight",U[U.selectOnLineNumbers=107]="selectOnLineNumbers",U[U.showFoldingControls=108]="showFoldingControls",U[U.showUnused=109]="showUnused",U[U.snippetSuggestions=110]="snippetSuggestions",U[U.smartSelect=111]="smartSelect",U[U.smoothScrolling=112]="smoothScrolling",U[U.stickyScroll=113]="stickyScroll",U[U.stickyTabStops=114]="stickyTabStops",U[U.stopRenderingLineAfter=115]="stopRenderingLineAfter",U[U.suggest=116]="suggest",U[U.suggestFontSize=117]="suggestFontSize",U[U.suggestLineHeight=118]="suggestLineHeight",U[U.suggestOnTriggerCharacters=119]="suggestOnTriggerCharacters",U[U.suggestSelection=120]="suggestSelection",U[U.tabCompletion=121]="tabCompletion",U[U.tabIndex=122]="tabIndex",U[U.unicodeHighlighting=123]="unicodeHighlighting",U[U.unusualLineTerminators=124]="unusualLineTerminators",U[U.useShadowDOM=125]="useShadowDOM",U[U.useTabStops=126]="useTabStops",U[U.wordBreak=127]="wordBreak",U[U.wordSeparators=128]="wordSeparators",U[U.wordWrap=129]="wordWrap",U[U.wordWrapBreakAfterCharacters=130]="wordWrapBreakAfterCharacters",U[U.wordWrapBreakBeforeCharacters=131]="wordWrapBreakBeforeCharacters",U[U.wordWrapColumn=132]="wordWrapColumn",U[U.wordWrapOverride1=133]="wordWrapOverride1",U[U.wordWrapOverride2=134]="wordWrapOverride2",U[U.wrappingIndent=135]="wrappingIndent",U[U.wrappingStrategy=136]="wrappingStrategy",U[U.showDeprecated=137]="showDeprecated",U[U.inlayHints=138]="inlayHints",U[U.editorClassName=139]="editorClassName",U[U.pixelRatio=140]="pixelRatio",U[U.tabFocusMode=141]="tabFocusMode",U[U.layoutInfo=142]="layoutInfo",U[U.wrappingInfo=143]="wrappingInfo",U[U.defaultColorDecorators=144]="defaultColorDecorators",U[U.colorDecoratorsActivatedOn=145]="colorDecoratorsActivatedOn",(H=tC||(tC={}))[H.TextDefined=0]="TextDefined",H[H.LF=1]="LF",H[H.CRLF=2]="CRLF",(V=tS||(tS={}))[V.LF=0]="LF",V[V.CRLF=1]="CRLF",(W=ty||(ty={}))[W.Left=1]="Left",W[W.Right=2]="Right",(G=tT||(tT={}))[G.None=0]="None",G[G.Indent=1]="Indent",G[G.IndentOutdent=2]="IndentOutdent",G[G.Outdent=3]="Outdent",(z=tb||(tb={}))[z.Both=0]="Both",z[z.Right=1]="Right",z[z.Left=2]="Left",z[z.None=3]="None",(Y=tA||(tA={}))[Y.Type=1]="Type",Y[Y.Parameter=2]="Parameter",(K=tR||(tR={}))[K.Automatic=0]="Automatic",K[K.Explicit=1]="Explicit",($=tL||(tL={}))[$.DependsOnKbLayout=-1]="DependsOnKbLayout",$[$.Unknown=0]="Unknown",$[$.Backspace=1]="Backspace",$[$.Tab=2]="Tab",$[$.Enter=3]="Enter",$[$.Shift=4]="Shift",$[$.Ctrl=5]="Ctrl",$[$.Alt=6]="Alt",$[$.PauseBreak=7]="PauseBreak",$[$.CapsLock=8]="CapsLock",$[$.Escape=9]="Escape",$[$.Space=10]="Space",$[$.PageUp=11]="PageUp",$[$.PageDown=12]="PageDown",$[$.End=13]="End",$[$.Home=14]="Home",$[$.LeftArrow=15]="LeftArrow",$[$.UpArrow=16]="UpArrow",$[$.RightArrow=17]="RightArrow",$[$.DownArrow=18]="DownArrow",$[$.Insert=19]="Insert",$[$.Delete=20]="Delete",$[$.Digit0=21]="Digit0",$[$.Digit1=22]="Digit1",$[$.Digit2=23]="Digit2",$[$.Digit3=24]="Digit3",$[$.Digit4=25]="Digit4",$[$.Digit5=26]="Digit5",$[$.Digit6=27]="Digit6",$[$.Digit7=28]="Digit7",$[$.Digit8=29]="Digit8",$[$.Digit9=30]="Digit9",$[$.KeyA=31]="KeyA",$[$.KeyB=32]="KeyB",$[$.KeyC=33]="KeyC",$[$.KeyD=34]="KeyD",$[$.KeyE=35]="KeyE",$[$.KeyF=36]="KeyF",$[$.KeyG=37]="KeyG",$[$.KeyH=38]="KeyH",$[$.KeyI=39]="KeyI",$[$.KeyJ=40]="KeyJ",$[$.KeyK=41]="KeyK",$[$.KeyL=42]="KeyL",$[$.KeyM=43]="KeyM",$[$.KeyN=44]="KeyN",$[$.KeyO=45]="KeyO",$[$.KeyP=46]="KeyP",$[$.KeyQ=47]="KeyQ",$[$.KeyR=48]="KeyR",$[$.KeyS=49]="KeyS",$[$.KeyT=50]="KeyT",$[$.KeyU=51]="KeyU",$[$.KeyV=52]="KeyV",$[$.KeyW=53]="KeyW",$[$.KeyX=54]="KeyX",$[$.KeyY=55]="KeyY",$[$.KeyZ=56]="KeyZ",$[$.Meta=57]="Meta",$[$.ContextMenu=58]="ContextMenu",$[$.F1=59]="F1",$[$.F2=60]="F2",$[$.F3=61]="F3",$[$.F4=62]="F4",$[$.F5=63]="F5",$[$.F6=64]="F6",$[$.F7=65]="F7",$[$.F8=66]="F8",$[$.F9=67]="F9",$[$.F10=68]="F10",$[$.F11=69]="F11",$[$.F12=70]="F12",$[$.F13=71]="F13",$[$.F14=72]="F14",$[$.F15=73]="F15",$[$.F16=74]="F16",$[$.F17=75]="F17",$[$.F18=76]="F18",$[$.F19=77]="F19",$[$.F20=78]="F20",$[$.F21=79]="F21",$[$.F22=80]="F22",$[$.F23=81]="F23",$[$.F24=82]="F24",$[$.NumLock=83]="NumLock",$[$.ScrollLock=84]="ScrollLock",$[$.Semicolon=85]="Semicolon",$[$.Equal=86]="Equal",$[$.Comma=87]="Comma",$[$.Minus=88]="Minus",$[$.Period=89]="Period",$[$.Slash=90]="Slash",$[$.Backquote=91]="Backquote",$[$.BracketLeft=92]="BracketLeft",$[$.Backslash=93]="Backslash",$[$.BracketRight=94]="BracketRight",$[$.Quote=95]="Quote",$[$.OEM_8=96]="OEM_8",$[$.IntlBackslash=97]="IntlBackslash",$[$.Numpad0=98]="Numpad0",$[$.Numpad1=99]="Numpad1",$[$.Numpad2=100]="Numpad2",$[$.Numpad3=101]="Numpad3",$[$.Numpad4=102]="Numpad4",$[$.Numpad5=103]="Numpad5",$[$.Numpad6=104]="Numpad6",$[$.Numpad7=105]="Numpad7",$[$.Numpad8=106]="Numpad8",$[$.Numpad9=107]="Numpad9",$[$.NumpadMultiply=108]="NumpadMultiply",$[$.NumpadAdd=109]="NumpadAdd",$[$.NUMPAD_SEPARATOR=110]="NUMPAD_SEPARATOR",$[$.NumpadSubtract=111]="NumpadSubtract",$[$.NumpadDecimal=112]="NumpadDecimal",$[$.NumpadDivide=113]="NumpadDivide",$[$.KEY_IN_COMPOSITION=114]="KEY_IN_COMPOSITION",$[$.ABNT_C1=115]="ABNT_C1",$[$.ABNT_C2=116]="ABNT_C2",$[$.AudioVolumeMute=117]="AudioVolumeMute",$[$.AudioVolumeUp=118]="AudioVolumeUp",$[$.AudioVolumeDown=119]="AudioVolumeDown",$[$.BrowserSearch=120]="BrowserSearch",$[$.BrowserHome=121]="BrowserHome",$[$.BrowserBack=122]="BrowserBack",$[$.BrowserForward=123]="BrowserForward",$[$.MediaTrackNext=124]="MediaTrackNext",$[$.MediaTrackPrevious=125]="MediaTrackPrevious",$[$.MediaStop=126]="MediaStop",$[$.MediaPlayPause=127]="MediaPlayPause",$[$.LaunchMediaPlayer=128]="LaunchMediaPlayer",$[$.LaunchMail=129]="LaunchMail",$[$.LaunchApp2=130]="LaunchApp2",$[$.Clear=131]="Clear",$[$.MAX_VALUE=132]="MAX_VALUE",(X=tN||(tN={}))[X.Hint=1]="Hint",X[X.Info=2]="Info",X[X.Warning=4]="Warning",X[X.Error=8]="Error",(j=tI||(tI={}))[j.Unnecessary=1]="Unnecessary",j[j.Deprecated=2]="Deprecated",(q=tw||(tw={}))[q.Inline=1]="Inline",q[q.Gutter=2]="Gutter",(Z=tO||(tO={}))[Z.UNKNOWN=0]="UNKNOWN",Z[Z.TEXTAREA=1]="TEXTAREA",Z[Z.GUTTER_GLYPH_MARGIN=2]="GUTTER_GLYPH_MARGIN",Z[Z.GUTTER_LINE_NUMBERS=3]="GUTTER_LINE_NUMBERS",Z[Z.GUTTER_LINE_DECORATIONS=4]="GUTTER_LINE_DECORATIONS",Z[Z.GUTTER_VIEW_ZONE=5]="GUTTER_VIEW_ZONE",Z[Z.CONTENT_TEXT=6]="CONTENT_TEXT",Z[Z.CONTENT_EMPTY=7]="CONTENT_EMPTY",Z[Z.CONTENT_VIEW_ZONE=8]="CONTENT_VIEW_ZONE",Z[Z.CONTENT_WIDGET=9]="CONTENT_WIDGET",Z[Z.OVERVIEW_RULER=10]="OVERVIEW_RULER",Z[Z.SCROLLBAR=11]="SCROLLBAR",Z[Z.OVERLAY_WIDGET=12]="OVERLAY_WIDGET",Z[Z.OUTSIDE_EDITOR=13]="OUTSIDE_EDITOR",(J=tx||(tx={}))[J.TOP_RIGHT_CORNER=0]="TOP_RIGHT_CORNER",J[J.BOTTOM_RIGHT_CORNER=1]="BOTTOM_RIGHT_CORNER",J[J.TOP_CENTER=2]="TOP_CENTER",(Q=tD||(tD={}))[Q.Left=1]="Left",Q[Q.Center=2]="Center",Q[Q.Right=4]="Right",Q[Q.Full=7]="Full",(ee=tM||(tM={}))[ee.Left=0]="Left",ee[ee.Right=1]="Right",ee[ee.None=2]="None",ee[ee.LeftOfInjectedText=3]="LeftOfInjectedText",ee[ee.RightOfInjectedText=4]="RightOfInjectedText",(et=tk||(tk={}))[et.Off=0]="Off",et[et.On=1]="On",et[et.Relative=2]="Relative",et[et.Interval=3]="Interval",et[et.Custom=4]="Custom",(ei=tP||(tP={}))[ei.None=0]="None",ei[ei.Text=1]="Text",ei[ei.Blocks=2]="Blocks",(en=tF||(tF={}))[en.Smooth=0]="Smooth",en[en.Immediate=1]="Immediate",(er=tB||(tB={}))[er.Auto=1]="Auto",er[er.Hidden=2]="Hidden",er[er.Visible=3]="Visible",(eo=tU||(tU={}))[eo.LTR=0]="LTR",eo[eo.RTL=1]="RTL",(es=tH||(tH={}))[es.Invoke=1]="Invoke",es[es.TriggerCharacter=2]="TriggerCharacter",es[es.ContentChange=3]="ContentChange",(ea=tV||(tV={}))[ea.File=0]="File",ea[ea.Module=1]="Module",ea[ea.Namespace=2]="Namespace",ea[ea.Package=3]="Package",ea[ea.Class=4]="Class",ea[ea.Method=5]="Method",ea[ea.Property=6]="Property",ea[ea.Field=7]="Field",ea[ea.Constructor=8]="Constructor",ea[ea.Enum=9]="Enum",ea[ea.Interface=10]="Interface",ea[ea.Function=11]="Function",ea[ea.Variable=12]="Variable",ea[ea.Constant=13]="Constant",ea[ea.String=14]="String",ea[ea.Number=15]="Number",ea[ea.Boolean=16]="Boolean",ea[ea.Array=17]="Array",ea[ea.Object=18]="Object",ea[ea.Key=19]="Key",ea[ea.Null=20]="Null",ea[ea.EnumMember=21]="EnumMember",ea[ea.Struct=22]="Struct",ea[ea.Event=23]="Event",ea[ea.Operator=24]="Operator",ea[ea.TypeParameter=25]="TypeParameter",(el=tW||(tW={}))[el.Deprecated=1]="Deprecated",(eh=tG||(tG={}))[eh.Hidden=0]="Hidden",eh[eh.Blink=1]="Blink",eh[eh.Smooth=2]="Smooth",eh[eh.Phase=3]="Phase",eh[eh.Expand=4]="Expand",eh[eh.Solid=5]="Solid",(eu=tz||(tz={}))[eu.Line=1]="Line",eu[eu.Block=2]="Block",eu[eu.Underline=3]="Underline",eu[eu.LineThin=4]="LineThin",eu[eu.BlockOutline=5]="BlockOutline",eu[eu.UnderlineThin=6]="UnderlineThin",(ed=tY||(tY={}))[ed.AlwaysGrowsWhenTypingAtEdges=0]="AlwaysGrowsWhenTypingAtEdges",ed[ed.NeverGrowsWhenTypingAtEdges=1]="NeverGrowsWhenTypingAtEdges",ed[ed.GrowsOnlyWhenTypingBefore=2]="GrowsOnlyWhenTypingBefore",ed[ed.GrowsOnlyWhenTypingAfter=3]="GrowsOnlyWhenTypingAfter",(ec=tK||(tK={}))[ec.None=0]="None",ec[ec.Same=1]="Same",ec[ec.Indent=2]="Indent",ec[ec.DeepIndent=3]="DeepIndent";class rM{static chord(e,t){return(e|(65535&t)<<16>>>0)>>>0}}function rk(){return{editor:void 0,languages:void 0,CancellationTokenSource:nD,Emitter:nT,KeyCode:tL,KeyMod:rM,Position:rE,Range:r_,Selection:rC,SelectionDirection:tU,MarkerSeverity:tN,MarkerTag:tI,Uri:rl,Token:rN}}rM.CtrlCmd=2048,rM.Shift=1024,rM.Alt=512,rM.WinCtrl=256,i(95656);class rP{get cachedValues(){return this._map}constructor(e){this.fn=e,this._map=new Map}get(e){if(this._map.has(e))return this._map.get(e);let t=this.fn(e);return this._map.set(e,t),t}}class rF{constructor(e){this.executor=e,this._didRun=!1}get value(){if(!this._didRun)try{this._value=this.executor()}catch(e){this._error=e}finally{this._didRun=!0}if(this._error)throw this._error;return this._value}get rawValue(){return this._value}}let rB=/{(\d+)}/g;function rU(e,...t){return 0===t.length?e:e.replace(rB,function(e,i){let n=parseInt(i,10);return isNaN(n)||n<0||n>=t.length?e:t[n]})}function rH(e){return e.replace(/[<>&]/g,function(e){switch(e){case"<":return"<";case">":return">";case"&":return"&";default:return e}})}function rV(e){return e.replace(/[\\\{\}\*\+\?\|\^\$\.\[\]\(\)]/g,"\\$&")}function rW(e,t){if(!e||!t)return e;let i=t.length;if(0===i||0===e.length)return e;let n=0;for(;e.indexOf(t,n)===n;)n+=i;return e.substring(n)}function rG(e,t,i={}){if(!e)throw Error("Cannot create regex from empty string");t||(e=rV(e)),i.wholeWord&&(/\B/.test(e.charAt(0))||(e="\\b"+e),/\B/.test(e.charAt(e.length-1))||(e+="\\b"));let n="";return i.global&&(n+="g"),i.matchCase||(n+="i"),i.multiline&&(n+="m"),i.unicode&&(n+="u"),new RegExp(e,n)}function rz(e){return(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")}function rY(e){return e.split(/\r\n|\r|\n/)}function rK(e){for(let t=0,i=e.length;t=0;i--){let t=e.charCodeAt(i);if(32!==t&&9!==t)return i}return -1}function rj(e,t){return et?1:0}function rq(e,t,i=0,n=e.length,r=0,o=t.length){for(;io)return 1}let s=n-i,a=o-r;return sa?1:0}function rZ(e,t){return rJ(e,t,0,e.length,0,t.length)}function rJ(e,t,i=0,n=e.length,r=0,o=t.length){for(;i=128||a>=128)return rq(e.toLowerCase(),t.toLowerCase(),i,n,r,o);r0(s)&&(s-=32),r0(a)&&(a-=32);let l=s-a;if(0!==l)return l}let s=n-i,a=o-r;return sa?1:0}function rQ(e){return e>=48&&e<=57}function r0(e){return e>=97&&e<=122}function r1(e){return e>=65&&e<=90}function r2(e,t){return e.length===t.length&&0===rJ(e,t)}function r4(e,t){let i=t.length;return!(t.length>e.length)&&0===rJ(e,t,0,i)}function r5(e,t){let i;let n=Math.min(e.length,t.length);for(i=0;i1){let n=e.charCodeAt(t-2);if(r3(n))return r7(n,i)}return i}(this._str,this._offset);return this._offset-=e>=65536?2:1,e}nextCodePoint(){let e=r8(this._str,this._len,this._offset);return this._offset+=e>=65536?2:1,e}eol(){return this._offset>=this._len}}class ot{get offset(){return this._iterator.offset}constructor(e,t=0){this._iterator=new oe(e,t)}nextGraphemeLength(){let e=op.getInstance(),t=this._iterator,i=t.offset,n=e.getGraphemeBreakType(t.nextCodePoint());for(;!t.eol();){let i=t.offset,r=e.getGraphemeBreakType(t.nextCodePoint());if(og(n,r)){t.setOffset(i);break}n=r}return t.offset-i}prevGraphemeLength(){let e=op.getInstance(),t=this._iterator,i=t.offset,n=e.getGraphemeBreakType(t.prevCodePoint());for(;t.offset>0;){let i=t.offset,r=e.getGraphemeBreakType(t.prevCodePoint());if(og(r,n)){t.setOffset(i);break}n=r}return i-t.offset}eol(){return this._iterator.eol()}}function oi(e,t){let i=new ot(e,t);return i.nextGraphemeLength()}function on(e,t){let i=new ot(e,t);return i.prevGraphemeLength()}function or(e){return E||(E=/(?:[\u05BE\u05C0\u05C3\u05C6\u05D0-\u05F4\u0608\u060B\u060D\u061B-\u064A\u066D-\u066F\u0671-\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u0710\u0712-\u072F\u074D-\u07A5\u07B1-\u07EA\u07F4\u07F5\u07FA\u07FE-\u0815\u081A\u0824\u0828\u0830-\u0858\u085E-\u088E\u08A0-\u08C9\u200F\uFB1D\uFB1F-\uFB28\uFB2A-\uFD3D\uFD50-\uFDC7\uFDF0-\uFDFC\uFE70-\uFEFC]|\uD802[\uDC00-\uDD1B\uDD20-\uDE00\uDE10-\uDE35\uDE40-\uDEE4\uDEEB-\uDF35\uDF40-\uDFFF]|\uD803[\uDC00-\uDD23\uDE80-\uDEA9\uDEAD-\uDF45\uDF51-\uDF81\uDF86-\uDFF6]|\uD83A[\uDC00-\uDCCF\uDD00-\uDD43\uDD4B-\uDFFF]|\uD83B[\uDC00-\uDEBB])/),E.test(e)}let oo=/^[\t\n\r\x20-\x7E]*$/;function os(e){return oo.test(e)}let oa=/[\u2028\u2029]/;function ol(e){return e>=11904&&e<=55215||e>=63744&&e<=64255||e>=65281&&e<=65374}function oh(e){return e>=127462&&e<=127487||8986===e||8987===e||9200===e||9203===e||e>=9728&&e<=10175||11088===e||11093===e||e>=127744&&e<=128591||e>=128640&&e<=128764||e>=128992&&e<=129008||e>=129280&&e<=129535||e>=129648&&e<=129782}let ou=String.fromCharCode(65279);function od(e){return!!(e&&e.length>0&&65279===e.charCodeAt(0))}function oc(e){return(e%=52)<26?String.fromCharCode(97+e):String.fromCharCode(65+e-26)}function og(e,t){return 0===e?5!==t&&7!==t:(2!==e||3!==t)&&(4===e||2===e||3===e||4===t||2===t||3===t||(8!==e||8!==t&&9!==t&&11!==t&&12!==t)&&(11!==e&&9!==e||9!==t&&10!==t)&&(12!==e&&10!==e||10!==t)&&5!==t&&13!==t&&7!==t&&1!==e&&(13!==e||14!==t)&&(6!==e||6!==t))}class op{static getInstance(){return op._INSTANCE||(op._INSTANCE=new op),op._INSTANCE}constructor(){this._data=JSON.parse("[0,0,0,51229,51255,12,44061,44087,12,127462,127487,6,7083,7085,5,47645,47671,12,54813,54839,12,128678,128678,14,3270,3270,5,9919,9923,14,45853,45879,12,49437,49463,12,53021,53047,12,71216,71218,7,128398,128399,14,129360,129374,14,2519,2519,5,4448,4519,9,9742,9742,14,12336,12336,14,44957,44983,12,46749,46775,12,48541,48567,12,50333,50359,12,52125,52151,12,53917,53943,12,69888,69890,5,73018,73018,5,127990,127990,14,128558,128559,14,128759,128760,14,129653,129655,14,2027,2035,5,2891,2892,7,3761,3761,5,6683,6683,5,8293,8293,4,9825,9826,14,9999,9999,14,43452,43453,5,44509,44535,12,45405,45431,12,46301,46327,12,47197,47223,12,48093,48119,12,48989,49015,12,49885,49911,12,50781,50807,12,51677,51703,12,52573,52599,12,53469,53495,12,54365,54391,12,65279,65279,4,70471,70472,7,72145,72147,7,119173,119179,5,127799,127818,14,128240,128244,14,128512,128512,14,128652,128652,14,128721,128722,14,129292,129292,14,129445,129450,14,129734,129743,14,1476,1477,5,2366,2368,7,2750,2752,7,3076,3076,5,3415,3415,5,4141,4144,5,6109,6109,5,6964,6964,5,7394,7400,5,9197,9198,14,9770,9770,14,9877,9877,14,9968,9969,14,10084,10084,14,43052,43052,5,43713,43713,5,44285,44311,12,44733,44759,12,45181,45207,12,45629,45655,12,46077,46103,12,46525,46551,12,46973,46999,12,47421,47447,12,47869,47895,12,48317,48343,12,48765,48791,12,49213,49239,12,49661,49687,12,50109,50135,12,50557,50583,12,51005,51031,12,51453,51479,12,51901,51927,12,52349,52375,12,52797,52823,12,53245,53271,12,53693,53719,12,54141,54167,12,54589,54615,12,55037,55063,12,69506,69509,5,70191,70193,5,70841,70841,7,71463,71467,5,72330,72342,5,94031,94031,5,123628,123631,5,127763,127765,14,127941,127941,14,128043,128062,14,128302,128317,14,128465,128467,14,128539,128539,14,128640,128640,14,128662,128662,14,128703,128703,14,128745,128745,14,129004,129007,14,129329,129330,14,129402,129402,14,129483,129483,14,129686,129704,14,130048,131069,14,173,173,4,1757,1757,1,2200,2207,5,2434,2435,7,2631,2632,5,2817,2817,5,3008,3008,5,3201,3201,5,3387,3388,5,3542,3542,5,3902,3903,7,4190,4192,5,6002,6003,5,6439,6440,5,6765,6770,7,7019,7027,5,7154,7155,7,8205,8205,13,8505,8505,14,9654,9654,14,9757,9757,14,9792,9792,14,9852,9853,14,9890,9894,14,9937,9937,14,9981,9981,14,10035,10036,14,11035,11036,14,42654,42655,5,43346,43347,7,43587,43587,5,44006,44007,7,44173,44199,12,44397,44423,12,44621,44647,12,44845,44871,12,45069,45095,12,45293,45319,12,45517,45543,12,45741,45767,12,45965,45991,12,46189,46215,12,46413,46439,12,46637,46663,12,46861,46887,12,47085,47111,12,47309,47335,12,47533,47559,12,47757,47783,12,47981,48007,12,48205,48231,12,48429,48455,12,48653,48679,12,48877,48903,12,49101,49127,12,49325,49351,12,49549,49575,12,49773,49799,12,49997,50023,12,50221,50247,12,50445,50471,12,50669,50695,12,50893,50919,12,51117,51143,12,51341,51367,12,51565,51591,12,51789,51815,12,52013,52039,12,52237,52263,12,52461,52487,12,52685,52711,12,52909,52935,12,53133,53159,12,53357,53383,12,53581,53607,12,53805,53831,12,54029,54055,12,54253,54279,12,54477,54503,12,54701,54727,12,54925,54951,12,55149,55175,12,68101,68102,5,69762,69762,7,70067,70069,7,70371,70378,5,70720,70721,7,71087,71087,5,71341,71341,5,71995,71996,5,72249,72249,7,72850,72871,5,73109,73109,5,118576,118598,5,121505,121519,5,127245,127247,14,127568,127569,14,127777,127777,14,127872,127891,14,127956,127967,14,128015,128016,14,128110,128172,14,128259,128259,14,128367,128368,14,128424,128424,14,128488,128488,14,128530,128532,14,128550,128551,14,128566,128566,14,128647,128647,14,128656,128656,14,128667,128673,14,128691,128693,14,128715,128715,14,128728,128732,14,128752,128752,14,128765,128767,14,129096,129103,14,129311,129311,14,129344,129349,14,129394,129394,14,129413,129425,14,129466,129471,14,129511,129535,14,129664,129666,14,129719,129722,14,129760,129767,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2307,2307,7,2382,2383,7,2497,2500,5,2563,2563,7,2677,2677,5,2763,2764,7,2879,2879,5,2914,2915,5,3021,3021,5,3142,3144,5,3263,3263,5,3285,3286,5,3398,3400,7,3530,3530,5,3633,3633,5,3864,3865,5,3974,3975,5,4155,4156,7,4229,4230,5,5909,5909,7,6078,6085,7,6277,6278,5,6451,6456,7,6744,6750,5,6846,6846,5,6972,6972,5,7074,7077,5,7146,7148,7,7222,7223,5,7416,7417,5,8234,8238,4,8417,8417,5,9000,9000,14,9203,9203,14,9730,9731,14,9748,9749,14,9762,9763,14,9776,9783,14,9800,9811,14,9831,9831,14,9872,9873,14,9882,9882,14,9900,9903,14,9929,9933,14,9941,9960,14,9974,9974,14,9989,9989,14,10006,10006,14,10062,10062,14,10160,10160,14,11647,11647,5,12953,12953,14,43019,43019,5,43232,43249,5,43443,43443,5,43567,43568,7,43696,43696,5,43765,43765,7,44013,44013,5,44117,44143,12,44229,44255,12,44341,44367,12,44453,44479,12,44565,44591,12,44677,44703,12,44789,44815,12,44901,44927,12,45013,45039,12,45125,45151,12,45237,45263,12,45349,45375,12,45461,45487,12,45573,45599,12,45685,45711,12,45797,45823,12,45909,45935,12,46021,46047,12,46133,46159,12,46245,46271,12,46357,46383,12,46469,46495,12,46581,46607,12,46693,46719,12,46805,46831,12,46917,46943,12,47029,47055,12,47141,47167,12,47253,47279,12,47365,47391,12,47477,47503,12,47589,47615,12,47701,47727,12,47813,47839,12,47925,47951,12,48037,48063,12,48149,48175,12,48261,48287,12,48373,48399,12,48485,48511,12,48597,48623,12,48709,48735,12,48821,48847,12,48933,48959,12,49045,49071,12,49157,49183,12,49269,49295,12,49381,49407,12,49493,49519,12,49605,49631,12,49717,49743,12,49829,49855,12,49941,49967,12,50053,50079,12,50165,50191,12,50277,50303,12,50389,50415,12,50501,50527,12,50613,50639,12,50725,50751,12,50837,50863,12,50949,50975,12,51061,51087,12,51173,51199,12,51285,51311,12,51397,51423,12,51509,51535,12,51621,51647,12,51733,51759,12,51845,51871,12,51957,51983,12,52069,52095,12,52181,52207,12,52293,52319,12,52405,52431,12,52517,52543,12,52629,52655,12,52741,52767,12,52853,52879,12,52965,52991,12,53077,53103,12,53189,53215,12,53301,53327,12,53413,53439,12,53525,53551,12,53637,53663,12,53749,53775,12,53861,53887,12,53973,53999,12,54085,54111,12,54197,54223,12,54309,54335,12,54421,54447,12,54533,54559,12,54645,54671,12,54757,54783,12,54869,54895,12,54981,55007,12,55093,55119,12,55243,55291,10,66045,66045,5,68325,68326,5,69688,69702,5,69817,69818,5,69957,69958,7,70089,70092,5,70198,70199,5,70462,70462,5,70502,70508,5,70750,70750,5,70846,70846,7,71100,71101,5,71230,71230,7,71351,71351,5,71737,71738,5,72000,72000,7,72160,72160,5,72273,72278,5,72752,72758,5,72882,72883,5,73031,73031,5,73461,73462,7,94192,94193,7,119149,119149,7,121403,121452,5,122915,122916,5,126980,126980,14,127358,127359,14,127535,127535,14,127759,127759,14,127771,127771,14,127792,127793,14,127825,127867,14,127897,127899,14,127945,127945,14,127985,127986,14,128000,128007,14,128021,128021,14,128066,128100,14,128184,128235,14,128249,128252,14,128266,128276,14,128335,128335,14,128379,128390,14,128407,128419,14,128444,128444,14,128481,128481,14,128499,128499,14,128526,128526,14,128536,128536,14,128543,128543,14,128556,128556,14,128564,128564,14,128577,128580,14,128643,128645,14,128649,128649,14,128654,128654,14,128660,128660,14,128664,128664,14,128675,128675,14,128686,128689,14,128695,128696,14,128705,128709,14,128717,128719,14,128725,128725,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129009,129023,14,129160,129167,14,129296,129304,14,129320,129327,14,129340,129342,14,129356,129356,14,129388,129392,14,129399,129400,14,129404,129407,14,129432,129442,14,129454,129455,14,129473,129474,14,129485,129487,14,129648,129651,14,129659,129660,14,129671,129679,14,129709,129711,14,129728,129730,14,129751,129753,14,129776,129782,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2274,2274,1,2363,2363,7,2377,2380,7,2402,2403,5,2494,2494,5,2507,2508,7,2558,2558,5,2622,2624,7,2641,2641,5,2691,2691,7,2759,2760,5,2786,2787,5,2876,2876,5,2881,2884,5,2901,2902,5,3006,3006,5,3014,3016,7,3072,3072,5,3134,3136,5,3157,3158,5,3260,3260,5,3266,3266,5,3274,3275,7,3328,3329,5,3391,3392,7,3405,3405,5,3457,3457,5,3536,3537,7,3551,3551,5,3636,3642,5,3764,3772,5,3895,3895,5,3967,3967,7,3993,4028,5,4146,4151,5,4182,4183,7,4226,4226,5,4253,4253,5,4957,4959,5,5940,5940,7,6070,6070,7,6087,6088,7,6158,6158,4,6432,6434,5,6448,6449,7,6679,6680,5,6742,6742,5,6754,6754,5,6783,6783,5,6912,6915,5,6966,6970,5,6978,6978,5,7042,7042,7,7080,7081,5,7143,7143,7,7150,7150,7,7212,7219,5,7380,7392,5,7412,7412,5,8203,8203,4,8232,8232,4,8265,8265,14,8400,8412,5,8421,8432,5,8617,8618,14,9167,9167,14,9200,9200,14,9410,9410,14,9723,9726,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9774,14,9786,9786,14,9794,9794,14,9823,9823,14,9828,9828,14,9833,9850,14,9855,9855,14,9875,9875,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9935,9935,14,9939,9939,14,9962,9962,14,9972,9972,14,9978,9978,14,9986,9986,14,9997,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10133,10135,14,10548,10549,14,11093,11093,14,12330,12333,5,12441,12442,5,42608,42610,5,43010,43010,5,43045,43046,5,43188,43203,7,43302,43309,5,43392,43394,5,43446,43449,5,43493,43493,5,43571,43572,7,43597,43597,7,43703,43704,5,43756,43757,5,44003,44004,7,44009,44010,7,44033,44059,12,44089,44115,12,44145,44171,12,44201,44227,12,44257,44283,12,44313,44339,12,44369,44395,12,44425,44451,12,44481,44507,12,44537,44563,12,44593,44619,12,44649,44675,12,44705,44731,12,44761,44787,12,44817,44843,12,44873,44899,12,44929,44955,12,44985,45011,12,45041,45067,12,45097,45123,12,45153,45179,12,45209,45235,12,45265,45291,12,45321,45347,12,45377,45403,12,45433,45459,12,45489,45515,12,45545,45571,12,45601,45627,12,45657,45683,12,45713,45739,12,45769,45795,12,45825,45851,12,45881,45907,12,45937,45963,12,45993,46019,12,46049,46075,12,46105,46131,12,46161,46187,12,46217,46243,12,46273,46299,12,46329,46355,12,46385,46411,12,46441,46467,12,46497,46523,12,46553,46579,12,46609,46635,12,46665,46691,12,46721,46747,12,46777,46803,12,46833,46859,12,46889,46915,12,46945,46971,12,47001,47027,12,47057,47083,12,47113,47139,12,47169,47195,12,47225,47251,12,47281,47307,12,47337,47363,12,47393,47419,12,47449,47475,12,47505,47531,12,47561,47587,12,47617,47643,12,47673,47699,12,47729,47755,12,47785,47811,12,47841,47867,12,47897,47923,12,47953,47979,12,48009,48035,12,48065,48091,12,48121,48147,12,48177,48203,12,48233,48259,12,48289,48315,12,48345,48371,12,48401,48427,12,48457,48483,12,48513,48539,12,48569,48595,12,48625,48651,12,48681,48707,12,48737,48763,12,48793,48819,12,48849,48875,12,48905,48931,12,48961,48987,12,49017,49043,12,49073,49099,12,49129,49155,12,49185,49211,12,49241,49267,12,49297,49323,12,49353,49379,12,49409,49435,12,49465,49491,12,49521,49547,12,49577,49603,12,49633,49659,12,49689,49715,12,49745,49771,12,49801,49827,12,49857,49883,12,49913,49939,12,49969,49995,12,50025,50051,12,50081,50107,12,50137,50163,12,50193,50219,12,50249,50275,12,50305,50331,12,50361,50387,12,50417,50443,12,50473,50499,12,50529,50555,12,50585,50611,12,50641,50667,12,50697,50723,12,50753,50779,12,50809,50835,12,50865,50891,12,50921,50947,12,50977,51003,12,51033,51059,12,51089,51115,12,51145,51171,12,51201,51227,12,51257,51283,12,51313,51339,12,51369,51395,12,51425,51451,12,51481,51507,12,51537,51563,12,51593,51619,12,51649,51675,12,51705,51731,12,51761,51787,12,51817,51843,12,51873,51899,12,51929,51955,12,51985,52011,12,52041,52067,12,52097,52123,12,52153,52179,12,52209,52235,12,52265,52291,12,52321,52347,12,52377,52403,12,52433,52459,12,52489,52515,12,52545,52571,12,52601,52627,12,52657,52683,12,52713,52739,12,52769,52795,12,52825,52851,12,52881,52907,12,52937,52963,12,52993,53019,12,53049,53075,12,53105,53131,12,53161,53187,12,53217,53243,12,53273,53299,12,53329,53355,12,53385,53411,12,53441,53467,12,53497,53523,12,53553,53579,12,53609,53635,12,53665,53691,12,53721,53747,12,53777,53803,12,53833,53859,12,53889,53915,12,53945,53971,12,54001,54027,12,54057,54083,12,54113,54139,12,54169,54195,12,54225,54251,12,54281,54307,12,54337,54363,12,54393,54419,12,54449,54475,12,54505,54531,12,54561,54587,12,54617,54643,12,54673,54699,12,54729,54755,12,54785,54811,12,54841,54867,12,54897,54923,12,54953,54979,12,55009,55035,12,55065,55091,12,55121,55147,12,55177,55203,12,65024,65039,5,65520,65528,4,66422,66426,5,68152,68154,5,69291,69292,5,69633,69633,5,69747,69748,5,69811,69814,5,69826,69826,5,69932,69932,7,70016,70017,5,70079,70080,7,70095,70095,5,70196,70196,5,70367,70367,5,70402,70403,7,70464,70464,5,70487,70487,5,70709,70711,7,70725,70725,7,70833,70834,7,70843,70844,7,70849,70849,7,71090,71093,5,71103,71104,5,71227,71228,7,71339,71339,5,71344,71349,5,71458,71461,5,71727,71735,5,71985,71989,7,71998,71998,5,72002,72002,7,72154,72155,5,72193,72202,5,72251,72254,5,72281,72283,5,72344,72345,5,72766,72766,7,72874,72880,5,72885,72886,5,73023,73029,5,73104,73105,5,73111,73111,5,92912,92916,5,94095,94098,5,113824,113827,4,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,125252,125258,5,127183,127183,14,127340,127343,14,127377,127386,14,127491,127503,14,127548,127551,14,127744,127756,14,127761,127761,14,127769,127769,14,127773,127774,14,127780,127788,14,127796,127797,14,127820,127823,14,127869,127869,14,127894,127895,14,127902,127903,14,127943,127943,14,127947,127950,14,127972,127972,14,127988,127988,14,127992,127994,14,128009,128011,14,128019,128019,14,128023,128041,14,128064,128064,14,128102,128107,14,128174,128181,14,128238,128238,14,128246,128247,14,128254,128254,14,128264,128264,14,128278,128299,14,128329,128330,14,128348,128359,14,128371,128377,14,128392,128393,14,128401,128404,14,128421,128421,14,128433,128434,14,128450,128452,14,128476,128478,14,128483,128483,14,128495,128495,14,128506,128506,14,128519,128520,14,128528,128528,14,128534,128534,14,128538,128538,14,128540,128542,14,128544,128549,14,128552,128555,14,128557,128557,14,128560,128563,14,128565,128565,14,128567,128576,14,128581,128591,14,128641,128642,14,128646,128646,14,128648,128648,14,128650,128651,14,128653,128653,14,128655,128655,14,128657,128659,14,128661,128661,14,128663,128663,14,128665,128666,14,128674,128674,14,128676,128677,14,128679,128685,14,128690,128690,14,128694,128694,14,128697,128702,14,128704,128704,14,128710,128714,14,128716,128716,14,128720,128720,14,128723,128724,14,128726,128727,14,128733,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129008,129008,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129661,129663,14,129667,129670,14,129680,129685,14,129705,129708,14,129712,129718,14,129723,129727,14,129731,129733,14,129744,129750,14,129754,129759,14,129768,129775,14,129783,129791,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2192,2193,1,2250,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3132,3132,5,3137,3140,7,3146,3149,5,3170,3171,5,3202,3203,7,3262,3262,7,3264,3265,7,3267,3268,7,3271,3272,7,3276,3277,5,3298,3299,5,3330,3331,7,3390,3390,5,3393,3396,5,3402,3404,7,3406,3406,1,3426,3427,5,3458,3459,7,3535,3535,5,3538,3540,5,3544,3550,7,3570,3571,7,3635,3635,7,3655,3662,5,3763,3763,7,3784,3789,5,3893,3893,5,3897,3897,5,3953,3966,5,3968,3972,5,3981,3991,5,4038,4038,5,4145,4145,7,4153,4154,5,4157,4158,5,4184,4185,5,4209,4212,5,4228,4228,7,4237,4237,5,4352,4447,8,4520,4607,10,5906,5908,5,5938,5939,5,5970,5971,5,6068,6069,5,6071,6077,5,6086,6086,5,6089,6099,5,6155,6157,5,6159,6159,5,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6862,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7679,5,8204,8204,5,8206,8207,4,8233,8233,4,8252,8252,14,8288,8292,4,8294,8303,4,8413,8416,5,8418,8420,5,8482,8482,14,8596,8601,14,8986,8987,14,9096,9096,14,9193,9196,14,9199,9199,14,9201,9202,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9729,14,9732,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9775,9775,14,9784,9785,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9874,14,9876,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9934,14,9936,9936,14,9938,9938,14,9940,9940,14,9961,9961,14,9963,9967,14,9970,9971,14,9973,9973,14,9975,9977,14,9979,9980,14,9982,9985,14,9987,9988,14,9992,9996,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10083,14,10085,10087,14,10145,10145,14,10175,10175,14,11013,11015,14,11088,11088,14,11503,11505,5,11744,11775,5,12334,12335,5,12349,12349,14,12951,12951,14,42607,42607,5,42612,42621,5,42736,42737,5,43014,43014,5,43043,43044,7,43047,43047,7,43136,43137,7,43204,43205,5,43263,43263,5,43335,43345,5,43360,43388,8,43395,43395,7,43444,43445,7,43450,43451,7,43454,43456,7,43561,43566,5,43569,43570,5,43573,43574,5,43596,43596,5,43644,43644,5,43698,43700,5,43710,43711,5,43755,43755,7,43758,43759,7,43766,43766,5,44005,44005,5,44008,44008,5,44012,44012,7,44032,44032,11,44060,44060,11,44088,44088,11,44116,44116,11,44144,44144,11,44172,44172,11,44200,44200,11,44228,44228,11,44256,44256,11,44284,44284,11,44312,44312,11,44340,44340,11,44368,44368,11,44396,44396,11,44424,44424,11,44452,44452,11,44480,44480,11,44508,44508,11,44536,44536,11,44564,44564,11,44592,44592,11,44620,44620,11,44648,44648,11,44676,44676,11,44704,44704,11,44732,44732,11,44760,44760,11,44788,44788,11,44816,44816,11,44844,44844,11,44872,44872,11,44900,44900,11,44928,44928,11,44956,44956,11,44984,44984,11,45012,45012,11,45040,45040,11,45068,45068,11,45096,45096,11,45124,45124,11,45152,45152,11,45180,45180,11,45208,45208,11,45236,45236,11,45264,45264,11,45292,45292,11,45320,45320,11,45348,45348,11,45376,45376,11,45404,45404,11,45432,45432,11,45460,45460,11,45488,45488,11,45516,45516,11,45544,45544,11,45572,45572,11,45600,45600,11,45628,45628,11,45656,45656,11,45684,45684,11,45712,45712,11,45740,45740,11,45768,45768,11,45796,45796,11,45824,45824,11,45852,45852,11,45880,45880,11,45908,45908,11,45936,45936,11,45964,45964,11,45992,45992,11,46020,46020,11,46048,46048,11,46076,46076,11,46104,46104,11,46132,46132,11,46160,46160,11,46188,46188,11,46216,46216,11,46244,46244,11,46272,46272,11,46300,46300,11,46328,46328,11,46356,46356,11,46384,46384,11,46412,46412,11,46440,46440,11,46468,46468,11,46496,46496,11,46524,46524,11,46552,46552,11,46580,46580,11,46608,46608,11,46636,46636,11,46664,46664,11,46692,46692,11,46720,46720,11,46748,46748,11,46776,46776,11,46804,46804,11,46832,46832,11,46860,46860,11,46888,46888,11,46916,46916,11,46944,46944,11,46972,46972,11,47000,47000,11,47028,47028,11,47056,47056,11,47084,47084,11,47112,47112,11,47140,47140,11,47168,47168,11,47196,47196,11,47224,47224,11,47252,47252,11,47280,47280,11,47308,47308,11,47336,47336,11,47364,47364,11,47392,47392,11,47420,47420,11,47448,47448,11,47476,47476,11,47504,47504,11,47532,47532,11,47560,47560,11,47588,47588,11,47616,47616,11,47644,47644,11,47672,47672,11,47700,47700,11,47728,47728,11,47756,47756,11,47784,47784,11,47812,47812,11,47840,47840,11,47868,47868,11,47896,47896,11,47924,47924,11,47952,47952,11,47980,47980,11,48008,48008,11,48036,48036,11,48064,48064,11,48092,48092,11,48120,48120,11,48148,48148,11,48176,48176,11,48204,48204,11,48232,48232,11,48260,48260,11,48288,48288,11,48316,48316,11,48344,48344,11,48372,48372,11,48400,48400,11,48428,48428,11,48456,48456,11,48484,48484,11,48512,48512,11,48540,48540,11,48568,48568,11,48596,48596,11,48624,48624,11,48652,48652,11,48680,48680,11,48708,48708,11,48736,48736,11,48764,48764,11,48792,48792,11,48820,48820,11,48848,48848,11,48876,48876,11,48904,48904,11,48932,48932,11,48960,48960,11,48988,48988,11,49016,49016,11,49044,49044,11,49072,49072,11,49100,49100,11,49128,49128,11,49156,49156,11,49184,49184,11,49212,49212,11,49240,49240,11,49268,49268,11,49296,49296,11,49324,49324,11,49352,49352,11,49380,49380,11,49408,49408,11,49436,49436,11,49464,49464,11,49492,49492,11,49520,49520,11,49548,49548,11,49576,49576,11,49604,49604,11,49632,49632,11,49660,49660,11,49688,49688,11,49716,49716,11,49744,49744,11,49772,49772,11,49800,49800,11,49828,49828,11,49856,49856,11,49884,49884,11,49912,49912,11,49940,49940,11,49968,49968,11,49996,49996,11,50024,50024,11,50052,50052,11,50080,50080,11,50108,50108,11,50136,50136,11,50164,50164,11,50192,50192,11,50220,50220,11,50248,50248,11,50276,50276,11,50304,50304,11,50332,50332,11,50360,50360,11,50388,50388,11,50416,50416,11,50444,50444,11,50472,50472,11,50500,50500,11,50528,50528,11,50556,50556,11,50584,50584,11,50612,50612,11,50640,50640,11,50668,50668,11,50696,50696,11,50724,50724,11,50752,50752,11,50780,50780,11,50808,50808,11,50836,50836,11,50864,50864,11,50892,50892,11,50920,50920,11,50948,50948,11,50976,50976,11,51004,51004,11,51032,51032,11,51060,51060,11,51088,51088,11,51116,51116,11,51144,51144,11,51172,51172,11,51200,51200,11,51228,51228,11,51256,51256,11,51284,51284,11,51312,51312,11,51340,51340,11,51368,51368,11,51396,51396,11,51424,51424,11,51452,51452,11,51480,51480,11,51508,51508,11,51536,51536,11,51564,51564,11,51592,51592,11,51620,51620,11,51648,51648,11,51676,51676,11,51704,51704,11,51732,51732,11,51760,51760,11,51788,51788,11,51816,51816,11,51844,51844,11,51872,51872,11,51900,51900,11,51928,51928,11,51956,51956,11,51984,51984,11,52012,52012,11,52040,52040,11,52068,52068,11,52096,52096,11,52124,52124,11,52152,52152,11,52180,52180,11,52208,52208,11,52236,52236,11,52264,52264,11,52292,52292,11,52320,52320,11,52348,52348,11,52376,52376,11,52404,52404,11,52432,52432,11,52460,52460,11,52488,52488,11,52516,52516,11,52544,52544,11,52572,52572,11,52600,52600,11,52628,52628,11,52656,52656,11,52684,52684,11,52712,52712,11,52740,52740,11,52768,52768,11,52796,52796,11,52824,52824,11,52852,52852,11,52880,52880,11,52908,52908,11,52936,52936,11,52964,52964,11,52992,52992,11,53020,53020,11,53048,53048,11,53076,53076,11,53104,53104,11,53132,53132,11,53160,53160,11,53188,53188,11,53216,53216,11,53244,53244,11,53272,53272,11,53300,53300,11,53328,53328,11,53356,53356,11,53384,53384,11,53412,53412,11,53440,53440,11,53468,53468,11,53496,53496,11,53524,53524,11,53552,53552,11,53580,53580,11,53608,53608,11,53636,53636,11,53664,53664,11,53692,53692,11,53720,53720,11,53748,53748,11,53776,53776,11,53804,53804,11,53832,53832,11,53860,53860,11,53888,53888,11,53916,53916,11,53944,53944,11,53972,53972,11,54000,54000,11,54028,54028,11,54056,54056,11,54084,54084,11,54112,54112,11,54140,54140,11,54168,54168,11,54196,54196,11,54224,54224,11,54252,54252,11,54280,54280,11,54308,54308,11,54336,54336,11,54364,54364,11,54392,54392,11,54420,54420,11,54448,54448,11,54476,54476,11,54504,54504,11,54532,54532,11,54560,54560,11,54588,54588,11,54616,54616,11,54644,54644,11,54672,54672,11,54700,54700,11,54728,54728,11,54756,54756,11,54784,54784,11,54812,54812,11,54840,54840,11,54868,54868,11,54896,54896,11,54924,54924,11,54952,54952,11,54980,54980,11,55008,55008,11,55036,55036,11,55064,55064,11,55092,55092,11,55120,55120,11,55148,55148,11,55176,55176,11,55216,55238,9,64286,64286,5,65056,65071,5,65438,65439,5,65529,65531,4,66272,66272,5,68097,68099,5,68108,68111,5,68159,68159,5,68900,68903,5,69446,69456,5,69632,69632,7,69634,69634,7,69744,69744,5,69759,69761,5,69808,69810,7,69815,69816,7,69821,69821,1,69837,69837,1,69927,69931,5,69933,69940,5,70003,70003,5,70018,70018,7,70070,70078,5,70082,70083,1,70094,70094,7,70188,70190,7,70194,70195,7,70197,70197,7,70206,70206,5,70368,70370,7,70400,70401,5,70459,70460,5,70463,70463,7,70465,70468,7,70475,70477,7,70498,70499,7,70512,70516,5,70712,70719,5,70722,70724,5,70726,70726,5,70832,70832,5,70835,70840,5,70842,70842,5,70845,70845,5,70847,70848,5,70850,70851,5,71088,71089,7,71096,71099,7,71102,71102,7,71132,71133,5,71219,71226,5,71229,71229,5,71231,71232,5,71340,71340,7,71342,71343,7,71350,71350,7,71453,71455,5,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,118528,118573,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123566,123566,5,125136,125142,5,126976,126979,14,126981,127182,14,127184,127231,14,127279,127279,14,127344,127345,14,127374,127374,14,127405,127461,14,127489,127490,14,127514,127514,14,127538,127546,14,127561,127567,14,127570,127743,14,127757,127758,14,127760,127760,14,127762,127762,14,127766,127768,14,127770,127770,14,127772,127772,14,127775,127776,14,127778,127779,14,127789,127791,14,127794,127795,14,127798,127798,14,127819,127819,14,127824,127824,14,127868,127868,14,127870,127871,14,127892,127893,14,127896,127896,14,127900,127901,14,127904,127940,14,127942,127942,14,127944,127944,14,127946,127946,14,127951,127955,14,127968,127971,14,127973,127984,14,127987,127987,14,127989,127989,14,127991,127991,14,127995,127999,5,128008,128008,14,128012,128014,14,128017,128018,14,128020,128020,14,128022,128022,14,128042,128042,14,128063,128063,14,128065,128065,14,128101,128101,14,128108,128109,14,128173,128173,14,128182,128183,14,128236,128237,14,128239,128239,14,128245,128245,14,128248,128248,14,128253,128253,14,128255,128258,14,128260,128263,14,128265,128265,14,128277,128277,14,128300,128301,14,128326,128328,14,128331,128334,14,128336,128347,14,128360,128366,14,128369,128370,14,128378,128378,14,128391,128391,14,128394,128397,14,128400,128400,14,128405,128406,14,128420,128420,14,128422,128423,14,128425,128432,14,128435,128443,14,128445,128449,14,128453,128464,14,128468,128475,14,128479,128480,14,128482,128482,14,128484,128487,14,128489,128494,14,128496,128498,14,128500,128505,14,128507,128511,14,128513,128518,14,128521,128525,14,128527,128527,14,128529,128529,14,128533,128533,14,128535,128535,14,128537,128537,14]")}getGraphemeBreakType(e){if(e<32)return 10===e?3:13===e?2:4;if(e<127)return 0;let t=this._data,i=t.length/3,n=1;for(;n<=i;)if(et[3*n+1]))return t[3*n+2];n=2*n+1}return 0}}op._INSTANCE=null;class of{static getInstance(e){return of.cache.get(Array.from(e))}static getLocales(){return of._locales.value}constructor(e){this.confusableDictionary=e}isAmbiguous(e){return this.confusableDictionary.has(e)}getPrimaryConfusable(e){return this.confusableDictionary.get(e)}getConfusableCodePoints(){return new Set(this.confusableDictionary.keys())}}of.ambiguousCharacterData=new rF(()=>JSON.parse('{"_common":[8232,32,8233,32,5760,32,8192,32,8193,32,8194,32,8195,32,8196,32,8197,32,8198,32,8200,32,8201,32,8202,32,8287,32,8199,32,8239,32,2042,95,65101,95,65102,95,65103,95,8208,45,8209,45,8210,45,65112,45,1748,45,8259,45,727,45,8722,45,10134,45,11450,45,1549,44,1643,44,8218,44,184,44,42233,44,894,59,2307,58,2691,58,1417,58,1795,58,1796,58,5868,58,65072,58,6147,58,6153,58,8282,58,1475,58,760,58,42889,58,8758,58,720,58,42237,58,451,33,11601,33,660,63,577,63,2429,63,5038,63,42731,63,119149,46,8228,46,1793,46,1794,46,42510,46,68176,46,1632,46,1776,46,42232,46,1373,96,65287,96,8219,96,8242,96,1370,96,1523,96,8175,96,65344,96,900,96,8189,96,8125,96,8127,96,8190,96,697,96,884,96,712,96,714,96,715,96,756,96,699,96,701,96,700,96,702,96,42892,96,1497,96,2036,96,2037,96,5194,96,5836,96,94033,96,94034,96,65339,91,10088,40,10098,40,12308,40,64830,40,65341,93,10089,41,10099,41,12309,41,64831,41,10100,123,119060,123,10101,125,65342,94,8270,42,1645,42,8727,42,66335,42,5941,47,8257,47,8725,47,8260,47,9585,47,10187,47,10744,47,119354,47,12755,47,12339,47,11462,47,20031,47,12035,47,65340,92,65128,92,8726,92,10189,92,10741,92,10745,92,119311,92,119355,92,12756,92,20022,92,12034,92,42872,38,708,94,710,94,5869,43,10133,43,66203,43,8249,60,10094,60,706,60,119350,60,5176,60,5810,60,5120,61,11840,61,12448,61,42239,61,8250,62,10095,62,707,62,119351,62,5171,62,94015,62,8275,126,732,126,8128,126,8764,126,65372,124,65293,45,120784,50,120794,50,120804,50,120814,50,120824,50,130034,50,42842,50,423,50,1000,50,42564,50,5311,50,42735,50,119302,51,120785,51,120795,51,120805,51,120815,51,120825,51,130035,51,42923,51,540,51,439,51,42858,51,11468,51,1248,51,94011,51,71882,51,120786,52,120796,52,120806,52,120816,52,120826,52,130036,52,5070,52,71855,52,120787,53,120797,53,120807,53,120817,53,120827,53,130037,53,444,53,71867,53,120788,54,120798,54,120808,54,120818,54,120828,54,130038,54,11474,54,5102,54,71893,54,119314,55,120789,55,120799,55,120809,55,120819,55,120829,55,130039,55,66770,55,71878,55,2819,56,2538,56,2666,56,125131,56,120790,56,120800,56,120810,56,120820,56,120830,56,130040,56,547,56,546,56,66330,56,2663,57,2920,57,2541,57,3437,57,120791,57,120801,57,120811,57,120821,57,120831,57,130041,57,42862,57,11466,57,71884,57,71852,57,71894,57,9082,97,65345,97,119834,97,119886,97,119938,97,119990,97,120042,97,120094,97,120146,97,120198,97,120250,97,120302,97,120354,97,120406,97,120458,97,593,97,945,97,120514,97,120572,97,120630,97,120688,97,120746,97,65313,65,119808,65,119860,65,119912,65,119964,65,120016,65,120068,65,120120,65,120172,65,120224,65,120276,65,120328,65,120380,65,120432,65,913,65,120488,65,120546,65,120604,65,120662,65,120720,65,5034,65,5573,65,42222,65,94016,65,66208,65,119835,98,119887,98,119939,98,119991,98,120043,98,120095,98,120147,98,120199,98,120251,98,120303,98,120355,98,120407,98,120459,98,388,98,5071,98,5234,98,5551,98,65314,66,8492,66,119809,66,119861,66,119913,66,120017,66,120069,66,120121,66,120173,66,120225,66,120277,66,120329,66,120381,66,120433,66,42932,66,914,66,120489,66,120547,66,120605,66,120663,66,120721,66,5108,66,5623,66,42192,66,66178,66,66209,66,66305,66,65347,99,8573,99,119836,99,119888,99,119940,99,119992,99,120044,99,120096,99,120148,99,120200,99,120252,99,120304,99,120356,99,120408,99,120460,99,7428,99,1010,99,11429,99,43951,99,66621,99,128844,67,71922,67,71913,67,65315,67,8557,67,8450,67,8493,67,119810,67,119862,67,119914,67,119966,67,120018,67,120174,67,120226,67,120278,67,120330,67,120382,67,120434,67,1017,67,11428,67,5087,67,42202,67,66210,67,66306,67,66581,67,66844,67,8574,100,8518,100,119837,100,119889,100,119941,100,119993,100,120045,100,120097,100,120149,100,120201,100,120253,100,120305,100,120357,100,120409,100,120461,100,1281,100,5095,100,5231,100,42194,100,8558,68,8517,68,119811,68,119863,68,119915,68,119967,68,120019,68,120071,68,120123,68,120175,68,120227,68,120279,68,120331,68,120383,68,120435,68,5024,68,5598,68,5610,68,42195,68,8494,101,65349,101,8495,101,8519,101,119838,101,119890,101,119942,101,120046,101,120098,101,120150,101,120202,101,120254,101,120306,101,120358,101,120410,101,120462,101,43826,101,1213,101,8959,69,65317,69,8496,69,119812,69,119864,69,119916,69,120020,69,120072,69,120124,69,120176,69,120228,69,120280,69,120332,69,120384,69,120436,69,917,69,120492,69,120550,69,120608,69,120666,69,120724,69,11577,69,5036,69,42224,69,71846,69,71854,69,66182,69,119839,102,119891,102,119943,102,119995,102,120047,102,120099,102,120151,102,120203,102,120255,102,120307,102,120359,102,120411,102,120463,102,43829,102,42905,102,383,102,7837,102,1412,102,119315,70,8497,70,119813,70,119865,70,119917,70,120021,70,120073,70,120125,70,120177,70,120229,70,120281,70,120333,70,120385,70,120437,70,42904,70,988,70,120778,70,5556,70,42205,70,71874,70,71842,70,66183,70,66213,70,66853,70,65351,103,8458,103,119840,103,119892,103,119944,103,120048,103,120100,103,120152,103,120204,103,120256,103,120308,103,120360,103,120412,103,120464,103,609,103,7555,103,397,103,1409,103,119814,71,119866,71,119918,71,119970,71,120022,71,120074,71,120126,71,120178,71,120230,71,120282,71,120334,71,120386,71,120438,71,1292,71,5056,71,5107,71,42198,71,65352,104,8462,104,119841,104,119945,104,119997,104,120049,104,120101,104,120153,104,120205,104,120257,104,120309,104,120361,104,120413,104,120465,104,1211,104,1392,104,5058,104,65320,72,8459,72,8460,72,8461,72,119815,72,119867,72,119919,72,120023,72,120179,72,120231,72,120283,72,120335,72,120387,72,120439,72,919,72,120494,72,120552,72,120610,72,120668,72,120726,72,11406,72,5051,72,5500,72,42215,72,66255,72,731,105,9075,105,65353,105,8560,105,8505,105,8520,105,119842,105,119894,105,119946,105,119998,105,120050,105,120102,105,120154,105,120206,105,120258,105,120310,105,120362,105,120414,105,120466,105,120484,105,618,105,617,105,953,105,8126,105,890,105,120522,105,120580,105,120638,105,120696,105,120754,105,1110,105,42567,105,1231,105,43893,105,5029,105,71875,105,65354,106,8521,106,119843,106,119895,106,119947,106,119999,106,120051,106,120103,106,120155,106,120207,106,120259,106,120311,106,120363,106,120415,106,120467,106,1011,106,1112,106,65322,74,119817,74,119869,74,119921,74,119973,74,120025,74,120077,74,120129,74,120181,74,120233,74,120285,74,120337,74,120389,74,120441,74,42930,74,895,74,1032,74,5035,74,5261,74,42201,74,119844,107,119896,107,119948,107,120000,107,120052,107,120104,107,120156,107,120208,107,120260,107,120312,107,120364,107,120416,107,120468,107,8490,75,65323,75,119818,75,119870,75,119922,75,119974,75,120026,75,120078,75,120130,75,120182,75,120234,75,120286,75,120338,75,120390,75,120442,75,922,75,120497,75,120555,75,120613,75,120671,75,120729,75,11412,75,5094,75,5845,75,42199,75,66840,75,1472,108,8739,73,9213,73,65512,73,1633,108,1777,73,66336,108,125127,108,120783,73,120793,73,120803,73,120813,73,120823,73,130033,73,65321,73,8544,73,8464,73,8465,73,119816,73,119868,73,119920,73,120024,73,120128,73,120180,73,120232,73,120284,73,120336,73,120388,73,120440,73,65356,108,8572,73,8467,108,119845,108,119897,108,119949,108,120001,108,120053,108,120105,73,120157,73,120209,73,120261,73,120313,73,120365,73,120417,73,120469,73,448,73,120496,73,120554,73,120612,73,120670,73,120728,73,11410,73,1030,73,1216,73,1493,108,1503,108,1575,108,126464,108,126592,108,65166,108,65165,108,1994,108,11599,73,5825,73,42226,73,93992,73,66186,124,66313,124,119338,76,8556,76,8466,76,119819,76,119871,76,119923,76,120027,76,120079,76,120131,76,120183,76,120235,76,120287,76,120339,76,120391,76,120443,76,11472,76,5086,76,5290,76,42209,76,93974,76,71843,76,71858,76,66587,76,66854,76,65325,77,8559,77,8499,77,119820,77,119872,77,119924,77,120028,77,120080,77,120132,77,120184,77,120236,77,120288,77,120340,77,120392,77,120444,77,924,77,120499,77,120557,77,120615,77,120673,77,120731,77,1018,77,11416,77,5047,77,5616,77,5846,77,42207,77,66224,77,66321,77,119847,110,119899,110,119951,110,120003,110,120055,110,120107,110,120159,110,120211,110,120263,110,120315,110,120367,110,120419,110,120471,110,1400,110,1404,110,65326,78,8469,78,119821,78,119873,78,119925,78,119977,78,120029,78,120081,78,120185,78,120237,78,120289,78,120341,78,120393,78,120445,78,925,78,120500,78,120558,78,120616,78,120674,78,120732,78,11418,78,42208,78,66835,78,3074,111,3202,111,3330,111,3458,111,2406,111,2662,111,2790,111,3046,111,3174,111,3302,111,3430,111,3664,111,3792,111,4160,111,1637,111,1781,111,65359,111,8500,111,119848,111,119900,111,119952,111,120056,111,120108,111,120160,111,120212,111,120264,111,120316,111,120368,111,120420,111,120472,111,7439,111,7441,111,43837,111,959,111,120528,111,120586,111,120644,111,120702,111,120760,111,963,111,120532,111,120590,111,120648,111,120706,111,120764,111,11423,111,4351,111,1413,111,1505,111,1607,111,126500,111,126564,111,126596,111,65259,111,65260,111,65258,111,65257,111,1726,111,64428,111,64429,111,64427,111,64426,111,1729,111,64424,111,64425,111,64423,111,64422,111,1749,111,3360,111,4125,111,66794,111,71880,111,71895,111,66604,111,1984,79,2534,79,2918,79,12295,79,70864,79,71904,79,120782,79,120792,79,120802,79,120812,79,120822,79,130032,79,65327,79,119822,79,119874,79,119926,79,119978,79,120030,79,120082,79,120134,79,120186,79,120238,79,120290,79,120342,79,120394,79,120446,79,927,79,120502,79,120560,79,120618,79,120676,79,120734,79,11422,79,1365,79,11604,79,4816,79,2848,79,66754,79,42227,79,71861,79,66194,79,66219,79,66564,79,66838,79,9076,112,65360,112,119849,112,119901,112,119953,112,120005,112,120057,112,120109,112,120161,112,120213,112,120265,112,120317,112,120369,112,120421,112,120473,112,961,112,120530,112,120544,112,120588,112,120602,112,120646,112,120660,112,120704,112,120718,112,120762,112,120776,112,11427,112,65328,80,8473,80,119823,80,119875,80,119927,80,119979,80,120031,80,120083,80,120187,80,120239,80,120291,80,120343,80,120395,80,120447,80,929,80,120504,80,120562,80,120620,80,120678,80,120736,80,11426,80,5090,80,5229,80,42193,80,66197,80,119850,113,119902,113,119954,113,120006,113,120058,113,120110,113,120162,113,120214,113,120266,113,120318,113,120370,113,120422,113,120474,113,1307,113,1379,113,1382,113,8474,81,119824,81,119876,81,119928,81,119980,81,120032,81,120084,81,120188,81,120240,81,120292,81,120344,81,120396,81,120448,81,11605,81,119851,114,119903,114,119955,114,120007,114,120059,114,120111,114,120163,114,120215,114,120267,114,120319,114,120371,114,120423,114,120475,114,43847,114,43848,114,7462,114,11397,114,43905,114,119318,82,8475,82,8476,82,8477,82,119825,82,119877,82,119929,82,120033,82,120189,82,120241,82,120293,82,120345,82,120397,82,120449,82,422,82,5025,82,5074,82,66740,82,5511,82,42211,82,94005,82,65363,115,119852,115,119904,115,119956,115,120008,115,120060,115,120112,115,120164,115,120216,115,120268,115,120320,115,120372,115,120424,115,120476,115,42801,115,445,115,1109,115,43946,115,71873,115,66632,115,65331,83,119826,83,119878,83,119930,83,119982,83,120034,83,120086,83,120138,83,120190,83,120242,83,120294,83,120346,83,120398,83,120450,83,1029,83,1359,83,5077,83,5082,83,42210,83,94010,83,66198,83,66592,83,119853,116,119905,116,119957,116,120009,116,120061,116,120113,116,120165,116,120217,116,120269,116,120321,116,120373,116,120425,116,120477,116,8868,84,10201,84,128872,84,65332,84,119827,84,119879,84,119931,84,119983,84,120035,84,120087,84,120139,84,120191,84,120243,84,120295,84,120347,84,120399,84,120451,84,932,84,120507,84,120565,84,120623,84,120681,84,120739,84,11430,84,5026,84,42196,84,93962,84,71868,84,66199,84,66225,84,66325,84,119854,117,119906,117,119958,117,120010,117,120062,117,120114,117,120166,117,120218,117,120270,117,120322,117,120374,117,120426,117,120478,117,42911,117,7452,117,43854,117,43858,117,651,117,965,117,120534,117,120592,117,120650,117,120708,117,120766,117,1405,117,66806,117,71896,117,8746,85,8899,85,119828,85,119880,85,119932,85,119984,85,120036,85,120088,85,120140,85,120192,85,120244,85,120296,85,120348,85,120400,85,120452,85,1357,85,4608,85,66766,85,5196,85,42228,85,94018,85,71864,85,8744,118,8897,118,65366,118,8564,118,119855,118,119907,118,119959,118,120011,118,120063,118,120115,118,120167,118,120219,118,120271,118,120323,118,120375,118,120427,118,120479,118,7456,118,957,118,120526,118,120584,118,120642,118,120700,118,120758,118,1141,118,1496,118,71430,118,43945,118,71872,118,119309,86,1639,86,1783,86,8548,86,119829,86,119881,86,119933,86,119985,86,120037,86,120089,86,120141,86,120193,86,120245,86,120297,86,120349,86,120401,86,120453,86,1140,86,11576,86,5081,86,5167,86,42719,86,42214,86,93960,86,71840,86,66845,86,623,119,119856,119,119908,119,119960,119,120012,119,120064,119,120116,119,120168,119,120220,119,120272,119,120324,119,120376,119,120428,119,120480,119,7457,119,1121,119,1309,119,1377,119,71434,119,71438,119,71439,119,43907,119,71919,87,71910,87,119830,87,119882,87,119934,87,119986,87,120038,87,120090,87,120142,87,120194,87,120246,87,120298,87,120350,87,120402,87,120454,87,1308,87,5043,87,5076,87,42218,87,5742,120,10539,120,10540,120,10799,120,65368,120,8569,120,119857,120,119909,120,119961,120,120013,120,120065,120,120117,120,120169,120,120221,120,120273,120,120325,120,120377,120,120429,120,120481,120,5441,120,5501,120,5741,88,9587,88,66338,88,71916,88,65336,88,8553,88,119831,88,119883,88,119935,88,119987,88,120039,88,120091,88,120143,88,120195,88,120247,88,120299,88,120351,88,120403,88,120455,88,42931,88,935,88,120510,88,120568,88,120626,88,120684,88,120742,88,11436,88,11613,88,5815,88,42219,88,66192,88,66228,88,66327,88,66855,88,611,121,7564,121,65369,121,119858,121,119910,121,119962,121,120014,121,120066,121,120118,121,120170,121,120222,121,120274,121,120326,121,120378,121,120430,121,120482,121,655,121,7935,121,43866,121,947,121,8509,121,120516,121,120574,121,120632,121,120690,121,120748,121,1199,121,4327,121,71900,121,65337,89,119832,89,119884,89,119936,89,119988,89,120040,89,120092,89,120144,89,120196,89,120248,89,120300,89,120352,89,120404,89,120456,89,933,89,978,89,120508,89,120566,89,120624,89,120682,89,120740,89,11432,89,1198,89,5033,89,5053,89,42220,89,94019,89,71844,89,66226,89,119859,122,119911,122,119963,122,120015,122,120067,122,120119,122,120171,122,120223,122,120275,122,120327,122,120379,122,120431,122,120483,122,7458,122,43923,122,71876,122,66293,90,71909,90,65338,90,8484,90,8488,90,119833,90,119885,90,119937,90,119989,90,120041,90,120197,90,120249,90,120301,90,120353,90,120405,90,120457,90,918,90,120493,90,120551,90,120609,90,120667,90,120725,90,5059,90,42204,90,71849,90,65282,34,65284,36,65285,37,65286,38,65290,42,65291,43,65294,46,65295,47,65296,48,65297,49,65298,50,65299,51,65300,52,65301,53,65302,54,65303,55,65304,56,65305,57,65308,60,65309,61,65310,62,65312,64,65316,68,65318,70,65319,71,65324,76,65329,81,65330,82,65333,85,65334,86,65335,87,65343,95,65346,98,65348,100,65350,102,65355,107,65357,109,65358,110,65361,113,65362,114,65364,116,65365,117,65367,119,65370,122,65371,123,65373,125,119846,109],"_default":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"cs":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"de":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"es":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"fr":[65374,126,65306,58,65281,33,8216,96,8245,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"it":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"ja":[8211,45,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65292,44,65307,59],"ko":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"pl":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"pt-BR":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"qps-ploc":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"ru":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,305,105,921,73,1009,112,215,120,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"tr":[160,32,8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"zh-hans":[65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41],"zh-hant":[8211,45,65374,126,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65307,59]}')),of.cache=new class{constructor(e){this.fn=e,this.lastCache=void 0,this.lastArgKey=void 0}get(e){let t=JSON.stringify(e);return this.lastArgKey!==t&&(this.lastArgKey=t,this.lastCache=this.fn(e)),this.lastCache}}(e=>{let t;function i(e){let t=new Map;for(let i=0;i!e.startsWith("_")&&e in n);for(let e of(0===r.length&&(r=["_default"]),r)){let r=i(n[e]);t=function(e,t){if(!e)return t;let i=new Map;for(let[n,r]of e)t.has(n)&&i.set(n,r);return i}(t,r)}let o=i(n._common),s=function(e,t){let i=new Map(e);for(let[e,n]of t)i.set(e,n);return i}(o,t);return new of(s)}),of._locales=new rF(()=>Object.keys(of.ambiguousCharacterData.value).filter(e=>!e.startsWith("_")));class om{static getRawData(){return JSON.parse("[9,10,11,12,13,32,127,160,173,847,1564,4447,4448,6068,6069,6155,6156,6157,6158,7355,7356,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8234,8235,8236,8237,8238,8239,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,10240,12288,12644,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65279,65440,65520,65521,65522,65523,65524,65525,65526,65527,65528,65532,78844,119155,119156,119157,119158,119159,119160,119161,119162,917504,917505,917506,917507,917508,917509,917510,917511,917512,917513,917514,917515,917516,917517,917518,917519,917520,917521,917522,917523,917524,917525,917526,917527,917528,917529,917530,917531,917532,917533,917534,917535,917536,917537,917538,917539,917540,917541,917542,917543,917544,917545,917546,917547,917548,917549,917550,917551,917552,917553,917554,917555,917556,917557,917558,917559,917560,917561,917562,917563,917564,917565,917566,917567,917568,917569,917570,917571,917572,917573,917574,917575,917576,917577,917578,917579,917580,917581,917582,917583,917584,917585,917586,917587,917588,917589,917590,917591,917592,917593,917594,917595,917596,917597,917598,917599,917600,917601,917602,917603,917604,917605,917606,917607,917608,917609,917610,917611,917612,917613,917614,917615,917616,917617,917618,917619,917620,917621,917622,917623,917624,917625,917626,917627,917628,917629,917630,917631,917760,917761,917762,917763,917764,917765,917766,917767,917768,917769,917770,917771,917772,917773,917774,917775,917776,917777,917778,917779,917780,917781,917782,917783,917784,917785,917786,917787,917788,917789,917790,917791,917792,917793,917794,917795,917796,917797,917798,917799,917800,917801,917802,917803,917804,917805,917806,917807,917808,917809,917810,917811,917812,917813,917814,917815,917816,917817,917818,917819,917820,917821,917822,917823,917824,917825,917826,917827,917828,917829,917830,917831,917832,917833,917834,917835,917836,917837,917838,917839,917840,917841,917842,917843,917844,917845,917846,917847,917848,917849,917850,917851,917852,917853,917854,917855,917856,917857,917858,917859,917860,917861,917862,917863,917864,917865,917866,917867,917868,917869,917870,917871,917872,917873,917874,917875,917876,917877,917878,917879,917880,917881,917882,917883,917884,917885,917886,917887,917888,917889,917890,917891,917892,917893,917894,917895,917896,917897,917898,917899,917900,917901,917902,917903,917904,917905,917906,917907,917908,917909,917910,917911,917912,917913,917914,917915,917916,917917,917918,917919,917920,917921,917922,917923,917924,917925,917926,917927,917928,917929,917930,917931,917932,917933,917934,917935,917936,917937,917938,917939,917940,917941,917942,917943,917944,917945,917946,917947,917948,917949,917950,917951,917952,917953,917954,917955,917956,917957,917958,917959,917960,917961,917962,917963,917964,917965,917966,917967,917968,917969,917970,917971,917972,917973,917974,917975,917976,917977,917978,917979,917980,917981,917982,917983,917984,917985,917986,917987,917988,917989,917990,917991,917992,917993,917994,917995,917996,917997,917998,917999]")}static getData(){return this._data||(this._data=new Set(om.getRawData())),this._data}static isInvisibleCharacter(e){return om.getData().has(e)}static get codePoints(){return om.getData()}}om._data=void 0;class ov{constructor(){this._zoomFactor=1}getZoomFactor(){return this._zoomFactor}}ov.INSTANCE=new ov;class oE extends nc{constructor(){super(),this._onDidChange=this._register(new nT),this.onDidChange=this._onDidChange.event,this._listener=()=>this._handleChange(!0),this._mediaQueryList=null,this._handleChange(!1)}_handleChange(e){var t;null===(t=this._mediaQueryList)||void 0===t||t.removeEventListener("change",this._listener),this._mediaQueryList=window.matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`),this._mediaQueryList.addEventListener("change",this._listener),e&&this._onDidChange.fire()}}class o_ extends nc{get value(){return this._value}constructor(){super(),this._onDidChange=this._register(new nT),this.onDidChange=this._onDidChange.event,this._value=this._getPixelRatio();let e=this._register(new oE);this._register(e.onDidChange(()=>{this._value=this._getPixelRatio(),this._onDidChange.fire(this._value)}))}_getPixelRatio(){let e=document.createElement("canvas").getContext("2d"),t=window.devicePixelRatio||1,i=e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1;return t/i}}function oC(e,t){"string"==typeof e&&(e=window.matchMedia(e)),e.addEventListener("change",t)}let oS=new class{constructor(){this._pixelRatioMonitor=null}_getOrCreatePixelRatioMonitor(){return this._pixelRatioMonitor||(this._pixelRatioMonitor=new o_),this._pixelRatioMonitor}get value(){return this._getOrCreatePixelRatioMonitor().value}get onDidChange(){return this._getOrCreatePixelRatioMonitor().onDidChange}},oy=navigator.userAgent,oT=oy.indexOf("Firefox")>=0,ob=oy.indexOf("AppleWebKit")>=0,oA=oy.indexOf("Chrome")>=0,oR=!oA&&oy.indexOf("Safari")>=0,oL=!oA&&!oR&&ob;oy.indexOf("Electron/");let oN=oy.indexOf("Android")>=0,oI=!1;if(window.matchMedia){let e=window.matchMedia("(display-mode: standalone) or (display-mode: window-controls-overlay)"),t=window.matchMedia("(display-mode: fullscreen)");oI=e.matches,oC(e,({matches:e})=>{oI&&t.matches||(oI=e)})}class ow{constructor(e){this.domNode=e,this._maxWidth="",this._width="",this._height="",this._top="",this._left="",this._bottom="",this._right="",this._paddingLeft="",this._fontFamily="",this._fontWeight="",this._fontSize="",this._fontStyle="",this._fontFeatureSettings="",this._fontVariationSettings="",this._textDecoration="",this._lineHeight="",this._letterSpacing="",this._className="",this._display="",this._position="",this._visibility="",this._color="",this._backgroundColor="",this._layerHint=!1,this._contain="none",this._boxShadow=""}setMaxWidth(e){let t=oO(e);this._maxWidth!==t&&(this._maxWidth=t,this.domNode.style.maxWidth=this._maxWidth)}setWidth(e){let t=oO(e);this._width!==t&&(this._width=t,this.domNode.style.width=this._width)}setHeight(e){let t=oO(e);this._height!==t&&(this._height=t,this.domNode.style.height=this._height)}setTop(e){let t=oO(e);this._top!==t&&(this._top=t,this.domNode.style.top=this._top)}setLeft(e){let t=oO(e);this._left!==t&&(this._left=t,this.domNode.style.left=this._left)}setBottom(e){let t=oO(e);this._bottom!==t&&(this._bottom=t,this.domNode.style.bottom=this._bottom)}setRight(e){let t=oO(e);this._right!==t&&(this._right=t,this.domNode.style.right=this._right)}setPaddingLeft(e){let t=oO(e);this._paddingLeft!==t&&(this._paddingLeft=t,this.domNode.style.paddingLeft=this._paddingLeft)}setFontFamily(e){this._fontFamily!==e&&(this._fontFamily=e,this.domNode.style.fontFamily=this._fontFamily)}setFontWeight(e){this._fontWeight!==e&&(this._fontWeight=e,this.domNode.style.fontWeight=this._fontWeight)}setFontSize(e){let t=oO(e);this._fontSize!==t&&(this._fontSize=t,this.domNode.style.fontSize=this._fontSize)}setFontStyle(e){this._fontStyle!==e&&(this._fontStyle=e,this.domNode.style.fontStyle=this._fontStyle)}setFontFeatureSettings(e){this._fontFeatureSettings!==e&&(this._fontFeatureSettings=e,this.domNode.style.fontFeatureSettings=this._fontFeatureSettings)}setFontVariationSettings(e){this._fontVariationSettings!==e&&(this._fontVariationSettings=e,this.domNode.style.fontVariationSettings=this._fontVariationSettings)}setTextDecoration(e){this._textDecoration!==e&&(this._textDecoration=e,this.domNode.style.textDecoration=this._textDecoration)}setLineHeight(e){let t=oO(e);this._lineHeight!==t&&(this._lineHeight=t,this.domNode.style.lineHeight=this._lineHeight)}setLetterSpacing(e){let t=oO(e);this._letterSpacing!==t&&(this._letterSpacing=t,this.domNode.style.letterSpacing=this._letterSpacing)}setClassName(e){this._className!==e&&(this._className=e,this.domNode.className=this._className)}toggleClassName(e,t){this.domNode.classList.toggle(e,t),this._className=this.domNode.className}setDisplay(e){this._display!==e&&(this._display=e,this.domNode.style.display=this._display)}setPosition(e){this._position!==e&&(this._position=e,this.domNode.style.position=this._position)}setVisibility(e){this._visibility!==e&&(this._visibility=e,this.domNode.style.visibility=this._visibility)}setColor(e){this._color!==e&&(this._color=e,this.domNode.style.color=this._color)}setBackgroundColor(e){this._backgroundColor!==e&&(this._backgroundColor=e,this.domNode.style.backgroundColor=this._backgroundColor)}setLayerHinting(e){this._layerHint!==e&&(this._layerHint=e,this.domNode.style.transform=this._layerHint?"translate3d(0px, 0px, 0px)":"")}setBoxShadow(e){this._boxShadow!==e&&(this._boxShadow=e,this.domNode.style.boxShadow=e)}setContain(e){this._contain!==e&&(this._contain=e,this.domNode.style.contain=this._contain)}setAttribute(e,t){this.domNode.setAttribute(e,t)}removeAttribute(e){this.domNode.removeAttribute(e)}appendChild(e){this.domNode.appendChild(e.domNode)}removeChild(e){this.domNode.removeChild(e.domNode)}}function oO(e){return"number"==typeof e?`${e}px`:e}function ox(e){return new ow(e)}function oD(e,t){e instanceof ow?(e.setFontFamily(t.getMassagedFontFamily()),e.setFontWeight(t.fontWeight),e.setFontSize(t.fontSize),e.setFontFeatureSettings(t.fontFeatureSettings),e.setFontVariationSettings(t.fontVariationSettings),e.setLineHeight(t.lineHeight),e.setLetterSpacing(t.letterSpacing)):(e.style.fontFamily=t.getMassagedFontFamily(),e.style.fontWeight=t.fontWeight,e.style.fontSize=t.fontSize+"px",e.style.fontFeatureSettings=t.fontFeatureSettings,e.style.fontVariationSettings=t.fontVariationSettings,e.style.lineHeight=t.lineHeight+"px",e.style.letterSpacing=t.letterSpacing+"px")}class oM{constructor(e,t){this.chr=e,this.type=t,this.width=0}fulfill(e){this.width=e}}class ok{constructor(e,t){this._bareFontInfo=e,this._requests=t,this._container=null,this._testElements=null}read(){this._createDomElements(),document.body.appendChild(this._container),this._readFromDomElements(),document.body.removeChild(this._container),this._container=null,this._testElements=null}_createDomElements(){let e=document.createElement("div");e.style.position="absolute",e.style.top="-50000px",e.style.width="50000px";let t=document.createElement("div");oD(t,this._bareFontInfo),e.appendChild(t);let i=document.createElement("div");oD(i,this._bareFontInfo),i.style.fontWeight="bold",e.appendChild(i);let n=document.createElement("div");oD(n,this._bareFontInfo),n.style.fontStyle="italic",e.appendChild(n);let r=[];for(let e of this._requests){let o;0===e.type&&(o=t),2===e.type&&(o=i),1===e.type&&(o=n),o.appendChild(document.createElement("br"));let s=document.createElement("span");ok._render(s,e),o.appendChild(s),r.push(s)}this._container=e,this._testElements=r}static _render(e,t){if(" "===t.chr){let t="\xa0";for(let e=0;e<8;e++)t+=t;e.innerText=t}else{let i=t.chr;for(let e=0;e<8;e++)i+=i;e.textContent=i}}_readFromDomElements(){for(let e=0,t=this._requests.length;ethis._values[e])}}let oV=new class extends nc{constructor(){super(),this._onDidChange=this._register(new nT),this.onDidChange=this._onDidChange.event,this._cache=new oH,this._evictUntrustedReadingsTimeout=-1}dispose(){-1!==this._evictUntrustedReadingsTimeout&&(window.clearTimeout(this._evictUntrustedReadingsTimeout),this._evictUntrustedReadingsTimeout=-1),super.dispose()}clearAllFontInfos(){this._cache=new oH,this._onDidChange.fire()}_writeToCache(e,t){this._cache.put(e,t),t.isTrusted||-1!==this._evictUntrustedReadingsTimeout||(this._evictUntrustedReadingsTimeout=window.setTimeout(()=>{this._evictUntrustedReadingsTimeout=-1,this._evictUntrustedReadings()},5e3))}_evictUntrustedReadings(){let e=this._cache.getValues(),t=!1;for(let i of e)i.isTrusted||(t=!0,this._cache.remove(i));t&&this._onDidChange.fire()}readFontInfo(e){if(!this._cache.has(e)){let t=this._actualReadFontInfo(e);(t.typicalHalfwidthCharacterWidth<=2||t.typicalFullwidthCharacterWidth<=2||t.spaceWidth<=2||t.maxDigitWidth<=2)&&(t=new oU({pixelRatio:oS.value,fontFamily:t.fontFamily,fontWeight:t.fontWeight,fontSize:t.fontSize,fontFeatureSettings:t.fontFeatureSettings,fontVariationSettings:t.fontVariationSettings,lineHeight:t.lineHeight,letterSpacing:t.letterSpacing,isMonospace:t.isMonospace,typicalHalfwidthCharacterWidth:Math.max(t.typicalHalfwidthCharacterWidth,5),typicalFullwidthCharacterWidth:Math.max(t.typicalFullwidthCharacterWidth,5),canUseHalfwidthRightwardsArrow:t.canUseHalfwidthRightwardsArrow,spaceWidth:Math.max(t.spaceWidth,5),middotWidth:Math.max(t.middotWidth,5),wsmiddotWidth:Math.max(t.wsmiddotWidth,5),maxDigitWidth:Math.max(t.maxDigitWidth,5)},!1)),this._writeToCache(e,t)}return this._cache.get(e)}_createRequest(e,t,i,n){let r=new oM(e,t);return i.push(r),null==n||n.push(r),r}_actualReadFontInfo(e){let t=[],i=[],n=this._createRequest("n",0,t,i),r=this._createRequest("m",0,t,null),o=this._createRequest(" ",0,t,i),s=this._createRequest("0",0,t,i),a=this._createRequest("1",0,t,i),l=this._createRequest("2",0,t,i),h=this._createRequest("3",0,t,i),u=this._createRequest("4",0,t,i),d=this._createRequest("5",0,t,i),c=this._createRequest("6",0,t,i),g=this._createRequest("7",0,t,i),p=this._createRequest("8",0,t,i),f=this._createRequest("9",0,t,i),m=this._createRequest("→",0,t,i),v=this._createRequest("→",0,t,null),E=this._createRequest("\xb7",0,t,i),_=this._createRequest(String.fromCharCode(11825),0,t,null),C="|/-_ilm%";for(let e=0,n=C.length;e.001){y=!1;break}}let b=!0;return y&&v.width!==T&&(b=!1),v.width>m.width&&(b=!1),new oU({pixelRatio:oS.value,fontFamily:e.fontFamily,fontWeight:e.fontWeight,fontSize:e.fontSize,fontFeatureSettings:e.fontFeatureSettings,fontVariationSettings:e.fontVariationSettings,lineHeight:e.lineHeight,letterSpacing:e.letterSpacing,isMonospace:y,typicalHalfwidthCharacterWidth:n.width,typicalFullwidthCharacterWidth:r.width,canUseHalfwidthRightwardsArrow:b,spaceWidth:o.width,middotWidth:E.width,wsmiddotWidth:_.width,maxDigitWidth:S},!0)}};(eg=t$||(t$={})).serviceIds=new Map,eg.DI_TARGET="$di$target",eg.DI_DEPENDENCIES="$di$dependencies",eg.getServiceDependencies=function(e){return e[eg.DI_DEPENDENCIES]||[]};let oW=oG("instantiationService");function oG(e){if(t$.serviceIds.has(e))return t$.serviceIds.get(e);let t=function(e,i,n){if(3!=arguments.length)throw Error("@IServiceName-decorator can only be used to decorate a parameter");e[t$.DI_TARGET]===e?e[t$.DI_DEPENDENCIES].push({id:t,index:n}):(e[t$.DI_DEPENDENCIES]=[{id:t,index:n}],e[t$.DI_TARGET]=e)};return t.toString=()=>e,t$.serviceIds.set(e,t),t}let oz=oG("codeEditorService");function oY(e,t){if(!e)throw Error(t?`Assertion failed (${t})`:"Assertion Failed")}function oK(e,t="Unreachable"){throw Error(t)}function o$(e){e()||(e(),i1(new nt("Assertion Failed")))}function oX(e,t){let i=0;for(;i\-\./\\:\*\?\+\[\]\^,#@;"%\$\p{L}-]+/uy}static getLexeme(e){switch(e.type){case 0:return"(";case 1:return")";case 2:return"!";case 3:return e.isTripleEq?"===":"==";case 4:return e.isTripleEq?"!==":"!=";case 5:return"<";case 6:return"<=";case 7:case 8:return">=";case 9:return"=~";case 10:case 17:case 18:case 19:return e.lexeme;case 11:return"true";case 12:return"false";case 13:return"in";case 14:return"not";case 15:return"&&";case 16:return"||";case 20:return"EOF";default:throw i7(`unhandled token type: ${JSON.stringify(e)}; have you forgotten to add a case?`)}}reset(e){return this._input=e,this._start=0,this._current=0,this._tokens=[],this._errors=[],this}scan(){for(;!this._isAtEnd();){this._start=this._current;let e=this._advance();switch(e){case 40:this._addToken(0);break;case 41:this._addToken(1);break;case 33:if(this._match(61)){let e=this._match(61);this._tokens.push({type:4,offset:this._start,isTripleEq:e})}else this._addToken(2);break;case 39:this._quotedString();break;case 47:this._regex();break;case 61:if(this._match(61)){let e=this._match(61);this._tokens.push({type:3,offset:this._start,isTripleEq:e})}else this._match(126)?this._addToken(9):this._error(o0("==","=~"));break;case 60:this._addToken(this._match(61)?6:5);break;case 62:this._addToken(this._match(61)?8:7);break;case 38:this._match(38)?this._addToken(15):this._error(o0("&&"));break;case 124:this._match(124)?this._addToken(16):this._error(o0("||"));break;case 32:case 13:case 9:case 10:case 160:break;default:this._string()}}return this._start=this._current,this._addToken(20),Array.from(this._tokens)}_match(e){return!this._isAtEnd()&&this._input.charCodeAt(this._current)===e&&(this._current++,!0)}_advance(){return this._input.charCodeAt(this._current++)}_peek(){return this._isAtEnd()?0:this._input.charCodeAt(this._current)}_addToken(e){this._tokens.push({type:e,offset:this._start})}_error(e){let t=this._start,i=this._input.substring(this._start,this._current),n={type:19,offset:this._start,lexeme:i};this._errors.push({offset:t,lexeme:i,additionalInfo:e}),this._tokens.push(n)}_string(){this.stringRe.lastIndex=this._start;let e=this.stringRe.exec(this._input);if(e){this._current=this._start+e[0].length;let t=this._input.substring(this._start,this._current),i=o4._keywords.get(t);i?this._addToken(i):this._tokens.push({type:17,lexeme:t,offset:this._start})}}_quotedString(){for(;39!==this._peek()&&!this._isAtEnd();)this._advance();if(this._isAtEnd()){this._error(o1);return}this._advance(),this._tokens.push({type:18,lexeme:this._input.substring(this._start+1,this._current-1),offset:this._start+1})}_regex(){let e=this._current,t=!1,i=!1;for(;;){if(e>=this._input.length){this._current=e,this._error(o2);return}let n=this._input.charCodeAt(e);if(t)t=!1;else if(47!==n||i)91===n?i=!0:92===n?t=!0:93===n&&(i=!1);else{e++;break}e++}for(;e=this._input.length}}o4._regexFlags=new Set(["i","g","s","m","y","u"].map(e=>e.charCodeAt(0))),o4._keywords=new Map([["not",14],["in",13],["false",12],["true",11]]);let o5=new Map;o5.set("false",!1),o5.set("true",!0),o5.set("isMac",nY.dz),o5.set("isLinux",nY.IJ),o5.set("isWindows",nY.ED),o5.set("isWeb",nY.$L),o5.set("isMacNative",nY.dz&&!nY.$L),o5.set("isEdge",nY.un),o5.set("isFirefox",nY.vU),o5.set("isChrome",nY.i7),o5.set("isSafari",nY.G6);let o6=Object.prototype.hasOwnProperty,o3={regexParsingWithErrorRecovery:!0},o9=(0,rL.NC)("contextkey.parser.error.emptyString","Empty context key expression"),o7=(0,rL.NC)("contextkey.parser.error.emptyString.hint","Did you forget to write an expression? You can also put 'false' or 'true' to always evaluate to false or true, respectively."),o8=(0,rL.NC)("contextkey.parser.error.noInAfterNot","'in' after 'not'."),se=(0,rL.NC)("contextkey.parser.error.closingParenthesis","closing parenthesis ')'"),st=(0,rL.NC)("contextkey.parser.error.unexpectedToken","Unexpected token"),si=(0,rL.NC)("contextkey.parser.error.unexpectedToken.hint","Did you forget to put && or || before the token?"),sn=(0,rL.NC)("contextkey.parser.error.unexpectedEOF","Unexpected end of expression"),sr=(0,rL.NC)("contextkey.parser.error.unexpectedEOF.hint","Did you forget to put a context key?");class so{constructor(e=o3){this._config=e,this._scanner=new o4,this._tokens=[],this._current=0,this._parsingErrors=[],this._flagsGYRe=/g|y/g}parse(e){if(""===e){this._parsingErrors.push({message:o9,offset:0,lexeme:"",additionalInfo:o7});return}this._tokens=this._scanner.reset(e).scan(),this._current=0,this._parsingErrors=[];try{let e=this._expr();if(!this._isAtEnd()){let e=this._peek(),t=17===e.type?si:void 0;throw this._parsingErrors.push({message:st,offset:e.offset,lexeme:o4.getLexeme(e),additionalInfo:t}),so._parseError}return e}catch(e){if(e!==so._parseError)throw e;return}}_expr(){return this._or()}_or(){let e=[this._and()];for(;this._matchOne(16);){let t=this._and();e.push(t)}return 1===e.length?e[0]:ss.or(...e)}_and(){let e=[this._term()];for(;this._matchOne(15);){let t=this._term();e.push(t)}return 1===e.length?e[0]:ss.and(...e)}_term(){if(this._matchOne(2)){let e=this._peek();switch(e.type){case 11:return this._advance(),sl.INSTANCE;case 12:return this._advance(),sh.INSTANCE;case 0:{this._advance();let e=this._expr();return this._consume(1,se),null==e?void 0:e.negate()}case 17:return this._advance(),sf.create(e.lexeme);default:throw this._errExpectedButGot("KEY | true | false | '(' expression ')'",e)}}return this._primary()}_primary(){let e=this._peek();switch(e.type){case 11:return this._advance(),ss.true();case 12:return this._advance(),ss.false();case 0:{this._advance();let e=this._expr();return this._consume(1,se),e}case 17:{let t=e.lexeme;if(this._advance(),this._matchOne(9)){let e=this._peek();if(!this._config.regexParsingWithErrorRecovery){let i;if(this._advance(),10!==e.type)throw this._errExpectedButGot("REGEX",e);let n=e.lexeme,r=n.lastIndexOf("/"),o=r===n.length-1?void 0:this._removeFlagsGY(n.substring(r+1));try{i=new RegExp(n.substring(1,r),o)}catch(t){throw this._errExpectedButGot("REGEX",e)}return sS.create(t,i)}switch(e.type){case 10:case 19:{let i;let n=[e.lexeme];this._advance();let r=this._peek(),o=0;for(let t=0;t=0){let o=i.slice(t+1,r),s="i"===i[r+1]?"i":"";try{n=new RegExp(o,s)}catch(t){throw this._errExpectedButGot("REGEX",e)}}}if(null===n)throw this._errExpectedButGot("REGEX",e);return sS.create(t,n)}default:throw this._errExpectedButGot("REGEX",this._peek())}}if(this._matchOne(14)){this._consume(13,o8);let e=this._value();return ss.notIn(t,e)}let i=this._peek().type;switch(i){case 3:{this._advance();let e=this._value();if(18===this._previous().type)return ss.equals(t,e);switch(e){case"true":return ss.has(t);case"false":return ss.not(t);default:return ss.equals(t,e)}}case 4:{this._advance();let e=this._value();if(18===this._previous().type)return ss.notEquals(t,e);switch(e){case"true":return ss.not(t);case"false":return ss.has(t);default:return ss.notEquals(t,e)}}case 5:return this._advance(),s_.create(t,this._value());case 6:return this._advance(),sC.create(t,this._value());case 7:return this._advance(),sv.create(t,this._value());case 8:return this._advance(),sE.create(t,this._value());case 13:return this._advance(),ss.in(t,this._value());default:return ss.has(t)}}case 20:throw this._parsingErrors.push({message:sn,offset:e.offset,lexeme:"",additionalInfo:sr}),so._parseError;default:throw this._errExpectedButGot(`true | false | KEY +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[739],{96991:function(e,t,i){"use strict";i.d(t,{Z:function(){return a}});var n=i(87462),r=i(67294),o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M864 144H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm0 400H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zM464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm0 400H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16z"}}]},name:"appstore",theme:"filled"},s=i(84089),a=r.forwardRef(function(e,t){return r.createElement(s.Z,(0,n.Z)({},e,{ref:t,icon:o}))})},29158:function(e,t,i){"use strict";i.d(t,{Z:function(){return a}});var n=i(87462),r=i(67294),o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M574 665.4a8.03 8.03 0 00-11.3 0L446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3l-39.8-39.8a8.03 8.03 0 00-11.3 0L191.4 526.5c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3L574 665.4zm258.6-474c-84.6-84.6-221.5-84.6-306 0L410.3 307.6a8.03 8.03 0 000 11.3l39.7 39.7c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204L665.3 562.6a8.03 8.03 0 000 11.3l39.8 39.8c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c84.5-84.6 84.5-221.5 0-306.1zM610.1 372.3a8.03 8.03 0 00-11.3 0L372.3 598.7a8.03 8.03 0 000 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l226.4-226.4c3.1-3.1 3.1-8.2 0-11.3l-39.5-39.6z"}}]},name:"link",theme:"outlined"},s=i(84089),a=r.forwardRef(function(e,t){return r.createElement(s.Z,(0,n.Z)({},e,{ref:t,icon:o}))})},49591:function(e,t,i){"use strict";i.d(t,{Z:function(){return a}});var n=i(87462),r=i(67294),o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h360c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H184V184h656v320c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V144c0-17.7-14.3-32-32-32zM653.3 599.4l52.2-52.2a8.01 8.01 0 00-4.7-13.6l-179.4-21c-5.1-.6-9.5 3.7-8.9 8.9l21 179.4c.8 6.6 8.9 9.4 13.6 4.7l52.4-52.4 256.2 256.2c3.1 3.1 8.2 3.1 11.3 0l42.4-42.4c3.1-3.1 3.1-8.2 0-11.3L653.3 599.4z"}}]},name:"select",theme:"outlined"},s=i(84089),a=r.forwardRef(function(e,t){return r.createElement(s.Z,(0,n.Z)({},e,{ref:t,icon:o}))})},88484:function(e,t,i){"use strict";i.d(t,{Z:function(){return a}});var n=i(87462),r=i(67294),o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 00-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z"}}]},name:"upload",theme:"outlined"},s=i(84089),a=r.forwardRef(function(e,t){return r.createElement(s.Z,(0,n.Z)({},e,{ref:t,icon:o}))})},5165:function(e,t,i){"use strict";i.d(t,{w:function(){return tz}});var n=i(97582),r={line_chart:{id:"line_chart",name:"Line Chart",alias:["Lines"],family:["LineCharts"],def:"A line chart uses lines with segments to show changes in data in a ordinal dimension.",purpose:["Comparison","Trend","Anomaly"],coord:["Cartesian2D"],category:["Statistic"],shape:["Lines"],dataPres:[{minQty:1,maxQty:1,fieldConditions:["Time","Ordinal"]},{minQty:0,maxQty:1,fieldConditions:["Nominal"]},{minQty:1,maxQty:1,fieldConditions:["Interval"]}],channel:["Position","Direction"],recRate:"Recommended"},step_line_chart:{id:"step_line_chart",name:"Step Line Chart",alias:["Step Lines"],family:["LineCharts"],def:"A step line chart is a line chart in which points of each line are connected by horizontal and vertical line segments, looking like steps of a staircase.",purpose:["Comparison","Trend"],coord:["Cartesian2D"],category:["Statistic"],shape:["Lines"],dataPres:[{minQty:1,maxQty:1,fieldConditions:["Time","Ordinal"]},{minQty:0,maxQty:1,fieldConditions:["Nominal"]},{minQty:1,maxQty:1,fieldConditions:["Interval"]}],channel:["Position","Direction"],recRate:"Recommended"},area_chart:{id:"area_chart",name:"Area Chart",alias:[],family:["AreaCharts"],def:"An area chart uses series of line segments with overlapped areas to show the change in data in a ordinal dimension.",purpose:["Comparison","Trend","Anomaly"],coord:["Cartesian2D"],category:["Statistic"],shape:["Area"],dataPres:[{minQty:1,maxQty:1,fieldConditions:["Time","Ordinal"]},{minQty:1,maxQty:1,fieldConditions:["Interval"]},{minQty:0,maxQty:1,fieldConditions:["Nominal"]}],channel:["Color","Position"],recRate:"Recommended"},stacked_area_chart:{id:"stacked_area_chart",name:"Stacked Area Chart",alias:[],family:["AreaCharts"],def:"A stacked area chart uses layered line segments with different styles of padding regions to display how multiple sets of data change in the same ordinal dimension, and the endpoint heights of the segments on the same dimension tick are accumulated by value.",purpose:["Composition","Trend"],coord:["Cartesian2D"],category:["Statistic"],shape:["Area"],dataPres:[{minQty:1,maxQty:1,fieldConditions:["Time","Ordinal"]},{minQty:1,maxQty:1,fieldConditions:["Interval"]},{minQty:1,maxQty:1,fieldConditions:["Nominal"]}],channel:["Color","Length"],recRate:"Recommended"},percent_stacked_area_chart:{id:"percent_stacked_area_chart",name:"Percent Stacked Area Chart",alias:["Percent Stacked Area","% Stacked Area","100% Stacked Area"],family:["AreaCharts"],def:"A percent stacked area chart is an extented stacked area chart in which the height of the endpoints of the line segment on the same dimension tick is the accumulated proportion of the ratio, which is 100% of the total.",purpose:["Comparison","Composition","Proportion","Trend"],coord:["Cartesian2D"],category:["Statistic"],shape:["Area"],dataPres:[{minQty:1,maxQty:1,fieldConditions:["Time","Ordinal"]},{minQty:1,maxQty:1,fieldConditions:["Interval"]},{minQty:1,maxQty:1,fieldConditions:["Nominal"]}],channel:["Color","Length"],recRate:"Recommended"},column_chart:{id:"column_chart",name:"Column Chart",alias:["Columns"],family:["ColumnCharts"],def:"A column chart uses series of columns to display the value of the dimension. The horizontal axis shows the classification dimension and the vertical axis shows the corresponding value.",purpose:["Comparison","Distribution","Rank"],coord:["Cartesian2D"],category:["Statistic"],shape:["Bars"],dataPres:[{minQty:1,maxQty:2,fieldConditions:["Nominal","Ordinal"]},{minQty:1,maxQty:1,fieldConditions:["Interval"]}],channel:["Position","Color"],recRate:"Recommended"},grouped_column_chart:{id:"grouped_column_chart",name:"Grouped Column Chart",alias:["Grouped Column"],family:["ColumnCharts"],def:"A grouped column chart uses columns of different colors to form a group to display the values of dimensions. The horizontal axis indicates the grouping of categories, the color indicates the categories, and the vertical axis shows the corresponding value.",purpose:["Comparison","Distribution","Rank"],coord:["Cartesian2D"],category:["Statistic"],shape:["Bars"],dataPres:[{minQty:2,maxQty:2,fieldConditions:["Nominal","Ordinal"]},{minQty:1,maxQty:1,fieldConditions:["Interval"]}],channel:["Color","Position"],recRate:"Recommended"},stacked_column_chart:{id:"stacked_column_chart",name:"Stacked Column Chart",alias:["Stacked Column"],family:["ColumnCharts"],def:"A stacked column chart uses stacked bars of different colors to display the values for each dimension. The horizontal axis indicates the first classification dimension, the color indicates the second classification dimension, and the vertical axis shows the corresponding value.",purpose:["Comparison","Composition","Distribution","Rank"],coord:["Cartesian2D"],category:["Statistic"],shape:["Bars"],dataPres:[{minQty:2,maxQty:2,fieldConditions:["Nominal","Ordinal"]},{minQty:1,maxQty:1,fieldConditions:["Interval"]}],channel:["Color","Length","Position"],recRate:"Recommended"},percent_stacked_column_chart:{id:"percent_stacked_column_chart",name:"Percent Stacked Column Chart",alias:["Percent Stacked Column","% Stacked Column","100% Stacked Column"],family:["ColumnCharts"],def:"A percent stacked column chart uses stacked bars of different colors to display the values for each dimension. The horizontal axis indicates the first classification dimension, the color indicates the second classification dimension, and the vertical axis shows the percentage of the corresponding classification.",purpose:["Comparison","Composition","Distribution","Proportion"],coord:["Cartesian2D"],category:["Statistic"],shape:["Bars"],dataPres:[{minQty:2,maxQty:2,fieldConditions:["Nominal","Ordinal"]},{minQty:1,maxQty:1,fieldConditions:["Interval"]}],channel:["Color","Length"],recRate:"Recommended"},range_column_chart:{id:"range_column_chart",name:"Range Column Chart",alias:[],family:["ColumnCharts"],def:"A column chart that does not have to start from zero axis.",purpose:["Comparison"],coord:["Cartesian2D"],category:["Statistic"],shape:["Bars"],dataPres:[{minQty:2,maxQty:2,fieldConditions:["Interval","Ordinal"]},{minQty:1,maxQty:1,fieldConditions:["Nominal"]}],channel:["Length"],recRate:"Recommended"},waterfall_chart:{id:"waterfall_chart",name:"Waterfall Chart",alias:["Flying Bricks Chart","Mario Chart","Bridge Chart","Cascade Chart"],family:["ColumnCharts"],def:"A waterfall chart is used to portray how an initial value is affected by a series of intermediate positive or negative values",purpose:["Comparison","Trend"],coord:["Cartesian2D"],category:["Statistic"],shape:["Bars"],dataPres:[{minQty:1,maxQty:1,fieldConditions:["Ordinal","Time","Nominal"]},{minQty:1,maxQty:1,fieldConditions:["Interval"]}],channel:["Color","Length","Position"],recRate:"Recommended"},histogram:{id:"histogram",name:"Histogram",alias:[],family:["ColumnCharts"],def:"A histogram is an accurate representation of the distribution of numerical data.",purpose:["Distribution"],coord:["Cartesian2D"],category:["Statistic"],shape:["Bars"],dataPres:[{minQty:1,maxQty:1,fieldConditions:["Interval"]}],channel:["Position"],recRate:"Recommended"},bar_chart:{id:"bar_chart",name:"Bar Chart",alias:["Bars"],family:["BarCharts"],def:"A bar chart uses series of bars to display the value of the dimension. The vertical axis shows the classification dimension and the horizontal axis shows the corresponding value.",purpose:["Comparison","Distribution","Rank"],coord:["Cartesian2D"],category:["Statistic"],shape:["Bars"],dataPres:[{minQty:1,maxQty:2,fieldConditions:["Nominal","Ordinal"]},{minQty:1,maxQty:1,fieldConditions:["Interval"]}],channel:["Position","Color"],recRate:"Recommended"},stacked_bar_chart:{id:"stacked_bar_chart",name:"Stacked Bar Chart",alias:["Stacked Bar"],family:["BarCharts"],def:"A stacked bar chart uses stacked bars of different colors to display the values for each dimension. The vertical axis indicates the first classification dimension, the color indicates the second classification dimension, and the horizontal axis shows the corresponding value.",purpose:["Comparison","Composition","Distribution","Rank"],coord:["Cartesian2D"],category:["Statistic"],shape:["Bars"],dataPres:[{minQty:2,maxQty:2,fieldConditions:["Nominal","Ordinal"]},{minQty:1,maxQty:1,fieldConditions:["Interval"]}],channel:["Color","Length","Position"],recRate:"Recommended"},percent_stacked_bar_chart:{id:"percent_stacked_bar_chart",name:"Percent Stacked Bar Chart",alias:["Percent Stacked Bar","% Stacked Bar","100% Stacked Bar"],family:["BarCharts"],def:"A percent stacked column chart uses stacked bars of different colors to display the values for each dimension. The vertical axis indicates the first classification dimension, the color indicates the second classification dimension, and the horizontal axis shows the percentage of the corresponding classification.",purpose:["Comparison","Composition","Distribution","Proportion"],coord:["Cartesian2D"],category:["Statistic"],shape:["Bars"],dataPres:[{minQty:2,maxQty:2,fieldConditions:["Nominal","Ordinal"]},{minQty:1,maxQty:1,fieldConditions:["Interval"]}],channel:["Color","Length"],recRate:"Recommended"},grouped_bar_chart:{id:"grouped_bar_chart",name:"Grouped Bar Chart",alias:["Grouped Bar"],family:["BarCharts"],def:"A grouped bar chart uses bars of different colors to form a group to display the values of the dimensions. The vertical axis indicates the grouping of categories, the color indicates the categories, and the horizontal axis shows the corresponding value.",purpose:["Comparison","Distribution","Rank"],coord:["Cartesian2D"],category:["Statistic"],shape:["Bars"],dataPres:[{minQty:2,maxQty:2,fieldConditions:["Nominal","Ordinal"]},{minQty:1,maxQty:1,fieldConditions:["Interval"]}],channel:["Color","Position"],recRate:"Recommended"},range_bar_chart:{id:"range_bar_chart",name:"Range Bar Chart",alias:[],family:["BarCharts"],def:"A bar chart that does not have to start from zero axis.",purpose:["Comparison"],coord:["Cartesian2D"],category:["Statistic"],shape:["Bars"],dataPres:[{minQty:2,maxQty:2,fieldConditions:["Interval"]},{minQty:1,maxQty:1,fieldConditions:["Nominal","Ordinal"]}],channel:["Length"],recRate:"Recommended"},radial_bar_chart:{id:"radial_bar_chart",name:"Radial Bar Chart",alias:["Radial Column Chart"],family:["BarCharts"],def:"A bar chart that is plotted in the polar coordinate system. The axis along radius shows the classification dimension and the angle shows the corresponding value.",purpose:["Comparison","Distribution","Rank"],coord:["Polar"],category:["Statistic"],shape:["Round"],dataPres:[{minQty:1,maxQty:2,fieldConditions:["Nominal","Ordinal"]},{minQty:1,maxQty:1,fieldConditions:["Interval"]}],channel:["Angle","Color"],recRate:"Recommended"},bullet_chart:{id:"bullet_chart",name:"Bullet Chart",alias:[],family:["BarCharts"],def:"A bullet graph is a variation of a bar graph developed by Stephen Few. Seemingly inspired by the traditional thermometer charts and progress bars found in many dashboards, the bullet graph serves as a replacement for dashboard gauges and meters.",purpose:["Proportion"],coord:["Cartesian2D"],category:["Statistic"],shape:["Bars"],dataPres:[{minQty:3,maxQty:3,fieldConditions:["Interval"]},{minQty:1,maxQty:1,fieldConditions:["Nominal","Ordinal"]}],channel:["Position","Color"],recRate:"Recommended"},pie_chart:{id:"pie_chart",name:"Pie Chart",alias:["Circle Chart","Pie"],family:["PieCharts"],def:"A pie chart is a chart that the classification and proportion of data are represented by the color and arc length (angle, area) of the sector.",purpose:["Comparison","Composition","Proportion"],coord:["Polar"],category:["Statistic"],shape:["Round"],dataPres:[{minQty:1,maxQty:1,fieldConditions:["Nominal","Ordinal"]},{minQty:1,maxQty:1,fieldConditions:["Interval"]}],channel:["Angle","Area","Color"],recRate:"Use with Caution"},donut_chart:{id:"donut_chart",name:"Donut Chart",alias:["Donut","Doughnut","Doughnut Chart","Ring Chart"],family:["PieCharts"],def:"A donut chart is a variation on a Pie chart except it has a round hole in the center which makes it look like a donut.",purpose:["Comparison","Composition","Proportion"],coord:["Polar"],category:["Statistic"],shape:["Round"],dataPres:[{minQty:1,maxQty:1,fieldConditions:["Nominal","Ordinal"]},{minQty:1,maxQty:1,fieldConditions:["Interval"]}],channel:["ArcLength"],recRate:"Recommended"},nested_pie_chart:{id:"nested_pie_chart",name:"Nested Pie Chart",alias:["Nested Circle Chart","Nested Pie","Nested Donut Chart"],family:["PieCharts"],def:"A nested pie chart is a chart that contains several donut charts, where all the donut charts share the same center in position.",purpose:["Comparison","Composition","Proportion"],coord:["Polar"],category:["Statistic"],shape:["Round"],dataPres:[{minQty:1,maxQty:1,fieldConditions:["Nominal","Ordinal"]},{minQty:1,maxQty:"*",fieldConditions:["Interval"]}],channel:["Angle","Area","Color","Position"],recRate:"Use with Caution"},rose_chart:{id:"rose_chart",name:"Rose Chart",alias:["Nightingale Chart","Polar Area Chart","Coxcomb Chart"],family:["PieCharts"],def:"Nightingale Rose Chart is a peculiar combination of the Radar Chart and Stacked Column Chart types of data visualization.",purpose:["Comparison","Composition","Proportion"],coord:["Polar"],category:["Statistic"],shape:["Round"],dataPres:[{minQty:1,maxQty:1,fieldConditions:["Nominal","Ordinal"]},{minQty:1,maxQty:1,fieldConditions:["Interval"]}],channel:["Angle","Color","Length"],recRate:"Use with Caution"},scatter_plot:{id:"scatter_plot",name:"Scatter Plot",alias:["Scatter Chart","Scatterplot"],family:["ScatterCharts"],def:"A scatter plot is a type of plot or mathematical diagram using Cartesian coordinates to display values for typically two variables for series of data.",purpose:["Comparison","Distribution","Anomaly"],coord:["Cartesian2D"],category:["Statistic"],shape:["Scatter"],dataPres:[{minQty:2,maxQty:2,fieldConditions:["Interval"]},{minQty:0,maxQty:1,fieldConditions:["Nominal"]}],channel:["Color","Position"],recRate:"Recommended"},bubble_chart:{id:"bubble_chart",name:"Bubble Chart",alias:["Bubble Chart"],family:["ScatterCharts"],def:"A bubble chart is a type of chart that displays four dimensions of data with x, y positions, circle size and circle color.",purpose:["Comparison","Distribution"],coord:["Cartesian2D"],category:["Statistic"],shape:["Scatter"],dataPres:[{minQty:3,maxQty:3,fieldConditions:["Interval"]},{minQty:0,maxQty:1,fieldConditions:["Nominal"]}],channel:["Color","Position","Size"],recRate:"Recommended"},non_ribbon_chord_diagram:{id:"non_ribbon_chord_diagram",name:"Non-Ribbon Chord Diagram",alias:[],family:["GeneralGraph"],def:"A stripped-down version of a Chord Diagram, with only the connection lines showing. This provides more emphasis on the connections within the data.",purpose:["Relation"],coord:["Cartesian2D"],category:["Graph"],shape:["Network"],dataPres:[{minQty:1,maxQty:"*",fieldConditions:["Nominal"]}],channel:["Color","Size","Opacity","Stroke","LineWidth"],recRate:"Recommended"},arc_diagram:{id:"arc_diagram",name:"Arc Diagram",alias:[],family:["GeneralGraph"],def:"A graph where the edges are represented as arcs.",purpose:["Relation"],coord:["Cartesian2D"],category:["Graph"],shape:["Network"],dataPres:[{minQty:1,maxQty:"*",fieldConditions:["Nominal"]}],channel:["Color","Size","Opacity","Stroke","LineWidth"],recRate:"Recommended"},chord_diagram:{id:"chord_diagram",name:"Chord Diagram",alias:[],family:["GeneralGraph"],def:"A graphical method of displaying the inter-relationships between data in a matrix. The data are arranged radially around a circle with the relationships between the data points typically drawn as arcs connecting the data.",purpose:["Relation"],coord:["Cartesian2D"],category:["Graph"],shape:["Network"],dataPres:[{minQty:1,maxQty:"*",fieldConditions:["Nominal"]}],channel:["Color","Size","Opacity","Stroke","LineWidth"],recRate:"Recommended"},treemap:{id:"treemap",name:"Treemap",alias:[],family:["TreeGraph"],def:"A visual representation of a data tree with nodes. Each node is displayed as a rectangle, sized and colored according to values that you assign.",purpose:["Composition","Comparison","Hierarchy"],coord:["Cartesian2D"],category:["Statistic"],shape:["Square"],dataPres:[{minQty:1,maxQty:"*",fieldConditions:["Nominal"]},{minQty:1,maxQty:1,fieldConditions:["Interval"]}],channel:["Color","Area"],recRate:"Recommended"},sankey_diagram:{id:"sankey_diagram",name:"Sankey Diagram",alias:[],family:["GeneralGraph"],def:"A graph shows the flows with weights between objects.",purpose:["Flow","Trend","Relation"],coord:["Cartesian2D"],category:["Graph"],shape:["Network"],dataPres:[{minQty:1,maxQty:"*",fieldConditions:["Nominal"]}],channel:["Color","Size","Opacity","Stroke","LineWidth"],recRate:"Recommended"},funnel_chart:{id:"funnel_chart",name:"Funnel Chart",alias:[],family:["FunnelCharts"],def:"A funnel chart is often used to represent stages in a sales process and show the amount of potential revenue for each stage.",purpose:["Trend"],coord:["SymmetricCartesian"],category:["Statistic"],shape:["Symmetric"],dataPres:[{minQty:1,maxQty:1,fieldConditions:["Ordinal"]},{minQty:1,maxQty:1,fieldConditions:["Interval"]}],channel:["Color","Length"],recRate:"Recommended"},mirror_funnel_chart:{id:"mirror_funnel_chart",name:"Mirror Funnel Chart",alias:["Contrast Funnel Chart"],family:["FunnelCharts"],def:"A mirror funnel chart is a funnel chart divided into two series by a central axis.",purpose:["Comparison","Trend"],coord:["SymmetricCartesian"],category:["Statistic"],shape:["Symmetric"],dataPres:[{minQty:1,maxQty:1,fieldConditions:["Ordinal"]},{minQty:1,maxQty:1,fieldConditions:["Interval"]},{minQty:1,maxQty:1,fieldConditions:["Nominal"]}],channel:["Color","Length","Direction"],recRate:"Recommended"},box_plot:{id:"box_plot",name:"Box Plot",alias:["Box and Whisker Plot","boxplot"],family:["BarCharts"],def:"A box plot is often used to graphically depict groups of numerical data through their quartiles. Box plots may also have lines extending from the boxes indicating variability outside the upper and lower quartiles. Outliers may be plotted as individual points.",purpose:["Distribution","Anomaly"],coord:["Cartesian2D"],category:["Statistic"],shape:["Bars"],dataPres:[{minQty:1,maxQty:1,fieldConditions:["Nominal","Ordinal"]},{minQty:1,maxQty:1,fieldConditions:["Interval"]}],channel:["Position"],recRate:"Recommended"},heatmap:{id:"heatmap",name:"Heatmap",alias:[],family:["HeatmapCharts"],def:"A heatmap is a graphical representation of data where the individual values contained in a matrix are represented as colors.",purpose:["Distribution"],coord:["Cartesian2D"],category:["Statistic"],shape:["Square"],dataPres:[{minQty:2,maxQty:2,fieldConditions:["Nominal","Ordinal"]},{minQty:1,maxQty:1,fieldConditions:["Interval"]}],channel:["Color","Position"],recRate:"Recommended"},density_heatmap:{id:"density_heatmap",name:"Density Heatmap",alias:["Heatmap"],family:["HeatmapCharts"],def:"A density heatmap is a heatmap for representing the density of dots.",purpose:["Distribution"],coord:["Cartesian2D"],category:["Statistic"],shape:["Area"],dataPres:[{minQty:3,maxQty:3,fieldConditions:["Interval"]}],channel:["Color","Position","Area"],recRate:"Recommended"},radar_chart:{id:"radar_chart",name:"Radar Chart",alias:["Web Chart","Spider Chart","Star Chart","Cobweb Chart","Irregular Polygon","Kiviat diagram"],family:["RadarCharts"],def:"A radar chart maps series of data volume of multiple dimensions onto the axes. Starting at the same center point, usually ending at the edge of the circle, connecting the same set of points using lines.",purpose:["Comparison"],coord:["Radar"],category:["Statistic"],shape:["Round"],dataPres:[{minQty:1,maxQty:2,fieldConditions:["Nominal"]},{minQty:1,maxQty:1,fieldConditions:["Interval"]}],channel:["Color","Position"],recRate:"Recommended"},wordcloud:{id:"wordcloud",name:"Word Cloud",alias:["Wordle","Tag Cloud","Text Cloud"],family:["Others"],def:"A word cloud is a collection, or cluster, of words depicted in different sizes, colors, and shapes, which takes a piece of text as input. Typically, the font size in the word cloud is encoded as the word frequency in the input text.",purpose:["Proportion"],coord:["Cartesian2D"],category:["Diagram"],shape:["Scatter"],dataPres:[{minQty:1,maxQty:1,fieldConditions:["Nominal"]},{minQty:0,maxQty:1,fieldConditions:["Interval"]}],channel:["Size","Position","Color"],recRate:"Recommended"},candlestick_chart:{id:"candlestick_chart",name:"Candlestick Chart",alias:["Japanese Candlestick Chart)"],family:["BarCharts"],def:"A candlestick chart is a specific version of box plot, which is a style of financial chart used to describe price movements of a security, derivative, or currency.",purpose:["Trend","Distribution"],coord:["Cartesian2D"],category:["Statistic"],shape:["Bars"],dataPres:[{minQty:1,maxQty:1,fieldConditions:["Time"]},{minQty:1,maxQty:1,fieldConditions:["Interval"]}],channel:["Position"],recRate:"Recommended"},compact_box_tree:{id:"compact_box_tree",name:"CompactBox Tree",alias:[],family:["TreeGraph"],def:"A type of tree graph layout which arranges the nodes with same depth on the same level.",purpose:["Relation","Hierarchy"],coord:["Cartesian2D"],category:["Graph"],shape:["Network"],dataPres:[{minQty:1,maxQty:"*",fieldConditions:["Nominal"]}],channel:["Color","Size","Opacity","Stroke","LineWidth"],recRate:"Recommended"},dendrogram:{id:"dendrogram",name:"Dendrogram",alias:[],family:["TreeGraph"],def:"A type of tree graph layout which arranges the leaves on the same level.",purpose:["Relation","Hierarchy"],coord:["Cartesian2D"],category:["Graph"],shape:["Network"],dataPres:[{minQty:1,maxQty:"*",fieldConditions:["Nominal"]}],channel:["Color","Size","Opacity","Stroke","LineWidth"],recRate:"Recommended"},indented_tree:{id:"indented_tree",name:"Indented Tree Layout",alias:[],family:["TreeGraph"],def:"A type of tree graph layout where the hierarchy of tree is represented by the horizontal indentation, and each element will occupy one row/column. It is commonly used to represent the file directory structure.",purpose:["Relation","Hierarchy"],coord:["Cartesian2D"],category:["Graph"],shape:["Network"],dataPres:[{minQty:1,maxQty:"*",fieldConditions:["Nominal"]}],channel:["Color","Size","Opacity","Stroke","LineWidth"],recRate:"Recommended"},radial_tree:{id:"radial_tree",name:"Radial Tree Layout",alias:[],family:["TreeGraph"],def:"A type of tree graph layout which places the root at the center, and the branches around the root radially.",purpose:["Relation","Hierarchy"],coord:["Cartesian2D"],category:["Graph"],shape:["Network"],dataPres:[{minQty:1,maxQty:"*",fieldConditions:["Nominal"]}],channel:["Color","Size","Opacity","Stroke","LineWidth"],recRate:"Recommended"},flow_diagram:{id:"flow_diagram",name:"Flow Diagram",alias:["Dagre Graph Layout","Dagre","Flow Chart"],family:["GeneralGraph"],def:"Directed flow graph.",purpose:["Relation","Flow"],coord:["Cartesian2D"],category:["Graph"],shape:["Network"],dataPres:[{minQty:1,maxQty:"*",fieldConditions:["Nominal"]}],channel:["Color","Size","Opacity","Stroke","LineWidth"],recRate:"Recommended"},fruchterman_layout_graph:{id:"fruchterman_layout_graph",name:"Fruchterman Graph Layout",alias:[],family:["GeneralGraph"],def:"A type of force directed graph layout.",purpose:["Relation"],coord:["Cartesian2D"],category:["Graph"],shape:["Network"],dataPres:[{minQty:1,maxQty:"*",fieldConditions:["Nominal"]}],channel:["Color","Size","Opacity","Stroke","LineWidth"],recRate:"Recommended"},force_directed_layout_graph:{id:"force_directed_layout_graph",name:"Force Directed Graph Layout",alias:[],family:["GeneralGraph"],def:"The classical force directed graph layout.",purpose:["Relation"],coord:["Cartesian2D"],category:["Graph"],shape:["Network"],dataPres:[{minQty:1,maxQty:"*",fieldConditions:["Nominal"]}],channel:["Color","Size","Opacity","Stroke","LineWidth"],recRate:"Recommended"},fa2_layout_graph:{id:"fa2_layout_graph",name:"Force Atlas 2 Graph Layout",alias:["FA2 Layout"],family:["GeneralGraph"],def:"A type of force directed graph layout algorithm. It focuses more on the degree of the node when calculating the force than the classical force-directed algorithm .",purpose:["Relation"],coord:["Cartesian2D"],category:["Graph"],shape:["Network"],dataPres:[{minQty:1,maxQty:"*",fieldConditions:["Nominal"]}],channel:["Color","Size","Opacity","Stroke","LineWidth"],recRate:"Recommended"},mds_layout_graph:{id:"mds_layout_graph",name:"Multi-Dimensional Scaling Layout",alias:["MDS Layout"],family:["GeneralGraph"],def:"A type of dimension reduction algorithm that could be used for calculating graph layout. MDS (Multidimensional scaling) is used for project high dimensional data onto low dimensional space.",purpose:["Relation"],coord:["Cartesian2D"],category:["Graph"],shape:["Network"],dataPres:[{minQty:1,maxQty:"*",fieldConditions:["Nominal"]}],channel:["Color","Size","Opacity","Stroke","LineWidth"],recRate:"Recommended"},circular_layout_graph:{id:"circular_layout_graph",name:"Circular Graph Layout",alias:[],family:["GeneralGraph"],def:"A type of graph layout which arranges all the nodes on a circle.",purpose:["Relation"],coord:["Cartesian2D"],category:["Graph"],shape:["Network"],dataPres:[{minQty:1,maxQty:"*",fieldConditions:["Nominal"]}],channel:["Color","Size","Opacity","Stroke","LineWidth"],recRate:"Recommended"},spiral_layout_graph:{id:"spiral_layout_graph",name:"Spiral Graph Layout",alias:[],family:["GeneralGraph"],def:"A type of graph layout which arranges all the nodes along a spiral line.",purpose:["Relation"],coord:["Cartesian2D"],category:["Graph"],shape:["Network"],dataPres:[{minQty:1,maxQty:"*",fieldConditions:["Nominal"]}],channel:["Color","Size","Opacity","Stroke","LineWidth"],recRate:"Recommended"},radial_layout_graph:{id:"radial_layout_graph",name:"Radial Graph Layout",alias:[],family:["GeneralGraph"],def:"A type of graph layout which places a focus node on the center and the others on the concentrics centered at the focus node according to the shortest path length to the it.",purpose:["Relation"],coord:["Cartesian2D"],category:["Graph"],shape:["Network"],dataPres:[{minQty:1,maxQty:"*",fieldConditions:["Nominal"]}],channel:["Color","Size","Opacity","Stroke","LineWidth"],recRate:"Recommended"},concentric_layout_graph:{id:"concentric_layout_graph",name:"Concentric Graph Layout",alias:[],family:["GeneralGraph"],def:"A type of graph layout which arranges the nodes on concentrics.",purpose:["Relation"],coord:["Cartesian2D"],category:["Graph"],shape:["Network"],dataPres:[{minQty:1,maxQty:"*",fieldConditions:["Nominal"]}],channel:["Color","Size","Opacity","Stroke","LineWidth"],recRate:"Recommended"},grid_layout_graph:{id:"grid_layout_graph",name:"Grid Graph Layout",alias:[],family:["GeneralGraph"],def:"A type of graph layout arranges the nodes on grids.",purpose:["Relation"],coord:["Cartesian2D"],category:["Graph"],shape:["Network"],dataPres:[{minQty:1,maxQty:"*",fieldConditions:["Nominal"]}],channel:["Color","Size","Opacity","Stroke","LineWidth"],recRate:"Recommended"}};function o(e,t){return t.every(function(t){return e.includes(t)})}var s=["bar_chart","grouped_bar_chart","stacked_bar_chart","percent_stacked_bar_chart","column_chart","grouped_column_chart","stacked_column_chart","percent_stacked_column_chart"],a=["bar_chart","grouped_bar_chart","stacked_bar_chart","percent_stacked_bar_chart","column_chart","grouped_column_chart","stacked_column_chart","percent_stacked_column_chart"];function l(e,t){return t.some(function(t){return e.includes(t)})}function h(e,t){return e.distinctt.distinct?-1:0}var u={"bar-series-qty":.5,"data-check":1,"data-field-qty":1,"diff-pie-sector":.5,"landscape-or-portrait":.3,"limit-series":1,"line-field-time-ordinal":1,"no-redundant-field":1,"nominal-enum-combinatorial":1,"purpose-check":1,"series-qty-limit":.8},d=function(e,t,i,r,o,s){var a=1;return Object.values(i).filter(function(i){var s,a,l,h=(null===(s=i.option)||void 0===s?void 0:s.weight)||u[i.id]||1,d=null===(a=i.option)||void 0===a?void 0:a.extra;return i.type===r&&i.trigger((0,n.pi)((0,n.pi)((0,n.pi)((0,n.pi)({},o),{weight:h}),d),{chartType:e,chartWIKI:t}))&&!(null===(l=i.option)||void 0===l?void 0:l.off)}).forEach(function(i){var l,h,d=(null===(l=i.option)||void 0===l?void 0:l.weight)||u[i.id]||1,c=null===(h=i.option)||void 0===h?void 0:h.extra,f=i.validator((0,n.pi)((0,n.pi)((0,n.pi)((0,n.pi)({},o),{weight:d}),c),{chartType:e,chartWIKI:t})),g=d*f;a*=g,s.push({phase:"ADVISE",ruleId:i.id,score:g,base:f,weight:d,ruleType:r})}),a},c=["pie_chart","donut_chart"],f=["bar_chart","grouped_bar_chart","stacked_bar_chart","percent_stacked_bar_chart","column_chart","grouped_column_chart","stacked_column_chart","percent_stacked_column_chart"];function g(e){var t=e.chartType,i=e.dataProps,n=e.preferences;return!!(i&&t&&n&&n.canvasLayout)}var p=["line_chart","area_chart","stacked_area_chart","percent_stacked_area_chart"],m=["bar_chart","column_chart","grouped_bar_chart","grouped_column_chart","stacked_bar_chart","stacked_column_chart"];function _(e){return e.filter(function(e){return o(e.levelOfMeasurements,["Nominal"])})}var E=["pie_chart","donut_chart","radar_chart","rose_chart"],v=i(96486);function b(e){return"number"==typeof e}function C(e){return"string"==typeof e||"boolean"==typeof e}function S(e){return e instanceof Date}function y(e){var t=e.encode,i=e.data,r=e.scale,o=(0,v.mapValues)(t,function(e,t){var n,o,s;return{field:e,type:void 0!==(n=null==r?void 0:r[t].type)?function(e){switch(e){case"linear":case"log":case"pow":case"sqrt":case"qunatile":case"threshold":case"quantize":case"sequential":return"quantitative";case"time":return"temporal";case"ordinal":case"point":case"band":return"categorical";default:throw Error("Unkonwn scale type: ".concat(e,"."))}}(n):function(e){if(e.some(b))return"quantitative";if(e.some(C))return"categorical";if(e.some(S))return"temporal";throw Error("Unknown type: ".concat(typeof e[0]))}((o=i,"function"==typeof(s=e)?o.map(s):"string"==typeof s&&o.some(function(e){return void 0!==e[s]})?o.map(function(e){return e[s]}):o.map(function(){return s})))}});return(0,n.pi)((0,n.pi)({},e),{encode:o})}var T=["line_chart"],R={"bar-series-qty":{id:"bar-series-qty",type:"SOFT",docs:{lintText:"Bar chart should has proper number of bars or bar groups."},trigger:function(e){var t=e.chartType;return s.includes(t)},validator:function(e){var t=1,i=e.dataProps,n=e.chartType;if(i&&n){var r=i.find(function(e){return o(e.levelOfMeasurements,["Nominal"])}),s=r&&r.count?r.count:0;s>20&&(t=20/s)}return t<.1?.1:t}},"bar-without-axis-min":{id:"bar-without-axis-min",type:"DESIGN",docs:{lintText:"It is not recommended to set the minimum value of axis for the bar or column chart.",fixText:"Remove the minimum value config of axis."},trigger:function(e){var t=e.chartType;return a.includes(t)},optimizer:function(e,t){var i,n,r=t.scale;if(!r)return{};var o=null===(i=r.x)||void 0===i?void 0:i.domainMin,s=null===(n=r.y)||void 0===n?void 0:n.domainMin;if(o||s){var a=JSON.parse(JSON.stringify(r));return o&&(a.x.domainMin=0),s&&(a.y.domainMin=0),{scale:a}}return{}}},"data-check":{id:"data-check",type:"HARD",docs:{lintText:"Data must satisfy the data prerequisites."},trigger:function(){return!0},validator:function(e){var t=0,i=e.dataProps,n=e.chartType,r=e.chartWIKI;if(i&&n&&r[n]){t=1;var o=r[n].dataPres||[];o.forEach(function(e){!function(e,t){var i=t.map(function(e){return e.levelOfMeasurements});if(i){var n=0;if(i.forEach(function(t){t&&l(t,e.fieldConditions)&&(n+=1)}),n>=e.minQty&&(n<=e.maxQty||"*"===e.maxQty))return!0}return!1}(e,i)&&(t=0)}),i.map(function(e){return e.levelOfMeasurements}).forEach(function(e){var i=!1;o.forEach(function(t){e&&l(e,t.fieldConditions)&&(i=!0)}),i||(t=0)})}return t}},"data-field-qty":{id:"data-field-qty",type:"HARD",docs:{lintText:"Data must have at least the min qty of the prerequisite."},trigger:function(){return!0},validator:function(e){var t=0,i=e.dataProps,n=e.chartType,r=e.chartWIKI;if(i&&n&&r[n]){t=1;var o=(r[n].dataPres||[]).map(function(e){return e.minQty}).reduce(function(e,t){return e+t});i.length&&i.length>=o&&(t=1)}return t}},"diff-pie-sector":{id:"diff-pie-sector",type:"SOFT",docs:{lintText:"The difference between sectors of a pie chart should be large enough."},trigger:function(e){var t=e.chartType;return c.includes(t)},validator:function(e){var t=1,i=e.dataProps;if(i){var n=i.find(function(e){return o(e.levelOfMeasurements,["Interval"])});if(n&&n.sum&&n.rawData){var r=1/n.sum,s=n.rawData.map(function(e){return e*r}).reduce(function(e,t){return e*t}),a=n.rawData.length,l=Math.pow(1/a,a);t=2*(Math.abs(l-Math.abs(s))/l)}}return t<.1?.1:t}},"landscape-or-portrait":{id:"landscape-or-portrait",type:"SOFT",docs:{lintText:"Recommend column charts for landscape layout and bar charts for portrait layout."},trigger:function(e){return f.includes(e.chartType)&&g(e)},validator:function(e){var t=1,i=e.chartType,n=e.preferences;return g(e)&&("portrait"===n.canvasLayout&&["bar_chart","grouped_bar_chart","stacked_bar_chart","percent_stacked_bar_chart"].includes(i)?t=5:"landscape"===n.canvasLayout&&["column_chart","grouped_column_chart","stacked_column_chart","percent_stacked_column_chart"].includes(i)&&(t=5)),t}},"limit-series":{id:"limit-series",type:"SOFT",docs:{lintText:"Avoid too many values in one series."},trigger:function(e){return e.dataProps.filter(function(e){return l(e.levelOfMeasurements,["Nominal","Ordinal"])}).length>=2},validator:function(e){var t=1,i=e.dataProps,n=e.chartType;if(i){var r=i.filter(function(e){return l(e.levelOfMeasurements,["Nominal","Ordinal"])});if(r.length>=2){var o=r.sort(h)[1];o.distinct&&(t=o.distinct>10?.1:1/o.distinct,o.distinct>6&&"heatmap"===n?t=5:"heatmap"===n&&(t=1))}}return t}},"line-field-time-ordinal":{id:"line-field-time-ordinal",type:"SOFT",docs:{lintText:"Data containing time or ordinal fields are suitable for line or area charts."},trigger:function(e){var t=e.chartType;return p.includes(t)},validator:function(e){var t=1,i=e.dataProps;return i&&i.find(function(e){return l(e.levelOfMeasurements,["Ordinal","Time"])})&&(t=5),t}},"no-redundant-field":{id:"no-redundant-field",type:"HARD",docs:{lintText:"No redundant field."},trigger:function(){return!0},validator:function(e){var t=0,i=e.dataProps,n=e.chartType,r=e.chartWIKI;if(i&&n&&r[n]){var o=(r[n].dataPres||[]).map(function(e){return"*"===e.maxQty?99:e.maxQty}).reduce(function(e,t){return e+t});i.length&&i.length<=o&&(t=1)}return t}},"nominal-enum-combinatorial":{id:"nominal-enum-combinatorial",type:"SOFT",docs:{lintText:"Single (Basic) and Multi (Stacked, Grouped,...) charts should be optimized recommended by nominal enums combinatorial numbers."},trigger:function(e){var t=e.chartType,i=e.dataProps;return m.includes(t)&&_(i).length>=2},validator:function(e){var t=1,i=e.dataProps,n=e.chartType;if(i){var r=_(i);if(r.length>=2){var o=r.sort(h),s=o[0],a=o[1];s.distinct===s.count&&["bar_chart","column_chart"].includes(n)&&(t=5),s.count&&s.distinct&&a.distinct&&s.count>s.distinct&&["grouped_bar_chart","grouped_column_chart","stacked_bar_chart","stacked_column_chart"].includes(n)&&(t=5)}}return t}},"purpose-check":{id:"purpose-check",type:"HARD",docs:{lintText:"Choose chart types that satisfy the purpose, if purpose is defined."},trigger:function(){return!0},validator:function(e){var t=0,i=e.chartType,n=e.purpose,r=e.chartWIKI;return n?(i&&r[i]&&n&&(r[i].purpose||"").includes(n)&&(t=1),t):t=1}},"series-qty-limit":{id:"series-qty-limit",type:"SOFT",docs:{lintText:"Some charts should has at most N values for the series."},trigger:function(e){var t=e.chartType;return E.includes(t)},validator:function(e){var t=1,i=e.dataProps,n=e.chartType,r=e.limit;if((!Number.isInteger(r)||r<=0)&&(r=6,("pie_chart"===n||"donut_chart"===n||"rose_chart"===n)&&(r=6),"radar_chart"===n&&(r=8)),i){var s=i.find(function(e){return o(e.levelOfMeasurements,["Nominal"])}),a=s&&s.count?s.count:0;a>=2&&a<=r&&(t=5+2/a)}return t}},"x-axis-line-fading":{id:"x-axis-line-fading",type:"DESIGN",docs:{lintText:"Adjust axis to make it prettier"},trigger:function(e){var t=e.chartType;return T.includes(t)},optimizer:function(e,t){var i,n=y(t).encode;if(n&&(null===(i=n.y)||void 0===i?void 0:i.type)==="quantitative"){var r=e.find(function(e){var t;return e.name===(null===(t=n.y)||void 0===t?void 0:t.field)});if(r){var o=r.maximum-r.minimum;if(r.minimum&&r.maximum&&o<2*r.maximum/3){var s=Math.floor(r.minimum-o/5);return{axis:{x:{tick:!1}},scale:{y:{domainMin:s>0?s:0}},clip:!0}}}}return{}}}},A=Object.keys(R),N=function(e){var t={};return e.forEach(function(e){Object.keys(R).includes(e)&&(t[e]=R[e])}),t},O=function(e){if(!e)return N(A);var t=N(A);if(e.exclude&&e.exclude.forEach(function(e){Object.keys(t).includes(e)&&delete t[e]}),e.include){var i=e.include;Object.keys(t).forEach(function(e){i.includes(e)||delete t[e]})}var r=(0,n.pi)((0,n.pi)({},t),e.custom),o=e.options;return o&&Object.keys(o).forEach(function(e){if(Object.keys(r).includes(e)){var t=o[e];r[e]=(0,n.pi)((0,n.pi)({},r[e]),{option:t})}}),r},L=[[!0,!1],[0,1],["true","false"],["Yes","No"],["True","False"],["0","1"],["是","否"]],I="([-_./\\s])",w="(18|19|20)\\d{2}",D="(0?[1-9]|1[012])",x="(0?[1-9]|[12]\\d|3[01])",M="(0?\\d|1\\d|2[0-4])",k="(0?\\d|[012345]\\d)",P="(Z|[+-]".concat(M,"(:").concat(k,")?)");function F(e){return null==e||""===e||Number.isNaN(e)||"null"===e}function B(e){return"string"==typeof e}function U(e){return"number"==typeof e}function H(e){if(B(e)){var t=!1,i=e;/^[+-]/.test(i)&&(i=i.slice(1));for(var n=0;n0&&t<100,"The percent cannot be between (0, 100)."),(i?e:e.sort(function(e,t){return e>t?1:-1}))[Math.ceil(e.length*t/100)-1]}function eo(e){var t=en(e),i=J(e,"variance");return void 0!==i?i:Q(e,"variance",e.reduce(function(e,i){return e+Math.pow(i-t,2)},0)/e.length)}function es(e){return Math.sqrt(eo(e))}function ea(e){var t={};return e.forEach(function(e){var i="".concat(e);t[i]?t[i]+=1:t[i]=1}),t}var el=function(e){var t,i,r=(void 0===(t=e)&&(t=!0),["".concat(w),"".concat(w).concat(I).concat(t?"":"?","W").concat("([0-4]\\d|5[0-2])","(").concat(I).concat(t?"":"?").concat("([1-7])",")?"),"".concat(D).concat(I).concat(t?"":"?").concat(x).concat(I).concat(t?"":"?").concat(w),"".concat(w).concat(I).concat(t?"":"?").concat(D).concat(I).concat(t?"":"?").concat(x),"".concat(w).concat(I).concat(t?"":"?").concat(D),"".concat(w).concat(I).concat(t?"":"?").concat("((([0-2]\\d|3[0-5])\\d)|36[0-6])")]),o=(void 0===(i=e)&&(i=!0),["".concat(M,":").concat(i?"":"?").concat(k,":").concat(i?"":"?").concat(k,"([.,]").concat("\\d{1,4}",")?").concat(P,"?"),"".concat(M,":").concat(i?"":"?").concat(k,"?").concat(P)]),s=(0,n.ev)((0,n.ev)([],(0,n.CR)(r),!1),(0,n.CR)(o),!1);return r.forEach(function(e){o.forEach(function(t){s.push("".concat(e,"[T\\s]").concat(t))})}),s.map(function(e){return new RegExp("^".concat(e,"$"))})};function eh(e,t){if(B(e)){for(var i=el(t),n=0;n0&&(c.generateColumns([0],null==i?void 0:i.columns),c.colData=[c.data],c.data=c.data.map(function(e){return[e]})),Y(g)){var p=q(g.length);c.generateDataAndColDataFromArray(!1,t,p,null==i?void 0:i.fillValue,null==i?void 0:i.columnTypes),c.generateColumns(p,null==i?void 0:i.columns)}if(K(g)){for(var m=[],f=0;f=0&&m>=0||_.length>0,"The rowLoc is not found in the indexes."),p>=0&&m>=0&&(A=this.data.slice(p,m),N=this.indexes.slice(p,m)),_.length>0)for(var a=0;a<_.length;a+=1){var C=_[a];A.push(this.data[C]),N.push(this.indexes[C])}if(E>=0&&v>=0){for(var a=0;a0){for(var O=[],L=A.slice(),a=0;a=0&&p>=0||m.length>0,"The colLoc is illegal"),V(i)&&q(this.columns.length).includes(i)&&(_=i,E=i+1),Y(i))for(var a=0;a=0&&p>=0||m.length>0,"The rowLoc is not found in the indexes.");var R=[],A=[];if(g>=0&&p>=0)R=this.data.slice(g,p),A=this.indexes.slice(g,p);else if(m.length>0)for(var a=0;a=0&&E>=0||v.length>0,"The colLoc is not found in the columns index."),_>=0&&E>=0){for(var a=0;a0){for(var N=[],O=R.slice(),a=0;a1){var E={},v=f;g.forEach(function(t){"date"===t?(E.date=e(v.filter(function(e){return eh(e)}),i),v=v.filter(function(e){return!eh(e)})):"integer"===t?(E.integer=e(v.filter(function(e){return W(e)}),i),v=v.filter(function(e){return!W(e)})):"float"===t?(E.float=e(v.filter(function(e){return G(e)}),i),v=v.filter(function(e){return!G(e)})):"string"===t&&(E.string=e(v.filter(function(e){return"string"===ed(e,i)})),v=v.filter(function(e){return"string"!==ed(e,i)}))}),_.meta=E}2===_.distinct&&"date"!==_.recommendation&&(d.length>=100?_.recommendation="boolean":z(m,!0)&&(_.recommendation="boolean")),"string"===u&&Object.assign(_,{maxLength:et(r=(n=f.map(function(e){return"".concat(e)})).map(function(e){return e.length})),minLength:ee(r),meanLength:en(r),containsChar:n.some(function(e){return/[A-z]/.test(e)}),containsDigit:n.some(function(e){return/[0-9]/.test(e)}),containsSpace:n.some(function(e){return/\s/.test(e)})}),("integer"===u||"float"===u)&&Object.assign(_,{minimum:ee(o=f.map(function(e){return 1*e})),maximum:et(o),mean:en(o),percentile5:er(o,5),percentile25:er(o,25),percentile50:er(o,50),percentile75:er(o,75),percentile95:er(o,95),sum:ei(o),variance:eo(o),standardDeviation:es(o),zeros:o.filter(function(e){return 0===e}).length}),"date"===u&&Object.assign(_,(s="integer"===_.type,a=f.map(function(e){if(s){var t="".concat(e);if(8===t.length)return new Date("".concat(t.substring(0,4),"/").concat(t.substring(4,2),"/").concat(t.substring(6,2))).getTime()}return new Date(e).getTime()}),{minimum:f[void 0!==(l=J(a,"minIndex"))?l:Q(a,"minIndex",function(e){for(var t=e[0],i=0,n=0;nt&&(i=n,t=e[n]);return i}(a))]}));var b=[];return"boolean"!==_.recommendation&&("string"!==_.recommendation||eu(_))||b.push("Nominal"),eu(_)&&b.push("Ordinal"),("integer"===_.recommendation||"float"===_.recommendation)&&b.push("Interval"),"integer"===_.recommendation&&b.push("Discrete"),"float"===_.recommendation&&b.push("Continuous"),"date"===_.recommendation&&b.push("Time"),_.levelOfMeasurements=b,_}(this.colData[i],this.extra.strictDatePattern)),{name:String(r)}))}return t},t.prototype.toString=function(){for(var e=this,t=Array(this.columns.length+1).fill(0),i=0;it[0]&&(t[0]=n)}for(var i=0;it[i+1]&&(t[i+1]=n)}for(var i=0;it[i+1]&&(t[i+1]=n)}return"".concat(ep(t[0])).concat(this.columns.map(function(i,n){return"".concat(i).concat(n!==e.columns.length?ep(t[n+1]-e_(i)+2):"")}).join(""),"\n").concat(this.indexes.map(function(i,n){var r;return"".concat(i).concat(ep(t[0]-e_(i))).concat(null===(r=e.data[n])||void 0===r?void 0:r.map(function(i,n){return"".concat(em(i)).concat(n!==e.columns.length?ep(t[n+1]-e_(i)):"")}).join("")).concat(n!==e.indexes.length?"\n":"")}).join(""))},t}(ev),eS=function(e){if("object"!=typeof e||null===e)return e;if(Array.isArray(e)){t=[];for(var t,i=0,n=e.length;i!!eA().valid(e);function eO(e){let{value:t}=e;return eN(t)?eA()(t).hex():""}let eL={lab:{l:[0,100],a:[-86.185,98.254],b:[-107.863,94.482]},lch:{l:[0,100],c:[0,100],h:[0,360]},rgb:{r:[0,255],g:[0,255],b:[0,255]},rgba:{r:[0,255],g:[0,255],b:[0,255],a:[0,1]},hsl:{h:[0,360],s:[0,1],l:[0,1]},hsv:{h:[0,360],s:[0,1],v:[0,1]},hsi:{h:[0,360],s:[0,1],i:[0,1]},cmyk:{c:[0,1],m:[0,1],y:[0,1],k:[0,1]}},eI=e=>!!eA().valid(e),ew=e=>{let{value:t}=e;return eI(t)?eA()(t):eA()("#000")},eD=(e,t=e.model)=>{let i=ew(e);return i?i[t]():[0,0,0]},ex=(e,t=4===e.length?"rgba":"rgb")=>{let i={};if(1===e.length){let[n]=e;for(let e=0;ee*t/255,eB=(e,t)=>e+t-e*t/255,eU=(e,t)=>e<128?eF(2*e,t):eB(2*e-255,t),eH={normal:e=>e,darken:(e,t)=>Math.min(e,t),multiply:eF,colorBurn:(e,t)=>0===e?0:Math.max(0,255*(1-(255-t)/e)),lighten:(e,t)=>Math.max(e,t),screen:eB,colorDodge:(e,t)=>255===e?255:Math.min(255,255*(t/(255-e))),overlay:(e,t)=>eU(t,e),softLight:(e,t)=>{if(e<128)return t-(1-2*e/255)*t*(1-t/255);let i=t<64?((16*(t/255)-12)*(t/255)+4)*(t/255):Math.sqrt(t/255);return t+255*(2*e/255-1)*(i-t/255)},hardLight:eU,difference:(e,t)=>Math.abs(e-t),exclusion:(e,t)=>e+t-2*e*t/255,linearBurn:(e,t)=>Math.max(e+t-255,0),linearDodge:(e,t)=>Math.min(255,e+t),linearLight:(e,t)=>Math.max(t+2*e-255,0),vividLight:(e,t)=>e<128?255*(1-(1-t/255)/(2*e/255)):255*(t/2/(255-e)),pinLight:(e,t)=>e<128?Math.min(t,2*e):Math.max(t,2*e-255)},eV=e=>.3*e[0]+.58*e[1]+.11*e[2],eW=e=>{let t=eV(e),i=Math.min(...e),n=Math.max(...e),r=[...e];return i<0&&(r=r.map(e=>t+(e-t)*t/(t-i))),n>255&&(r=r.map(e=>t+(e-t)*(255-t)/(n-t))),r},eG=(e,t)=>{let i=t-eV(e);return eW(e.map(e=>e+i))},ej=e=>Math.max(...e)-Math.min(...e),ez=(e,t)=>{let i=e.map((e,t)=>({value:e,index:t}));i.sort((e,t)=>e.value-t.value);let n=i[0].index,r=i[1].index,o=i[2].index,s=[...e];return s[o]>s[n]?(s[r]=(s[r]-s[n])*t/(s[o]-s[n]),s[o]=t):(s[r]=0,s[o]=0),s[n]=0,s},eK={hue:(e,t)=>eG(ez(e,ej(t)),eV(t)),saturation:(e,t)=>eG(ez(t,ej(e)),eV(t)),color:(e,t)=>eG(e,eV(t)),luminosity:(e,t)=>eG(t,eV(e))},eY=(e,t,i="normal")=>{let n;let[r,o,s,a]=eD(e,"rgba"),[l,h,u,d]=eD(t,"rgba"),c=[r,o,s],f=[l,h,u];if(eT.includes(i)){let e=eH[i];n=c.map((t,i)=>Math.floor(e(t,f[i])))}else n=eK[i](c,f);let g=a+d*(1-a),p=Math.round((a*(1-d)*r+a*d*n[0]+(1-a)*d*l)/g),m=Math.round((a*(1-d)*o+a*d*n[1]+(1-a)*d*h)/g),_=Math.round((a*(1-d)*s+a*d*n[2]+(1-a)*d*u)/g);return 1===g?{model:"rgb",value:{r:p,g:m,b:_}}:{model:"rgba",value:{r:p,g:m,b:_,a:g}}},e$=(e,t)=>{let i=(e+t)%360;return i<0?i+=360:i>=360&&(i-=360),i},eq=(e=1,t=0)=>{let i=Math.min(e,t),n=Math.max(e,t);return i+Math.random()*(n-i)},eX=(e=1,t=0)=>{let i=Math.ceil(Math.min(e,t)),n=Math.floor(Math.max(e,t));return Math.floor(i+Math.random()*(n-i+1))},eZ=e=>{if(e&&"object"==typeof e){let t=Array.isArray(e);if(t){let t=e.map(e=>eZ(e));return t}let i={},n=Object.keys(e);return n.forEach(t=>{i[t]=eZ(e[t])}),i}return e};function eQ(e){return e*(Math.PI/180)}var eJ=i(56917),e0=i.n(eJ);let e1=(e,t="normal")=>{if("normal"===t)return{...e};let i=eO(e),n=e0()[t](i);return eP(n)},e2=e=>{let t=eM(e),[,,,i=1]=eD(e,"rgba");return ek(t,i)},e5=(e,t="normal")=>"grayscale"===t?e2(e):e1(e,t),e4=(e,t,i=[eX(5,10),eX(90,95)])=>{let[n,r,o]=eD(e,"lab"),s=n<=15?n:i[0],a=n>=85?n:i[1],l=(a-s)/(t-1),h=Math.ceil((n-s)/l);return l=0===h?l:(n-s)/h,Array(t).fill(0).map((e,t)=>ex([l*t+s,r,o],"lab"))},e3=e=>{let{count:t,color:i,tendency:n}=e,r=e4(i,t),o={name:"monochromatic",semantic:null,type:"discrete-scale",colors:"tint"===n?r:r.reverse()};return o},e6={model:"rgb",value:{r:0,g:0,b:0}},e9={model:"rgb",value:{r:255,g:255,b:255}},e8=(e,t,i="lab")=>eA().distance(ew(e),ew(t),i),e7=(e,t)=>{let i=Math.atan2(e,t)*(180/Math.PI);return i>=0?i:i+360},te=(e,t)=>{let i,n;let[r,o,s]=eD(e,"lab"),[a,l,h]=eD(t,"lab"),u=Math.sqrt(o**2+s**2),d=Math.sqrt(l**2+h**2),c=(u+d)/2,f=.5*(1-Math.sqrt(c**7/(c**7+6103515625))),g=(1+f)*o,p=(1+f)*l,m=Math.sqrt(g**2+s**2),_=Math.sqrt(p**2+h**2),E=e7(s,g),v=e7(h,p),b=_-m;i=180>=Math.abs(v-E)?v-E:v-E<-180?v-E+360:v-E-360;let C=2*Math.sqrt(m*_)*Math.sin(eQ(i)/2);n=180>=Math.abs(E-v)?(E+v)/2:Math.abs(E-v)>180&&E+v<360?(E+v+360)/2:(E+v-360)/2;let S=(r+a)/2,y=(m+_)/2,T=1-.17*Math.cos(eQ(n-30))+.24*Math.cos(eQ(2*n))+.32*Math.cos(eQ(3*n+6))-.2*Math.cos(eQ(4*n-63)),R=1+.015*(S-50)**2/Math.sqrt(20+(S-50)**2),A=1+.045*y,N=1+.015*y*T,O=-2*Math.sqrt(y**7/(y**7+6103515625))*Math.sin(eQ(60*Math.exp(-(((n-275)/25)**2)))),L=Math.sqrt(((a-r)/(1*R))**2+(b/(1*A))**2+(C/(1*N))**2+O*(b/(1*A))*(C/(1*N)));return L},tt=e=>{let t=e/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4},ti=e=>{let[t,i,n]=eD(e);return .2126*tt(t)+.7152*tt(i)+.0722*tt(n)},tn=(e,t)=>{let i=ti(e),n=ti(t);return n>i?(n+.05)/(i+.05):(i+.05)/(n+.05)},tr=(e,t,i={measure:"euclidean"})=>{let{measure:n="euclidean",backgroundColor:r=ey}=i,o=eY(e,r),s=eY(t,r);switch(n){case"CIEDE2000":return te(o,s);case"euclidean":return e8(o,s,i.colorModel);case"contrastRatio":return tn(o,s);default:return e8(o,s)}},to=[.8,1.2],ts={rouletteWheel:e=>{let t=e.reduce((e,t)=>e+t),i=0,n=eq(t),r=0;for(let t=0;t{let t=-1,i=0;for(let n=0;n<3;n+=1){let r=eX(e.length-1);e[r]>i&&(t=n,i=e[r])}return t}},ta=(e,t="tournament")=>ts[t](e),tl=(e,t)=>{let i=eZ(e),n=eZ(t);for(let r=1;r{let r=eZ(e),o=t[eX(t.length-1)],s=eX(e[0].length-1),a=r[o][s]*eq(...to),l=[15,240];"grayscale"!==i&&(l=eL[n][n.split("")[s]]);let[h,u]=l;return au&&(a=u),r[o][s]=a,r},tu=(e,t,i,n,r,o)=>{let s;s="grayscale"===i?e.map(([e])=>ek(e)):e.map(e=>e5(ex(e,n),i));let a=1/0;for(let e=0;e{if(Math.round(tu(e,t,i,r,o,s))>n)return e;let a=Array(e.length).fill(0).map((e,t)=>t).filter((e,i)=>!t[i]),l=Array(50).fill(0).map(()=>th(e,a,i,r)),h=l.map(e=>tu(e,t,i,r,o,s)),u=Math.max(...h),d=l[h.findIndex(e=>e===u)],c=1;for(;c<100&&Math.round(u)eq()?tl(t,n):[t,n];o=o.map(e=>.1>eq()?th(e,a,i,r):e),e.push(...o)}h=(l=e).map(e=>tu(e,t,i,r,o,s));let n=Math.max(...h);u=n,d=l[h.findIndex(e=>e===n)],c+=1}return d},tc={euclidean:30,CIEDE2000:20,contrastRatio:4.5},tf={euclidean:291.48,CIEDE2000:100,contrastRatio:21},tg=(e,t={})=>{let{locked:i=[],simulationType:n="normal",threshold:r,colorModel:o="hsv",colorDifferenceMeasure:s="euclidean",backgroundColor:a=ey}=t,l=r;if(l||(l=tc[s]),"grayscale"===n){let t=tf[s];l=Math.min(l,t/e.colors.length)}let h=eZ(e);if("matrix"!==h.type&&"continuous-scale"!==h.type){if("grayscale"===n){let e=h.colors.map(e=>[eM(e)]),t=td(e,i,n,l,o,s,a);h.colors.forEach((e,i)=>Object.assign(e,function(e,t){let i;let[,n,r]=eD(t,"lab"),[,,,o=1]=eD(t,"rgba"),s=100*e,a=Math.round(s),l=eM(ex([a,n,r],"lab")),h=25;for(;Math.round(s)!==Math.round(l/255*100)&&h>0;)s>l/255*100?a+=1:a-=1,h-=1,l=eM(ex([a,n,r],"lab"));if(Math.round(s)eD(e,o)),t=td(e,i,n,l,o,s,a);h.colors.forEach((e,i)=>{Object.assign(e,ex(t[i],o))})}}return h},tp=[.3,.9],tm=[.5,1],t_=(e,t,i,n=[])=>{let[r]=eD(e,"hsv"),o=Array(i).fill(!1),s=-1===n.findIndex(t=>t&&t.model===e.model&&t.value===e.value),a=Array(i).fill(0).map((i,a)=>{let l=n[a];return l?(o[a]=!0,l):s?(s=!1,o[a]=!0,e):ex([e$(r,t*a),eq(...tp),eq(...tm)],"hsv")});return{newColors:a,locked:o}};function tE(){let e=eX(255),t=eX(255),i=eX(255);return ex([e,t,i],"rgb")}let tv=e=>{let{count:t,colors:i}=e,n=[],r={name:"random",semantic:null,type:"categorical",colors:Array(t).fill(0).map((e,t)=>{let r=i[t];return r?(n[t]=!0,r):tE()})};return tg(r,{locked:n})},tb=["monochromatic"],tC=(e,t)=>{let{count:i=8,tendency:n="tint"}=t,{colors:r=[],color:o}=t;return o||(o=r.find(e=>!!e&&!!e.model&&!!e.value)||tE()),tb.includes(e)&&(r=[]),{color:o,colors:r,count:i,tendency:n}},tS={monochromatic:e3,analogous:e=>{let{count:t,color:i,tendency:n}=e,[r,o,s]=eD(i,"hsv"),a=Math.floor(t/2),l=60/(t-1);r>=60&&r<=240&&(l=-l);let h=(o-.1)/3/(t-a-1),u=(s-.4)/3/a,d=Array(t).fill(0).map((e,t)=>{let i=e$(r,l*(t-a)),n=t<=a?Math.min(o+h*(a-t),1):o+3*h*(a-t),d=t<=a?s-3*u*(a-t):Math.min(s-u*(a-t),1);return ex([i,n,d],"hsv")}),c={name:"analogous",semantic:null,type:"discrete-scale",colors:"tint"===n?d:d.reverse()};return c},achromatic:e=>{let{tendency:t}=e,i={...e,color:"tint"===t?e6:e9},n=e3(i);return{...n,name:"achromatic"}},complementary:e=>{let t;let{count:i,color:n}=e,[r,o,s]=eD(n,"hsv"),a=ex([e$(r,180),o,s],"hsv"),l=eX(80,90),h=eX(15,25),u=Math.floor(i/2),d=e4(n,u,[h,l]),c=e4(a,u,[h,l]).reverse();if(i%2==1){let e=ex([(e$(r,180)+r)/2,eq(.05,.1),eq(.9,.95)],"hsv");t=[...d,e,...c]}else t=[...d,...c];let f={name:"complementary",semantic:null,type:"discrete-scale",colors:t};return f},"split-complementary":e=>{let{count:t,color:i,colors:n}=e,{newColors:r,locked:o}=t_(i,180,t,n);return tg({name:"tetradic",semantic:null,type:"categorical",colors:r},{locked:o})},triadic:e=>{let{count:t,color:i,colors:n}=e,{newColors:r,locked:o}=t_(i,120,t,n);return tg({name:"tetradic",semantic:null,type:"categorical",colors:r},{locked:o})},tetradic:e=>{let{count:t,color:i,colors:n}=e,{newColors:r,locked:o}=t_(i,90,t,n);return tg({name:"tetradic",semantic:null,type:"categorical",colors:r},{locked:o})},polychromatic:e=>{let{count:t,color:i,colors:n}=e,r=360/t,{newColors:o,locked:s}=t_(i,r,t,n);return tg({name:"tetradic",semantic:null,type:"categorical",colors:o},{locked:s})},customized:tv},ty=(e="monochromatic",t={})=>{let i=tC(e,t);try{return tS[e](i)}catch(e){return tv(i)}};i(16243);var tT={}.toString,tR=function(e,t){return tT.call(e)==="[object ".concat(t,"]")},tA=function(e){if(!("object"==typeof e&&null!==e)||!tR(e,"Object"))return!1;if(null===Object.getPrototypeOf(e))return!0;for(var t=e;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t},tN=function(e){for(var t=[],i=1;it.distinct)return -1}return 0};function tw(e){return[e.find(function(e){return o(e.levelOfMeasurements,["Nominal"])}),e.find(function(e){return o(e.levelOfMeasurements,["Interval"])})]}function tD(e){return[e.find(function(e){return l(e.levelOfMeasurements,["Time","Ordinal"])}),e.find(function(e){return o(e.levelOfMeasurements,["Interval"])}),e.find(function(e){return o(e.levelOfMeasurements,["Nominal"])})]}function tx(e){var t=e.find(function(e){return l(e.levelOfMeasurements,["Time","Ordinal"])}),i=e.find(function(e){return o(e.levelOfMeasurements,["Nominal"])});return[t,e.find(function(e){return o(e.levelOfMeasurements,["Interval"])}),i]}function tM(e){var t=e.filter(function(e){return o(e.levelOfMeasurements,["Nominal"])}).sort(tI),i=t[0],n=t[1];return[e.find(function(e){return o(e.levelOfMeasurements,["Interval"])}),i,n]}function tk(e){var t,i,r,s,a,l,h=e.filter(function(e){return o(e.levelOfMeasurements,["Nominal"])}).sort(tI);return!function(e,t){if(!Y(e)||0===e.length||!Y(t)||0===t.length||e.length!==t.length)return!1;for(var i={},n=0;nr.corr&&(r.x=i[e],r.y=i[t],r.corr=a,r.size=i[(0,n.ev)([],(0,n.CR)(Array(i.length).keys()),!1).find(function(i){return i!==e&&i!==t})||0])},o=e+1;o0&&(!_||e.spec)}).sort(function(e,t){return e.scoret.score?-1:0}),log:v}}catch(e){return console.error("error: ",e),null}}var tU=function(e){var t,i=e.coordinate;if((null==i?void 0:i.type)==="theta")return(null==i?void 0:i.innerRadius)?"donut_chart":"pie_chart";var n=e.transform,r=null===(t=null==i?void 0:i.transform)||void 0===t?void 0:t.some(function(e){return"transpose"===e.type}),o=null==n?void 0:n.some(function(e){return"normalizeY"===e.type}),s=null==n?void 0:n.some(function(e){return"stackY"===e.type}),a=null==n?void 0:n.some(function(e){return"dodgeX"===e.type});return r?a?"grouped_bar_chart":o?"stacked_bar_chart":s?"percent_stacked_bar_chart":"bar_chart":a?"grouped_column_chart":o?"stacked_column_chart":s?"percent_stacked_column_chart":"column_chart"},tH=function(e){var t=e.transform,i=null==t?void 0:t.some(function(e){return"stackY"===e.type}),n=null==t?void 0:t.some(function(e){return"normalizeY"===e.type});return i?n?"percent_stacked_area_chart":"stacked_area_chart":"area_chart"},tV=function(e){var t=e.encode;return t.shape&&"hvh"===t.shape?"step_line_chart":"line_chart"},tW=function(e){var t;switch(e.type){case"area":t=tH(e);break;case"interval":t=tU(e);break;case"line":t=tV(e);break;case"point":t=e.encode.size?"bubble_chart":"scatter_plot";break;case"rect":t="histogram";break;case"cell":t="heatmap";break;default:t=""}return t};function tG(e,t,i,r,o,s,a){Object.values(e).filter(function(e){var r,o,a=e.option||{},l=a.weight,h=a.extra;return r=e.type,("DESIGN"===t?"DESIGN"===r:"DESIGN"!==r)&&!(null===(o=e.option)||void 0===o?void 0:o.off)&&e.trigger((0,n.pi)((0,n.pi)((0,n.pi)((0,n.pi)({},i),{weight:l}),h),{chartWIKI:s}))}).forEach(function(e){var l,h=e.type,u=e.id,d=e.docs;if("DESIGN"===t){var c=e.optimizer(i.dataProps,a);l=0===Object.keys(c).length?1:0,o.push({type:h,id:u,score:l,fix:c,docs:d})}else{var f=e.option||{},g=f.weight,p=f.extra;l=e.validator((0,n.pi)((0,n.pi)((0,n.pi)((0,n.pi)({},i),{weight:g}),p),{chartWIKI:s})),o.push({type:h,id:u,score:l,docs:d})}r.push({phase:"LINT",ruleId:u,score:l,base:l,weight:1,ruleType:h})})}function tj(e,t,i){var n=e.spec,r=e.options,o=e.dataProps,s=null==r?void 0:r.purpose,a=null==r?void 0:r.preferences,l=tW(n),h=[],u=[];if(!n||!l)return{lints:h,log:u};if(!o||!o.length)try{o=new eC(n.data).info()}catch(e){return console.error("error: ",e),{lints:h,log:u}}var d={dataProps:o,chartType:l,purpose:s,preferences:a};return tG(t,"notDESIGN",d,u,h,i),tG(t,"DESIGN",d,u,h,i,n),{lints:h=h.filter(function(e){return e.score<1}),log:u}}var tz=function(){function e(e){var t,i,o,s,a;void 0===e&&(e={}),this.ckb=(t=e.ckbCfg,i=JSON.parse(JSON.stringify(r)),t?(o=t.exclude,s=t.include,a=t.custom,o&&o.forEach(function(e){Object.keys(i).includes(e)&&delete i[e]}),s&&Object.keys(i).forEach(function(e){s.includes(e)||delete i[e]}),(0,n.pi)((0,n.pi)({},i),a)):i),this.ruleBase=O(e.ruleCfg)}return e.prototype.advise=function(e){return tB(e,this.ckb,this.ruleBase).advices},e.prototype.adviseWithLog=function(e){return tB(e,this.ckb,this.ruleBase)},e.prototype.lint=function(e){return tj(e,this.ruleBase,this.ckb).lints},e.prototype.lintWithLog=function(e){return tj(e,this.ruleBase,this.ckb)},e}()},17816:function(e,t){!function(e){"use strict";function t(e){var t="function"==typeof Symbol&&Symbol.iterator,i=t&&e[t],n=0;if(i)return i.call(e);if(e&&"number"==typeof e.length)return{next:function(){return{value:(e=e&&n>=e.length?void 0:e)&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function i(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,o=i.call(e),s=[];try{for(;(void 0===t||0i=>e(t(i)),e)}function T(e,t){return t-e?i=>(i-e)/(t-e):e=>.5}x=new g(3),g!=Float32Array&&(x[0]=0,x[1]=0,x[2]=0),x=new g(4),g!=Float32Array&&(x[0]=0,x[1]=0,x[2]=0,x[3]=0);let R=Math.sqrt(50),A=Math.sqrt(10),N=Math.sqrt(2);function O(e,t,i){return e=Math.floor(Math.log(t=(t-e)/Math.max(0,i))/Math.LN10),i=t/10**e,0<=e?(i>=R?10:i>=A?5:i>=N?2:1)*10**e:-(10**-e)/(i>=R?10:i>=A?5:i>=N?2:1)}let L=(e,t,i=5)=>{let n=0,r=(e=[e,t]).length-1,o=e[n],s=e[r],a;return s{i.prototype.rescale=function(){this.initRange(),this.nice();var[e]=this.chooseTransforms();this.composeOutput(e,this.chooseClamp(e))},i.prototype.initRange=function(){var t=this.options.interpolator;this.options.range=e(t)},i.prototype.composeOutput=function(e,i){var{domain:n,interpolator:r,round:o}=this.getOptions(),n=t(n.map(e)),o=o?e=>a(e=r(e),"Number")?Math.round(e):e:r;this.output=y(o,n,i,e)},i.prototype.invert=void 0}}var D,x={exports:{}},M={exports:{}},k=Array.prototype.concat,P=Array.prototype.slice,F=M.exports=function(e){for(var t=[],i=0,n=e.length;ii=>e*(1-i)+t*i,q=(e,t)=>{if("number"==typeof e&&"number"==typeof t)return $(e,t);if("string"!=typeof e||"string"!=typeof t)return()=>e;{let i=Y(e),n=Y(t);return null===i||null===n?i?()=>e:()=>t:e=>{var t=[,,,,];for(let s=0;s<4;s+=1){var r=i[s],o=n[s];t[s]=r*(1-e)+o*e}var[s,a,l,h]=t;return`rgba(${Math.round(s)}, ${Math.round(a)}, ${Math.round(l)}, ${h})`}}},X=(e,t)=>{let i=$(e,t);return e=>Math.round(i(e))};function Z({map:e,initKey:t},i){return t=t(i),e.has(t)?e.get(t):i}function Q(e){return"object"==typeof e?e.valueOf():e}class J extends Map{constructor(e){if(super(),this.map=new Map,this.initKey=Q,null!==e)for(var[t,i]of e)this.set(t,i)}get(e){return super.get(Z({map:this.map,initKey:this.initKey},e))}has(e){return super.has(Z({map:this.map,initKey:this.initKey},e))}set(e,t){var i,n;return super.set(([{map:e,initKey:i},n]=[{map:this.map,initKey:this.initKey},e],i=i(n),e.has(i)?e.get(i):(e.set(i,n),n)),t)}delete(e){var t,i;return super.delete(([{map:e,initKey:t},i]=[{map:this.map,initKey:this.initKey},e],t=t(i),e.has(t)&&(i=e.get(t),e.delete(t)),i))}}class ee{constructor(e){this.options=d({},this.getDefaultOptions()),this.update(e)}getOptions(){return this.options}update(e={}){this.options=d({},this.options,e),this.rescale(e)}rescale(e){}}let et=Symbol("defaultUnknown");function ei(e,t,i){for(let n=0;n""+e:"object"==typeof e?e=>JSON.stringify(e):e=>e}class eo extends ee{getDefaultOptions(){return{domain:[],range:[],unknown:et}}constructor(e){super(e)}map(e){return 0===this.domainIndexMap.size&&ei(this.domainIndexMap,this.getDomain(),this.domainKey),en({value:this.domainKey(e),mapper:this.domainIndexMap,from:this.getDomain(),to:this.getRange(),notFoundReturn:this.options.unknown})}invert(e){return 0===this.rangeIndexMap.size&&ei(this.rangeIndexMap,this.getRange(),this.rangeKey),en({value:this.rangeKey(e),mapper:this.rangeIndexMap,from:this.getRange(),to:this.getDomain(),notFoundReturn:this.options.unknown})}rescale(e){var[t]=this.options.domain,[i]=this.options.range;this.domainKey=er(t),this.rangeKey=er(i),this.rangeIndexMap?(e&&!e.range||this.rangeIndexMap.clear(),(!e||e.domain||e.compare)&&(this.domainIndexMap.clear(),this.sortedDomain=void 0)):(this.rangeIndexMap=new Map,this.domainIndexMap=new Map)}clone(){return new eo(this.options)}getRange(){return this.options.range}getDomain(){var e,t;return this.sortedDomain||({domain:e,compare:t}=this.options,this.sortedDomain=t?[...e].sort(t):e),this.sortedDomain}}class es extends eo{getDefaultOptions(){return{domain:[],range:[0,1],align:.5,round:!1,paddingInner:0,paddingOuter:0,padding:0,unknown:et,flex:[]}}constructor(e){super(e)}clone(){return new es(this.options)}getStep(e){return void 0===this.valueStep?1:"number"==typeof this.valueStep?this.valueStep:void 0===e?Array.from(this.valueStep.values())[0]:this.valueStep.get(e)}getBandWidth(e){return void 0===this.valueBandWidth?1:"number"==typeof this.valueBandWidth?this.valueBandWidth:void 0===e?Array.from(this.valueBandWidth.values())[0]:this.valueBandWidth.get(e)}getRange(){return this.adjustedRange}getPaddingInner(){var{padding:e,paddingInner:t}=this.options;return 0e/t)}(h),g=d/f.reduce((e,t)=>e+t);var h=new J(t.map((e,t)=>(t=f[t]*g,[e,s?Math.floor(t):t]))),p=new J(t.map((e,t)=>(t=f[t]*g+c,[e,s?Math.floor(t):t]))),d=Array.from(p.values()).reduce((e,t)=>e+t),e=e+(u-(d-d/l*r))*a;let m=s?Math.round(e):e;var _=Array(l);for(let e=0;el+t*s),{valueStep:s,valueBandWidth:a,adjustedRange:e}}({align:e,range:i,round:n,flex:r,paddingInner:this.getPaddingInner(),paddingOuter:this.getPaddingOuter(),domain:t});this.valueStep=n,this.valueBandWidth=i,this.adjustedRange=e}}let ea=(e,t,i)=>{let n,r,o=e,s=t;if(o===s&&0{let n;var[e,r]=e,[t,o]=t;return y(e{let n=Math.min(e.length,t.length)-1,r=Array(n),o=Array(n);var s=e[0]>e[n],a=s?[...e].reverse():e,l=s?[...t].reverse():t;for(let e=0;e{var i=function(e,t,i,n,r){let o=1,s=n||e.length;for(var a=e=>e;ot?s=l:o=l+1}return o}(e,t,0,n)-1,s=r[i];return y(o[i],s)(t)}},eu=(e,t,i,n)=>(2Math.min(Math.max(n,e),r)}return c}composeOutput(e,t){var{domain:i,range:n,round:r,interpolate:o}=this.options,i=eu(i.map(e),n,o,r);this.output=y(i,t,e)}composeInput(e,t,i){var{domain:n,range:r}=this.options,r=eu(r,n.map(e),$);this.input=y(t,i,r)}}class ec extends ed{getDefaultOptions(){return{domain:[0,1],range:[0,1],unknown:void 0,nice:!1,clamp:!1,round:!1,interpolate:q,tickMethod:ea,tickCount:5}}chooseTransforms(){return[c,c]}clone(){return new ec(this.options)}}class ef extends es{getDefaultOptions(){return{domain:[],range:[0,1],align:.5,round:!1,padding:0,unknown:et,paddingInner:1,paddingOuter:0}}constructor(e){super(e)}getPaddingInner(){return 1}clone(){return new ef(this.options)}update(e){super.update(e)}getPaddingOuter(){return this.options.padding}}function eg(e,t){for(var i=[],n=0,r=e.length;n{var[e,t]=e;return y($(0,1),T(e,t))})],e_);let eE=o=class extends ec{getDefaultOptions(){return{domain:[0,.5,1],unknown:void 0,nice:!1,clamp:!1,round:!1,interpolator:c,tickMethod:ea,tickCount:5}}constructor(e){super(e)}clone(){return new o(this.options)}};function ev(e,t,n,r,o){var s=new ec({range:[t,t+r]}),a=new ec({range:[n,n+o]});return{transform:function(e){var e=i(e,2),t=e[0],e=e[1];return[s.map(t),a.map(e)]},untransform:function(e){var e=i(e,2),t=e[0],e=e[1];return[s.invert(t),a.invert(e)]}}}function eb(e,t,n,r,o){return(0,i(e,1)[0])(t,n,r,o)}function eC(e,t,n,r,o){return i(e,1)[0]}function eS(e,t,n,r,o){var s=(e=i(e,4))[0],a=e[1],l=e[2],e=e[3],h=new ec({range:[l,e]}),u=new ec({range:[s,a]}),d=1<(l=o/r)?1:l,c=1{let[t,i,n]=e,r=y($(0,.5),T(t,i)),o=y($(.5,1),T(i,n));return e=>(t>n?eh&&(h=g)}for(var p=Math.atan(n/(i*Math.tan(r))),m=1/0,_=-1/0,E=[o,s],d=-(2*Math.PI);d<=2*Math.PI;d+=Math.PI){var v=p+d;o_&&(_=C)}return{x:l,y:m,width:h-l,height:_-m}}function l(e,t,i,n){return o(e,t,i,n)}function h(e,t,i,n,r){return{x:(1-r)*e+r*i,y:(1-r)*t+r*n}}function u(e,t,i,n,r){var o=1-r;return o*o*o*e+3*t*r*o*o+3*i*r*r*o+n*r*r*r}function d(e,t,i,n){var o,s,a,l=-3*e+9*t-9*i+3*n,h=6*e-12*t+6*i,u=3*t-3*e,d=[];if((0,r.Z)(l,0))!(0,r.Z)(h,0)&&(o=-u/h)>=0&&o<=1&&d.push(o);else{var c=h*h-4*l*u;(0,r.Z)(c,0)?d.push(-h/(2*l)):c>0&&(o=(-h+(a=Math.sqrt(c)))/(2*l),s=(-h-a)/(2*l),o>=0&&o<=1&&d.push(o),s>=0&&s<=1&&d.push(s))}return d}function c(e,t,i,n,r,o,a,l){for(var h=[e,a],c=[t,l],f=d(e,i,r,a),g=d(t,n,o,l),p=0;p=0?[o]:[]}function m(e,t,i,n,r,o){var a=p(e,i,r)[0],l=p(t,n,o)[0],h=[e,r],u=[t,o];return void 0!==a&&h.push(g(e,i,r,a)),void 0!==l&&u.push(g(t,n,o,l)),s(h,u)}},53984:function(e,t){"use strict";t.Z=function(e,t,i){return ei?i:e}},47427:function(e,t,i){"use strict";var n=i(10410);t.Z=function(e){return Array.isArray?Array.isArray(e):(0,n.Z)(e,"Array")}},63725:function(e,t,i){"use strict";var n=i(10410);t.Z=function(e){return(0,n.Z)(e,"Boolean")}},37377:function(e,t){"use strict";t.Z=function(e){return null==e}},76703:function(e,t,i){"use strict";function n(e,t,i){return void 0===i&&(i=1e-5),Math.abs(e-t)1&&(v*=O=Math.sqrt(O),b*=O);var L=v*v,I=b*b,w=(s===l?-1:1)*Math.sqrt(Math.abs((L*I-L*N*N-I*A*A)/(L*N*N+I*A*A)));p=w*v*N/b+(_+C)/2,m=-(w*b)*A/v+(E+S)/2,f=Math.asin(((E-m)/b*1e9>>0)/1e9),g=Math.asin(((S-m)/b*1e9>>0)/1e9),f=_g&&(f-=2*Math.PI),!l&&g>f&&(g-=2*Math.PI)}var D=g-f;if(Math.abs(D)>y){var x=g,M=C,k=S;R=e(C=p+v*Math.cos(g=f+y*(l&&g>f?1:-1)),S=m+b*Math.sin(g),v,b,o,0,l,M,k,[g,x,p,m])}D=g-f;var P=Math.cos(f),F=Math.cos(g),B=Math.tan(D/4),U=4/3*v*B,H=4/3*b*B,V=[_,E],W=[_+U*Math.sin(f),E-H*P],G=[C+U*Math.sin(g),S-H*F],j=[C,S];if(W[0]=2*V[0]-W[0],W[1]=2*V[1]-W[1],d)return W.concat(G,j,R);R=W.concat(G,j,R);for(var z=[],K=0,Y=R.length;K7){e[i].shift();for(var n=e[i],r=i;n.length;)t[i]="A",e.splice(r+=1,0,["C"].concat(n.splice(0,6)));e.splice(i,1)}}(d,f,_),p=d.length,"Z"===g&&m.push(_),l=(i=d[_]).length,c.x1=+i[l-2],c.y1=+i[l-1],c.x2=+i[l-4]||c.x1,c.y2=+i[l-3]||c.y1}return t?[d,m]:d}},63893:function(e,t,i){"use strict";i.d(t,{R:function(){return n}});var n={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0}},54109:function(e,t,i){"use strict";i.d(t,{z:function(){return n}});var n={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null}},8699:function(e,t,i){"use strict";function n(e){return e.map(function(e){return Array.isArray(e)?[].concat(e):e})}i.d(t,{U:function(){return n}})},28024:function(e,t,i){"use strict";i.d(t,{A:function(){return f}});var n=i(97582),r=i(12884),o=i(54109),s=i(41793),a=i(66141),l=i(63893);function h(e){for(var t=e.pathValue[e.segmentStart],i=t.toLowerCase(),n=e.data;n.length>=l.R[i]&&("m"===i&&n.length>2?(e.segments.push([t].concat(n.splice(0,2))),i="l",t="m"===t?"l":"L"):e.segments.push([t].concat(n.splice(0,l.R[i]))),l.R[i]););}function u(e){return e>=48&&e<=57}function d(e){for(var t,i=e.pathValue,n=e.max;e.index=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].includes(t));)e.index+=1}var c=function(e){this.pathValue=e,this.segments=[],this.max=e.length,this.index=0,this.param=0,this.segmentStart=0,this.data=[],this.err=""};function f(e){if((0,r.y)(e))return[].concat(e);for(var t=function(e){if((0,s.b)(e))return[].concat(e);var t=function(e){if((0,a.n)(e))return[].concat(e);var t=new c(e);for(d(t);t.index0;a-=1){if((32|r)==97&&(3===a||4===a)?function(e){var t=e.index,i=e.pathValue,n=i.charCodeAt(t);if(48===n){e.param=0,e.index+=1;return}if(49===n){e.param=1,e.index+=1;return}e.err='[path-util]: invalid Arc flag "'+i[t]+'", expecting 0 or 1 at index '+t}(e):function(e){var t,i=e.max,n=e.pathValue,r=e.index,o=r,s=!1,a=!1,l=!1,h=!1;if(o>=i){e.err="[path-util]: Invalid path value at index "+o+', "pathValue" is missing param';return}if((43===(t=n.charCodeAt(o))||45===t)&&(o+=1,t=n.charCodeAt(o)),!u(t)&&46!==t){e.err="[path-util]: Invalid path value at index "+o+', "'+n[o]+'" is not a number';return}if(46!==t){if(s=48===t,o+=1,t=n.charCodeAt(o),s&&o=e.max||!((s=i.charCodeAt(e.index))>=48&&s<=57||43===s||45===s||46===s))break}h(e)}(t);return t.err?t.err:t.segments}(e),i=0,n=0,r=0,o=0;return t.map(function(e){var t,s=e.slice(1).map(Number),a=e[0],l=a.toUpperCase();if("M"===a)return i=s[0],n=s[1],r=i,o=n,["M",i,n];if(a!==l)switch(l){case"A":t=[l,s[0],s[1],s[2],s[3],s[4],s[5]+i,s[6]+n];break;case"V":t=[l,s[0]+n];break;case"H":t=[l,s[0]+i];break;default:t=[l].concat(s.map(function(e,t){return e+(t%2?n:i)}))}else t=[l].concat(s);var h=t.length;switch(l){case"Z":i=r,n=o;break;case"H":i=t[1];break;case"V":n=t[1];break;default:i=t[h-2],n=t[h-1],"M"===l&&(r=i,o=n)}return t})}(e),i=(0,n.pi)({},o.z),f=0;f=g[t],p[t]-=m?1:0,m?e.ss:[e.s]}).flat()});return _[0].length===_[1].length?_:e(_[0],_[1],f)}}});var n=i(47852),r=i(31427);function o(e){return e.map(function(e,t,i){var o,s,a,l,h,u,d,c,f,g,p,m,_=t&&i[t-1].slice(-2).concat(e.slice(1)),E=t?(0,r.S)(_[0],_[1],_[2],_[3],_[4],_[5],_[6],_[7],_[8],{bbox:!1}).length:0;return m=t?E?(void 0===o&&(o=.5),s=_.slice(0,2),a=_.slice(2,4),l=_.slice(4,6),h=_.slice(6,8),u=(0,n.k)(s,a,o),d=(0,n.k)(a,l,o),c=(0,n.k)(l,h,o),f=(0,n.k)(u,d,o),g=(0,n.k)(d,c,o),p=(0,n.k)(f,g,o),[["C"].concat(u,f,p),["C"].concat(g,c,h)]):[e,e]:[e],{s:e,ss:m,l:E}})}},49958:function(e,t,i){"use strict";i.d(t,{b:function(){return r}});var n=i(75066);function r(e){var t,i,r;return t=0,i=0,r=0,(0,n.Y)(e).map(function(e){if("M"===e[0])return t=e[1],i=e[2],0;var n,o,s,a=e.slice(1),l=a[0],h=a[1],u=a[2],d=a[3],c=a[4],f=a[5];return o=t,r=3*((f-(s=i))*(l+u)-(c-o)*(h+d)+h*(o-u)-l*(s-d)+f*(u+o/3)-c*(d+s/3))/20,t=(n=e.slice(-2))[0],i=n[1],r}).reduce(function(e,t){return e+t},0)>=0}},80431:function(e,t,i){"use strict";i.d(t,{r:function(){return o}});var n=i(97582),r=i(12369);function o(e,t,i){return(0,r.s)(e,t,(0,n.pi)((0,n.pi)({},i),{bbox:!1,length:!0})).point}},88154:function(e,t,i){"use strict";i.d(t,{g:function(){return r}});var n=i(6393);function r(e,t){var i,r,o=e.length-1,s=[],a=0,l=(r=(i=e.length)-1,e.map(function(t,n){return e.map(function(t,o){var s=n+o;return 0===o||e[s]&&"M"===e[s][0]?["M"].concat(e[s].slice(-2)):(s>=i&&(s-=r),e[s])})}));return l.forEach(function(i,r){e.slice(1).forEach(function(i,s){a+=(0,n.y)(e[(r+s)%o].slice(-2),t[s%o].slice(-2))}),s[r]=a,a=0}),l[s.indexOf(Math.min.apply(null,s))]}},72888:function(e,t,i){"use strict";i.d(t,{D:function(){return o}});var n=i(97582),r=i(12369);function o(e,t){return(0,r.s)(e,void 0,(0,n.pi)((0,n.pi)({},t),{bbox:!1,length:!0})).length}},41793:function(e,t,i){"use strict";i.d(t,{b:function(){return r}});var n=i(66141);function r(e){return(0,n.n)(e)&&e.every(function(e){var t=e[0];return t===t.toUpperCase()})}},12884:function(e,t,i){"use strict";i.d(t,{y:function(){return r}});var n=i(41793);function r(e){return(0,n.b)(e)&&e.every(function(e){var t=e[0];return"ACLMQZ".includes(t)})}},66141:function(e,t,i){"use strict";i.d(t,{n:function(){return r}});var n=i(63893);function r(e){return Array.isArray(e)&&e.every(function(e){var t=e[0].toLowerCase();return n.R[t]===e.length-1&&"achlmqstvz".includes(t)})}},47852:function(e,t,i){"use strict";function n(e,t,i){var n=e[0],r=e[1];return[n+(t[0]-n)*i,r+(t[1]-r)*i]}i.d(t,{k:function(){return n}})},12369:function(e,t,i){"use strict";i.d(t,{s:function(){return h}});var n=i(28024),r=i(47852),o=i(6393);function s(e,t,i,n,s){var a=(0,o.y)([e,t],[i,n]),l={x:0,y:0};if("number"==typeof s){if(s<=0)l={x:e,y:t};else if(s>=a)l={x:i,y:n};else{var h=(0,r.k)([e,t],[i,n],s/a);l={x:h[0],y:h[1]}}}return{length:a,point:l,min:{x:Math.min(e,i),y:Math.min(t,n)},max:{x:Math.max(e,i),y:Math.max(t,n)}}}function a(e,t){var i=e.x,n=e.y,r=t.x,o=t.y,s=Math.sqrt((Math.pow(i,2)+Math.pow(n,2))*(Math.pow(r,2)+Math.pow(o,2)));return(i*o-n*r<0?-1:1)*Math.acos((i*r+n*o)/s)}var l=i(31427);function h(e,t,i){for(var r,h,u,d,c,f,g,p,m,_=(0,n.A)(e),E="number"==typeof t,v=[],b=0,C=0,S=0,y=0,T=[],R=[],A=0,N={x:0,y:0},O=N,L=N,I=N,w=0,D=0,x=_.length;D1&&(_*=p(y),E*=p(y));var T=(Math.pow(_,2)*Math.pow(E,2)-Math.pow(_,2)*Math.pow(S.y,2)-Math.pow(E,2)*Math.pow(S.x,2))/(Math.pow(_,2)*Math.pow(S.y,2)+Math.pow(E,2)*Math.pow(S.x,2)),R=(o!==l?1:-1)*p(T=T<0?0:T),A={x:R*(_*S.y/E),y:R*(-(E*S.x)/_)},N={x:g(v)*A.x-f(v)*A.y+(e+h)/2,y:f(v)*A.x+g(v)*A.y+(t+u)/2},O={x:(S.x-A.x)/_,y:(S.y-A.y)/E},L=a({x:1,y:0},O),I=a(O,{x:(-S.x-A.x)/_,y:(-S.y-A.y)/E});!l&&I>0?I-=2*m:l&&I<0&&(I+=2*m);var w=L+(I%=2*m)*d,D=_*g(w),x=E*f(w);return{x:g(v)*D-f(v)*x+N.x,y:f(v)*D+g(v)*x+N.y}}(e,t,i,n,r,l,h,u,d,L/b)).x,y=g.y,m&&O.push({x:S,y:y}),E&&(T+=(0,o.y)(A,[S,y])),A=[S,y],C&&T>=c&&c>R[2]){var I=(T-c)/(T-R[2]);N={x:A[0]*(1-I)+R[0]*I,y:A[1]*(1-I)+R[1]*I}}R=[S,y,T]}return C&&c>=T&&(N={x:u,y:d}),{length:T,point:N,min:{x:Math.min.apply(null,O.map(function(e){return e.x})),y:Math.min.apply(null,O.map(function(e){return e.y}))},max:{x:Math.max.apply(null,O.map(function(e){return e.x})),y:Math.max.apply(null,O.map(function(e){return e.y}))}}}(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7],v[8],(t||0)-w,i||{})).length,N=h.min,O=h.max,L=h.point):"C"===p?(A=(u=(0,l.S)(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7],(t||0)-w,i||{})).length,N=u.min,O=u.max,L=u.point):"Q"===p?(A=(d=function(e,t,i,n,r,s,a,l){var h,u=l.bbox,d=void 0===u||u,c=l.length,f=void 0===c||c,g=l.sampleSize,p=void 0===g?10:g,m="number"==typeof a,_=e,E=t,v=0,b=[_,E,0],C=[_,E],S={x:0,y:0},y=[{x:_,y:E}];m&&a<=0&&(S={x:_,y:E});for(var T=0;T<=p;T+=1){if(_=(h=function(e,t,i,n,r,o,s){var a=1-s;return{x:Math.pow(a,2)*e+2*a*s*i+Math.pow(s,2)*r,y:Math.pow(a,2)*t+2*a*s*n+Math.pow(s,2)*o}}(e,t,i,n,r,s,T/p)).x,E=h.y,d&&y.push({x:_,y:E}),f&&(v+=(0,o.y)(C,[_,E])),C=[_,E],m&&v>=a&&a>b[2]){var R=(v-a)/(v-b[2]);S={x:C[0]*(1-R)+b[0]*R,y:C[1]*(1-R)+b[1]*R}}b=[_,E,v]}return m&&a>=v&&(S={x:r,y:s}),{length:v,point:S,min:{x:Math.min.apply(null,y.map(function(e){return e.x})),y:Math.min.apply(null,y.map(function(e){return e.y}))},max:{x:Math.max.apply(null,y.map(function(e){return e.x})),y:Math.max.apply(null,y.map(function(e){return e.y}))}}}(v[0],v[1],v[2],v[3],v[4],v[5],(t||0)-w,i||{})).length,N=d.min,O=d.max,L=d.point):"Z"===p&&(A=(c=s((v=[b,C,S,y])[0],v[1],v[2],v[3],(t||0)-w)).length,N=c.min,O=c.max,L=c.point),E&&w=t&&(I=L),R.push(O),T.push(N),w+=A,b=(f="Z"!==p?m.slice(-2):[S,y])[0],C=f[1];return E&&t>=w&&(I={x:b,y:C}),{length:w,point:I,min:{x:Math.min.apply(null,T.map(function(e){return e.x})),y:Math.min.apply(null,T.map(function(e){return e.y}))},max:{x:Math.max.apply(null,R.map(function(e){return e.x})),y:Math.max.apply(null,R.map(function(e){return e.y}))}}}},31427:function(e,t,i){"use strict";i.d(t,{S:function(){return r}});var n=i(6393);function r(e,t,i,r,o,s,a,l,h,u){var d,c=u.bbox,f=void 0===c||c,g=u.length,p=void 0===g||g,m=u.sampleSize,_=void 0===m?10:m,E="number"==typeof h,v=e,b=t,C=0,S=[v,b,0],y=[v,b],T={x:0,y:0},R=[{x:v,y:b}];E&&h<=0&&(T={x:v,y:b});for(var A=0;A<=_;A+=1){if(v=(d=function(e,t,i,n,r,o,s,a,l){var h=1-l;return{x:Math.pow(h,3)*e+3*Math.pow(h,2)*l*i+3*h*Math.pow(l,2)*r+Math.pow(l,3)*s,y:Math.pow(h,3)*t+3*Math.pow(h,2)*l*n+3*h*Math.pow(l,2)*o+Math.pow(l,3)*a}}(e,t,i,r,o,s,a,l,A/_)).x,b=d.y,f&&R.push({x:v,y:b}),p&&(C+=(0,n.y)(y,[v,b])),y=[v,b],E&&C>=h&&h>S[2]){var N=(C-h)/(C-S[2]);T={x:y[0]*(1-N)+S[0]*N,y:y[1]*(1-N)+S[1]*N}}S=[v,b,C]}return E&&h>=C&&(T={x:a,y:l}),{length:C,point:T,min:{x:Math.min.apply(null,R.map(function(e){return e.x})),y:Math.min.apply(null,R.map(function(e){return e.y}))},max:{x:Math.max.apply(null,R.map(function(e){return e.x})),y:Math.max.apply(null,R.map(function(e){return e.y}))}}}},33439:function(e,t,i){"use strict";function n(e,t,i){e.prototype=t.prototype=i,i.constructor=e}function r(e,t){var i=Object.create(e.prototype);for(var n in t)i[n]=t[n];return i}function o(){}i.d(t,{ZP:function(){return v}});var s="\\s*([+-]?\\d+)\\s*",a="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",l="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",h=/^#([0-9a-f]{3,8})$/,u=RegExp("^rgb\\("+[s,s,s]+"\\)$"),d=RegExp("^rgb\\("+[l,l,l]+"\\)$"),c=RegExp("^rgba\\("+[s,s,s,a]+"\\)$"),f=RegExp("^rgba\\("+[l,l,l,a]+"\\)$"),g=RegExp("^hsl\\("+[a,l,l]+"\\)$"),p=RegExp("^hsla\\("+[a,l,l,a]+"\\)$"),m={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function _(){return this.rgb().formatHex()}function E(){return this.rgb().formatRgb()}function v(e){var t,i;return e=(e+"").trim().toLowerCase(),(t=h.exec(e))?(i=t[1].length,t=parseInt(t[1],16),6===i?b(t):3===i?new S(t>>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===i?C(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===i?C(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=u.exec(e))?new S(t[1],t[2],t[3],1):(t=d.exec(e))?new S(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=c.exec(e))?C(t[1],t[2],t[3],t[4]):(t=f.exec(e))?C(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=g.exec(e))?A(t[1],t[2]/100,t[3]/100,1):(t=p.exec(e))?A(t[1],t[2]/100,t[3]/100,t[4]):m.hasOwnProperty(e)?b(m[e]):"transparent"===e?new S(NaN,NaN,NaN,0):null}function b(e){return new S(e>>16&255,e>>8&255,255&e,1)}function C(e,t,i,n){return n<=0&&(e=t=i=NaN),new S(e,t,i,n)}function S(e,t,i,n){this.r=+e,this.g=+t,this.b=+i,this.opacity=+n}function y(){return"#"+R(this.r)+R(this.g)+R(this.b)}function T(){var e=this.opacity;return(1===(e=isNaN(e)?1:Math.max(0,Math.min(1,e)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===e?")":", "+e+")")}function R(e){return((e=Math.max(0,Math.min(255,Math.round(e)||0)))<16?"0":"")+e.toString(16)}function A(e,t,i,n){return n<=0?e=t=i=NaN:i<=0||i>=1?e=t=NaN:t<=0&&(e=NaN),new O(e,t,i,n)}function N(e){if(e instanceof O)return new O(e.h,e.s,e.l,e.opacity);if(e instanceof o||(e=v(e)),!e)return new O;if(e instanceof O)return e;var t=(e=e.rgb()).r/255,i=e.g/255,n=e.b/255,r=Math.min(t,i,n),s=Math.max(t,i,n),a=NaN,l=s-r,h=(s+r)/2;return l?(a=t===s?(i-n)/l+(i0&&h<1?0:a,new O(a,l,h,e.opacity)}function O(e,t,i,n){this.h=+e,this.s=+t,this.l=+i,this.opacity=+n}function L(e,t,i){return(e<60?t+(i-t)*e/60:e<180?i:e<240?t+(i-t)*(240-e)/60:t)*255}n(o,v,{copy:function(e){return Object.assign(new this.constructor,this,e)},displayable:function(){return this.rgb().displayable()},hex:_,formatHex:_,formatHsl:function(){return N(this).formatHsl()},formatRgb:E,toString:E}),n(S,function(e,t,i,n){var r;return 1==arguments.length?((r=e)instanceof o||(r=v(r)),r)?(r=r.rgb(),new S(r.r,r.g,r.b,r.opacity)):new S:new S(e,t,i,null==n?1:n)},r(o,{brighter:function(e){return e=null==e?1.4285714285714286:Math.pow(1.4285714285714286,e),new S(this.r*e,this.g*e,this.b*e,this.opacity)},darker:function(e){return e=null==e?.7:Math.pow(.7,e),new S(this.r*e,this.g*e,this.b*e,this.opacity)},rgb:function(){return this},displayable:function(){return -.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:y,formatHex:y,formatRgb:T,toString:T})),n(O,function(e,t,i,n){return 1==arguments.length?N(e):new O(e,t,i,null==n?1:n)},r(o,{brighter:function(e){return e=null==e?1.4285714285714286:Math.pow(1.4285714285714286,e),new O(this.h,this.s,this.l*e,this.opacity)},darker:function(e){return e=null==e?.7:Math.pow(.7,e),new O(this.h,this.s,this.l*e,this.opacity)},rgb:function(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,i=this.l,n=i+(i<.5?i:1-i)*t,r=2*i-n;return new S(L(e>=240?e-240:e+120,r,n),L(e,r,n),L(e<120?e+240:e-120,r,n),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var e=this.opacity;return(1===(e=isNaN(e)?1:Math.max(0,Math.min(1,e)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===e?")":", "+e+")")}}))},53406:function(e,t,i){"use strict";i.d(t,{r:function(){return ew}});var n,r,o,s,a,l=i(87462),h=i(63366),u=i(67294),d=i(33703),c=i(73546),f=i(82690);function g(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function p(e){var t=g(e).Element;return e instanceof t||e instanceof Element}function m(e){var t=g(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function _(e){if("undefined"==typeof ShadowRoot)return!1;var t=g(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}var E=Math.max,v=Math.min,b=Math.round;function C(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function S(){return!/^((?!chrome|android).)*safari/i.test(C())}function y(e,t,i){void 0===t&&(t=!1),void 0===i&&(i=!1);var n=e.getBoundingClientRect(),r=1,o=1;t&&m(e)&&(r=e.offsetWidth>0&&b(n.width)/e.offsetWidth||1,o=e.offsetHeight>0&&b(n.height)/e.offsetHeight||1);var s=(p(e)?g(e):window).visualViewport,a=!S()&&i,l=(n.left+(a&&s?s.offsetLeft:0))/r,h=(n.top+(a&&s?s.offsetTop:0))/o,u=n.width/r,d=n.height/o;return{width:u,height:d,top:h,right:l+u,bottom:h+d,left:l,x:l,y:h}}function T(e){var t=g(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function R(e){return e?(e.nodeName||"").toLowerCase():null}function A(e){return((p(e)?e.ownerDocument:e.document)||window.document).documentElement}function N(e){return y(A(e)).left+T(e).scrollLeft}function O(e){return g(e).getComputedStyle(e)}function L(e){var t=O(e),i=t.overflow,n=t.overflowX,r=t.overflowY;return/auto|scroll|overlay|hidden/.test(i+r+n)}function I(e){var t=y(e),i=e.offsetWidth,n=e.offsetHeight;return 1>=Math.abs(t.width-i)&&(i=t.width),1>=Math.abs(t.height-n)&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:i,height:n}}function w(e){return"html"===R(e)?e:e.assignedSlot||e.parentNode||(_(e)?e.host:null)||A(e)}function D(e,t){void 0===t&&(t=[]);var i,n=function e(t){return["html","body","#document"].indexOf(R(t))>=0?t.ownerDocument.body:m(t)&&L(t)?t:e(w(t))}(e),r=n===(null==(i=e.ownerDocument)?void 0:i.body),o=g(n),s=r?[o].concat(o.visualViewport||[],L(n)?n:[]):n,a=t.concat(s);return r?a:a.concat(D(w(s)))}function x(e){return m(e)&&"fixed"!==O(e).position?e.offsetParent:null}function M(e){for(var t=g(e),i=x(e);i&&["table","td","th"].indexOf(R(i))>=0&&"static"===O(i).position;)i=x(i);return i&&("html"===R(i)||"body"===R(i)&&"static"===O(i).position)?t:i||function(e){var t=/firefox/i.test(C());if(/Trident/i.test(C())&&m(e)&&"fixed"===O(e).position)return null;var i=w(e);for(_(i)&&(i=i.host);m(i)&&0>["html","body"].indexOf(R(i));){var n=O(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||t&&"filter"===n.willChange||t&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(e)||t}var k="bottom",P="right",F="left",B="auto",U=["top",k,P,F],H="start",V="viewport",W="popper",G=U.reduce(function(e,t){return e.concat([t+"-"+H,t+"-end"])},[]),j=[].concat(U,[B]).reduce(function(e,t){return e.concat([t,t+"-"+H,t+"-end"])},[]),z=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"],K={placement:"bottom",modifiers:[],strategy:"absolute"};function Y(){for(var e=arguments.length,t=Array(e),i=0;i=0?"x":"y"}function Q(e){var t,i=e.reference,n=e.element,r=e.placement,o=r?q(r):null,s=r?X(r):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case"top":t={x:a,y:i.y-n.height};break;case k:t={x:a,y:i.y+i.height};break;case P:t={x:i.x+i.width,y:l};break;case F:t={x:i.x-n.width,y:l};break;default:t={x:i.x,y:i.y}}var h=o?Z(o):null;if(null!=h){var u="y"===h?"height":"width";switch(s){case H:t[h]=t[h]-(i[u]/2-n[u]/2);break;case"end":t[h]=t[h]+(i[u]/2-n[u]/2)}}return t}var J={top:"auto",right:"auto",bottom:"auto",left:"auto"};function ee(e){var t,i,n,r,o,s,a,l=e.popper,h=e.popperRect,u=e.placement,d=e.variation,c=e.offsets,f=e.position,p=e.gpuAcceleration,m=e.adaptive,_=e.roundOffsets,E=e.isFixed,v=c.x,C=void 0===v?0:v,S=c.y,y=void 0===S?0:S,T="function"==typeof _?_({x:C,y:y}):{x:C,y:y};C=T.x,y=T.y;var R=c.hasOwnProperty("x"),N=c.hasOwnProperty("y"),L=F,I="top",w=window;if(m){var D=M(l),x="clientHeight",B="clientWidth";D===g(l)&&"static"!==O(D=A(l)).position&&"absolute"===f&&(x="scrollHeight",B="scrollWidth"),("top"===u||(u===F||u===P)&&"end"===d)&&(I=k,y-=(E&&D===w&&w.visualViewport?w.visualViewport.height:D[x])-h.height,y*=p?1:-1),(u===F||("top"===u||u===k)&&"end"===d)&&(L=P,C-=(E&&D===w&&w.visualViewport?w.visualViewport.width:D[B])-h.width,C*=p?1:-1)}var U=Object.assign({position:f},m&&J),H=!0===_?(t={x:C,y:y},i=g(l),n=t.x,r=t.y,{x:b(n*(o=i.devicePixelRatio||1))/o||0,y:b(r*o)/o||0}):{x:C,y:y};return(C=H.x,y=H.y,p)?Object.assign({},U,((a={})[I]=N?"0":"",a[L]=R?"0":"",a.transform=1>=(w.devicePixelRatio||1)?"translate("+C+"px, "+y+"px)":"translate3d("+C+"px, "+y+"px, 0)",a)):Object.assign({},U,((s={})[I]=N?y+"px":"",s[L]=R?C+"px":"",s.transform="",s))}var et={left:"right",right:"left",bottom:"top",top:"bottom"};function ei(e){return e.replace(/left|right|bottom|top/g,function(e){return et[e]})}var en={start:"end",end:"start"};function er(e){return e.replace(/start|end/g,function(e){return en[e]})}function eo(e,t){var i=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(i&&_(i)){var n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function es(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function ea(e,t,i){var n,r,o,s,a,l,h,u,d,c;return t===V?es(function(e,t){var i=g(e),n=A(e),r=i.visualViewport,o=n.clientWidth,s=n.clientHeight,a=0,l=0;if(r){o=r.width,s=r.height;var h=S();(h||!h&&"fixed"===t)&&(a=r.offsetLeft,l=r.offsetTop)}return{width:o,height:s,x:a+N(e),y:l}}(e,i)):p(t)?((n=y(t,!1,"fixed"===i)).top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n):es((r=A(e),s=A(r),a=T(r),l=null==(o=r.ownerDocument)?void 0:o.body,h=E(s.scrollWidth,s.clientWidth,l?l.scrollWidth:0,l?l.clientWidth:0),u=E(s.scrollHeight,s.clientHeight,l?l.scrollHeight:0,l?l.clientHeight:0),d=-a.scrollLeft+N(r),c=-a.scrollTop,"rtl"===O(l||s).direction&&(d+=E(s.clientWidth,l?l.clientWidth:0)-h),{width:h,height:u,x:d,y:c}))}function el(){return{top:0,right:0,bottom:0,left:0}}function eh(e){return Object.assign({},el(),e)}function eu(e,t){return t.reduce(function(t,i){return t[i]=e,t},{})}function ed(e,t){void 0===t&&(t={});var i,n,r,o,s,a,l,h=t,u=h.placement,d=void 0===u?e.placement:u,c=h.strategy,f=void 0===c?e.strategy:c,g=h.boundary,_=h.rootBoundary,b=h.elementContext,C=void 0===b?W:b,S=h.altBoundary,T=h.padding,N=void 0===T?0:T,L=eh("number"!=typeof N?N:eu(N,U)),I=e.rects.popper,x=e.elements[void 0!==S&&S?C===W?"reference":W:C],F=(i=p(x)?x:x.contextElement||A(e.elements.popper),a=(s=[].concat("clippingParents"===(n=void 0===g?"clippingParents":g)?(r=D(w(i)),p(o=["absolute","fixed"].indexOf(O(i).position)>=0&&m(i)?M(i):i)?r.filter(function(e){return p(e)&&eo(e,o)&&"body"!==R(e)}):[]):[].concat(n),[void 0===_?V:_]))[0],(l=s.reduce(function(e,t){var n=ea(i,t,f);return e.top=E(n.top,e.top),e.right=v(n.right,e.right),e.bottom=v(n.bottom,e.bottom),e.left=E(n.left,e.left),e},ea(i,a,f))).width=l.right-l.left,l.height=l.bottom-l.top,l.x=l.left,l.y=l.top,l),B=y(e.elements.reference),H=Q({reference:B,element:I,strategy:"absolute",placement:d}),G=es(Object.assign({},I,H)),j=C===W?G:B,z={top:F.top-j.top+L.top,bottom:j.bottom-F.bottom+L.bottom,left:F.left-j.left+L.left,right:j.right-F.right+L.right},K=e.modifiersData.offset;if(C===W&&K){var Y=K[d];Object.keys(z).forEach(function(e){var t=[P,k].indexOf(e)>=0?1:-1,i=["top",k].indexOf(e)>=0?"y":"x";z[e]+=Y[i]*t})}return z}function ec(e,t,i){return E(e,v(t,i))}function ef(e,t,i){return void 0===i&&(i={x:0,y:0}),{top:e.top-t.height-i.y,right:e.right-t.width+i.x,bottom:e.bottom-t.height+i.y,left:e.left-t.width-i.x}}function eg(e){return["top",P,k,F].some(function(t){return e[t]>=0})}var ep=(o=void 0===(r=(n={defaultModifiers:[{name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,i=e.instance,n=e.options,r=n.scroll,o=void 0===r||r,s=n.resize,a=void 0===s||s,l=g(t.elements.popper),h=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&h.forEach(function(e){e.addEventListener("scroll",i.update,$)}),a&&l.addEventListener("resize",i.update,$),function(){o&&h.forEach(function(e){e.removeEventListener("scroll",i.update,$)}),a&&l.removeEventListener("resize",i.update,$)}},data:{}},{name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,i=e.name;t.modifiersData[i]=Q({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},{name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,i=e.options,n=i.gpuAcceleration,r=i.adaptive,o=i.roundOffsets,s=void 0===o||o,a={placement:q(t.placement),variation:X(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:void 0===n||n,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,ee(Object.assign({},a,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:void 0===r||r,roundOffsets:s})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,ee(Object.assign({},a,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:s})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},{name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach(function(e){var i=t.styles[e]||{},n=t.attributes[e]||{},r=t.elements[e];m(r)&&R(r)&&(Object.assign(r.style,i),Object.keys(n).forEach(function(e){var t=n[e];!1===t?r.removeAttribute(e):r.setAttribute(e,!0===t?"":t)}))})},effect:function(e){var t=e.state,i={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,i.popper),t.styles=i,t.elements.arrow&&Object.assign(t.elements.arrow.style,i.arrow),function(){Object.keys(t.elements).forEach(function(e){var n=t.elements[e],r=t.attributes[e]||{},o=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:i[e]).reduce(function(e,t){return e[t]="",e},{});m(n)&&R(n)&&(Object.assign(n.style,o),Object.keys(r).forEach(function(e){n.removeAttribute(e)}))})}},requires:["computeStyles"]},{name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,i=e.options,n=e.name,r=i.offset,o=void 0===r?[0,0]:r,s=j.reduce(function(e,i){var n,r,s,a,l,h;return e[i]=(n=t.rects,s=[F,"top"].indexOf(r=q(i))>=0?-1:1,l=(a="function"==typeof o?o(Object.assign({},n,{placement:i})):o)[0],h=a[1],l=l||0,h=(h||0)*s,[F,P].indexOf(r)>=0?{x:h,y:l}:{x:l,y:h}),e},{}),a=s[t.placement],l=a.x,h=a.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=h),t.modifiersData[n]=s}},{name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,i=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var r=i.mainAxis,o=void 0===r||r,s=i.altAxis,a=void 0===s||s,l=i.fallbackPlacements,h=i.padding,u=i.boundary,d=i.rootBoundary,c=i.altBoundary,f=i.flipVariations,g=void 0===f||f,p=i.allowedAutoPlacements,m=t.options.placement,_=q(m)===m,E=l||(_||!g?[ei(m)]:function(e){if(q(e)===B)return[];var t=ei(e);return[er(e),t,er(t)]}(m)),v=[m].concat(E).reduce(function(e,i){var n,r,o,s,a,l,c,f,m,_,E,v;return e.concat(q(i)===B?(r=(n={placement:i,boundary:u,rootBoundary:d,padding:h,flipVariations:g,allowedAutoPlacements:p}).placement,o=n.boundary,s=n.rootBoundary,a=n.padding,l=n.flipVariations,f=void 0===(c=n.allowedAutoPlacements)?j:c,0===(E=(_=(m=X(r))?l?G:G.filter(function(e){return X(e)===m}):U).filter(function(e){return f.indexOf(e)>=0})).length&&(E=_),Object.keys(v=E.reduce(function(e,i){return e[i]=ed(t,{placement:i,boundary:o,rootBoundary:s,padding:a})[q(i)],e},{})).sort(function(e,t){return v[e]-v[t]})):i)},[]),b=t.rects.reference,C=t.rects.popper,S=new Map,y=!0,T=v[0],R=0;R=0,I=L?"width":"height",w=ed(t,{placement:A,boundary:u,rootBoundary:d,altBoundary:c,padding:h}),D=L?O?P:F:O?k:"top";b[I]>C[I]&&(D=ei(D));var x=ei(D),M=[];if(o&&M.push(w[N]<=0),a&&M.push(w[D]<=0,w[x]<=0),M.every(function(e){return e})){T=A,y=!1;break}S.set(A,M)}if(y)for(var V=g?3:1,W=function(e){var t=v.find(function(t){var i=S.get(t);if(i)return i.slice(0,e).every(function(e){return e})});if(t)return T=t,"break"},z=V;z>0&&"break"!==W(z);z--);t.placement!==T&&(t.modifiersData[n]._skip=!0,t.placement=T,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}},{name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,i=e.options,n=e.name,r=i.mainAxis,o=i.altAxis,s=i.boundary,a=i.rootBoundary,l=i.altBoundary,h=i.padding,u=i.tether,d=void 0===u||u,c=i.tetherOffset,f=void 0===c?0:c,g=ed(t,{boundary:s,rootBoundary:a,padding:h,altBoundary:l}),p=q(t.placement),m=X(t.placement),_=!m,b=Z(p),C="x"===b?"y":"x",S=t.modifiersData.popperOffsets,y=t.rects.reference,T=t.rects.popper,R="function"==typeof f?f(Object.assign({},t.rects,{placement:t.placement})):f,A="number"==typeof R?{mainAxis:R,altAxis:R}:Object.assign({mainAxis:0,altAxis:0},R),N=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,O={x:0,y:0};if(S){if(void 0===r||r){var L,w="y"===b?"top":F,D="y"===b?k:P,x="y"===b?"height":"width",B=S[b],U=B+g[w],V=B-g[D],W=d?-T[x]/2:0,G=m===H?y[x]:T[x],j=m===H?-T[x]:-y[x],z=t.elements.arrow,K=d&&z?I(z):{width:0,height:0},Y=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:el(),$=Y[w],Q=Y[D],J=ec(0,y[x],K[x]),ee=_?y[x]/2-W-J-$-A.mainAxis:G-J-$-A.mainAxis,et=_?-y[x]/2+W+J+Q+A.mainAxis:j+J+Q+A.mainAxis,ei=t.elements.arrow&&M(t.elements.arrow),en=ei?"y"===b?ei.clientTop||0:ei.clientLeft||0:0,er=null!=(L=null==N?void 0:N[b])?L:0,eo=B+ee-er-en,es=B+et-er,ea=ec(d?v(U,eo):U,B,d?E(V,es):V);S[b]=ea,O[b]=ea-B}if(void 0!==o&&o){var eh,eu,ef="x"===b?"top":F,eg="x"===b?k:P,ep=S[C],em="y"===C?"height":"width",e_=ep+g[ef],eE=ep-g[eg],ev=-1!==["top",F].indexOf(p),eb=null!=(eu=null==N?void 0:N[C])?eu:0,eC=ev?e_:ep-y[em]-T[em]-eb+A.altAxis,eS=ev?ep+y[em]+T[em]-eb-A.altAxis:eE,ey=d&&ev?(eh=ec(eC,ep,eS))>eS?eS:eh:ec(d?eC:e_,ep,d?eS:eE);S[C]=ey,O[C]=ey-ep}t.modifiersData[n]=O}},requiresIfExists:["offset"]},{name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,i,n=e.state,r=e.name,o=e.options,s=n.elements.arrow,a=n.modifiersData.popperOffsets,l=q(n.placement),h=Z(l),u=[F,P].indexOf(l)>=0?"height":"width";if(s&&a){var d=eh("number"!=typeof(t="function"==typeof(t=o.padding)?t(Object.assign({},n.rects,{placement:n.placement})):t)?t:eu(t,U)),c=I(s),f="y"===h?"top":F,g="y"===h?k:P,p=n.rects.reference[u]+n.rects.reference[h]-a[h]-n.rects.popper[u],m=a[h]-n.rects.reference[h],_=M(s),E=_?"y"===h?_.clientHeight||0:_.clientWidth||0:0,v=d[f],b=E-c[u]-d[g],C=E/2-c[u]/2+(p/2-m/2),S=ec(v,C,b);n.modifiersData[r]=((i={})[h]=S,i.centerOffset=S-C,i)}},effect:function(e){var t=e.state,i=e.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=t.elements.popper.querySelector(n)))&&eo(t.elements.popper,n)&&(t.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,i=e.name,n=t.rects.reference,r=t.rects.popper,o=t.modifiersData.preventOverflow,s=ed(t,{elementContext:"reference"}),a=ed(t,{altBoundary:!0}),l=ef(s,n),h=ef(a,r,o),u=eg(l),d=eg(h);t.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:h,isReferenceHidden:u,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":d})}}]}).defaultModifiers)?[]:r,a=void 0===(s=n.defaultOptions)?K:s,function(e,t,i){void 0===i&&(i=a);var n,r={placement:"bottom",orderedModifiers:[],options:Object.assign({},K,a),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},s=[],l=!1,h={state:r,setOptions:function(i){var n,l,d,c,f,g="function"==typeof i?i(r.options):i;u(),r.options=Object.assign({},a,r.options,g),r.scrollParents={reference:p(e)?D(e):e.contextElement?D(e.contextElement):[],popper:D(t)};var m=(l=Object.keys(n=[].concat(o,r.options.modifiers).reduce(function(e,t){var i=e[t.name];return e[t.name]=i?Object.assign({},i,t,{options:Object.assign({},i.options,t.options),data:Object.assign({},i.data,t.data)}):t,e},{})).map(function(e){return n[e]}),d=new Map,c=new Set,f=[],l.forEach(function(e){d.set(e.name,e)}),l.forEach(function(e){c.has(e.name)||function e(t){c.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach(function(t){if(!c.has(t)){var i=d.get(t);i&&e(i)}}),f.push(t)}(e)}),z.reduce(function(e,t){return e.concat(f.filter(function(e){return e.phase===t}))},[]));return r.orderedModifiers=m.filter(function(e){return e.enabled}),r.orderedModifiers.forEach(function(e){var t=e.name,i=e.options,n=e.effect;if("function"==typeof n){var o=n({state:r,name:t,instance:h,options:void 0===i?{}:i});s.push(o||function(){})}}),h.update()},forceUpdate:function(){if(!l){var e,t,i,n,o,s,a,u,d,c,f,p,_=r.elements,E=_.reference,v=_.popper;if(Y(E,v)){r.rects={reference:(t=M(v),i="fixed"===r.options.strategy,n=m(t),u=m(t)&&(s=b((o=t.getBoundingClientRect()).width)/t.offsetWidth||1,a=b(o.height)/t.offsetHeight||1,1!==s||1!==a),d=A(t),c=y(E,u,i),f={scrollLeft:0,scrollTop:0},p={x:0,y:0},(n||!n&&!i)&&(("body"!==R(t)||L(d))&&(f=(e=t)!==g(e)&&m(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:T(e)),m(t)?(p=y(t,!0),p.x+=t.clientLeft,p.y+=t.clientTop):d&&(p.x=N(d))),{x:c.left+f.scrollLeft-p.x,y:c.top+f.scrollTop-p.y,width:c.width,height:c.height}),popper:I(v)},r.reset=!1,r.placement=r.options.placement,r.orderedModifiers.forEach(function(e){return r.modifiersData[e.name]=Object.assign({},e.data)});for(var C=0;C{!r&&s(("function"==typeof n?n():n)||document.body)},[n,r]),(0,c.Z)(()=>{if(o&&!r)return(0,eE.Z)(t,o),()=>{(0,eE.Z)(t,null)}},[t,o,r]),r)?u.isValidElement(i)?u.cloneElement(i,{ref:a}):(0,ev.jsx)(u.Fragment,{children:i}):(0,ev.jsx)(u.Fragment,{children:o?e_.createPortal(i,o):o})});var eC=i(34867);function eS(e){return(0,eC.Z)("MuiPopper",e)}(0,i(1588).Z)("MuiPopper",["root"]);var ey=i(7293);let eT=u.createContext({disableDefaultClasses:!1}),eR=["anchorEl","children","direction","disablePortal","modifiers","open","placement","popperOptions","popperRef","slotProps","slots","TransitionProps","ownerState"],eA=["anchorEl","children","container","direction","disablePortal","keepMounted","modifiers","open","placement","popperOptions","popperRef","style","transition","slotProps","slots"];function eN(e){return"function"==typeof e?e():e}let eO=()=>(0,em.Z)({root:["root"]},function(e){let{disableDefaultClasses:t}=u.useContext(eT);return i=>t?"":e(i)}(eS)),eL={},eI=u.forwardRef(function(e,t){var i;let{anchorEl:n,children:r,direction:o,disablePortal:s,modifiers:a,open:f,placement:g,popperOptions:p,popperRef:m,slotProps:_={},slots:E={},TransitionProps:v}=e,b=(0,h.Z)(e,eR),C=u.useRef(null),S=(0,d.Z)(C,t),y=u.useRef(null),T=(0,d.Z)(y,m),R=u.useRef(T);(0,c.Z)(()=>{R.current=T},[T]),u.useImperativeHandle(m,()=>y.current,[]);let A=function(e,t){if("ltr"===t)return e;switch(e){case"bottom-end":return"bottom-start";case"bottom-start":return"bottom-end";case"top-end":return"top-start";case"top-start":return"top-end";default:return e}}(g,o),[N,O]=u.useState(A),[L,I]=u.useState(eN(n));u.useEffect(()=>{y.current&&y.current.forceUpdate()}),u.useEffect(()=>{n&&I(eN(n))},[n]),(0,c.Z)(()=>{if(!L||!f)return;let e=e=>{O(e.placement)},t=[{name:"preventOverflow",options:{altBoundary:s}},{name:"flip",options:{altBoundary:s}},{name:"onUpdate",enabled:!0,phase:"afterWrite",fn:({state:t})=>{e(t)}}];null!=a&&(t=t.concat(a)),p&&null!=p.modifiers&&(t=t.concat(p.modifiers));let i=ep(L,C.current,(0,l.Z)({placement:A},p,{modifiers:t}));return R.current(i),()=>{i.destroy(),R.current(null)}},[L,s,a,f,p,A]);let w={placement:N};null!==v&&(w.TransitionProps=v);let D=eO(),x=null!=(i=E.root)?i:"div",M=(0,ey.y)({elementType:x,externalSlotProps:_.root,externalForwardedProps:b,additionalProps:{role:"tooltip",ref:S},ownerState:e,className:D.root});return(0,ev.jsx)(x,(0,l.Z)({},M,{children:"function"==typeof r?r(w):r}))}),ew=u.forwardRef(function(e,t){let i;let{anchorEl:n,children:r,container:o,direction:s="ltr",disablePortal:a=!1,keepMounted:d=!1,modifiers:c,open:g,placement:p="bottom",popperOptions:m=eL,popperRef:_,style:E,transition:v=!1,slotProps:b={},slots:C={}}=e,S=(0,h.Z)(e,eA),[y,T]=u.useState(!0);if(!d&&!g&&(!v||y))return null;if(o)i=o;else if(n){let e=eN(n);i=e&&void 0!==e.nodeType?(0,f.Z)(e).body:(0,f.Z)(null).body}let R=!g&&d&&(!v||y)?"none":void 0;return(0,ev.jsx)(eb,{disablePortal:a,container:i,children:(0,ev.jsx)(eI,(0,l.Z)({anchorEl:n,direction:s,disablePortal:a,modifiers:c,ref:t,open:v?!y:g,placement:p,popperOptions:m,popperRef:_,slotProps:b,slots:C},S,{style:(0,l.Z)({position:"fixed",top:0,left:0,display:R},E),TransitionProps:v?{in:g,onEnter:()=>{T(!1)},onExited:()=>{T(!0)}}:void 0,children:r}))})})},70758:function(e,t,i){"use strict";i.d(t,{U:function(){return l}});var n=i(87462),r=i(67294),o=i(99962),s=i(33703),a=i(30437);function l(e={}){let{disabled:t=!1,focusableWhenDisabled:i,href:l,rootRef:h,tabIndex:u,to:d,type:c}=e,f=r.useRef(),[g,p]=r.useState(!1),{isFocusVisibleRef:m,onFocus:_,onBlur:E,ref:v}=(0,o.Z)(),[b,C]=r.useState(!1);t&&!i&&b&&C(!1),r.useEffect(()=>{m.current=b},[b,m]);let[S,y]=r.useState(""),T=e=>t=>{var i;b&&t.preventDefault(),null==(i=e.onMouseLeave)||i.call(e,t)},R=e=>t=>{var i;E(t),!1===m.current&&C(!1),null==(i=e.onBlur)||i.call(e,t)},A=e=>t=>{var i,n;f.current||(f.current=t.currentTarget),_(t),!0===m.current&&(C(!0),null==(n=e.onFocusVisible)||n.call(e,t)),null==(i=e.onFocus)||i.call(e,t)},N=()=>{let e=f.current;return"BUTTON"===S||"INPUT"===S&&["button","submit","reset"].includes(null==e?void 0:e.type)||"A"===S&&(null==e?void 0:e.href)},O=e=>i=>{if(!t){var n;null==(n=e.onClick)||n.call(e,i)}},L=e=>i=>{var n;t||(p(!0),document.addEventListener("mouseup",()=>{p(!1)},{once:!0})),null==(n=e.onMouseDown)||n.call(e,i)},I=e=>i=>{var n,r;null==(n=e.onKeyDown)||n.call(e,i),!i.defaultMuiPrevented&&(i.target!==i.currentTarget||N()||" "!==i.key||i.preventDefault(),i.target!==i.currentTarget||" "!==i.key||t||p(!0),i.target!==i.currentTarget||N()||"Enter"!==i.key||t||(null==(r=e.onClick)||r.call(e,i),i.preventDefault()))},w=e=>i=>{var n,r;i.target===i.currentTarget&&p(!1),null==(n=e.onKeyUp)||n.call(e,i),i.target!==i.currentTarget||N()||t||" "!==i.key||i.defaultMuiPrevented||null==(r=e.onClick)||r.call(e,i)},D=r.useCallback(e=>{var t;y(null!=(t=null==e?void 0:e.tagName)?t:"")},[]),x=(0,s.Z)(D,h,v,f),M={};return void 0!==u&&(M.tabIndex=u),"BUTTON"===S?(M.type=null!=c?c:"button",i?M["aria-disabled"]=t:M.disabled=t):""!==S&&(l||d||(M.role="button",M.tabIndex=null!=u?u:0),t&&(M["aria-disabled"]=t,M.tabIndex=i?null!=u?u:0:-1)),{getRootProps:(t={})=>{let i=(0,n.Z)({},(0,a._)(e),(0,a._)(t)),r=(0,n.Z)({type:c},i,M,t,{onBlur:R(i),onClick:O(i),onFocus:A(i),onKeyDown:I(i),onKeyUp:w(i),onMouseDown:L(i),onMouseLeave:T(i),ref:x});return delete r.onFocusVisible,r},focusVisible:b,setFocusVisible:C,active:g,rootRef:x}}},26558:function(e,t,i){"use strict";i.d(t,{Z:function(){return r}});var n=i(67294);let r=n.createContext(null)},22644:function(e,t,i){"use strict";i.d(t,{F:function(){return n}});let n={blur:"list:blur",focus:"list:focus",itemClick:"list:itemClick",itemHover:"list:itemHover",itemsChange:"list:itemsChange",keyDown:"list:keyDown",resetHighlight:"list:resetHighlight",textNavigation:"list:textNavigation"}},7333:function(e,t,i){"use strict";i.d(t,{R$:function(){return a},Rl:function(){return o}});var n=i(87462),r=i(22644);function o(e,t,i){var n;let r,o;let{items:s,isItemDisabled:a,disableListWrap:l,disabledItemsFocusable:h,itemComparer:u,focusManagement:d}=i,c=s.length-1,f=null==e?-1:s.findIndex(t=>u(t,e)),g=!l;switch(t){case"reset":if(-1==("DOM"===d?0:-1))return null;r=0,o="next",g=!1;break;case"start":r=0,o="next",g=!1;break;case"end":r=c,o="previous",g=!1;break;default:{let e=f+t;e<0?!g&&-1!==f||Math.abs(t)>1?(r=0,o="next"):(r=c,o="previous"):e>c?!g||Math.abs(t)>1?(r=c,o="previous"):(r=0,o="next"):(r=e,o=t>=0?"next":"previous")}}let p=function(e,t,i,n,r,o){if(0===i.length||!n&&i.every((e,t)=>r(e,t)))return -1;let s=e;for(;;){if(!o&&"next"===t&&s===i.length||!o&&"previous"===t&&-1===s)return -1;let e=!n&&r(i[s],s);if(!e)return s;s+="next"===t?1:-1,o&&(s=(s+i.length)%i.length)}}(r,o,s,h,a,g);return -1!==p||null===e||a(e,f)?null!=(n=s[p])?n:null:e}function s(e,t,i){let{itemComparer:r,isItemDisabled:o,selectionMode:s,items:a}=i,{selectedValues:l}=t,h=a.findIndex(t=>r(e,t));if(o(e,h))return t;let u="none"===s?[]:"single"===s?r(l[0],e)?l:[e]:l.some(t=>r(t,e))?l.filter(t=>!r(t,e)):[...l,e];return(0,n.Z)({},t,{selectedValues:u,highlightedValue:e})}function a(e,t){let{type:i,context:a}=t;switch(i){case r.F.keyDown:return function(e,t,i){let r=t.highlightedValue,{orientation:a,pageSize:l}=i;switch(e){case"Home":return(0,n.Z)({},t,{highlightedValue:o(r,"start",i)});case"End":return(0,n.Z)({},t,{highlightedValue:o(r,"end",i)});case"PageUp":return(0,n.Z)({},t,{highlightedValue:o(r,-l,i)});case"PageDown":return(0,n.Z)({},t,{highlightedValue:o(r,l,i)});case"ArrowUp":if("vertical"!==a)break;return(0,n.Z)({},t,{highlightedValue:o(r,-1,i)});case"ArrowDown":if("vertical"!==a)break;return(0,n.Z)({},t,{highlightedValue:o(r,1,i)});case"ArrowLeft":if("vertical"===a)break;return(0,n.Z)({},t,{highlightedValue:o(r,"horizontal-ltr"===a?-1:1,i)});case"ArrowRight":if("vertical"===a)break;return(0,n.Z)({},t,{highlightedValue:o(r,"horizontal-ltr"===a?1:-1,i)});case"Enter":case" ":if(null===t.highlightedValue)break;return s(t.highlightedValue,t,i)}return t}(t.key,e,a);case r.F.itemClick:return s(t.item,e,a);case r.F.blur:return"DOM"===a.focusManagement?e:(0,n.Z)({},e,{highlightedValue:null});case r.F.textNavigation:return function(e,t,i){let{items:r,isItemDisabled:s,disabledItemsFocusable:a,getItemAsString:l}=i,h=t.length>1,u=h?e.highlightedValue:o(e.highlightedValue,1,i);for(let d=0;dl(e,i.highlightedValue)))?a:null:"DOM"===h&&0===t.length&&(u=o(null,"reset",r));let d=null!=(s=i.selectedValues)?s:[],c=d.filter(t=>e.some(e=>l(e,t)));return(0,n.Z)({},i,{highlightedValue:u,selectedValues:c})}(t.items,t.previousItems,e,a);case r.F.resetHighlight:return(0,n.Z)({},e,{highlightedValue:o(null,"reset",a)});default:return e}}},96592:function(e,t,i){"use strict";i.d(t,{s:function(){return v}});var n=i(87462),r=i(67294),o=i(33703),s=i(22644),a=i(7333);let l="select:change-selection",h="select:change-highlight";var u=i(78031),d=i(6414);function c(e,t){let i=r.useRef(e);return r.useEffect(()=>{i.current=e},null!=t?t:[e]),i}let f={},g=()=>{},p=(e,t)=>e===t,m=()=>!1,_=e=>"string"==typeof e?e:String(e),E=()=>({highlightedValue:null,selectedValues:[]});function v(e){let{controlledProps:t=f,disabledItemsFocusable:i=!1,disableListWrap:v=!1,focusManagement:b="activeDescendant",getInitialState:C=E,getItemDomElement:S,getItemId:y,isItemDisabled:T=m,rootRef:R,onStateChange:A=g,items:N,itemComparer:O=p,getItemAsString:L=_,onChange:I,onHighlightChange:w,onItemsChange:D,orientation:x="vertical",pageSize:M=5,reducerActionContext:k=f,selectionMode:P="single",stateReducer:F}=e,B=r.useRef(null),U=(0,o.Z)(R,B),H=r.useCallback((e,t,i)=>{if(null==w||w(e,t,i),"DOM"===b&&null!=t&&(i===s.F.itemClick||i===s.F.keyDown||i===s.F.textNavigation)){var n;null==S||null==(n=S(t))||n.focus()}},[S,w,b]),V=r.useMemo(()=>({highlightedValue:O,selectedValues:(e,t)=>(0,d.H)(e,t,O)}),[O]),W=r.useCallback((e,t,i,n,r)=>{switch(null==A||A(e,t,i,n,r),t){case"highlightedValue":H(e,i,n);break;case"selectedValues":null==I||I(e,i,n)}},[H,I,A]),G=r.useMemo(()=>({disabledItemsFocusable:i,disableListWrap:v,focusManagement:b,isItemDisabled:T,itemComparer:O,items:N,getItemAsString:L,onHighlightChange:H,orientation:x,pageSize:M,selectionMode:P,stateComparers:V}),[i,v,b,T,O,N,L,H,x,M,P,V]),j=C(),z=null!=F?F:a.R$,K=r.useMemo(()=>(0,n.Z)({},k,G),[k,G]),[Y,$]=(0,u.r)({reducer:z,actionContext:K,initialState:j,controlledProps:t,stateComparers:V,onStateChange:W}),{highlightedValue:q,selectedValues:X}=Y,Z=function(e){let t=r.useRef({searchString:"",lastTime:null});return r.useCallback(i=>{if(1===i.key.length&&" "!==i.key){let n=t.current,r=i.key.toLowerCase(),o=performance.now();n.searchString.length>0&&n.lastTime&&o-n.lastTime>500?n.searchString=r:(1!==n.searchString.length||r!==n.searchString)&&(n.searchString+=r),n.lastTime=o,e(n.searchString,i)}},[e])}((e,t)=>$({type:s.F.textNavigation,event:t,searchString:e})),Q=c(X),J=c(q),ee=r.useRef([]);r.useEffect(()=>{(0,d.H)(ee.current,N,O)||($({type:s.F.itemsChange,event:null,items:N,previousItems:ee.current}),ee.current=N,null==D||D(N))},[N,O,$,D]);let{notifySelectionChanged:et,notifyHighlightChanged:ei,registerHighlightChangeHandler:en,registerSelectionChangeHandler:er}=function(){let e=function(){let e=r.useRef();return e.current||(e.current=function(){let e=new Map;return{subscribe:function(t,i){let n=e.get(t);return n?n.add(i):(n=new Set([i]),e.set(t,n)),()=>{n.delete(i),0===n.size&&e.delete(t)}},publish:function(t,...i){let n=e.get(t);n&&n.forEach(e=>e(...i))}}}()),e.current}(),t=r.useCallback(t=>{e.publish(l,t)},[e]),i=r.useCallback(t=>{e.publish(h,t)},[e]),n=r.useCallback(t=>e.subscribe(l,t),[e]),o=r.useCallback(t=>e.subscribe(h,t),[e]);return{notifySelectionChanged:t,notifyHighlightChanged:i,registerSelectionChangeHandler:n,registerHighlightChangeHandler:o}}();r.useEffect(()=>{et(X)},[X,et]),r.useEffect(()=>{ei(q)},[q,ei]);let eo=e=>t=>{var i;if(null==(i=e.onKeyDown)||i.call(e,t),t.defaultMuiPrevented)return;let n=["Home","End","PageUp","PageDown"];"vertical"===x?n.push("ArrowUp","ArrowDown"):n.push("ArrowLeft","ArrowRight"),"activeDescendant"===b&&n.push(" ","Enter"),n.includes(t.key)&&t.preventDefault(),$({type:s.F.keyDown,key:t.key,event:t}),Z(t)},es=e=>t=>{var i,n;null==(i=e.onBlur)||i.call(e,t),t.defaultMuiPrevented||null!=(n=B.current)&&n.contains(t.relatedTarget)||$({type:s.F.blur,event:t})},ea=r.useCallback(e=>{var t;let i=N.findIndex(t=>O(t,e)),n=(null!=(t=Q.current)?t:[]).some(t=>null!=t&&O(e,t)),r=T(e,i),o=null!=J.current&&O(e,J.current),s="DOM"===b;return{disabled:r,focusable:s,highlighted:o,index:i,selected:n}},[N,T,O,Q,J,b]),el=r.useMemo(()=>({dispatch:$,getItemState:ea,registerHighlightChangeHandler:en,registerSelectionChangeHandler:er}),[$,ea,en,er]);return r.useDebugValue({state:Y}),{contextValue:el,dispatch:$,getRootProps:(e={})=>(0,n.Z)({},e,{"aria-activedescendant":"activeDescendant"===b&&null!=q?y(q):void 0,onBlur:es(e),onKeyDown:eo(e),tabIndex:"DOM"===b?-1:0,ref:U}),rootRef:U,state:Y}}},43069:function(e,t,i){"use strict";i.d(t,{J:function(){return h}});var n=i(87462),r=i(67294),o=i(33703),s=i(73546),a=i(22644),l=i(26558);function h(e){let t;let{handlePointerOverEvents:i=!1,item:h,rootRef:u}=e,d=r.useRef(null),c=(0,o.Z)(d,u),f=r.useContext(l.Z);if(!f)throw Error("useListItem must be used within a ListProvider");let{dispatch:g,getItemState:p,registerHighlightChangeHandler:m,registerSelectionChangeHandler:_}=f,{highlighted:E,selected:v,focusable:b}=p(h),C=function(){let[,e]=r.useState({});return r.useCallback(()=>{e({})},[])}();(0,s.Z)(()=>m(function(e){e!==h||E?e!==h&&E&&C():C()})),(0,s.Z)(()=>_(function(e){v?e.includes(h)||C():e.includes(h)&&C()}),[_,C,v,h]);let S=r.useCallback(e=>t=>{var i;null==(i=e.onClick)||i.call(e,t),t.defaultPrevented||g({type:a.F.itemClick,item:h,event:t})},[g,h]),y=r.useCallback(e=>t=>{var i;null==(i=e.onMouseOver)||i.call(e,t),t.defaultPrevented||g({type:a.F.itemHover,item:h,event:t})},[g,h]);return b&&(t=E?0:-1),{getRootProps:(e={})=>(0,n.Z)({},e,{onClick:S(e),onPointerOver:i?y(e):void 0,ref:c,tabIndex:t}),highlighted:E,rootRef:c,selected:v}}},10238:function(e,t,i){"use strict";i.d(t,{$:function(){return o}});var n=i(87462),r=i(28442);function o(e,t,i){return void 0===e||(0,r.X)(e)?t:(0,n.Z)({},t,{ownerState:(0,n.Z)({},t.ownerState,i)})}},6414:function(e,t,i){"use strict";function n(e,t,i=(e,t)=>e===t){return e.length===t.length&&e.every((e,n)=>i(e,t[n]))}i.d(t,{H:function(){return n}})},2900:function(e,t,i){"use strict";i.d(t,{f:function(){return r}});var n=i(87462);function r(e,t){return function(i={}){let r=(0,n.Z)({},i,e(i)),o=(0,n.Z)({},r,t(r));return o}}},30437:function(e,t,i){"use strict";function n(e,t=[]){if(void 0===e)return{};let i={};return Object.keys(e).filter(i=>i.match(/^on[A-Z]/)&&"function"==typeof e[i]&&!t.includes(i)).forEach(t=>{i[t]=e[t]}),i}i.d(t,{_:function(){return n}})},28442:function(e,t,i){"use strict";function n(e){return"string"==typeof e}i.d(t,{X:function(){return n}})},24407:function(e,t,i){"use strict";i.d(t,{L:function(){return a}});var n=i(87462),r=i(90512),o=i(30437);function s(e){if(void 0===e)return{};let t={};return Object.keys(e).filter(t=>!(t.match(/^on[A-Z]/)&&"function"==typeof e[t])).forEach(i=>{t[i]=e[i]}),t}function a(e){let{getSlotProps:t,additionalProps:i,externalSlotProps:a,externalForwardedProps:l,className:h}=e;if(!t){let e=(0,r.Z)(null==l?void 0:l.className,null==a?void 0:a.className,h,null==i?void 0:i.className),t=(0,n.Z)({},null==i?void 0:i.style,null==l?void 0:l.style,null==a?void 0:a.style),o=(0,n.Z)({},i,l,a);return e.length>0&&(o.className=e),Object.keys(t).length>0&&(o.style=t),{props:o,internalRef:void 0}}let u=(0,o._)((0,n.Z)({},l,a)),d=s(a),c=s(l),f=t(u),g=(0,r.Z)(null==f?void 0:f.className,null==i?void 0:i.className,h,null==l?void 0:l.className,null==a?void 0:a.className),p=(0,n.Z)({},null==f?void 0:f.style,null==i?void 0:i.style,null==l?void 0:l.style,null==a?void 0:a.style),m=(0,n.Z)({},f,i,c,d);return g.length>0&&(m.className=g),Object.keys(p).length>0&&(m.style=p),{props:m,internalRef:f.ref}}},71276:function(e,t,i){"use strict";function n(e,t,i){return"function"==typeof e?e(t,i):e}i.d(t,{x:function(){return n}})},12247:function(e,t,i){"use strict";i.d(t,{Y:function(){return o},s:function(){return r}});var n=i(67294);let r=n.createContext(null);function o(){let[e,t]=n.useState(new Map),i=n.useRef(new Set),r=n.useCallback(function(e){i.current.delete(e),t(t=>{let i=new Map(t);return i.delete(e),i})},[]),o=n.useCallback(function(e,n){let o;return o="function"==typeof e?e(i.current):e,i.current.add(o),t(e=>{let t=new Map(e);return t.set(o,n),t}),{id:o,deregister:()=>r(o)}},[r]),s=n.useMemo(()=>(function(e){let t=Array.from(e.keys()).map(t=>{let i=e.get(t);return{key:t,subitem:i}});return t.sort((e,t)=>{let i=e.subitem.ref.current,n=t.subitem.ref.current;return null===i||null===n||i===n?0:i.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_PRECEDING?1:-1}),new Map(t.map(e=>[e.key,e.subitem]))})(e),[e]),a=n.useCallback(function(e){return Array.from(s.keys()).indexOf(e)},[s]),l=n.useMemo(()=>({getItemIndex:a,registerItem:o,totalSubitemCount:e.size}),[a,o,e.size]);return{contextValue:l,subitems:s}}r.displayName="CompoundComponentContext"},14072:function(e,t,i){"use strict";i.d(t,{B:function(){return s}});var n=i(67294),r=i(73546),o=i(12247);function s(e,t){let i=n.useContext(o.s);if(null===i)throw Error("useCompoundItem must be used within a useCompoundParent");let{registerItem:s}=i,[a,l]=n.useState("function"==typeof e?void 0:e);return(0,r.Z)(()=>{let{id:i,deregister:n}=s(e,t);return l(i),n},[s,t,e]),{id:a,index:void 0!==a?i.getItemIndex(a):-1,totalItemCount:i.totalSubitemCount}}},78031:function(e,t,i){"use strict";i.d(t,{r:function(){return h}});var n=i(87462),r=i(67294);function o(e,t){return e===t}let s={},a=()=>{};function l(e,t){let i=(0,n.Z)({},e);return Object.keys(t).forEach(e=>{void 0!==t[e]&&(i[e]=t[e])}),i}function h(e){let t=r.useRef(null),{reducer:i,initialState:h,controlledProps:u=s,stateComparers:d=s,onStateChange:c=a,actionContext:f}=e,g=r.useCallback((e,n)=>{t.current=n;let r=l(e,u),o=i(r,n);return o},[u,i]),[p,m]=r.useReducer(g,h),_=r.useCallback(e=>{m((0,n.Z)({},e,{context:f}))},[f]);return!function(e){let{nextState:t,initialState:i,stateComparers:n,onStateChange:s,controlledProps:a,lastActionRef:h}=e,u=r.useRef(i);r.useEffect(()=>{if(null===h.current)return;let e=l(u.current,a);Object.keys(t).forEach(i=>{var r,a,l;let u=null!=(r=n[i])?r:o,d=t[i],c=e[i];(null!=c||null==d)&&(null==c||null!=d)&&(null==c||null==d||u(d,c))||null==s||s(null!=(a=h.current.event)?a:null,i,d,null!=(l=h.current.type)?l:"",t)}),u.current=t,h.current=null},[u,t,h,s,n,a])}({nextState:p,initialState:h,stateComparers:null!=d?d:s,onStateChange:null!=c?c:a,controlledProps:u,lastActionRef:t}),[l(p,u),_]}},7293:function(e,t,i){"use strict";i.d(t,{y:function(){return u}});var n=i(87462),r=i(63366),o=i(33703),s=i(10238),a=i(24407),l=i(71276);let h=["elementType","externalSlotProps","ownerState","skipResolvingSlotProps"];function u(e){var t;let{elementType:i,externalSlotProps:u,ownerState:d,skipResolvingSlotProps:c=!1}=e,f=(0,r.Z)(e,h),g=c?{}:(0,l.x)(u,d),{props:p,internalRef:m}=(0,a.L)((0,n.Z)({},f,{externalSlotProps:g})),_=(0,o.Z)(m,null==g?void 0:g.ref,null==(t=e.additionalProps)?void 0:t.ref),E=(0,s.$)(i,(0,n.Z)({},p,{ref:_}),d);return E}},48665:function(e,t,i){"use strict";i.d(t,{Z:function(){return _}});var n=i(87462),r=i(63366),o=i(67294),s=i(90512),a=i(49731),l=i(86523),h=i(39707),u=i(96682),d=i(85893);let c=["className","component"];var f=i(37078),g=i(1812),p=i(2548);let m=function(e={}){let{themeId:t,defaultTheme:i,defaultClassName:f="MuiBox-root",generateClassName:g}=e,p=(0,a.ZP)("div",{shouldForwardProp:e=>"theme"!==e&&"sx"!==e&&"as"!==e})(l.Z),m=o.forwardRef(function(e,o){let a=(0,u.Z)(i),l=(0,h.Z)(e),{className:m,component:_="div"}=l,E=(0,r.Z)(l,c);return(0,d.jsx)(p,(0,n.Z)({as:_,ref:o,className:(0,s.Z)(m,g?g(f):f),theme:t&&a[t]||a},E))});return m}({themeId:p.Z,defaultTheme:g.Z,defaultClassName:"MuiBox-root",generateClassName:f.Z.generate});var _=m},41118:function(e,t,i){"use strict";i.d(t,{Z:function(){return S}});var n=i(63366),r=i(87462),o=i(67294),s=i(90512),a=i(94780),l=i(14142),h=i(18719),u=i(20407),d=i(74312),c=i(78653),f=i(26821);function g(e){return(0,f.d6)("MuiCard",e)}(0,f.sI)("MuiCard",["root","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","variantPlain","variantOutlined","variantSoft","variantSolid","sizeSm","sizeMd","sizeLg","horizontal","vertical"]);var p=i(58859),m=i(30220),_=i(85893);let E=["className","color","component","invertedColors","size","variant","children","orientation","slots","slotProps"],v=e=>{let{size:t,variant:i,color:n,orientation:r}=e,o={root:["root",r,i&&`variant${(0,l.Z)(i)}`,n&&`color${(0,l.Z)(n)}`,t&&`size${(0,l.Z)(t)}`]};return(0,a.Z)(o,g,{})},b=(0,d.Z)("div",{name:"JoyCard",slot:"Root",overridesResolver:(e,t)=>t.root})(({theme:e,ownerState:t})=>{var i,n;let{p:o,padding:s,borderRadius:a}=(0,p.V)({theme:e,ownerState:t},["p","padding","borderRadius"]);return[(0,r.Z)({"--Icon-color":"neutral"!==t.color||"solid"===t.variant?"currentColor":e.vars.palette.text.icon,"--Card-childRadius":"max((var(--Card-radius) - var(--variant-borderWidth, 0px)) - var(--Card-padding), min(var(--Card-padding) / 2, (var(--Card-radius) - var(--variant-borderWidth, 0px)) / 2))","--AspectRatio-radius":"var(--Card-childRadius)","--unstable_actionMargin":"calc(-1 * var(--variant-borderWidth, 0px))","--unstable_actionRadius":"var(--Card-radius)","--CardCover-radius":"calc(var(--Card-radius) - var(--variant-borderWidth, 0px))","--CardOverflow-offset":"calc(-1 * var(--Card-padding))","--CardOverflow-radius":"calc(var(--Card-radius) - var(--variant-borderWidth, 0px))","--Divider-inset":"calc(-1 * var(--Card-padding))"},"sm"===t.size&&{"--Card-radius":e.vars.radius.sm,"--Card-padding":"0.625rem",gap:"0.5rem"},"md"===t.size&&{"--Card-radius":e.vars.radius.md,"--Card-padding":"1rem",gap:"0.75rem 1rem"},"lg"===t.size&&{"--Card-radius":e.vars.radius.lg,"--Card-padding":"1.5rem",gap:"1rem 1.5rem"},{padding:"var(--Card-padding)",borderRadius:"var(--Card-radius)",backgroundColor:e.vars.palette.background.surface,position:"relative",display:"flex",flexDirection:"horizontal"===t.orientation?"row":"column"},e.typography[`body-${t.size}`],null==(i=e.variants[t.variant])?void 0:i[t.color]),"context"!==t.color&&t.invertedColors&&(null==(n=e.colorInversion[t.variant])?void 0:n[t.color]),void 0!==o&&{"--Card-padding":o},void 0!==s&&{"--Card-padding":s},void 0!==a&&{"--Card-radius":a}]}),C=o.forwardRef(function(e,t){let i=(0,u.Z)({props:e,name:"JoyCard"}),{className:a,color:l="neutral",component:d="div",invertedColors:f=!1,size:g="md",variant:p="outlined",children:C,orientation:S="vertical",slots:y={},slotProps:T={}}=i,R=(0,n.Z)(i,E),{getColor:A}=(0,c.VT)(p),N=A(e.color,l),O=(0,r.Z)({},i,{color:N,component:d,orientation:S,size:g,variant:p}),L=v(O),I=(0,r.Z)({},R,{component:d,slots:y,slotProps:T}),[w,D]=(0,m.Z)("root",{ref:t,className:(0,s.Z)(L.root,a),elementType:b,externalForwardedProps:I,ownerState:O}),x=(0,_.jsx)(w,(0,r.Z)({},D,{children:o.Children.map(C,(e,t)=>{if(!o.isValidElement(e))return e;let i={};if((0,h.Z)(e,["Divider"])){i.inset="inset"in e.props?e.props.inset:"context";let t="vertical"===S?"horizontal":"vertical";i.orientation="orientation"in e.props?e.props.orientation:t}return(0,h.Z)(e,["CardOverflow"])&&("horizontal"===S&&(i["data-parent"]="Card-horizontal"),"vertical"===S&&(i["data-parent"]="Card-vertical")),0===t&&(i["data-first-child"]=""),t===o.Children.count(C)-1&&(i["data-last-child"]=""),o.cloneElement(e,i)})}));return f?(0,_.jsx)(c.do,{variant:p,children:x}):x});var S=C},30208:function(e,t,i){"use strict";i.d(t,{Z:function(){return v}});var n=i(87462),r=i(63366),o=i(67294),s=i(90512),a=i(94780),l=i(20407),h=i(74312),u=i(26821);function d(e){return(0,u.d6)("MuiCardContent",e)}(0,u.sI)("MuiCardContent",["root"]);let c=(0,u.sI)("MuiCardOverflow",["root","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","variantPlain","variantOutlined","variantSoft","variantSolid"]);var f=i(30220),g=i(85893);let p=["className","component","children","orientation","slots","slotProps"],m=()=>(0,a.Z)({root:["root"]},d,{}),_=(0,h.Z)("div",{name:"JoyCardContent",slot:"Root",overridesResolver:(e,t)=>t.root})(({ownerState:e})=>({display:"flex",flexDirection:"horizontal"===e.orientation?"row":"column",flex:9999,zIndex:1,columnGap:"var(--Card-padding)",rowGap:"max(2px, calc(0.1875 * var(--Card-padding)))",padding:"var(--unstable_padding)",[`.${c.root} > &`]:{"--unstable_padding":"calc(var(--Card-padding) * 0.75) 0px"}})),E=o.forwardRef(function(e,t){let i=(0,l.Z)({props:e,name:"JoyCardContent"}),{className:o,component:a="div",children:h,orientation:u="vertical",slots:d={},slotProps:c={}}=i,E=(0,r.Z)(i,p),v=(0,n.Z)({},E,{component:a,slots:d,slotProps:c}),b=(0,n.Z)({},i,{component:a,orientation:u}),C=m(),[S,y]=(0,f.Z)("root",{ref:t,className:(0,s.Z)(C.root,o),elementType:_,externalForwardedProps:v,ownerState:b});return(0,g.jsx)(S,(0,n.Z)({},y,{children:h}))});var v=E},76043:function(e,t,i){"use strict";var n=i(67294);let r=n.createContext(void 0);t.Z=r},43614:function(e,t,i){"use strict";var n=i(67294);let r=n.createContext(void 0);t.Z=r},50984:function(e,t,i){"use strict";i.d(t,{C:function(){return s}});var n=i(87462);i(67294);var r=i(74312),o=i(58859);i(85893);let s=(0,r.Z)("ul")(({theme:e,ownerState:t})=>{var i;let{p:r,padding:s,borderRadius:a}=(0,o.V)({theme:e,ownerState:t},["p","padding","borderRadius"]);function l(i){return"sm"===i?{"--ListDivider-gap":"0.25rem","--ListItem-minHeight":"2rem","--ListItem-paddingY":"0.25rem","--ListItem-paddingX":"0.5rem","--ListItemDecorator-size":"horizontal"===t.orientation?"1.5rem":"2rem","--Icon-fontSize":e.vars.fontSize.lg}:"md"===i?{"--ListDivider-gap":"0.375rem","--ListItem-minHeight":"2.5rem","--ListItem-paddingY":"0.375rem","--ListItem-paddingX":"0.75rem","--ListItemDecorator-size":"horizontal"===t.orientation?"1.75rem":"2.5rem","--Icon-fontSize":e.vars.fontSize.xl}:"lg"===i?{"--ListDivider-gap":"0.5rem","--ListItem-minHeight":"3rem","--ListItem-paddingY":"0.5rem","--ListItem-paddingX":"1rem","--ListItemDecorator-size":"horizontal"===t.orientation?"2.25rem":"3rem","--Icon-fontSize":e.vars.fontSize.xl2}:{}}return[t.nesting&&(0,n.Z)({},l(t.instanceSize),{"--ListItem-paddingRight":"var(--ListItem-paddingX)","--ListItem-paddingLeft":"var(--NestedListItem-paddingLeft)","--ListItemButton-marginBlock":"0px","--ListItemButton-marginInline":"0px","--ListItem-marginBlock":"0px","--ListItem-marginInline":"0px",padding:0,marginInlineStart:"var(--NestedList-marginLeft)",marginInlineEnd:"var(--NestedList-marginRight)",marginBlockStart:"var(--List-gap)",marginBlockEnd:"initial"}),!t.nesting&&(0,n.Z)({},l(t.size),{"--List-gap":"0px","--List-nestedInsetStart":"0px","--ListItem-paddingLeft":"var(--ListItem-paddingX)","--ListItem-paddingRight":"var(--ListItem-paddingX)","--unstable_List-childRadius":"calc(max(var(--List-radius) - var(--List-padding), min(var(--List-padding) / 2, var(--List-radius) / 2)) - var(--variant-borderWidth, 0px))","--ListItem-radius":"var(--unstable_List-childRadius)","--ListItem-startActionTranslateX":"calc(0.5 * var(--ListItem-paddingLeft))","--ListItem-endActionTranslateX":"calc(-0.5 * var(--ListItem-paddingRight))",margin:"initial"},e.typography[`body-${t.size}`],"horizontal"===t.orientation?(0,n.Z)({},t.wrap?{padding:"var(--List-padding)",marginInlineStart:"calc(-1 * var(--List-gap))",marginBlockStart:"calc(-1 * var(--List-gap))"}:{paddingInline:"var(--List-padding, var(--ListDivider-gap))",paddingBlock:"var(--List-padding)"}):{paddingBlock:"var(--List-padding, var(--ListDivider-gap))",paddingInline:"var(--List-padding)"}),(0,n.Z)({boxSizing:"border-box",borderRadius:"var(--List-radius)",listStyle:"none",display:"flex",flexDirection:"horizontal"===t.orientation?"row":"column"},t.wrap&&{flexWrap:"wrap"},{flexGrow:1,position:"relative"},null==(i=e.variants[t.variant])?void 0:i[t.color],{"--unstable_List-borderWidth":"var(--variant-borderWidth, 0px)"},void 0!==a&&{"--List-radius":a},void 0!==r&&{"--List-padding":r},void 0!==s&&{"--List-padding":s})]});(0,r.Z)(s,{name:"JoyList",slot:"Root",overridesResolver:(e,t)=>t.root})({})},3419:function(e,t,i){"use strict";i.d(t,{Z:function(){return u},M:function(){return h}});var n=i(87462),r=i(67294),o=i(40780);let s=r.createContext(!1),a=r.createContext(!1);var l=i(85893);let h={"--NestedList-marginRight":"0px","--NestedList-marginLeft":"0px","--NestedListItem-paddingLeft":"var(--ListItem-paddingX)","--ListItemButton-marginBlock":"0px","--ListItemButton-marginInline":"0px","--ListItem-marginBlock":"0px","--ListItem-marginInline":"0px"};var u=function(e){let{children:t,nested:i,row:h=!1,wrap:u=!1}=e,d=(0,l.jsx)(o.Z.Provider,{value:h,children:(0,l.jsx)(s.Provider,{value:u,children:r.Children.map(t,(e,i)=>r.isValidElement(e)?r.cloneElement(e,(0,n.Z)({},0===i&&{"data-first-child":""},i===r.Children.count(t)-1&&{"data-last-child":""})):e)})});return void 0===i?d:(0,l.jsx)(a.Provider,{value:i,children:d})}},40780:function(e,t,i){"use strict";var n=i(67294);let r=n.createContext(!1);t.Z=r},39984:function(e,t,i){"use strict";i.d(t,{r:function(){return l}});var n=i(87462);i(67294);var r=i(74312),o=i(26821);let s=(0,o.sI)("MuiListItem",["root","startAction","endAction","nested","nesting","sticky","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","variantPlain","variantSoft","variantOutlined","variantSolid"]),a=(0,o.sI)("MuiListItemButton",["root","horizontal","vertical","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","focusVisible","disabled","selected","variantPlain","variantSoft","variantOutlined","variantSolid"]);i(85893);let l=(0,r.Z)("div")(({theme:e,ownerState:t})=>{var i,r,o,l,h;return(0,n.Z)({"--Icon-margin":"initial","--Icon-color":"neutral"!==t.color||"solid"===t.variant?"currentColor":e.vars.palette.text.icon,WebkitTapHighlightColor:"transparent",boxSizing:"border-box",position:"relative",font:"inherit",display:"flex",flexDirection:"row",alignItems:"center",alignSelf:"stretch"},"vertical"===t.orientation&&{flexDirection:"column",justifyContent:"center"},{textAlign:"initial",textDecoration:"initial",backgroundColor:"initial",cursor:"pointer",marginInline:"var(--ListItemButton-marginInline)",marginBlock:"var(--ListItemButton-marginBlock)"},void 0===t["data-first-child"]&&{marginInlineStart:t.row?"var(--List-gap)":void 0,marginBlockStart:t.row?void 0:"var(--List-gap)"},{paddingBlock:"calc(var(--ListItem-paddingY) - var(--variant-borderWidth, 0px))",paddingInlineStart:"calc(var(--ListItem-paddingLeft) + var(--ListItem-startActionWidth, var(--unstable_startActionWidth, 0px)))",paddingInlineEnd:"calc(var(--ListItem-paddingRight) + var(--ListItem-endActionWidth, var(--unstable_endActionWidth, 0px)))",minBlockSize:"var(--ListItem-minHeight)",border:"1px solid transparent",borderRadius:"var(--ListItem-radius)",flex:"var(--unstable_ListItem-flex, none)",fontSize:"inherit",lineHeight:"inherit",minInlineSize:0,[e.focus.selector]:(0,n.Z)({},e.focus.default,{zIndex:1})},null==(i=e.variants[t.variant])?void 0:i[t.color],{[`.${s.root} > &`]:{"--unstable_ListItem-flex":"1 0 0%"},[`&.${a.selected}`]:(0,n.Z)({},null==(r=e.variants[`${t.variant}Active`])?void 0:r[t.color],{"--Icon-color":"currentColor"}),[`&:not(.${a.selected}, [aria-selected="true"])`]:{"&:hover":null==(o=e.variants[`${t.variant}Hover`])?void 0:o[t.color],"&:active":null==(l=e.variants[`${t.variant}Active`])?void 0:l[t.color]},[`&.${a.disabled}`]:(0,n.Z)({},null==(h=e.variants[`${t.variant}Disabled`])?void 0:h[t.color])})});(0,r.Z)(l,{name:"JoyListItemButton",slot:"Root",overridesResolver:(e,t)=>t.root})(({ownerState:e,theme:t})=>(0,n.Z)({},!e.row&&{[`&.${a.selected}`]:{fontWeight:t.vars.fontWeight.md}}))},57814:function(e,t,i){"use strict";i.d(t,{Z:function(){return A}});var n=i(87462),r=i(63366),o=i(67294),s=i(94780),a=i(92996),l=i(33703),h=i(43069),u=i(14072),d=i(30220),c=i(39984),f=i(74312),g=i(20407),p=i(78653),m=i(55907),_=i(26821);function E(e){return(0,_.d6)("MuiOption",e)}let v=(0,_.sI)("MuiOption",["root","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","focusVisible","disabled","selected","highlighted","variantPlain","variantSoft","variantOutlined","variantSolid"]);var b=i(40780),C=i(85893);let S=["component","children","disabled","value","label","variant","color","slots","slotProps"],y=e=>{let{disabled:t,highlighted:i,selected:n}=e;return(0,s.Z)({root:["root",t&&"disabled",i&&"highlighted",n&&"selected"]},E,{})},T=(0,f.Z)(c.r,{name:"JoyOption",slot:"Root",overridesResolver:(e,t)=>t.root})(({theme:e,ownerState:t})=>{var i;let n=null==(i=e.variants[`${t.variant}Hover`])?void 0:i[t.color];return{[`&.${v.highlighted}:not([aria-selected="true"])`]:{backgroundColor:null==n?void 0:n.backgroundColor}}}),R=o.forwardRef(function(e,t){var i;let s=(0,g.Z)({props:e,name:"JoyOption"}),{component:c="li",children:f,disabled:_=!1,value:E,label:v,variant:R="plain",color:A="neutral",slots:N={},slotProps:O={}}=s,L=(0,r.Z)(s,S),I=o.useContext(b.Z),{variant:w=R,color:D=A}=(0,m.yP)(e.variant,e.color),x=o.useRef(null),M=(0,l.Z)(x,t),k=null!=v?v:"string"==typeof f?f:null==(i=x.current)?void 0:i.innerText,{getRootProps:P,selected:F,highlighted:B,index:U}=function(e){let{value:t,label:i,disabled:r,rootRef:s,id:d}=e,{getRootProps:c,rootRef:f,highlighted:g,selected:p}=(0,h.J)({item:t}),m=(0,a.Z)(d),_=o.useRef(null),E=o.useMemo(()=>({disabled:r,label:i,value:t,ref:_,id:m}),[r,i,t,m]),{index:v}=(0,u.B)(t,E),b=(0,l.Z)(s,_,f);return{getRootProps:(e={})=>(0,n.Z)({},e,c(e),{id:m,ref:b,role:"option","aria-selected":p}),highlighted:g,index:v,selected:p,rootRef:b}}({disabled:_,label:k,value:E,rootRef:M}),{getColor:H}=(0,p.VT)(w),V=H(e.color,D),W=(0,n.Z)({},s,{disabled:_,selected:F,highlighted:B,index:U,component:c,variant:w,color:V,row:I}),G=y(W),j=(0,n.Z)({},L,{component:c,slots:N,slotProps:O}),[z,K]=(0,d.Z)("root",{ref:t,getSlotProps:P,elementType:T,externalForwardedProps:j,className:G.root,ownerState:W});return(0,C.jsx)(z,(0,n.Z)({},K,{children:f}))});var A=R},99056:function(e,t,i){"use strict";i.d(t,{Z:function(){return ea}});var n,r=i(63366),o=i(87462),s=i(67294),a=i(90512),l=i(14142),h=i(33703),u=i(53406),d=i(92996),c=i(73546),f=i(70758);let g={buttonClick:"buttonClick"};var p=i(96592);let m=e=>{let{label:t,value:i}=e;return"string"==typeof t?t:"string"==typeof i?i:String(e)};var _=i(12247),E=i(7333),v=i(22644);function b(e,t){var i,n,r;let{open:s}=e,{context:{selectionMode:a}}=t;if(t.type===g.buttonClick){let n=null!=(i=e.selectedValues[0])?i:(0,E.Rl)(null,"start",t.context);return(0,o.Z)({},e,{open:!s,highlightedValue:s?null:n})}let l=(0,E.R$)(e,t);switch(t.type){case v.F.keyDown:if(e.open){if("Escape"===t.event.key||"single"===a&&("Enter"===t.event.key||" "===t.event.key))return(0,o.Z)({},l,{open:!1})}else{if("Enter"===t.event.key||" "===t.event.key||"ArrowDown"===t.event.key)return(0,o.Z)({},e,{open:!0,highlightedValue:null!=(n=e.selectedValues[0])?n:(0,E.Rl)(null,"start",t.context)});if("ArrowUp"===t.event.key)return(0,o.Z)({},e,{open:!0,highlightedValue:null!=(r=e.selectedValues[0])?r:(0,E.Rl)(null,"end",t.context)})}break;case v.F.itemClick:if("single"===a)return(0,o.Z)({},l,{open:!1});break;case v.F.blur:return(0,o.Z)({},l,{open:!1})}return l}var C=i(2900);let S={clip:"rect(1px, 1px, 1px, 1px)",clipPath:"inset(50%)",height:"1px",width:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",left:"50%",bottom:0},y=()=>{};function T(e){return Array.isArray(e)?0===e.length?"":JSON.stringify(e.map(e=>e.value)):(null==e?void 0:e.value)==null?"":"string"==typeof e.value||"number"==typeof e.value?e.value:JSON.stringify(e.value)}function R(e){e.preventDefault()}var A=i(26558),N=i(85893);function O(e){let{value:t,children:i}=e,{dispatch:n,getItemIndex:r,getItemState:o,registerHighlightChangeHandler:a,registerSelectionChangeHandler:l,registerItem:h,totalSubitemCount:u}=t,d=s.useMemo(()=>({dispatch:n,getItemState:o,getItemIndex:r,registerHighlightChangeHandler:a,registerSelectionChangeHandler:l}),[n,r,o,a,l]),c=s.useMemo(()=>({getItemIndex:r,registerItem:h,totalSubitemCount:u}),[h,r,u]);return(0,N.jsx)(_.s.Provider,{value:c,children:(0,N.jsx)(A.Z.Provider,{value:d,children:i})})}var L=i(94780),I=i(50984),w=i(3419),D=i(43614),x=i(74312),M=i(20407),k=i(30220),P=i(26821);function F(e){return(0,P.d6)("MuiSvgIcon",e)}(0,P.sI)("MuiSvgIcon",["root","colorInherit","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","fontSizeInherit","fontSizeXs","fontSizeSm","fontSizeMd","fontSizeLg","fontSizeXl","fontSizeXl2","fontSizeXl3","fontSizeXl4","sizeSm","sizeMd","sizeLg"]);let B=["children","className","color","component","fontSize","htmlColor","inheritViewBox","titleAccess","viewBox","size","slots","slotProps"],U=e=>{let{color:t,size:i,fontSize:n}=e,r={root:["root",t&&"inherit"!==t&&`color${(0,l.Z)(t)}`,i&&`size${(0,l.Z)(i)}`,n&&`fontSize${(0,l.Z)(n)}`]};return(0,L.Z)(r,F,{})},H={sm:"xl",md:"xl2",lg:"xl3"},V=(0,x.Z)("svg",{name:"JoySvgIcon",slot:"Root",overridesResolver:(e,t)=>t.root})(({theme:e,ownerState:t})=>{var i;return(0,o.Z)({},t.instanceSize&&{"--Icon-fontSize":e.vars.fontSize[H[t.instanceSize]]},t.instanceFontSize&&"inherit"!==t.instanceFontSize&&{"--Icon-fontSize":e.vars.fontSize[t.instanceFontSize]},{userSelect:"none",margin:"var(--Icon-margin)",width:"1em",height:"1em",display:"inline-block",fill:t.hasSvgAsChild?void 0:"currentColor",flexShrink:0,fontSize:`var(--Icon-fontSize, ${e.vars.fontSize[H[t.size]]||"unset"})`},t.fontSize&&"inherit"!==t.fontSize&&{fontSize:`var(--Icon-fontSize, ${e.fontSize[t.fontSize]})`},!t.htmlColor&&(0,o.Z)({color:`var(--Icon-color, ${e.vars.palette.text.icon})`},"inherit"===t.color&&{color:"inherit"},"inherit"!==t.color&&"context"!==t.color&&e.vars.palette[t.color]&&{color:`rgba(${null==(i=e.vars.palette[t.color])?void 0:i.mainChannel} / 1)`}))}),W=s.forwardRef(function(e,t){let i=(0,M.Z)({props:e,name:"JoySvgIcon"}),{children:n,className:l,color:h,component:u="svg",fontSize:d,htmlColor:c,inheritViewBox:f=!1,titleAccess:g,viewBox:p="0 0 24 24",size:m="md",slots:_={},slotProps:E={}}=i,v=(0,r.Z)(i,B),b=s.isValidElement(n)&&"svg"===n.type,C=(0,o.Z)({},i,{color:h,component:u,size:m,instanceSize:e.size,fontSize:d,instanceFontSize:e.fontSize,inheritViewBox:f,viewBox:p,hasSvgAsChild:b}),S=U(C),y=(0,o.Z)({},v,{component:u,slots:_,slotProps:E}),[T,R]=(0,k.Z)("root",{ref:t,className:(0,a.Z)(S.root,l),elementType:V,externalForwardedProps:y,ownerState:C,additionalProps:(0,o.Z)({color:c,focusable:!1},g&&{role:"img"},!g&&{"aria-hidden":!0},!f&&{viewBox:p},b&&n.props)});return(0,N.jsxs)(T,(0,o.Z)({},R,{children:[b?n.props.children:n,g?(0,N.jsx)("title",{children:g}):null]}))});var G=function(e,t){function i(i,n){return(0,N.jsx)(W,(0,o.Z)({"data-testid":`${t}Icon`,ref:n},i,{children:e}))}return i.muiName=W.muiName,s.memo(s.forwardRef(i))}((0,N.jsx)("path",{d:"m12 5.83 2.46 2.46c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L12.7 3.7a.9959.9959 0 0 0-1.41 0L8.12 6.88c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0L12 5.83zm0 12.34-2.46-2.46a.9959.9959 0 0 0-1.41 0c-.39.39-.39 1.02 0 1.41l3.17 3.18c.39.39 1.02.39 1.41 0l3.17-3.17c.39-.39.39-1.02 0-1.41a.9959.9959 0 0 0-1.41 0L12 18.17z"}),"Unfold"),j=i(78653),z=i(58859);function K(e){return(0,P.d6)("MuiSelect",e)}let Y=(0,P.sI)("MuiSelect",["root","button","indicator","startDecorator","endDecorator","popper","listbox","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","variantPlain","variantOutlined","variantSoft","variantSolid","sizeSm","sizeMd","sizeLg","focusVisible","disabled","expanded"]);var $=i(76043),q=i(55907);let X=["action","autoFocus","children","defaultValue","defaultListboxOpen","disabled","getSerializedValue","placeholder","listboxId","listboxOpen","onChange","onListboxOpenChange","onClose","renderValue","required","value","size","variant","color","startDecorator","endDecorator","indicator","aria-describedby","aria-label","aria-labelledby","id","name","slots","slotProps"];function Z(e){var t;return null!=(t=null==e?void 0:e.label)?t:""}let Q=[{name:"offset",options:{offset:[0,4]}},{name:"equalWidth",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:({state:e})=>{e.styles.popper.width=`${e.rects.reference.width}px`}}],J=e=>{let{color:t,disabled:i,focusVisible:n,size:r,variant:o,open:s}=e,a={root:["root",i&&"disabled",n&&"focusVisible",s&&"expanded",o&&`variant${(0,l.Z)(o)}`,t&&`color${(0,l.Z)(t)}`,r&&`size${(0,l.Z)(r)}`],button:["button"],startDecorator:["startDecorator"],endDecorator:["endDecorator"],indicator:["indicator",s&&"expanded"],listbox:["listbox",s&&"expanded",i&&"disabled"]};return(0,L.Z)(a,K,{})},ee=(0,x.Z)("div",{name:"JoySelect",slot:"Root",overridesResolver:(e,t)=>t.root})(({theme:e,ownerState:t})=>{var i,n,r,s;let a=null==(i=e.variants[`${t.variant}`])?void 0:i[t.color],{borderRadius:l}=(0,z.V)({theme:e,ownerState:t},["borderRadius"]);return[(0,o.Z)({"--Select-radius":e.vars.radius.sm,"--Select-gap":"0.5rem","--Select-placeholderOpacity":.64,"--Select-decoratorColor":e.vars.palette.text.icon,"--Select-focusedThickness":e.vars.focus.thickness},"context"===t.color?{"--Select-focusedHighlight":e.vars.palette.focusVisible}:{"--Select-focusedHighlight":null==(n=e.vars.palette["neutral"===t.color?"primary":t.color])?void 0:n[500]},{"--Select-indicatorColor":null!=a&&a.backgroundColor?null==a?void 0:a.color:e.vars.palette.text.tertiary},"sm"===t.size&&{"--Select-minHeight":"2rem","--Select-paddingInline":"0.5rem","--Select-decoratorChildHeight":"min(1.5rem, var(--Select-minHeight))","--Icon-fontSize":e.vars.fontSize.xl},"md"===t.size&&{"--Select-minHeight":"2.5rem","--Select-paddingInline":"0.75rem","--Select-decoratorChildHeight":"min(2rem, var(--Select-minHeight))","--Icon-fontSize":e.vars.fontSize.xl2},"lg"===t.size&&{"--Select-minHeight":"3rem","--Select-paddingInline":"1rem","--Select-decoratorChildHeight":"min(2.375rem, var(--Select-minHeight))","--Icon-fontSize":e.vars.fontSize.xl2},{"--Select-decoratorChildOffset":"min(calc(var(--Select-paddingInline) - (var(--Select-minHeight) - 2 * var(--variant-borderWidth, 0px) - var(--Select-decoratorChildHeight)) / 2), var(--Select-paddingInline))","--_Select-paddingBlock":"max((var(--Select-minHeight) - 2 * var(--variant-borderWidth, 0px) - var(--Select-decoratorChildHeight)) / 2, 0px)","--Select-decoratorChildRadius":"max(var(--Select-radius) - var(--variant-borderWidth, 0px) - var(--_Select-paddingBlock), min(var(--_Select-paddingBlock) + var(--variant-borderWidth, 0px), var(--Select-radius) / 2))","--Button-minHeight":"var(--Select-decoratorChildHeight)","--IconButton-size":"var(--Select-decoratorChildHeight)","--Button-radius":"var(--Select-decoratorChildRadius)","--IconButton-radius":"var(--Select-decoratorChildRadius)",boxSizing:"border-box"},"plain"!==t.variant&&{boxShadow:e.shadow.xs},{minWidth:0,minHeight:"var(--Select-minHeight)",position:"relative",display:"flex",alignItems:"center",borderRadius:"var(--Select-radius)",cursor:"pointer"},!(null!=a&&a.backgroundColor)&&{backgroundColor:e.vars.palette.background.surface},t.size&&{paddingBlock:({sm:2,md:3,lg:4})[t.size]},{paddingInline:"var(--Select-paddingInline)"},e.typography[`body-${t.size}`],a,{"&::before":{boxSizing:"border-box",content:'""',display:"block",position:"absolute",pointerEvents:"none",top:0,left:0,right:0,bottom:0,zIndex:1,borderRadius:"inherit",margin:"calc(var(--variant-borderWidth, 0px) * -1)"},[`&.${Y.focusVisible}`]:{"--Select-indicatorColor":null==a?void 0:a.color,"&::before":{boxShadow:"inset 0 0 0 var(--Select-focusedThickness) var(--Select-focusedHighlight)"}},[`&.${Y.disabled}`]:{"--Select-indicatorColor":"inherit"}}),{"&:hover":null==(r=e.variants[`${t.variant}Hover`])?void 0:r[t.color],[`&.${Y.disabled}`]:null==(s=e.variants[`${t.variant}Disabled`])?void 0:s[t.color]},void 0!==l&&{"--Select-radius":l}]}),et=(0,x.Z)("button",{name:"JoySelect",slot:"Button",overridesResolver:(e,t)=>t.button})(({ownerState:e})=>(0,o.Z)({border:0,outline:0,background:"none",padding:0,fontSize:"inherit",color:"inherit",alignSelf:"stretch",display:"flex",alignItems:"center",flex:1,fontFamily:"inherit",cursor:"pointer",whiteSpace:"nowrap",overflow:"hidden"},(null===e.value||void 0===e.value)&&{opacity:"var(--Select-placeholderOpacity)"},{"&::before":{content:'""',display:"block",position:"absolute",top:"calc(-1 * var(--variant-borderWidth, 0px))",left:"calc(-1 * var(--variant-borderWidth, 0px))",right:"calc(-1 * var(--variant-borderWidth, 0px))",bottom:"calc(-1 * var(--variant-borderWidth, 0px))",borderRadius:"var(--Select-radius)"}})),ei=(0,x.Z)(I.C,{name:"JoySelect",slot:"Listbox",overridesResolver:(e,t)=>t.listbox})(({theme:e,ownerState:t})=>{var i;let n="context"===t.color?void 0:null==(i=e.variants[t.variant])?void 0:i[t.color];return(0,o.Z)({"--focus-outline-offset":`calc(${e.vars.focus.thickness} * -1)`,"--ListItem-stickyBackground":(null==n?void 0:n.backgroundColor)||(null==n?void 0:n.background)||e.vars.palette.background.popup,"--ListItem-stickyTop":"calc(var(--List-padding, var(--ListDivider-gap)) * -1)"},w.M,{minWidth:"max-content",maxHeight:"44vh",overflow:"auto",outline:0,boxShadow:e.shadow.md,borderRadius:`var(--List-radius, ${e.vars.radius.sm})`,zIndex:`var(--unstable_popup-zIndex, ${e.vars.zIndex.popup})`},!(null!=n&&n.backgroundColor)&&{backgroundColor:e.vars.palette.background.popup})}),en=(0,x.Z)("span",{name:"JoySelect",slot:"StartDecorator",overridesResolver:(e,t)=>t.startDecorator})({"--Button-margin":"0 0 0 calc(var(--Select-decoratorChildOffset) * -1)","--IconButton-margin":"0 0 0 calc(var(--Select-decoratorChildOffset) * -1)","--Icon-margin":"0 0 0 calc(var(--Select-paddingInline) / -4)",display:"inherit",alignItems:"center",color:"var(--Select-decoratorColor)",marginInlineEnd:"var(--Select-gap)"}),er=(0,x.Z)("span",{name:"JoySelect",slot:"EndDecorator",overridesResolver:(e,t)=>t.endDecorator})({"--Button-margin":"0 calc(var(--Select-decoratorChildOffset) * -1) 0 0","--IconButton-margin":"0 calc(var(--Select-decoratorChildOffset) * -1) 0 0","--Icon-margin":"0 calc(var(--Select-paddingInline) / -4) 0 0",display:"inherit",alignItems:"center",color:"var(--Select-decoratorColor)",marginInlineStart:"var(--Select-gap)"}),eo=(0,x.Z)("span",{name:"JoySelect",slot:"Indicator"})(({ownerState:e,theme:t})=>(0,o.Z)({},"sm"===e.size&&{"--Icon-fontSize":t.vars.fontSize.lg},"md"===e.size&&{"--Icon-fontSize":t.vars.fontSize.xl},"lg"===e.size&&{"--Icon-fontSize":t.vars.fontSize.xl2},{"--Icon-color":"neutral"!==e.color||"solid"===e.variant?"currentColor":t.vars.palette.text.icon,display:"inherit",alignItems:"center",marginInlineStart:"var(--Select-gap)",marginInlineEnd:"calc(var(--Select-paddingInline) / -4)",[`.${Y.endDecorator} + &`]:{marginInlineStart:"calc(var(--Select-gap) / 2)"},[`&.${Y.expanded}, .${Y.disabled} > &`]:{"--Icon-color":"currentColor"}})),es=s.forwardRef(function(e,t){var i,l,E,v,A,L,I;let x=(0,M.Z)({props:e,name:"JoySelect"}),{action:P,autoFocus:F,children:B,defaultValue:U,defaultListboxOpen:H=!1,disabled:V,getSerializedValue:W,placeholder:z,listboxId:K,listboxOpen:es,onChange:ea,onListboxOpenChange:el,onClose:eh,renderValue:eu,required:ed=!1,value:ec,size:ef="md",variant:eg="outlined",color:ep="neutral",startDecorator:em,endDecorator:e_,indicator:eE=n||(n=(0,N.jsx)(G,{})),"aria-describedby":ev,"aria-label":eb,"aria-labelledby":eC,id:eS,name:ey,slots:eT={},slotProps:eR={}}=x,eA=(0,r.Z)(x,X),eN=s.useContext($.Z),eO=null!=(i=null!=(l=e.disabled)?l:null==eN?void 0:eN.disabled)?i:V,eL=null!=(E=null!=(v=e.size)?v:null==eN?void 0:eN.size)?E:ef,{getColor:eI}=(0,j.VT)(eg),ew=eI(e.color,null!=eN&&eN.error?"danger":null!=(A=null==eN?void 0:eN.color)?A:ep),eD=null!=eu?eu:Z,[ex,eM]=s.useState(null),ek=s.useRef(null),eP=s.useRef(null),eF=s.useRef(null),eB=(0,h.Z)(t,ek);s.useImperativeHandle(P,()=>({focusVisible:()=>{var e;null==(e=eP.current)||e.focus()}}),[]),s.useEffect(()=>{eM(ek.current)},[]),s.useEffect(()=>{F&&eP.current.focus()},[F]);let eU=s.useCallback(e=>{null==el||el(e),e||null==eh||eh()},[eh,el]),{buttonActive:eH,buttonFocusVisible:eV,contextValue:eW,disabled:eG,getButtonProps:ej,getListboxProps:ez,getHiddenInputProps:eK,getOptionMetadata:eY,open:e$,value:eq}=function(e){let t,i,n;let{areOptionsEqual:r,buttonRef:a,defaultOpen:l=!1,defaultValue:u,disabled:E=!1,listboxId:v,listboxRef:A,multiple:N=!1,name:O,required:L,onChange:I,onHighlightChange:w,onOpenChange:D,open:x,options:M,getOptionAsString:k=m,getSerializedValue:P=T,value:F}=e,B=s.useRef(null),U=(0,h.Z)(a,B),H=s.useRef(null),V=(0,d.Z)(v);void 0===F&&void 0===u?t=[]:void 0!==u&&(t=N?u:null==u?[]:[u]);let W=s.useMemo(()=>{if(void 0!==F)return N?F:null==F?[]:[F]},[F,N]),{subitems:G,contextValue:j}=(0,_.Y)(),z=s.useMemo(()=>null!=M?new Map(M.map((e,t)=>[e.value,{value:e.value,label:e.label,disabled:e.disabled,ref:s.createRef(),id:`${V}_${t}`}])):G,[M,G,V]),K=(0,h.Z)(A,H),{getRootProps:Y,active:$,focusVisible:q,rootRef:X}=(0,f.U)({disabled:E,rootRef:U}),Z=s.useMemo(()=>Array.from(z.keys()),[z]),Q=s.useCallback(e=>{if(void 0!==r){let t=Z.find(t=>r(t,e));return z.get(t)}return z.get(e)},[z,r,Z]),J=s.useCallback(e=>{var t;let i=Q(e);return null!=(t=null==i?void 0:i.disabled)&&t},[Q]),ee=s.useCallback(e=>{let t=Q(e);return t?k(t):""},[Q,k]),et=s.useMemo(()=>({selectedValues:W,open:x}),[W,x]),ei=s.useCallback(e=>{var t;return null==(t=z.get(e))?void 0:t.id},[z]),en=s.useCallback((e,t)=>{if(N)null==I||I(e,t);else{var i;null==I||I(e,null!=(i=t[0])?i:null)}},[N,I]),er=s.useCallback((e,t)=>{null==w||w(e,null!=t?t:null)},[w]),eo=s.useCallback((e,t,i)=>{if("open"===t&&(null==D||D(i),!1===i&&(null==e?void 0:e.type)!=="blur")){var n;null==(n=B.current)||n.focus()}},[D]),es={getInitialState:()=>{var e;return{highlightedValue:null,selectedValues:null!=(e=t)?e:[],open:l}},getItemId:ei,controlledProps:et,itemComparer:r,isItemDisabled:J,rootRef:X,onChange:en,onHighlightChange:er,onStateChange:eo,reducerActionContext:s.useMemo(()=>({multiple:N}),[N]),items:Z,getItemAsString:ee,selectionMode:N?"multiple":"single",stateReducer:b},{dispatch:ea,getRootProps:el,contextValue:eh,state:{open:eu,highlightedValue:ed,selectedValues:ec},rootRef:ef}=(0,p.s)(es),eg=e=>t=>{var i;if(null==e||null==(i=e.onMouseDown)||i.call(e,t),!t.defaultMuiPrevented){let e={type:g.buttonClick,event:t};ea(e)}};(0,c.Z)(()=>{if(null!=ed){var e;let t=null==(e=Q(ed))?void 0:e.ref;if(!H.current||!(null!=t&&t.current))return;let i=H.current.getBoundingClientRect(),n=t.current.getBoundingClientRect();n.topi.bottom&&(H.current.scrollTop+=n.bottom-i.bottom)}},[ed,Q]);let ep=s.useCallback(e=>Q(e),[Q]),em=(e={})=>(0,o.Z)({},e,{onMouseDown:eg(e),ref:ef,role:"combobox","aria-expanded":eu,"aria-controls":V});s.useDebugValue({selectedOptions:ec,highlightedOption:ed,open:eu});let e_=s.useMemo(()=>(0,o.Z)({},eh,j),[eh,j]);if(i=e.multiple?ec:ec.length>0?ec[0]:null,N)n=i.map(e=>ep(e)).filter(e=>void 0!==e);else{var eE;n=null!=(eE=ep(i))?eE:null}return{buttonActive:$,buttonFocusVisible:q,buttonRef:X,contextValue:e_,disabled:E,dispatch:ea,getButtonProps:(e={})=>{let t=(0,C.f)(Y,el),i=(0,C.f)(t,em);return i(e)},getHiddenInputProps:(e={})=>(0,o.Z)({name:O,tabIndex:-1,"aria-hidden":!0,required:!!L||void 0,value:P(n),onChange:y,style:S},e),getListboxProps:(e={})=>(0,o.Z)({},e,{id:V,role:"listbox","aria-multiselectable":N?"true":void 0,ref:K,onMouseDown:R}),getOptionMetadata:ep,listboxRef:ef,open:eu,options:Z,value:i,highlightedOption:ed}}({buttonRef:eP,defaultOpen:H,defaultValue:U,disabled:eO,getSerializedValue:W,listboxId:K,multiple:!1,name:ey,required:ed,onChange:ea,onOpenChange:eU,open:es,value:ec}),eX=(0,o.Z)({},x,{active:eH,defaultListboxOpen:H,disabled:eG,focusVisible:eV,open:e$,renderValue:eD,value:eq,size:eL,variant:eg,color:ew}),eZ=J(eX),eQ=(0,o.Z)({},eA,{slots:eT,slotProps:eR}),eJ=s.useMemo(()=>{var e;return null!=(e=eY(eq))?e:null},[eY,eq]),[e0,e1]=(0,k.Z)("root",{ref:eB,className:eZ.root,elementType:ee,externalForwardedProps:eQ,ownerState:eX}),[e2,e5]=(0,k.Z)("button",{additionalProps:{"aria-describedby":null!=ev?ev:null==eN?void 0:eN["aria-describedby"],"aria-label":eb,"aria-labelledby":null!=eC?eC:null==eN?void 0:eN.labelId,"aria-required":ed?"true":void 0,id:null!=eS?eS:null==eN?void 0:eN.htmlFor,name:ey},className:eZ.button,elementType:et,externalForwardedProps:eQ,getSlotProps:ej,ownerState:eX}),[e4,e3]=(0,k.Z)("listbox",{additionalProps:{ref:eF,anchorEl:ex,open:e$,placement:"bottom",keepMounted:!0},className:eZ.listbox,elementType:ei,externalForwardedProps:eQ,getSlotProps:ez,ownerState:(0,o.Z)({},eX,{nesting:!1,row:!1,wrap:!1}),getSlotOwnerState:e=>({size:e.size||eL,variant:e.variant||eg,color:e.color||(e.disablePortal?ew:ep),disableColorInversion:!e.disablePortal})}),[e6,e9]=(0,k.Z)("startDecorator",{className:eZ.startDecorator,elementType:en,externalForwardedProps:eQ,ownerState:eX}),[e8,e7]=(0,k.Z)("endDecorator",{className:eZ.endDecorator,elementType:er,externalForwardedProps:eQ,ownerState:eX}),[te,tt]=(0,k.Z)("indicator",{className:eZ.indicator,elementType:eo,externalForwardedProps:eQ,ownerState:eX}),ti=s.useMemo(()=>[...Q,...e3.modifiers||[]],[e3.modifiers]),tn=null;return ex&&(tn=(0,N.jsx)(e4,(0,o.Z)({},e3,{className:(0,a.Z)(e3.className,(null==(L=e3.ownerState)?void 0:L.color)==="context"&&Y.colorContext),modifiers:ti},!(null!=(I=x.slots)&&I.listbox)&&{as:u.r,slots:{root:e3.as||"ul"}},{children:(0,N.jsx)(O,{value:eW,children:(0,N.jsx)(q.Yb,{variant:eg,color:ep,children:(0,N.jsx)(D.Z.Provider,{value:"select",children:(0,N.jsx)(w.Z,{nested:!0,children:B})})})})})),e3.disablePortal||(tn=(0,N.jsx)(j.ZP.Provider,{value:void 0,children:tn}))),(0,N.jsxs)(s.Fragment,{children:[(0,N.jsxs)(e0,(0,o.Z)({},e1,{children:[em&&(0,N.jsx)(e6,(0,o.Z)({},e9,{children:em})),(0,N.jsx)(e2,(0,o.Z)({},e5,{children:eJ?eD(eJ):z})),e_&&(0,N.jsx)(e8,(0,o.Z)({},e7,{children:e_})),eE&&(0,N.jsx)(te,(0,o.Z)({},tt,{children:eE})),(0,N.jsx)("input",(0,o.Z)({},eK()))]})),tn]})});var ea=es},61685:function(e,t,i){"use strict";i.d(t,{Z:function(){return S}});var n=i(63366),r=i(87462),o=i(67294),s=i(90512),a=i(14142),l=i(94780),h=i(20407),u=i(78653),d=i(74312),c=i(26821);function f(e){return(0,c.d6)("MuiTable",e)}(0,c.sI)("MuiTable",["root","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","variantPlain","variantOutlined","variantSoft","variantSolid","sizeSm","sizeMd","sizeLg","stickyHeader","stickyFooter","noWrap","hoverRow","borderAxisNone","borderAxisX","borderAxisXBetween","borderAxisY","borderAxisYBetween","borderAxisBoth","borderAxisBothBetween"]);var g=i(40911),p=i(30220),m=i(85893);let _=["className","component","children","borderAxis","hoverRow","noWrap","size","variant","color","stripe","stickyHeader","stickyFooter","slots","slotProps"],E=e=>{let{size:t,variant:i,color:n,borderAxis:r,stickyHeader:o,stickyFooter:s,noWrap:h,hoverRow:u}=e,d={root:["root",o&&"stickyHeader",s&&"stickyFooter",h&&"noWrap",u&&"hoverRow",r&&`borderAxis${(0,a.Z)(r)}`,i&&`variant${(0,a.Z)(i)}`,n&&`color${(0,a.Z)(n)}`,t&&`size${(0,a.Z)(t)}`]};return(0,l.Z)(d,f,{})},v={getColumnExceptFirst:()=>"& tr > *:not(:first-of-type), & tr > th + td, & tr > td + th",getCell:()=>"& th, & td",getHeadCell:()=>"& th",getHeaderCell:()=>"& thead th",getHeaderCellOfRow:e=>`& thead tr:nth-of-type(${e}) th`,getBottomHeaderCell:()=>"& thead th:not([colspan])",getHeaderNestedFirstColumn:()=>"& thead tr:not(:first-of-type) th:not([colspan]):first-of-type",getDataCell:()=>"& td",getDataCellExceptLastRow:()=>"& tr:not(:last-of-type) > td",getBodyCellExceptLastRow(){return`${this.getDataCellExceptLastRow()}, & tr:not(:last-of-type) > th[scope="row"]`},getBodyCellOfRow:e=>"number"==typeof e&&e<0?`& tbody tr:nth-last-of-type(${Math.abs(e)}) td, & tbody tr:nth-last-of-type(${Math.abs(e)}) th[scope="row"]`:`& tbody tr:nth-of-type(${e}) td, & tbody tr:nth-of-type(${e}) th[scope="row"]`,getBodyRow:e=>void 0===e?"& tbody tr":`& tbody tr:nth-of-type(${e})`,getFooterCell:()=>"& tfoot th, & tfoot td",getFooterFirstRowCell:()=>"& tfoot tr:not(:last-of-type) th, & tfoot tr:not(:last-of-type) td"},b=(0,d.Z)("table",{name:"JoyTable",slot:"Root",overridesResolver:(e,t)=>t.root})(({theme:e,ownerState:t})=>{var i,n,o,s,a,l,h;let u=null==(i=e.variants[t.variant])?void 0:i[t.color];return[(0,r.Z)({"--Table-headerUnderlineThickness":"2px","--TableCell-borderColor":null!=(n=null==u?void 0:u.borderColor)?n:e.vars.palette.divider,"--TableCell-headBackground":`var(--Sheet-background, ${e.vars.palette.background.surface})`},"sm"===t.size&&{"--unstable_TableCell-height":"var(--TableCell-height, 32px)","--TableCell-paddingX":"0.25rem","--TableCell-paddingY":"0.25rem"},"md"===t.size&&{"--unstable_TableCell-height":"var(--TableCell-height, 40px)","--TableCell-paddingX":"0.5rem","--TableCell-paddingY":"0.375rem"},"lg"===t.size&&{"--unstable_TableCell-height":"var(--TableCell-height, 48px)","--TableCell-paddingX":"0.75rem","--TableCell-paddingY":"0.5rem"},{tableLayout:"fixed",width:"100%",borderSpacing:"0px",borderCollapse:"separate",borderRadius:"var(--TableCell-cornerRadius, var(--unstable_actionRadius))"},e.typography[`body-${({sm:"xs",md:"sm",lg:"md"})[t.size]}`],null==(o=e.variants[t.variant])?void 0:o[t.color],{"& caption":{color:e.vars.palette.text.tertiary,padding:"calc(2 * var(--TableCell-paddingY)) var(--TableCell-paddingX)"},[v.getDataCell()]:(0,r.Z)({padding:"var(--TableCell-paddingY) var(--TableCell-paddingX)",height:"var(--unstable_TableCell-height)",borderColor:"var(--TableCell-borderColor)",backgroundColor:"var(--TableCell-dataBackground)"},t.noWrap&&{textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"}),[v.getHeadCell()]:{textAlign:"left",padding:"var(--TableCell-paddingY) var(--TableCell-paddingX)",backgroundColor:"var(--TableCell-headBackground)",height:"var(--unstable_TableCell-height)",fontWeight:e.vars.fontWeight.lg,borderColor:"var(--TableCell-borderColor)",color:e.vars.palette.text.secondary,textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"},[v.getHeaderCell()]:{verticalAlign:"bottom","&:first-of-type":{borderTopLeftRadius:"var(--TableCell-cornerRadius, var(--unstable_actionRadius))"},"&:last-of-type":{borderTopRightRadius:"var(--TableCell-cornerRadius, var(--unstable_actionRadius))"}},"& tfoot tr > *":{backgroundColor:`var(--TableCell-footBackground, ${e.vars.palette.background.level1})`,"&:first-of-type":{borderBottomLeftRadius:"var(--TableCell-cornerRadius, var(--unstable_actionRadius))"},"&:last-of-type":{borderBottomRightRadius:"var(--TableCell-cornerRadius, var(--unstable_actionRadius))"}}}),((null==(s=t.borderAxis)?void 0:s.startsWith("x"))||(null==(a=t.borderAxis)?void 0:a.startsWith("both")))&&{[v.getHeaderCell()]:{borderBottomWidth:1,borderBottomStyle:"solid"},[v.getBottomHeaderCell()]:{borderBottomWidth:"var(--Table-headerUnderlineThickness)",borderBottomStyle:"solid"},[v.getBodyCellExceptLastRow()]:{borderBottomWidth:1,borderBottomStyle:"solid"},[v.getFooterCell()]:{borderTopWidth:1,borderTopStyle:"solid"}},((null==(l=t.borderAxis)?void 0:l.startsWith("y"))||(null==(h=t.borderAxis)?void 0:h.startsWith("both")))&&{[`${v.getColumnExceptFirst()}, ${v.getHeaderNestedFirstColumn()}`]:{borderLeftWidth:1,borderLeftStyle:"solid"}},("x"===t.borderAxis||"both"===t.borderAxis)&&{[v.getHeaderCellOfRow(1)]:{borderTopWidth:1,borderTopStyle:"solid"},[v.getBodyCellOfRow(-1)]:{borderBottomWidth:1,borderBottomStyle:"solid"},[v.getFooterCell()]:{borderBottomWidth:1,borderBottomStyle:"solid"}},("y"===t.borderAxis||"both"===t.borderAxis)&&{"& tr > *:first-of-type":{borderLeftWidth:1,borderLeftStyle:"solid"},"& tr > *:last-of-type:not(:first-of-type)":{borderRightWidth:1,borderRightStyle:"solid"}},t.stripe&&{[v.getBodyRow(t.stripe)]:{background:`var(--TableRow-stripeBackground, ${e.vars.palette.background.level2})`,color:e.vars.palette.text.primary}},t.hoverRow&&{[v.getBodyRow()]:{"&:hover":{background:`var(--TableRow-hoverBackground, ${e.vars.palette.background.level3})`}}},t.stickyHeader&&{[v.getHeaderCell()]:{position:"sticky",top:0,zIndex:e.vars.zIndex.table},[v.getHeaderCellOfRow(2)]:{top:"var(--unstable_TableCell-height)"}},t.stickyFooter&&{[v.getFooterCell()]:{position:"sticky",bottom:0,zIndex:e.vars.zIndex.table,color:e.vars.palette.text.secondary,fontWeight:e.vars.fontWeight.lg},[v.getFooterFirstRowCell()]:{bottom:"var(--unstable_TableCell-height)"}}]}),C=o.forwardRef(function(e,t){let i=(0,h.Z)({props:e,name:"JoyTable"}),{className:o,component:a,children:l,borderAxis:d="xBetween",hoverRow:c=!1,noWrap:f=!1,size:v="md",variant:C="plain",color:S="neutral",stripe:y,stickyHeader:T=!1,stickyFooter:R=!1,slots:A={},slotProps:N={}}=i,O=(0,n.Z)(i,_),{getColor:L}=(0,u.VT)(C),I=L(e.color,S),w=(0,r.Z)({},i,{borderAxis:d,hoverRow:c,noWrap:f,component:a,size:v,color:I,variant:C,stripe:y,stickyHeader:T,stickyFooter:R}),D=E(w),x=(0,r.Z)({},O,{component:a,slots:A,slotProps:N}),[M,k]=(0,p.Z)("root",{ref:t,className:(0,s.Z)(D.root,o),elementType:b,externalForwardedProps:x,ownerState:w});return(0,m.jsx)(g.eu.Provider,{value:!0,children:(0,m.jsx)(M,(0,r.Z)({},k,{children:l}))})});var S=C},40911:function(e,t,i){"use strict";i.d(t,{eu:function(){return b},ZP:function(){return N}});var n=i(63366),r=i(87462),o=i(67294),s=i(14142),a=i(18719),l=i(39707),h=i(94780),u=i(74312),d=i(20407),c=i(78653),f=i(30220),g=i(26821);function p(e){return(0,g.d6)("MuiTypography",e)}(0,g.sI)("MuiTypography",["root","h1","h2","h3","h4","title-lg","title-md","title-sm","body-lg","body-md","body-sm","body-xs","noWrap","gutterBottom","startDecorator","endDecorator","colorPrimary","colorNeutral","colorDanger","colorSuccess","colorWarning","colorContext","variantPlain","variantOutlined","variantSoft","variantSolid"]);var m=i(85893);let _=["color","textColor"],E=["component","gutterBottom","noWrap","level","levelMapping","children","endDecorator","startDecorator","variant","slots","slotProps"],v=o.createContext(!1),b=o.createContext(!1),C=e=>{let{gutterBottom:t,noWrap:i,level:n,color:r,variant:o}=e,a={root:["root",n,t&&"gutterBottom",i&&"noWrap",r&&`color${(0,s.Z)(r)}`,o&&`variant${(0,s.Z)(o)}`],startDecorator:["startDecorator"],endDecorator:["endDecorator"]};return(0,h.Z)(a,p,{})},S=(0,u.Z)("span",{name:"JoyTypography",slot:"StartDecorator",overridesResolver:(e,t)=>t.startDecorator})({display:"inline-flex",marginInlineEnd:"clamp(4px, var(--Typography-gap, 0.375em), 0.75rem)"}),y=(0,u.Z)("span",{name:"JoyTypography",slot:"endDecorator",overridesResolver:(e,t)=>t.endDecorator})({display:"inline-flex",marginInlineStart:"clamp(4px, var(--Typography-gap, 0.375em), 0.75rem)"}),T=(0,u.Z)("span",{name:"JoyTypography",slot:"Root",overridesResolver:(e,t)=>t.root})(({theme:e,ownerState:t})=>{var i,n,o,s,a;let l="inherit"!==t.level?null==(i=e.typography[t.level])?void 0:i.lineHeight:"1";return(0,r.Z)({"--Icon-fontSize":`calc(1em * ${l})`},t.color&&{"--Icon-color":"currentColor"},{margin:"var(--Typography-margin, 0px)"},t.nesting?{display:"inline"}:(0,r.Z)({display:"block"},t.unstable_hasSkeleton&&{position:"relative"}),(t.startDecorator||t.endDecorator)&&(0,r.Z)({display:"flex",alignItems:"center"},t.nesting&&(0,r.Z)({display:"inline-flex"},t.startDecorator&&{verticalAlign:"bottom"})),t.level&&"inherit"!==t.level&&e.typography[t.level],{fontSize:`var(--Typography-fontSize, ${t.level&&"inherit"!==t.level&&null!=(n=null==(o=e.typography[t.level])?void 0:o.fontSize)?n:"inherit"})`},t.noWrap&&{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},t.gutterBottom&&{marginBottom:"0.35em"},t.color&&"context"!==t.color&&{color:`rgba(${null==(s=e.vars.palette[t.color])?void 0:s.mainChannel} / 1)`},t.variant&&(0,r.Z)({borderRadius:e.vars.radius.xs,paddingBlock:"min(0.1em, 4px)",paddingInline:"0.25em"},!t.nesting&&{marginInline:"-0.25em"},null==(a=e.variants[t.variant])?void 0:a[t.color]))}),R={h1:"h1",h2:"h2",h3:"h3",h4:"h4","title-lg":"p","title-md":"p","title-sm":"p","body-lg":"p","body-md":"p","body-sm":"p","body-xs":"span",inherit:"p"},A=o.forwardRef(function(e,t){let i=(0,d.Z)({props:e,name:"JoyTypography"}),{color:s,textColor:h}=i,u=(0,n.Z)(i,_),g=o.useContext(v),p=o.useContext(b),A=(0,l.Z)((0,r.Z)({},u,{color:h})),{component:N,gutterBottom:O=!1,noWrap:L=!1,level:I="body-md",levelMapping:w=R,children:D,endDecorator:x,startDecorator:M,variant:k,slots:P={},slotProps:F={}}=A,B=(0,n.Z)(A,E),{getColor:U}=(0,c.VT)(k),H=U(e.color,k?null!=s?s:"neutral":s),V=g||p?e.level||"inherit":I,W=(0,a.Z)(D,["Skeleton"]),G=N||(g?"span":w[V]||R[V]||"span"),j=(0,r.Z)({},A,{level:V,component:G,color:H,gutterBottom:O,noWrap:L,nesting:g,variant:k,unstable_hasSkeleton:W}),z=C(j),K=(0,r.Z)({},B,{component:G,slots:P,slotProps:F}),[Y,$]=(0,f.Z)("root",{ref:t,className:z.root,elementType:T,externalForwardedProps:K,ownerState:j}),[q,X]=(0,f.Z)("startDecorator",{className:z.startDecorator,elementType:S,externalForwardedProps:K,ownerState:j}),[Z,Q]=(0,f.Z)("endDecorator",{className:z.endDecorator,elementType:y,externalForwardedProps:K,ownerState:j});return(0,m.jsx)(v.Provider,{value:!0,children:(0,m.jsxs)(Y,(0,r.Z)({},$,{children:[M&&(0,m.jsx)(q,(0,r.Z)({},X,{children:M})),W?o.cloneElement(D,{variant:D.props.variant||"inline"}):D,x&&(0,m.jsx)(Z,(0,r.Z)({},Q,{children:x}))]}))})});A.muiName="Typography";var N=A},78653:function(e,t,i){"use strict";i.d(t,{VT:function(){return l},do:function(){return h}});var n=i(67294),r=i(38629),o=i(1812),s=i(85893);let a=n.createContext(void 0),l=e=>{let t=n.useContext(a);return{getColor:(i,n)=>t&&e&&t.includes(e)?i||"context":i||n}};function h({children:e,variant:t}){var i;let n=(0,r.F)();return(0,s.jsx)(a.Provider,{value:t?(null!=(i=n.colorInversionConfig)?i:o.Z.colorInversionConfig)[t]:void 0,children:e})}t.ZP=a},58859:function(e,t,i){"use strict";i.d(t,{V:function(){return r}});var n=i(87462);let r=({theme:e,ownerState:t},i)=>{let r={};return t.sx&&(function t(i){if("function"==typeof i){let n=i(e);t(n)}else Array.isArray(i)?i.forEach(e=>{"boolean"!=typeof e&&t(e)}):"object"==typeof i&&(r=(0,n.Z)({},r,i))}(t.sx),i.forEach(t=>{let i=r[t];if("string"==typeof i||"number"==typeof i){if("borderRadius"===t){if("number"==typeof i)r[t]=`${i}px`;else{var n;r[t]=(null==(n=e.vars)?void 0:n.radius[i])||i}}else -1!==["p","padding","m","margin"].indexOf(t)&&"number"==typeof i?r[t]=e.spacing(i):r[t]=i}else"function"==typeof i?r[t]=i(e):r[t]=void 0})),r}},74312:function(e,t,i){"use strict";var n=i(70182),r=i(1812),o=i(2548);let s=(0,n.ZP)({defaultTheme:r.Z,themeId:o.Z});t.Z=s},20407:function(e,t,i){"use strict";i.d(t,{Z:function(){return a}});var n=i(87462),r=i(39214),o=i(1812),s=i(2548);function a({props:e,name:t}){return(0,r.Z)({props:e,name:t,defaultTheme:(0,n.Z)({},o.Z,{components:{}}),themeId:s.Z})}},55907:function(e,t,i){"use strict";i.d(t,{Yb:function(){return a},yP:function(){return s}});var n=i(67294),r=i(85893);let o=n.createContext(void 0);function s(e,t){var i;let r,s;let a=n.useContext(o),[l,h]="string"==typeof a?a.split(":"):[],u=(i=l||void 0,r=h||void 0,s=i,"outlined"===i&&(r="neutral",s="plain"),"plain"===i&&(r="neutral"),{variant:s,color:r});return u.variant=e||u.variant,u.color=t||u.color,u}function a({children:e,color:t,variant:i}){return(0,r.jsx)(o.Provider,{value:`${i||""}:${t||""}`,children:e})}},30220:function(e,t,i){"use strict";i.d(t,{Z:function(){return g}});var n=i(87462),r=i(63366),o=i(33703),s=i(71276),a=i(24407),l=i(10238),h=i(78653);let u=["className","elementType","ownerState","externalForwardedProps","getSlotOwnerState","internalForwardedProps"],d=["component","slots","slotProps"],c=["component"],f=["disableColorInversion"];function g(e,t){let{className:i,elementType:g,ownerState:p,externalForwardedProps:m,getSlotOwnerState:_,internalForwardedProps:E}=t,v=(0,r.Z)(t,u),{component:b,slots:C={[e]:void 0},slotProps:S={[e]:void 0}}=m,y=(0,r.Z)(m,d),T=C[e]||g,R=(0,s.x)(S[e],p),A=(0,a.L)((0,n.Z)({className:i},v,{externalForwardedProps:"root"===e?y:void 0,externalSlotProps:R})),{props:{component:N},internalRef:O}=A,L=(0,r.Z)(A.props,c),I=(0,o.Z)(O,null==R?void 0:R.ref,t.ref),w=_?_(L):{},{disableColorInversion:D=!1}=w,x=(0,r.Z)(w,f),M=(0,n.Z)({},p,x),{getColor:k}=(0,h.VT)(M.variant);if("root"===e){var P;M.color=null!=(P=L.color)?P:p.color}else D||(M.color=k(L.color,M.color));let F="root"===e?N||b:N,B=(0,l.$)(T,(0,n.Z)({},"root"===e&&!b&&!C[e]&&E,"root"!==e&&!C[e]&&E,L,F&&{as:F},{ref:I}),M);return Object.keys(x).forEach(e=>{delete B[e]}),[T,B]}},39707:function(e,t,i){"use strict";i.d(t,{Z:function(){return h}});var n=i(87462),r=i(63366),o=i(59766),s=i(44920);let a=["sx"],l=e=>{var t,i;let n={systemProps:{},otherProps:{}},r=null!=(t=null==e||null==(i=e.theme)?void 0:i.unstable_sxConfig)?t:s.Z;return Object.keys(e).forEach(t=>{r[t]?n.systemProps[t]=e[t]:n.otherProps[t]=e[t]}),n};function h(e){let t;let{sx:i}=e,s=(0,r.Z)(e,a),{systemProps:h,otherProps:u}=l(s);return t=Array.isArray(i)?[h,...i]:"function"==typeof i?(...e)=>{let t=i(...e);return(0,o.P)(t)?(0,n.Z)({},h,t):h}:(0,n.Z)({},h,i),(0,n.Z)({},u,{sx:t})}},2093:function(e,t,i){"use strict";var n=i(97582),r=i(67294),o=i(92770);t.Z=function(e,t){(0,r.useEffect)(function(){var t=e(),i=!1;return!function(){(0,n.mG)(this,void 0,void 0,function(){return(0,n.Jh)(this,function(e){switch(e.label){case 0:if(!(0,o.mf)(t[Symbol.asyncIterator]))return[3,4];e.label=1;case 1:return[4,t.next()];case 2:if(e.sent().done||i)return[3,3];return[3,1];case 3:return[3,6];case 4:return[4,t];case 5:e.sent(),e.label=6;case 6:return[2]}})})}(),function(){i=!0}},t)}},15746:function(e,t,i){"use strict";var n=i(21584);t.Z=n.Z},71230:function(e,t,i){"use strict";var n=i(92820);t.Z=n.Z},87760:function(e,t){"use strict";var i={protan:{x:.7465,y:.2535,m:1.273463,yi:-.073894},deutan:{x:1.4,y:-.4,m:.968437,yi:.003331},tritan:{x:.1748,y:0,m:.062921,yi:.292119},custom:{x:.735,y:.265,m:-1.059259,yi:1.026914}},n=function(e){var t={},i=e.R/255,n=e.G/255,r=e.B/255;return i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92,n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92,r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92,t.X=.41242371206635076*i+.3575793401363035*n+.1804662232369621*r,t.Y=.21265606784927693*i+.715157818248362*n+.0721864539171564*r,t.Z=.019331987577444885*i+.11919267420354762*n+.9504491124870351*r,t},r=function(e){var t=e.X+e.Y+e.Z;return 0===t?{x:0,y:0,Y:e.Y}:{x:e.X/t,y:e.Y/t,Y:e.Y}};t.a=function(e,t,o){var s,a,l,h,u,d,c,f,g,p,m,_,E,v,b,C,S,y,T,R;return"achroma"===t?(s={R:s=.212656*e.R+.715158*e.G+.072186*e.B,G:s,B:s},o&&(l=(a=1.75)+1,s.R=(a*s.R+e.R)/l,s.G=(a*s.G+e.G)/l,s.B=(a*s.B+e.B)/l),s):(h=i[t],d=((u=r(n(e))).y-h.y)/(u.x-h.x),c=u.y-u.x*d,f=(h.yi-c)/(d-h.m),g=d*f+c,(s={}).X=f*u.Y/g,s.Y=u.Y,s.Z=(1-(f+g))*u.Y/g,y=.312713*u.Y/.329016,T=.358271*u.Y/.329016,_=3.240712470389558*(p=y-s.X)+-0+-.49857440415943116*(m=T-s.Z),E=-.969259258688888*p+0+.041556132211625726*m,v=.05563600315398933*p+-0+1.0570636917433989*m,s.R=3.240712470389558*s.X+-1.5372626602963142*s.Y+-.49857440415943116*s.Z,s.G=-.969259258688888*s.X+1.875996969313966*s.Y+.041556132211625726*s.Z,s.B=.05563600315398933*s.X+-.2039948802843549*s.Y+1.0570636917433989*s.Z,b=((s.R<0?0:1)-s.R)/_,C=((s.G<0?0:1)-s.G)/E,(S=(S=((s.B<0?0:1)-s.B)/v)>1||S<0?0:S)>(R=(b=b>1||b<0?0:b)>(C=C>1||C<0?0:C)?b:C)&&(R=S),s.R+=R*_,s.G+=R*E,s.B+=R*v,s.R=255*(s.R<=0?0:s.R>=1?1:Math.pow(s.R,.45454545454545453)),s.G=255*(s.G<=0?0:s.G>=1?1:Math.pow(s.G,.45454545454545453)),s.B=255*(s.B<=0?0:s.B>=1?1:Math.pow(s.B,.45454545454545453)),o&&(l=(a=1.75)+1,s.R=(a*s.R+e.R)/l,s.G=(a*s.G+e.G)/l,s.B=(a*s.B+e.B)/l),s)}},56917:function(e,t,i){"use strict";var n=i(74314),r=i(87760).a,o={protanomaly:{type:"protan",anomalize:!0},protanopia:{type:"protan"},deuteranomaly:{type:"deutan",anomalize:!0},deuteranopia:{type:"deutan"},tritanomaly:{type:"tritan",anomalize:!0},tritanopia:{type:"tritan"},achromatomaly:{type:"achroma",anomalize:!0},achromatopsia:{type:"achroma"}},s=function(e){return Math.round(255*e)},a=function(e){return function(t,i){var a=n(t);if(!a)return i?{R:0,G:0,B:0}:"#000000";var l=new r({R:s(a.red()||0),G:s(a.green()||0),B:s(a.blue()||0)},o[e].type,o[e].anomalize);return(l.R=l.R||0,l.G=l.G||0,l.B=l.B||0,i)?(delete l.X,delete l.Y,delete l.Z,l):new n.RGB(l.R%256/255,l.G%256/255,l.B%256/255,1).hex()}};for(var l in o)t[l]=a(l)},8874:function(e){"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},19818:function(e,t,i){var n=i(8874),r=i(86851),o=Object.hasOwnProperty,s=Object.create(null);for(var a in n)o.call(n,a)&&(s[n[a]]=a);var l=e.exports={to:{},get:{}};function h(e,t,i){return Math.min(Math.max(t,e),i)}function u(e){var t=Math.round(e).toString(16).toUpperCase();return t.length<2?"0"+t:t}l.get=function(e){var t,i;switch(e.substring(0,3).toLowerCase()){case"hsl":t=l.get.hsl(e),i="hsl";break;case"hwb":t=l.get.hwb(e),i="hwb";break;default:t=l.get.rgb(e),i="rgb"}return t?{model:i,value:t}:null},l.get.rgb=function(e){if(!e)return null;var t,i,r,s=[0,0,0,1];if(t=e.match(/^#([a-f0-9]{6})([a-f0-9]{2})?$/i)){for(i=0,r=t[2],t=t[1];i<3;i++){var a=2*i;s[i]=parseInt(t.slice(a,a+2),16)}r&&(s[3]=parseInt(r,16)/255)}else if(t=e.match(/^#([a-f0-9]{3,4})$/i)){for(i=0,r=(t=t[1])[3];i<3;i++)s[i]=parseInt(t[i]+t[i],16);r&&(s[3]=parseInt(r+r,16)/255)}else if(t=e.match(/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)){for(i=0;i<3;i++)s[i]=parseInt(t[i+1],0);t[4]&&(t[5]?s[3]=.01*parseFloat(t[4]):s[3]=parseFloat(t[4]))}else if(t=e.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)){for(i=0;i<3;i++)s[i]=Math.round(2.55*parseFloat(t[i+1]));t[4]&&(t[5]?s[3]=.01*parseFloat(t[4]):s[3]=parseFloat(t[4]))}else if(!(t=e.match(/^(\w+)$/)))return null;else return"transparent"===t[1]?[0,0,0,0]:o.call(n,t[1])?((s=n[t[1]])[3]=1,s):null;for(i=0;i<3;i++)s[i]=h(s[i],0,255);return s[3]=h(s[3],0,1),s},l.get.hsl=function(e){if(!e)return null;var t=e.match(/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var i=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,h(parseFloat(t[2]),0,100),h(parseFloat(t[3]),0,100),h(isNaN(i)?1:i,0,1)]}return null},l.get.hwb=function(e){if(!e)return null;var t=e.match(/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var i=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,h(parseFloat(t[2]),0,100),h(parseFloat(t[3]),0,100),h(isNaN(i)?1:i,0,1)]}return null},l.to.hex=function(){var e=r(arguments);return"#"+u(e[0])+u(e[1])+u(e[2])+(e[3]<1?u(Math.round(255*e[3])):"")},l.to.rgb=function(){var e=r(arguments);return e.length<4||1===e[3]?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"},l.to.rgb.percent=function(){var e=r(arguments),t=Math.round(e[0]/255*100),i=Math.round(e[1]/255*100),n=Math.round(e[2]/255*100);return e.length<4||1===e[3]?"rgb("+t+"%, "+i+"%, "+n+"%)":"rgba("+t+"%, "+i+"%, "+n+"%, "+e[3]+")"},l.to.hsl=function(){var e=r(arguments);return e.length<4||1===e[3]?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"},l.to.hwb=function(){var e=r(arguments),t="";return e.length>=4&&1!==e[3]&&(t=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+t+")"},l.to.keyword=function(e){return s[e.slice(0,3)]}},26729:function(e){"use strict";var t=Object.prototype.hasOwnProperty,i="~";function n(){}function r(e,t,i){this.fn=e,this.context=t,this.once=i||!1}function o(e,t,n,o,s){if("function"!=typeof n)throw TypeError("The listener must be a function");var a=new r(n,o||e,s),l=i?i+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],a]:e._events[l].push(a):(e._events[l]=a,e._eventsCount++),e}function s(e,t){0==--e._eventsCount?e._events=new n:delete e._events[t]}function a(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),new n().__proto__||(i=!1)),a.prototype.eventNames=function(){var e,n,r=[];if(0===this._eventsCount)return r;for(n in e=this._events)t.call(e,n)&&r.push(i?n.slice(1):n);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},a.prototype.listeners=function(e){var t=i?i+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var r=0,o=n.length,s=Array(o);rh+a*s*u||d>=p)g=s;else{if(Math.abs(f)<=-l*u)return s;f*(g-c)>=0&&(g=c),c=s,p=d}return 0}s=s||1,a=a||1e-6,l=l||.1;for(var m=0;m<10;++m){if(o(r.x,1,n.x,s,t),d=r.fx=e(r.x,r.fxprime),f=i(r.fxprime,t),d>h+a*s*u||m&&d>=c)return p(g,s,c);if(Math.abs(f)<=-l*u)break;if(f>=0)return p(s,g,d);c=d,g=s,s*=2}return s}e.bisect=function(e,t,i,n){var r=(n=n||{}).maxIterations||100,o=n.tolerance||1e-10,s=e(t),a=e(i),l=i-t;if(s*a>0)throw"Initial bisect points must have opposite signs";if(0===s)return t;if(0===a)return i;for(var h=0;h=0&&(t=u),Math.abs(l)=p[g-1].fx){var O=!1;if(C.fx>N.fx?(o(S,1+c,b,-c,N),S.fx=e(S),S.fx=1)break;for(m=1;m=n(d.fxprime))break}return a.history&&a.history.push({x:d.x.slice(),fx:d.fx,fxprime:d.fxprime.slice(),alpha:g}),d},e.gradientDescent=function(e,t,i){for(var r=(i=i||{}).maxIterations||100*t.length,s=i.learnRate||.001,a={x:t.slice(),fx:0,fxprime:t.slice()},l=0;l=n(a.fxprime)));++l);return a},e.gradientDescentLineSearch=function(e,t,i){i=i||{};var o,a={x:t.slice(),fx:0,fxprime:t.slice()},l={x:t.slice(),fx:0,fxprime:t.slice()},h=i.maxIterations||100*t.length,u=i.learnRate||1,d=t.slice(),c=i.c1||.001,f=i.c2||.1,g=[];if(i.history){var p=e;e=function(e,t){return g.push(e.slice()),p(e,t)}}a.fx=e(a.x,a.fxprime);for(var m=0;mn(a.fxprime)));++m);return a},e.zeros=t,e.zerosM=function(e,i){return t(e).map(function(){return t(i)})},e.norm2=n,e.weightedSum=o,e.scale=r}(t)},49685:function(e,t,i){"use strict";i.d(t,{Ib:function(){return n},WT:function(){return r}});var n=1e-6,r="undefined"!=typeof Float32Array?Float32Array:Array;Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)})},35600:function(e,t,i){"use strict";i.d(t,{Ue:function(){return r},al:function(){return s},xO:function(){return o}});var n=i(49685);function r(){var e=new n.WT(9);return n.WT!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[5]=0,e[6]=0,e[7]=0),e[0]=1,e[4]=1,e[8]=1,e}function o(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[4],e[4]=t[5],e[5]=t[6],e[6]=t[8],e[7]=t[9],e[8]=t[10],e}function s(e,t,i,r,o,s,a,l,h){var u=new n.WT(9);return u[0]=e,u[1]=t,u[2]=i,u[3]=r,u[4]=o,u[5]=s,u[6]=a,u[7]=l,u[8]=h,u}},85975:function(e,t,i){"use strict";i.r(t),i.d(t,{add:function(){return Y},adjoint:function(){return c},clone:function(){return o},copy:function(){return s},create:function(){return r},determinant:function(){return f},equals:function(){return Q},exactEquals:function(){return Z},frob:function(){return K},fromQuat:function(){return M},fromQuat2:function(){return O},fromRotation:function(){return y},fromRotationTranslation:function(){return N},fromRotationTranslationScale:function(){return D},fromRotationTranslationScaleOrigin:function(){return x},fromScaling:function(){return S},fromTranslation:function(){return C},fromValues:function(){return a},fromXRotation:function(){return T},fromYRotation:function(){return R},fromZRotation:function(){return A},frustum:function(){return k},getRotation:function(){return w},getScaling:function(){return I},getTranslation:function(){return L},identity:function(){return h},invert:function(){return d},lookAt:function(){return G},mul:function(){return J},multiply:function(){return g},multiplyScalar:function(){return q},multiplyScalarAndAdd:function(){return X},ortho:function(){return V},orthoNO:function(){return H},orthoZO:function(){return W},perspective:function(){return F},perspectiveFromFieldOfView:function(){return U},perspectiveNO:function(){return P},perspectiveZO:function(){return B},rotate:function(){return _},rotateX:function(){return E},rotateY:function(){return v},rotateZ:function(){return b},scale:function(){return m},set:function(){return l},str:function(){return z},sub:function(){return ee},subtract:function(){return $},targetTo:function(){return j},translate:function(){return p},transpose:function(){return u}});var n=i(49685);function r(){var e=new n.WT(16);return n.WT!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function o(e){var t=new n.WT(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function s(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function a(e,t,i,r,o,s,a,l,h,u,d,c,f,g,p,m){var _=new n.WT(16);return _[0]=e,_[1]=t,_[2]=i,_[3]=r,_[4]=o,_[5]=s,_[6]=a,_[7]=l,_[8]=h,_[9]=u,_[10]=d,_[11]=c,_[12]=f,_[13]=g,_[14]=p,_[15]=m,_}function l(e,t,i,n,r,o,s,a,l,h,u,d,c,f,g,p,m){return e[0]=t,e[1]=i,e[2]=n,e[3]=r,e[4]=o,e[5]=s,e[6]=a,e[7]=l,e[8]=h,e[9]=u,e[10]=d,e[11]=c,e[12]=f,e[13]=g,e[14]=p,e[15]=m,e}function h(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function u(e,t){if(e===t){var i=t[1],n=t[2],r=t[3],o=t[6],s=t[7],a=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=i,e[6]=t[9],e[7]=t[13],e[8]=n,e[9]=o,e[11]=t[14],e[12]=r,e[13]=s,e[14]=a}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function d(e,t){var i=t[0],n=t[1],r=t[2],o=t[3],s=t[4],a=t[5],l=t[6],h=t[7],u=t[8],d=t[9],c=t[10],f=t[11],g=t[12],p=t[13],m=t[14],_=t[15],E=i*a-n*s,v=i*l-r*s,b=i*h-o*s,C=n*l-r*a,S=n*h-o*a,y=r*h-o*l,T=u*p-d*g,R=u*m-c*g,A=u*_-f*g,N=d*m-c*p,O=d*_-f*p,L=c*_-f*m,I=E*L-v*O+b*N+C*A-S*R+y*T;return I?(I=1/I,e[0]=(a*L-l*O+h*N)*I,e[1]=(r*O-n*L-o*N)*I,e[2]=(p*y-m*S+_*C)*I,e[3]=(c*S-d*y-f*C)*I,e[4]=(l*A-s*L-h*R)*I,e[5]=(i*L-r*A+o*R)*I,e[6]=(m*b-g*y-_*v)*I,e[7]=(u*y-c*b+f*v)*I,e[8]=(s*O-a*A+h*T)*I,e[9]=(n*A-i*O-o*T)*I,e[10]=(g*S-p*b+_*E)*I,e[11]=(d*b-u*S-f*E)*I,e[12]=(a*R-s*N-l*T)*I,e[13]=(i*N-n*R+r*T)*I,e[14]=(p*v-g*C-m*E)*I,e[15]=(u*C-d*v+c*E)*I,e):null}function c(e,t){var i=t[0],n=t[1],r=t[2],o=t[3],s=t[4],a=t[5],l=t[6],h=t[7],u=t[8],d=t[9],c=t[10],f=t[11],g=t[12],p=t[13],m=t[14],_=t[15];return e[0]=a*(c*_-f*m)-d*(l*_-h*m)+p*(l*f-h*c),e[1]=-(n*(c*_-f*m)-d*(r*_-o*m)+p*(r*f-o*c)),e[2]=n*(l*_-h*m)-a*(r*_-o*m)+p*(r*h-o*l),e[3]=-(n*(l*f-h*c)-a*(r*f-o*c)+d*(r*h-o*l)),e[4]=-(s*(c*_-f*m)-u*(l*_-h*m)+g*(l*f-h*c)),e[5]=i*(c*_-f*m)-u*(r*_-o*m)+g*(r*f-o*c),e[6]=-(i*(l*_-h*m)-s*(r*_-o*m)+g*(r*h-o*l)),e[7]=i*(l*f-h*c)-s*(r*f-o*c)+u*(r*h-o*l),e[8]=s*(d*_-f*p)-u*(a*_-h*p)+g*(a*f-h*d),e[9]=-(i*(d*_-f*p)-u*(n*_-o*p)+g*(n*f-o*d)),e[10]=i*(a*_-h*p)-s*(n*_-o*p)+g*(n*h-o*a),e[11]=-(i*(a*f-h*d)-s*(n*f-o*d)+u*(n*h-o*a)),e[12]=-(s*(d*m-c*p)-u*(a*m-l*p)+g*(a*c-l*d)),e[13]=i*(d*m-c*p)-u*(n*m-r*p)+g*(n*c-r*d),e[14]=-(i*(a*m-l*p)-s*(n*m-r*p)+g*(n*l-r*a)),e[15]=i*(a*c-l*d)-s*(n*c-r*d)+u*(n*l-r*a),e}function f(e){var t=e[0],i=e[1],n=e[2],r=e[3],o=e[4],s=e[5],a=e[6],l=e[7],h=e[8],u=e[9],d=e[10],c=e[11],f=e[12],g=e[13],p=e[14],m=e[15];return(t*s-i*o)*(d*m-c*p)-(t*a-n*o)*(u*m-c*g)+(t*l-r*o)*(u*p-d*g)+(i*a-n*s)*(h*m-c*f)-(i*l-r*s)*(h*p-d*f)+(n*l-r*a)*(h*g-u*f)}function g(e,t,i){var n=t[0],r=t[1],o=t[2],s=t[3],a=t[4],l=t[5],h=t[6],u=t[7],d=t[8],c=t[9],f=t[10],g=t[11],p=t[12],m=t[13],_=t[14],E=t[15],v=i[0],b=i[1],C=i[2],S=i[3];return e[0]=v*n+b*a+C*d+S*p,e[1]=v*r+b*l+C*c+S*m,e[2]=v*o+b*h+C*f+S*_,e[3]=v*s+b*u+C*g+S*E,v=i[4],b=i[5],C=i[6],S=i[7],e[4]=v*n+b*a+C*d+S*p,e[5]=v*r+b*l+C*c+S*m,e[6]=v*o+b*h+C*f+S*_,e[7]=v*s+b*u+C*g+S*E,v=i[8],b=i[9],C=i[10],S=i[11],e[8]=v*n+b*a+C*d+S*p,e[9]=v*r+b*l+C*c+S*m,e[10]=v*o+b*h+C*f+S*_,e[11]=v*s+b*u+C*g+S*E,v=i[12],b=i[13],C=i[14],S=i[15],e[12]=v*n+b*a+C*d+S*p,e[13]=v*r+b*l+C*c+S*m,e[14]=v*o+b*h+C*f+S*_,e[15]=v*s+b*u+C*g+S*E,e}function p(e,t,i){var n,r,o,s,a,l,h,u,d,c,f,g,p=i[0],m=i[1],_=i[2];return t===e?(e[12]=t[0]*p+t[4]*m+t[8]*_+t[12],e[13]=t[1]*p+t[5]*m+t[9]*_+t[13],e[14]=t[2]*p+t[6]*m+t[10]*_+t[14],e[15]=t[3]*p+t[7]*m+t[11]*_+t[15]):(n=t[0],r=t[1],o=t[2],s=t[3],a=t[4],l=t[5],h=t[6],u=t[7],d=t[8],c=t[9],f=t[10],g=t[11],e[0]=n,e[1]=r,e[2]=o,e[3]=s,e[4]=a,e[5]=l,e[6]=h,e[7]=u,e[8]=d,e[9]=c,e[10]=f,e[11]=g,e[12]=n*p+a*m+d*_+t[12],e[13]=r*p+l*m+c*_+t[13],e[14]=o*p+h*m+f*_+t[14],e[15]=s*p+u*m+g*_+t[15]),e}function m(e,t,i){var n=i[0],r=i[1],o=i[2];return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e[4]=t[4]*r,e[5]=t[5]*r,e[6]=t[6]*r,e[7]=t[7]*r,e[8]=t[8]*o,e[9]=t[9]*o,e[10]=t[10]*o,e[11]=t[11]*o,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function _(e,t,i,r){var o,s,a,l,h,u,d,c,f,g,p,m,_,E,v,b,C,S,y,T,R,A,N,O,L=r[0],I=r[1],w=r[2],D=Math.hypot(L,I,w);return D0?(i[0]=(l*a+d*r+h*s-u*o)*2/c,i[1]=(h*a+d*o+u*r-l*s)*2/c,i[2]=(u*a+d*s+l*o-h*r)*2/c):(i[0]=(l*a+d*r+h*s-u*o)*2,i[1]=(h*a+d*o+u*r-l*s)*2,i[2]=(u*a+d*s+l*o-h*r)*2),N(e,t,i),e}function L(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function I(e,t){var i=t[0],n=t[1],r=t[2],o=t[4],s=t[5],a=t[6],l=t[8],h=t[9],u=t[10];return e[0]=Math.hypot(i,n,r),e[1]=Math.hypot(o,s,a),e[2]=Math.hypot(l,h,u),e}function w(e,t){var i=new n.WT(3);I(i,t);var r=1/i[0],o=1/i[1],s=1/i[2],a=t[0]*r,l=t[1]*o,h=t[2]*s,u=t[4]*r,d=t[5]*o,c=t[6]*s,f=t[8]*r,g=t[9]*o,p=t[10]*s,m=a+d+p,_=0;return m>0?(_=2*Math.sqrt(m+1),e[3]=.25*_,e[0]=(c-g)/_,e[1]=(f-h)/_,e[2]=(l-u)/_):a>d&&a>p?(_=2*Math.sqrt(1+a-d-p),e[3]=(c-g)/_,e[0]=.25*_,e[1]=(l+u)/_,e[2]=(f+h)/_):d>p?(_=2*Math.sqrt(1+d-a-p),e[3]=(f-h)/_,e[0]=(l+u)/_,e[1]=.25*_,e[2]=(c+g)/_):(_=2*Math.sqrt(1+p-a-d),e[3]=(l-u)/_,e[0]=(f+h)/_,e[1]=(c+g)/_,e[2]=.25*_),e}function D(e,t,i,n){var r=t[0],o=t[1],s=t[2],a=t[3],l=r+r,h=o+o,u=s+s,d=r*l,c=r*h,f=r*u,g=o*h,p=o*u,m=s*u,_=a*l,E=a*h,v=a*u,b=n[0],C=n[1],S=n[2];return e[0]=(1-(g+m))*b,e[1]=(c+v)*b,e[2]=(f-E)*b,e[3]=0,e[4]=(c-v)*C,e[5]=(1-(d+m))*C,e[6]=(p+_)*C,e[7]=0,e[8]=(f+E)*S,e[9]=(p-_)*S,e[10]=(1-(d+g))*S,e[11]=0,e[12]=i[0],e[13]=i[1],e[14]=i[2],e[15]=1,e}function x(e,t,i,n,r){var o=t[0],s=t[1],a=t[2],l=t[3],h=o+o,u=s+s,d=a+a,c=o*h,f=o*u,g=o*d,p=s*u,m=s*d,_=a*d,E=l*h,v=l*u,b=l*d,C=n[0],S=n[1],y=n[2],T=r[0],R=r[1],A=r[2],N=(1-(p+_))*C,O=(f+b)*C,L=(g-v)*C,I=(f-b)*S,w=(1-(c+_))*S,D=(m+E)*S,x=(g+v)*y,M=(m-E)*y,k=(1-(c+p))*y;return e[0]=N,e[1]=O,e[2]=L,e[3]=0,e[4]=I,e[5]=w,e[6]=D,e[7]=0,e[8]=x,e[9]=M,e[10]=k,e[11]=0,e[12]=i[0]+T-(N*T+I*R+x*A),e[13]=i[1]+R-(O*T+w*R+M*A),e[14]=i[2]+A-(L*T+D*R+k*A),e[15]=1,e}function M(e,t){var i=t[0],n=t[1],r=t[2],o=t[3],s=i+i,a=n+n,l=r+r,h=i*s,u=n*s,d=n*a,c=r*s,f=r*a,g=r*l,p=o*s,m=o*a,_=o*l;return e[0]=1-d-g,e[1]=u+_,e[2]=c-m,e[3]=0,e[4]=u-_,e[5]=1-h-g,e[6]=f+p,e[7]=0,e[8]=c+m,e[9]=f-p,e[10]=1-h-d,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function k(e,t,i,n,r,o,s){var a=1/(i-t),l=1/(r-n),h=1/(o-s);return e[0]=2*o*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=2*o*l,e[6]=0,e[7]=0,e[8]=(i+t)*a,e[9]=(r+n)*l,e[10]=(s+o)*h,e[11]=-1,e[12]=0,e[13]=0,e[14]=s*o*2*h,e[15]=0,e}function P(e,t,i,n,r){var o,s=1/Math.tan(t/2);return e[0]=s/i,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=s,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,null!=r&&r!==1/0?(o=1/(n-r),e[10]=(r+n)*o,e[14]=2*r*n*o):(e[10]=-1,e[14]=-2*n),e}var F=P;function B(e,t,i,n,r){var o,s=1/Math.tan(t/2);return e[0]=s/i,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=s,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,null!=r&&r!==1/0?(o=1/(n-r),e[10]=r*o,e[14]=r*n*o):(e[10]=-1,e[14]=-n),e}function U(e,t,i,n){var r=Math.tan(t.upDegrees*Math.PI/180),o=Math.tan(t.downDegrees*Math.PI/180),s=Math.tan(t.leftDegrees*Math.PI/180),a=Math.tan(t.rightDegrees*Math.PI/180),l=2/(s+a),h=2/(r+o);return e[0]=l,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=h,e[6]=0,e[7]=0,e[8]=-((s-a)*l*.5),e[9]=(r-o)*h*.5,e[10]=n/(i-n),e[11]=-1,e[12]=0,e[13]=0,e[14]=n*i/(i-n),e[15]=0,e}function H(e,t,i,n,r,o,s){var a=1/(t-i),l=1/(n-r),h=1/(o-s);return e[0]=-2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*h,e[11]=0,e[12]=(t+i)*a,e[13]=(r+n)*l,e[14]=(s+o)*h,e[15]=1,e}var V=H;function W(e,t,i,n,r,o,s){var a=1/(t-i),l=1/(n-r),h=1/(o-s);return e[0]=-2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=h,e[11]=0,e[12]=(t+i)*a,e[13]=(r+n)*l,e[14]=o*h,e[15]=1,e}function G(e,t,i,r){var o,s,a,l,u,d,c,f,g,p,m=t[0],_=t[1],E=t[2],v=r[0],b=r[1],C=r[2],S=i[0],y=i[1],T=i[2];return Math.abs(m-S)0&&(u*=f=1/Math.sqrt(f),d*=f,c*=f);var g=l*c-h*d,p=h*u-a*c,m=a*d-l*u;return(f=g*g+p*p+m*m)>0&&(g*=f=1/Math.sqrt(f),p*=f,m*=f),e[0]=g,e[1]=p,e[2]=m,e[3]=0,e[4]=d*m-c*p,e[5]=c*g-u*m,e[6]=u*p-d*g,e[7]=0,e[8]=u,e[9]=d,e[10]=c,e[11]=0,e[12]=r,e[13]=o,e[14]=s,e[15]=1,e}function z(e){return"mat4("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+", "+e[4]+", "+e[5]+", "+e[6]+", "+e[7]+", "+e[8]+", "+e[9]+", "+e[10]+", "+e[11]+", "+e[12]+", "+e[13]+", "+e[14]+", "+e[15]+")"}function K(e){return Math.hypot(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])}function Y(e,t,i){return e[0]=t[0]+i[0],e[1]=t[1]+i[1],e[2]=t[2]+i[2],e[3]=t[3]+i[3],e[4]=t[4]+i[4],e[5]=t[5]+i[5],e[6]=t[6]+i[6],e[7]=t[7]+i[7],e[8]=t[8]+i[8],e[9]=t[9]+i[9],e[10]=t[10]+i[10],e[11]=t[11]+i[11],e[12]=t[12]+i[12],e[13]=t[13]+i[13],e[14]=t[14]+i[14],e[15]=t[15]+i[15],e}function $(e,t,i){return e[0]=t[0]-i[0],e[1]=t[1]-i[1],e[2]=t[2]-i[2],e[3]=t[3]-i[3],e[4]=t[4]-i[4],e[5]=t[5]-i[5],e[6]=t[6]-i[6],e[7]=t[7]-i[7],e[8]=t[8]-i[8],e[9]=t[9]-i[9],e[10]=t[10]-i[10],e[11]=t[11]-i[11],e[12]=t[12]-i[12],e[13]=t[13]-i[13],e[14]=t[14]-i[14],e[15]=t[15]-i[15],e}function q(e,t,i){return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[3]=t[3]*i,e[4]=t[4]*i,e[5]=t[5]*i,e[6]=t[6]*i,e[7]=t[7]*i,e[8]=t[8]*i,e[9]=t[9]*i,e[10]=t[10]*i,e[11]=t[11]*i,e[12]=t[12]*i,e[13]=t[13]*i,e[14]=t[14]*i,e[15]=t[15]*i,e}function X(e,t,i,n){return e[0]=t[0]+i[0]*n,e[1]=t[1]+i[1]*n,e[2]=t[2]+i[2]*n,e[3]=t[3]+i[3]*n,e[4]=t[4]+i[4]*n,e[5]=t[5]+i[5]*n,e[6]=t[6]+i[6]*n,e[7]=t[7]+i[7]*n,e[8]=t[8]+i[8]*n,e[9]=t[9]+i[9]*n,e[10]=t[10]+i[10]*n,e[11]=t[11]+i[11]*n,e[12]=t[12]+i[12]*n,e[13]=t[13]+i[13]*n,e[14]=t[14]+i[14]*n,e[15]=t[15]+i[15]*n,e}function Z(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]}function Q(e,t){var i=e[0],r=e[1],o=e[2],s=e[3],a=e[4],l=e[5],h=e[6],u=e[7],d=e[8],c=e[9],f=e[10],g=e[11],p=e[12],m=e[13],_=e[14],E=e[15],v=t[0],b=t[1],C=t[2],S=t[3],y=t[4],T=t[5],R=t[6],A=t[7],N=t[8],O=t[9],L=t[10],I=t[11],w=t[12],D=t[13],x=t[14],M=t[15];return Math.abs(i-v)<=n.Ib*Math.max(1,Math.abs(i),Math.abs(v))&&Math.abs(r-b)<=n.Ib*Math.max(1,Math.abs(r),Math.abs(b))&&Math.abs(o-C)<=n.Ib*Math.max(1,Math.abs(o),Math.abs(C))&&Math.abs(s-S)<=n.Ib*Math.max(1,Math.abs(s),Math.abs(S))&&Math.abs(a-y)<=n.Ib*Math.max(1,Math.abs(a),Math.abs(y))&&Math.abs(l-T)<=n.Ib*Math.max(1,Math.abs(l),Math.abs(T))&&Math.abs(h-R)<=n.Ib*Math.max(1,Math.abs(h),Math.abs(R))&&Math.abs(u-A)<=n.Ib*Math.max(1,Math.abs(u),Math.abs(A))&&Math.abs(d-N)<=n.Ib*Math.max(1,Math.abs(d),Math.abs(N))&&Math.abs(c-O)<=n.Ib*Math.max(1,Math.abs(c),Math.abs(O))&&Math.abs(f-L)<=n.Ib*Math.max(1,Math.abs(f),Math.abs(L))&&Math.abs(g-I)<=n.Ib*Math.max(1,Math.abs(g),Math.abs(I))&&Math.abs(p-w)<=n.Ib*Math.max(1,Math.abs(p),Math.abs(w))&&Math.abs(m-D)<=n.Ib*Math.max(1,Math.abs(m),Math.abs(D))&&Math.abs(_-x)<=n.Ib*Math.max(1,Math.abs(_),Math.abs(x))&&Math.abs(E-M)<=n.Ib*Math.max(1,Math.abs(E),Math.abs(M))}var J=g,ee=$},32945:function(e,t,i){"use strict";i.d(t,{Fv:function(){return p},JG:function(){return f},Jp:function(){return h},Su:function(){return d},U_:function(){return u},Ue:function(){return a},al:function(){return c},dC:function(){return g},yY:function(){return l}});var n=i(49685),r=i(35600),o=i(77160),s=i(98333);function a(){var e=new n.WT(4);return n.WT!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}function l(e,t,i){var n=Math.sin(i*=.5);return e[0]=n*t[0],e[1]=n*t[1],e[2]=n*t[2],e[3]=Math.cos(i),e}function h(e,t,i){var n=t[0],r=t[1],o=t[2],s=t[3],a=i[0],l=i[1],h=i[2],u=i[3];return e[0]=n*u+s*a+r*h-o*l,e[1]=r*u+s*l+o*a-n*h,e[2]=o*u+s*h+n*l-r*a,e[3]=s*u-n*a-r*l-o*h,e}function u(e,t){var i=t[0],n=t[1],r=t[2],o=t[3],s=i*i+n*n+r*r+o*o,a=s?1/s:0;return e[0]=-i*a,e[1]=-n*a,e[2]=-r*a,e[3]=o*a,e}function d(e,t,i,n){var r=.5*Math.PI/180,o=Math.sin(t*=r),s=Math.cos(t),a=Math.sin(i*=r),l=Math.cos(i),h=Math.sin(n*=r),u=Math.cos(n);return e[0]=o*l*u-s*a*h,e[1]=s*a*u+o*l*h,e[2]=s*l*h-o*a*u,e[3]=s*l*u+o*a*h,e}s.d9;var c=s.al,f=s.JG;s.t8,s.IH;var g=h;s.bA,s.AK,s.t7,s.kE,s.we;var p=s.Fv;s.I6,s.fS,o.Ue(),o.al(1,0,0),o.al(0,1,0),a(),a(),r.Ue()},31437:function(e,t,i){"use strict";i.d(t,{AK:function(){return l},Fv:function(){return a},I6:function(){return h},JG:function(){return s},al:function(){return o}});var n,r=i(49685);function o(e,t){var i=new r.WT(2);return i[0]=e,i[1]=t,i}function s(e,t){return e[0]=t[0],e[1]=t[1],e}function a(e,t){var i=t[0],n=t[1],r=i*i+n*n;return r>0&&(r=1/Math.sqrt(r)),e[0]=t[0]*r,e[1]=t[1]*r,e}function l(e,t){return e[0]*t[0]+e[1]*t[1]}function h(e,t){return e[0]===t[0]&&e[1]===t[1]}n=new r.WT(2),r.WT!=Float32Array&&(n[0]=0,n[1]=0)},77160:function(e,t,i){"use strict";i.d(t,{$X:function(){return d},AK:function(){return p},Fv:function(){return g},IH:function(){return u},JG:function(){return l},Jp:function(){return c},TK:function(){return S},Ue:function(){return r},VC:function(){return b},Zh:function(){return y},al:function(){return a},bA:function(){return f},d9:function(){return o},fF:function(){return E},fS:function(){return C},kC:function(){return m},kE:function(){return s},kK:function(){return v},t7:function(){return _},t8:function(){return h}});var n=i(49685);function r(){var e=new n.WT(3);return n.WT!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function o(e){var t=new n.WT(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function s(e){return Math.hypot(e[0],e[1],e[2])}function a(e,t,i){var r=new n.WT(3);return r[0]=e,r[1]=t,r[2]=i,r}function l(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function h(e,t,i,n){return e[0]=t,e[1]=i,e[2]=n,e}function u(e,t,i){return e[0]=t[0]+i[0],e[1]=t[1]+i[1],e[2]=t[2]+i[2],e}function d(e,t,i){return e[0]=t[0]-i[0],e[1]=t[1]-i[1],e[2]=t[2]-i[2],e}function c(e,t,i){return e[0]=t[0]*i[0],e[1]=t[1]*i[1],e[2]=t[2]*i[2],e}function f(e,t,i){return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e}function g(e,t){var i=t[0],n=t[1],r=t[2],o=i*i+n*n+r*r;return o>0&&(o=1/Math.sqrt(o)),e[0]=t[0]*o,e[1]=t[1]*o,e[2]=t[2]*o,e}function p(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function m(e,t,i){var n=t[0],r=t[1],o=t[2],s=i[0],a=i[1],l=i[2];return e[0]=r*l-o*a,e[1]=o*s-n*l,e[2]=n*a-r*s,e}function _(e,t,i,n){var r=t[0],o=t[1],s=t[2];return e[0]=r+n*(i[0]-r),e[1]=o+n*(i[1]-o),e[2]=s+n*(i[2]-s),e}function E(e,t,i){var n=t[0],r=t[1],o=t[2],s=i[3]*n+i[7]*r+i[11]*o+i[15];return s=s||1,e[0]=(i[0]*n+i[4]*r+i[8]*o+i[12])/s,e[1]=(i[1]*n+i[5]*r+i[9]*o+i[13])/s,e[2]=(i[2]*n+i[6]*r+i[10]*o+i[14])/s,e}function v(e,t,i){var n=t[0],r=t[1],o=t[2];return e[0]=n*i[0]+r*i[3]+o*i[6],e[1]=n*i[1]+r*i[4]+o*i[7],e[2]=n*i[2]+r*i[5]+o*i[8],e}function b(e,t,i){var n=i[0],r=i[1],o=i[2],s=i[3],a=t[0],l=t[1],h=t[2],u=r*h-o*l,d=o*a-n*h,c=n*l-r*a,f=r*c-o*d,g=o*u-n*c,p=n*d-r*u,m=2*s;return u*=m,d*=m,c*=m,f*=2,g*=2,p*=2,e[0]=a+u+f,e[1]=l+d+g,e[2]=h+c+p,e}function C(e,t){var i=e[0],r=e[1],o=e[2],s=t[0],a=t[1],l=t[2];return Math.abs(i-s)<=n.Ib*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(r-a)<=n.Ib*Math.max(1,Math.abs(r),Math.abs(a))&&Math.abs(o-l)<=n.Ib*Math.max(1,Math.abs(o),Math.abs(l))}var S=function(e,t){return Math.hypot(t[0]-e[0],t[1]-e[1],t[2]-e[2])},y=s;r()},98333:function(e,t,i){"use strict";i.d(t,{AK:function(){return g},Fv:function(){return f},I6:function(){return _},IH:function(){return h},JG:function(){return a},Ue:function(){return r},al:function(){return s},bA:function(){return u},d9:function(){return o},fF:function(){return m},fS:function(){return E},kE:function(){return d},t7:function(){return p},t8:function(){return l},we:function(){return c}});var n=i(49685);function r(){var e=new n.WT(4);return n.WT!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e}function o(e){var t=new n.WT(4);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function s(e,t,i,r){var o=new n.WT(4);return o[0]=e,o[1]=t,o[2]=i,o[3]=r,o}function a(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}function l(e,t,i,n,r){return e[0]=t,e[1]=i,e[2]=n,e[3]=r,e}function h(e,t,i){return e[0]=t[0]+i[0],e[1]=t[1]+i[1],e[2]=t[2]+i[2],e[3]=t[3]+i[3],e}function u(e,t,i){return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[3]=t[3]*i,e}function d(e){return Math.hypot(e[0],e[1],e[2],e[3])}function c(e){var t=e[0],i=e[1],n=e[2],r=e[3];return t*t+i*i+n*n+r*r}function f(e,t){var i=t[0],n=t[1],r=t[2],o=t[3],s=i*i+n*n+r*r+o*o;return s>0&&(s=1/Math.sqrt(s)),e[0]=i*s,e[1]=n*s,e[2]=r*s,e[3]=o*s,e}function g(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3]}function p(e,t,i,n){var r=t[0],o=t[1],s=t[2],a=t[3];return e[0]=r+n*(i[0]-r),e[1]=o+n*(i[1]-o),e[2]=s+n*(i[2]-s),e[3]=a+n*(i[3]-a),e}function m(e,t,i){var n=t[0],r=t[1],o=t[2],s=t[3];return e[0]=i[0]*n+i[4]*r+i[8]*o+i[12]*s,e[1]=i[1]*n+i[5]*r+i[9]*o+i[13]*s,e[2]=i[2]*n+i[6]*r+i[10]*o+i[14]*s,e[3]=i[3]*n+i[7]*r+i[11]*o+i[15]*s,e}function _(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]}function E(e,t){var i=e[0],r=e[1],o=e[2],s=e[3],a=t[0],l=t[1],h=t[2],u=t[3];return Math.abs(i-a)<=n.Ib*Math.max(1,Math.abs(i),Math.abs(a))&&Math.abs(r-l)<=n.Ib*Math.max(1,Math.abs(r),Math.abs(l))&&Math.abs(o-h)<=n.Ib*Math.max(1,Math.abs(o),Math.abs(h))&&Math.abs(s-u)<=n.Ib*Math.max(1,Math.abs(s),Math.abs(u))}r()},9488:function(e,t,i){"use strict";var n,r;function o(e,t=0){return e[e.length-(1+t)]}function s(e){if(0===e.length)throw Error("Invalid tail call");return[e.slice(0,e.length-1),e[e.length-1]]}function a(e,t,i=(e,t)=>e===t){if(e===t)return!0;if(!e||!t||e.length!==t.length)return!1;for(let n=0,r=e.length;n0))return e;n=e-1}}return-(i+1)}(e.length,n=>i(e[n],t))}function u(e){return e.filter(e=>!!e)}function d(e){return!Array.isArray(e)||0===e.length}function c(e){return Array.isArray(e)&&e.length>0}function f(e,t=e=>e){let i=new Set;return e.filter(e=>{let n=t(e);return!i.has(n)&&(i.add(n),!0)})}function g(e,t){let i=function(e,t){for(let i=e.length-1;i>=0;i--){let n=e[i];if(t(n))return i}return -1}(e,t);if(-1!==i)return e[i]}function p(e,t){return e.length>0?e[0]:t}function m(e,t){let i="number"==typeof t?e:0;"number"==typeof t?i=e:(i=0,t=e);let n=[];if(i<=t)for(let e=i;et;e--)n.push(e);return n}function _(e,t,i){let n=e.slice(0,t),r=e.slice(t);return n.concat(i,r)}function E(e,t){let i=e.indexOf(t);i>-1&&(e.splice(i,1),e.unshift(t))}function v(e,t){let i=e.indexOf(t);i>-1&&(e.splice(i,1),e.push(t))}function b(e,t){for(let i of t)e.push(i)}function C(e,t,i,n){let r=S(e,t),o=e.splice(r,i);return!function(e,t,i){let n=S(e,t),r=e.length,o=i.length;e.length=r+o;for(let t=r-1;t>=n;t--)e[t+o]=e[t];for(let t=0;tt(e(i),e(n))}function T(e,t){if(0===e.length)return;let i=e[0];for(let n=1;n=0&&(i=r)}return i}function R(e,t){return function(e,t){if(0===e.length)return;let i=e[0];for(let n=1;n0&&(i=r)}return i}(e,(e,i)=>-t(e,i))}i.d(t,{EB:function(){return f},Gb:function(){return o},H9:function(){return A},JH:function(){return s},LS:function(){return l},Of:function(){return c},VJ:function(){return R},W$:function(){return N},XY:function(){return d},Xh:function(){return p},Zv:function(){return _},al:function(){return v},dF:function(){return g},db:function(){return C},fS:function(){return a},jV:function(){return T},kX:function(){return u},ry:function(){return h},tT:function(){return y},vA:function(){return b},w6:function(){return m},zI:function(){return E}}),(r=n||(n={})).isLessThan=function(e){return e<0},r.isGreaterThan=function(e){return e>0},r.isNeitherLessOrGreaterThan=function(e){return 0===e},r.greaterThan=1,r.lessThan=-1,r.neitherLessOrGreaterThan=0;class A{constructor(e){this.items=e,this.firstIdx=0,this.lastIdx=this.items.length-1}get length(){return this.lastIdx-this.firstIdx+1}takeWhile(e){let t=this.firstIdx;for(;t=0&&e(this.items[t]);)t--;let i=t===this.lastIdx?null:this.items.slice(t+1,this.lastIdx+1);return this.lastIdx=t,i}peek(){if(0!==this.length)return this.items[this.firstIdx]}dequeue(){let e=this.items[this.firstIdx];return this.firstIdx++,e}takeCount(e){let t=this.items.slice(this.firstIdx,this.firstIdx+e);return this.firstIdx+=e,t}}class N{constructor(e){this.iterate=e}toArray(){let e=[];return this.iterate(t=>(e.push(t),!0)),e}filter(e){return new N(t=>this.iterate(i=>!e(i)||t(i)))}map(e){return new N(t=>this.iterate(i=>t(e(i))))}findLast(e){let t;return this.iterate(i=>(e(i)&&(t=i),!0)),t}findLastMaxBy(e){let t;let i=!0;return this.iterate(r=>((i||n.isGreaterThan(e(r,t)))&&(i=!1,t=r),!0)),t}}N.empty=new N(e=>{})},53725:function(e,t,i){"use strict";var n;i.d(t,{$:function(){return n}}),function(e){function t(e){return e&&"object"==typeof e&&"function"==typeof e[Symbol.iterator]}e.is=t;let i=Object.freeze([]);function*n(e){yield e}e.empty=function(){return i},e.single=n,e.wrap=function(e){return t(e)?e:n(e)},e.from=function(e){return e||i},e.isEmpty=function(e){return!e||!0===e[Symbol.iterator]().next().done},e.first=function(e){return e[Symbol.iterator]().next().value},e.some=function(e,t){for(let i of e)if(t(i))return!0;return!1},e.find=function(e,t){for(let i of e)if(t(i))return i},e.filter=function*(e,t){for(let i of e)t(i)&&(yield i)},e.map=function*(e,t){let i=0;for(let n of e)yield t(n,i++)},e.concat=function*(...e){for(let t of e)for(let e of t)yield e},e.reduce=function(e,t,i){let n=i;for(let i of e)n=t(n,i);return n},e.slice=function*(e,t,i=e.length){for(t<0&&(t+=e.length),i<0?i+=e.length:i>e.length&&(i=e.length);tr}]}}(n||(n={}))},91741:function(e,t,i){"use strict";i.d(t,{S:function(){return r}});class n{constructor(e){this.element=e,this.next=n.Undefined,this.prev=n.Undefined}}n.Undefined=new n(void 0);class r{constructor(){this._first=n.Undefined,this._last=n.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===n.Undefined}clear(){let e=this._first;for(;e!==n.Undefined;){let t=e.next;e.prev=n.Undefined,e.next=n.Undefined,e=t}this._first=n.Undefined,this._last=n.Undefined,this._size=0}unshift(e){return this._insert(e,!1)}push(e){return this._insert(e,!0)}_insert(e,t){let i=new n(e);if(this._first===n.Undefined)this._first=i,this._last=i;else if(t){let e=this._last;this._last=i,i.prev=e,e.next=i}else{let e=this._first;this._first=i,i.next=e,e.prev=i}this._size+=1;let r=!1;return()=>{r||(r=!0,this._remove(i))}}shift(){if(this._first!==n.Undefined){let e=this._first.element;return this._remove(this._first),e}}pop(){if(this._last!==n.Undefined){let e=this._last.element;return this._remove(this._last),e}}_remove(e){if(e.prev!==n.Undefined&&e.next!==n.Undefined){let t=e.prev;t.next=e.next,e.next.prev=t}else e.prev===n.Undefined&&e.next===n.Undefined?(this._first=n.Undefined,this._last=n.Undefined):e.next===n.Undefined?(this._last=this._last.prev,this._last.next=n.Undefined):e.prev===n.Undefined&&(this._first=this._first.next,this._first.prev=n.Undefined);this._size-=1}*[Symbol.iterator](){let e=this._first;for(;e!==n.Undefined;)yield e.element,e=e.next}}},36248:function(e,t,i){"use strict";i.d(t,{$E:function(){return a},I8:function(){return function e(t){if(!t||"object"!=typeof t||t instanceof RegExp)return t;let i=Array.isArray(t)?[]:{};return Object.entries(t).forEach(([t,n])=>{i[t]=n&&"object"==typeof n?e(n):n}),i}},IU:function(){return l},_A:function(){return r},fS:function(){return function e(t,i){let n,r;if(t===i)return!0;if(null==t||null==i||typeof t!=typeof i||"object"!=typeof t||Array.isArray(t)!==Array.isArray(i))return!1;if(Array.isArray(t)){if(t.length!==i.length)return!1;for(n=0;n{o in t?r&&((0,n.Kn)(t[o])&&(0,n.Kn)(i[o])?e(t[o],i[o],r):t[o]=i[o]):t[o]=i[o]}),t):i}},rs:function(){return s}});var n=i(98401);function r(e){if(!e||"object"!=typeof e)return e;let t=[e];for(;t.length>0;){let e=t.shift();for(let i in Object.freeze(e),e)if(o.call(e,i)){let r=e[i];"object"!=typeof r||Object.isFrozen(r)||(0,n.fU)(r)||t.push(r)}}return e}let o=Object.prototype.hasOwnProperty;function s(e,t){return function e(t,i,r){if((0,n.Jp)(t))return t;let s=i(t);if(void 0!==s)return s;if(Array.isArray(t)){let n=[];for(let o of t)n.push(e(o,i,r));return n}if((0,n.Kn)(t)){if(r.has(t))throw Error("Cannot clone recursive data-structure");r.add(t);let n={};for(let s in t)o.call(t,s)&&(n[s]=e(t[s],i,r));return r.delete(t),n}return t}(e,t,new Set)}function a(e){let t=[];for(let i of function(e){let t=[];for(;Object.prototype!==e;)t=t.concat(Object.getOwnPropertyNames(e)),e=Object.getPrototypeOf(e);return t}(e))"function"==typeof e[i]&&t.push(i);return t}function l(e,t){let i=e=>function(){let i=Array.prototype.slice.call(arguments,0);return t(e,i)},n={};for(let t of e)n[t]=i(t);return n}},1432:function(e,t,i){"use strict";let n,r;i.d(t,{$L:function(){return S},ED:function(){return E},G6:function(){return k},IJ:function(){return b},OS:function(){return L},dz:function(){return v},fn:function(){return O},gn:function(){return T},i7:function(){return x},li:function(){return p},n2:function(){return y},r:function(){return D},tY:function(){return C},tq:function(){return R},un:function(){return P},vU:function(){return M}});var o,s=i(63580),a=i(83454);let l=!1,h=!1,u=!1,d=!1,c=!1,f=!1,g=!1,p="object"==typeof self?self:"object"==typeof i.g?i.g:{};void 0!==p.vscode&&void 0!==p.vscode.process?r=p.vscode.process:void 0!==a&&(r=a);let m="string"==typeof(null===(o=null==r?void 0:r.versions)||void 0===o?void 0:o.electron),_=m&&(null==r?void 0:r.type)==="renderer";if("object"!=typeof navigator||_){if("object"==typeof r){l="win32"===r.platform,h="darwin"===r.platform,(u="linux"===r.platform)&&r.env.SNAP&&r.env.SNAP_REVISION,r.env.CI||r.env.BUILD_ARTIFACTSTAGINGDIRECTORY;let e=r.env.VSCODE_NLS_CONFIG;if(e)try{let t=JSON.parse(e);t.availableLanguages["*"],t.locale,t.osLocale,t._translationsConfigFile}catch(e){}d=!0}else console.error("Unable to resolve platform.")}else l=(n=navigator.userAgent).indexOf("Windows")>=0,h=n.indexOf("Macintosh")>=0,f=(n.indexOf("Macintosh")>=0||n.indexOf("iPad")>=0||n.indexOf("iPhone")>=0)&&!!navigator.maxTouchPoints&&navigator.maxTouchPoints>0,u=n.indexOf("Linux")>=0,g=(null==n?void 0:n.indexOf("Mobi"))>=0,c=!0,s.aj(s.NC({key:"ensureLoaderPluginIsLoaded",comment:["{Locked}"]},"_")),navigator.language;let E=l,v=h,b=u,C=d,S=c,y=c&&"function"==typeof p.importScripts,T=f,R=g,A=n,N="function"==typeof p.postMessage&&!p.importScripts,O=(()=>{if(N){let e=[];p.addEventListener("message",t=>{if(t.data&&t.data.vscodeScheduleAsyncWork)for(let i=0,n=e.length;i{let n=++t;e.push({id:n,callback:i}),p.postMessage({vscodeScheduleAsyncWork:n},"*")}}return e=>setTimeout(e)})(),L=h||f?2:l?1:3,I=!0,w=!1;function D(){if(!w){w=!0;let e=new Uint8Array(2);e[0]=1,e[1]=2;let t=new Uint16Array(e.buffer);I=513===t[0]}return I}let x=!!(A&&A.indexOf("Chrome")>=0),M=!!(A&&A.indexOf("Firefox")>=0),k=!!(!x&&A&&A.indexOf("Safari")>=0),P=!!(A&&A.indexOf("Edg/")>=0);A&&A.indexOf("Android")},98401:function(e,t,i){"use strict";function n(e){return"string"==typeof e}function r(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}function o(e){let t=Object.getPrototypeOf(Uint8Array);return"object"==typeof e&&e instanceof t}function s(e){return"number"==typeof e&&!isNaN(e)}function a(e){return!!e&&"function"==typeof e[Symbol.iterator]}function l(e){return!0===e||!1===e}function h(e){return void 0===e}function u(e){return!d(e)}function d(e){return h(e)||null===e}function c(e,t){if(!e)throw Error(t?`Unexpected type, expected '${t}'`:"Unexpected type")}function f(e){if(d(e))throw Error("Assertion Failed: argument is undefined or null");return e}function g(e){return"function"==typeof e}function p(e,t){let i=Math.min(e.length,t.length);for(let r=0;rs.maxLen){let n=t-s.maxLen/2;return n<0?n=0:o+=n,r=r.substring(n,t+s.maxLen/2),e(t,i,r,o,s)}let a=Date.now(),h=t-1-o,u=-1,d=null;for(let e=1;!(Date.now()-a>=s.timeBudget);e++){let t=h-s.windowSize*e;i.lastIndex=Math.max(0,t);let n=function(e,t,i,n){let r;for(;r=e.exec(t);){let t=r.index||0;if(t<=i&&e.lastIndex>=i)return r;if(n>0&&t>n)break}return null}(i,r,h,u);if(!n&&d||(d=n,t<=0))break;u=t}if(d){let e={word:d[0],startColumn:o+1+d.index,endColumn:o+1+d.index+d[0].length};return i.lastIndex=0,e}return null}},vu:function(){return o}});var n=i(53725),r=i(91741);let o="`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?",s=function(e=""){let t="(-?\\d*\\.\\d\\w*)|([^";for(let i of o)e.indexOf(i)>=0||(t+="\\"+i);return RegExp(t+="\\s]+)","g")}();function a(e){let t=s;if(e&&e instanceof RegExp){if(e.global)t=e;else{let i="g";e.ignoreCase&&(i+="i"),e.multiline&&(i+="m"),e.unicode&&(i+="u"),t=new RegExp(e.source,i)}}return t.lastIndex=0,t}let l=new r.S;l.unshift({maxLen:1e3,windowSize:15,timeBudget:150})},77119:function(e,t,i){"use strict";let n,r,o,s,a,l,h,u,d,c,f,g,p,m,_,E,v,b;i.r(t),i.d(t,{CancellationTokenSource:function(){return k1},Emitter:function(){return k2},KeyCode:function(){return k5},KeyMod:function(){return k4},MarkerSeverity:function(){return k7},MarkerTag:function(){return Pe},Position:function(){return k3},Range:function(){return k6},Selection:function(){return k9},SelectionDirection:function(){return k8},Token:function(){return Pi},Uri:function(){return Pt},editor:function(){return Pn},languages:function(){return Pr}});var C,S,y,T,R,A,N,O,L,I,w,D,x,M,k,P,F,B,U,H,V,W,G,j,z,K,Y,$,q,X,Z,Q,J,ee,et,ei,en,er,eo,es,ea,el,eh,eu,ed,ec,ef,eg,ep,em,e_,eE,ev,eb,eC,eS,ey,eT,eR,eA,eN,eO,eL,eI,ew,eD,ex,eM,ek,eP,eF,eB,eU,eH,eV,eW,eG,ej,ez,eK,eY,e$,eq,eX,eZ,eQ,eJ,e0,e1,e2,e5,e4,e3,e6,e9,e8,e7,te,tt,ti,tn,tr,to,ts,ta,tl,th,tu,td,tc,tf,tg,tp,tm,t_,tE,tv,tb,tC,tS,ty,tT,tR,tA,tN,tO,tL,tI,tw,tD,tx,tM,tk,tP,tF,tB,tU,tH,tV,tW,tG,tj,tz,tK,tY,t$,tq,tX,tZ,tQ,tJ,t0,t1,t2,t5,t4,t3,t6,t9,t8,t7,ie,it,ii,ir,io,is,ia,il,ih,iu,id,ic,ig,ip,im,i_,iE,iv,ib,iC,iS,iy,iT,iR,iA,iN,iO,iL,iI,iw,iD,ix,iM,ik,iP,iF,iB,iU,iH,iV,iW,iG,ij,iz,iK,iY,i$,iq,iX,iZ,iQ,iJ=i(64141);let i0=new class{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(e){setTimeout(()=>{if(e.stack){if(ne.isErrorNoTelemetry(e))throw new ne(e.message+"\n\n"+e.stack);throw Error(e.message+"\n\n"+e.stack)}throw e},0)}}emit(e){this.listeners.forEach(t=>{t(e)})}onUnexpectedError(e){this.unexpectedErrorHandler(e),this.emit(e)}onUnexpectedExternalError(e){this.unexpectedErrorHandler(e)}};function i1(e){i3(e)||i0.onUnexpectedError(e)}function i2(e){i3(e)||i0.onUnexpectedExternalError(e)}function i5(e){if(e instanceof Error){let{name:t,message:i}=e,n=e.stacktrace||e.stack;return{$isError:!0,name:t,message:i,stack:n,noTelemetry:ne.isErrorNoTelemetry(e)}}return e}let i4="Canceled";function i3(e){return e instanceof i6||e instanceof Error&&e.name===i4&&e.message===i4}class i6 extends Error{constructor(){super(i4),this.name=this.message}}function i9(e){return e?Error(`Illegal argument: ${e}`):Error("Illegal argument")}function i8(e){return e?Error(`Illegal state: ${e}`):Error("Illegal state")}class i7 extends Error{constructor(e){super("NotSupported"),e&&(this.message=e)}}class ne extends Error{constructor(e){super(e),this.name="CodeExpectedError"}static fromError(e){if(e instanceof ne)return e;let t=new ne;return t.message=e.message,t.stack=e.stack,t}static isErrorNoTelemetry(e){return"CodeExpectedError"===e.name}}class nt extends Error{constructor(e){super(e||"An unexpected bug occurred."),Object.setPrototypeOf(this,nt.prototype)}}function ni(e){let t;let i=this,n=!1;return function(){return n?t:(n=!0,t=e.apply(i,arguments))}}var nn=i(53725);function nr(e){return e}function no(e){}function ns(e,t){}function na(e){return e}function nl(e){if(nn.$.is(e)){let t=[];for(let i of e)if(i)try{i.dispose()}catch(e){t.push(e)}if(1===t.length)throw t[0];if(t.length>1)throw AggregateError(t,"Encountered errors while disposing of store");return Array.isArray(e)?[]:e}if(e)return e.dispose(),e}function nh(...e){let t=nu(()=>nl(e));return t}function nu(e){let t={dispose:ni(()=>{e()})};return t}class nd{constructor(){var e;this._toDispose=new Set,this._isDisposed=!1,e=this}dispose(){this._isDisposed||(this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(0!==this._toDispose.size)try{nl(this._toDispose)}finally{this._toDispose.clear()}}add(e){if(!e)return e;if(e===this)throw Error("Cannot register a disposable on itself!");return this._isDisposed?nd.DISABLE_DISPOSED_WARNING||console.warn(Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack):this._toDispose.add(e),e}}nd.DISABLE_DISPOSED_WARNING=!1;class nc{constructor(){var e;this._store=new nd,e=this,this._store}dispose(){this._store.dispose()}_register(e){if(e===this)throw Error("Cannot register a disposable on itself!");return this._store.add(e)}}nc.None=Object.freeze({dispose(){}});class nf{constructor(){var e;this._isDisposed=!1,e=this}get value(){return this._isDisposed?void 0:this._value}set value(e){var t;this._isDisposed||e===this._value||(null===(t=this._value)||void 0===t||t.dispose(),this._value=e)}clear(){this.value=void 0}dispose(){var e;this._isDisposed=!0,null===(e=this._value)||void 0===e||e.dispose(),this._value=void 0}}class ng{constructor(e){this.object=e}dispose(){}}class np{constructor(){var e;this._store=new Map,this._isDisposed=!1,e=this}dispose(){this._isDisposed=!0,this.clearAndDisposeAll()}clearAndDisposeAll(){if(this._store.size)try{nl(this._store.values())}finally{this._store.clear()}}get(e){return this._store.get(e)}set(e,t,i=!1){var n;this._isDisposed&&console.warn(Error("Trying to add a disposable to a DisposableMap that has already been disposed of. The added object will be leaked!").stack),i||null===(n=this._store.get(e))||void 0===n||n.dispose(),this._store.set(e,t)}deleteAndDispose(e){var t;null===(t=this._store.get(e))||void 0===t||t.dispose(),this._store.delete(e)}[Symbol.iterator](){return this._store[Symbol.iterator]()}}var nm=i(91741);let n_=globalThis.performance&&"function"==typeof globalThis.performance.now;class nE{static create(e){return new nE(e)}constructor(e){this._now=n_&&!1===e?Date.now:globalThis.performance.now.bind(globalThis.performance),this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}elapsed(){return -1!==this._stopTime?this._stopTime-this._startTime:this._now()-this._startTime}}!function(e){function t(e){return(t,i=null,n)=>{let r,o=!1;return r=e(e=>o?void 0:(r?r.dispose():o=!0,t.call(i,e)),null,n),o&&r.dispose(),r}}function i(e,t,i){return s((i,n=null,r)=>e(e=>i.call(n,t(e)),null,r),i)}function n(e,t,i){return s((i,n=null,r)=>e(e=>{t(e),i.call(n,e)},null,r),i)}function r(e,t,i){return s((i,n=null,r)=>e(e=>t(e)&&i.call(n,e),null,r),i)}function o(e,t,n,r){let o=n;return i(e,e=>o=t(o,e),r)}function s(e,t){let i;let n=new ny({onWillAddFirstListener(){i=e(n.fire,n)},onDidRemoveLastListener(){null==i||i.dispose()}});return null==t||t.add(n),n.event}function a(e,t,i=100,n=!1,r=!1,o,s){let a,l,h,u;let d=0,c=new ny({leakWarningThreshold:o,onWillAddFirstListener(){a=e(e=>{d++,h=t(h,e),n&&!u&&(c.fire(h),h=void 0),l=()=>{let e=h;h=void 0,u=void 0,(!n||d>1)&&c.fire(e),d=0},"number"==typeof i?(clearTimeout(u),u=setTimeout(l,i)):void 0===u&&(u=0,queueMicrotask(l))})},onWillRemoveListener(){r&&d>0&&(null==l||l())},onDidRemoveLastListener(){l=void 0,a.dispose()}});return null==s||s.add(c),c.event}function l(e,t=(e,t)=>e===t,i){let n,o=!0;return r(e,e=>{let i=o||!t(e,n);return o=!1,n=e,i},i)}e.None=()=>nc.None,e.defer=function(e,t){return a(e,()=>void 0,0,void 0,!0,void 0,t)},e.once=t,e.map=i,e.forEach=n,e.filter=r,e.signal=function(e){return e},e.any=function(...e){return(t,i=null,n)=>nh(...e.map(e=>e(e=>t.call(i,e),null,n)))},e.reduce=o,e.debounce=a,e.accumulate=function(t,i=0,n){return e.debounce(t,(e,t)=>e?(e.push(t),e):[t],i,void 0,!0,void 0,n)},e.latch=l,e.split=function(t,i,n){return[e.filter(t,i,n),e.filter(t,e=>!i(e),n)]},e.buffer=function(e,t=!1,i=[]){let n=i.slice(),r=e(e=>{n?n.push(e):s.fire(e)}),o=()=>{null==n||n.forEach(e=>s.fire(e)),n=null},s=new ny({onWillAddFirstListener(){r||(r=e(e=>s.fire(e)))},onDidAddFirstListener(){n&&(t?setTimeout(o):o())},onDidRemoveLastListener(){r&&r.dispose(),r=null}});return s.event};class h{constructor(e){this.event=e,this.disposables=new nd}map(e){return new h(i(this.event,e,this.disposables))}forEach(e){return new h(n(this.event,e,this.disposables))}filter(e){return new h(r(this.event,e,this.disposables))}reduce(e,t){return new h(o(this.event,e,t,this.disposables))}latch(){return new h(l(this.event,void 0,this.disposables))}debounce(e,t=100,i=!1,n=!1,r){return new h(a(this.event,e,t,i,n,r,this.disposables))}on(e,t,i){return this.event(e,t,i)}once(e,i,n){return t(this.event)(e,i,n)}dispose(){this.disposables.dispose()}}e.chain=function(e){return new h(e)},e.fromNodeEventEmitter=function(e,t,i=e=>e){let n=(...e)=>r.fire(i(...e)),r=new ny({onWillAddFirstListener:()=>e.on(t,n),onDidRemoveLastListener:()=>e.removeListener(t,n)});return r.event},e.fromDOMEventEmitter=function(e,t,i=e=>e){let n=(...e)=>r.fire(i(...e)),r=new ny({onWillAddFirstListener:()=>e.addEventListener(t,n),onDidRemoveLastListener:()=>e.removeEventListener(t,n)});return r.event},e.toPromise=function(e){return new Promise(i=>t(e)(i))},e.runAndSubscribe=function(e,t){return t(void 0),e(e=>t(e))},e.runAndSubscribeWithStore=function(e,t){let i=null;function n(e){null==i||i.dispose(),t(e,i=new nd)}n(void 0);let r=e(e=>n(e));return nu(()=>{r.dispose(),null==i||i.dispose()})};class u{constructor(e,t){this._observable=e,this._counter=0,this._hasChanged=!1;this.emitter=new ny({onWillAddFirstListener:()=>{e.addObserver(this)},onDidRemoveLastListener:()=>{e.removeObserver(this)}}),t&&t.add(this.emitter)}beginUpdate(e){this._counter++}handlePossibleChange(e){}handleChange(e,t){this._hasChanged=!0}endUpdate(e){this._counter--,0===this._counter&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}e.fromObservable=function(e,t){let i=new u(e,t);return i.emitter.event},e.fromObservableLight=function(e){return t=>{let i=0,n=!1,r={beginUpdate(){i++},endUpdate(){0==--i&&(e.reportChanges(),n&&(n=!1,t()))},handlePossibleChange(){},handleChange(){n=!0}};return e.addObserver(r),e.reportChanges(),{dispose(){e.removeObserver(r)}}}}}(e8||(e8={}));class nv{constructor(e){this.listenerCount=0,this.invocationCount=0,this.elapsedOverall=0,this.durations=[],this.name=`${e}_${nv._idPool++}`,nv.all.add(this)}start(e){this._stopWatch=new nE,this.listenerCount=e}stop(){if(this._stopWatch){let e=this._stopWatch.elapsed();this.durations.push(e),this.elapsedOverall+=e,this.invocationCount+=1,this._stopWatch=void 0}}}nv.all=new Set,nv._idPool=0;class nb{constructor(e,t=Math.random().toString(18).slice(2,5)){this.threshold=e,this.name=t,this._warnCountdown=0}dispose(){var e;null===(e=this._stacks)||void 0===e||e.clear()}check(e,t){let i=this.threshold;if(i<=0||t{let t=this._stacks.get(e.value)||0;this._stacks.set(e.value,t-1)}}}class nC{static create(){var e;return new nC(null!==(e=Error().stack)&&void 0!==e?e:"")}constructor(e){this.value=e}print(){console.warn(this.value.split("\n").slice(2).join("\n"))}}class nS{constructor(e){this.value=e}}class ny{constructor(e){var t,i,n,r,o;this._size=0,this._options=e,this._leakageMon=(null===(t=this._options)||void 0===t?void 0:t.leakWarningThreshold)?new nb(null!==(n=null===(i=this._options)||void 0===i?void 0:i.leakWarningThreshold)&&void 0!==n?n:-1):void 0,this._perfMon=(null===(r=this._options)||void 0===r?void 0:r._profName)?new nv(this._options._profName):void 0,this._deliveryQueue=null===(o=this._options)||void 0===o?void 0:o.deliveryQueue}dispose(){var e,t,i,n;this._disposed||(this._disposed=!0,(null===(e=this._deliveryQueue)||void 0===e?void 0:e.current)===this&&this._deliveryQueue.reset(),this._listeners&&(this._listeners=void 0,this._size=0),null===(i=null===(t=this._options)||void 0===t?void 0:t.onDidRemoveLastListener)||void 0===i||i.call(t),null===(n=this._leakageMon)||void 0===n||n.dispose())}get event(){var e;return null!==(e=this._event)&&void 0!==e||(this._event=(e,t,i)=>{var n,r,o,s,a;let l;if(this._leakageMon&&this._size>3*this._leakageMon.threshold)return console.warn(`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far`),nc.None;if(this._disposed)return nc.None;t&&(e=e.bind(t));let h=new nS(e);this._leakageMon&&this._size>=Math.ceil(.2*this._leakageMon.threshold)&&(h.stack=nC.create(),l=this._leakageMon.check(h.stack,this._size+1)),this._listeners?this._listeners instanceof nS?(null!==(a=this._deliveryQueue)&&void 0!==a||(this._deliveryQueue=new nR),this._listeners=[this._listeners,h]):this._listeners.push(h):(null===(r=null===(n=this._options)||void 0===n?void 0:n.onWillAddFirstListener)||void 0===r||r.call(n,this),this._listeners=h,null===(s=null===(o=this._options)||void 0===o?void 0:o.onDidAddFirstListener)||void 0===s||s.call(o,this)),this._size++;let u=nu(()=>{null==l||l(),this._removeListener(h)});return i instanceof nd?i.add(u):Array.isArray(i)&&i.push(u),u}),this._event}_removeListener(e){var t,i,n,r;if(null===(i=null===(t=this._options)||void 0===t?void 0:t.onWillRemoveListener)||void 0===i||i.call(t,this),!this._listeners)return;if(1===this._size){this._listeners=void 0,null===(r=null===(n=this._options)||void 0===n?void 0:n.onDidRemoveLastListener)||void 0===r||r.call(n,this),this._size=0;return}let o=this._listeners,s=o.indexOf(e);if(-1===s)throw console.log("disposed?",this._disposed),console.log("size?",this._size),console.log("arr?",JSON.stringify(this._listeners)),Error("Attempted to dispose unknown listener");this._size--,o[s]=void 0;let a=this._deliveryQueue.current===this;if(2*this._size<=o.length){let e=0;for(let t=0;t0}}let nT=()=>new nR;class nR{constructor(){this.i=-1,this.end=0}enqueue(e,t,i){this.i=0,this.end=i,this.current=e,this.value=t}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}class nA extends ny{constructor(e){super(e),this._isPaused=0,this._eventQueue=new nm.S,this._mergeFn=null==e?void 0:e.merge}pause(){this._isPaused++}resume(){if(0!==this._isPaused&&0==--this._isPaused){if(this._mergeFn){if(this._eventQueue.size>0){let e=Array.from(this._eventQueue);this._eventQueue.clear(),super.fire(this._mergeFn(e))}}else for(;!this._isPaused&&0!==this._eventQueue.size;)super.fire(this._eventQueue.shift())}}fire(e){this._size&&(0!==this._isPaused?this._eventQueue.push(e):super.fire(e))}}class nN extends nA{constructor(e){var t;super(e),this._delay=null!==(t=e.delay)&&void 0!==t?t:100}fire(e){this._handle||(this.pause(),this._handle=setTimeout(()=>{this._handle=void 0,this.resume()},this._delay)),super.fire(e)}}class nO extends ny{constructor(e){super(e),this._queuedEvents=[],this._mergeFn=null==e?void 0:e.merge}fire(e){this.hasListeners()&&(this._queuedEvents.push(e),1===this._queuedEvents.length&&queueMicrotask(()=>{this._mergeFn?super.fire(this._mergeFn(this._queuedEvents)):this._queuedEvents.forEach(e=>super.fire(e)),this._queuedEvents=[]}))}}class nL{constructor(){this.buffers=[]}wrapEvent(e){return(t,i,n)=>e(e=>{let n=this.buffers[this.buffers.length-1];n?n.push(()=>t.call(i,e)):t.call(i,e)},void 0,n)}bufferEvents(e){let t=[];this.buffers.push(t);let i=e();return this.buffers.pop(),t.forEach(e=>e()),i}}class nI{constructor(){this.listening=!1,this.inputEvent=e8.None,this.inputEventListener=nc.None,this.emitter=new ny({onDidAddFirstListener:()=>{this.listening=!0,this.inputEventListener=this.inputEvent(this.emitter.fire,this.emitter)},onDidRemoveLastListener:()=>{this.listening=!1,this.inputEventListener.dispose()}}),this.event=this.emitter.event}set input(e){this.inputEvent=e,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=e(this.emitter.fire,this.emitter))}dispose(){this.inputEventListener.dispose(),this.emitter.dispose()}}let nw=Object.freeze(function(e,t){let i=setTimeout(e.bind(t),0);return{dispose(){clearTimeout(i)}}});(S=e7||(e7={})).isCancellationToken=function(e){return e===S.None||e===S.Cancelled||e instanceof nD||!!e&&"object"==typeof e&&"boolean"==typeof e.isCancellationRequested&&"function"==typeof e.onCancellationRequested},S.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:e8.None}),S.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:nw});class nD{constructor(){this._isCancelled=!1,this._emitter=null}cancel(){!this._isCancelled&&(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?nw:(this._emitter||(this._emitter=new ny),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=null)}}class nx{constructor(e){this._token=void 0,this._parentListener=void 0,this._parentListener=e&&e.onCancellationRequested(this.cancel,this)}get token(){return this._token||(this._token=new nD),this._token}cancel(){this._token?this._token instanceof nD&&this._token.cancel():this._token=e7.Cancelled}dispose(e=!1){var t;e&&this.cancel(),null===(t=this._parentListener)||void 0===t||t.dispose(),this._token?this._token instanceof nD&&this._token.dispose():this._token=e7.None}}class nM{constructor(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(null)}define(e,t){this._keyCodeToStr[e]=t,this._strToKeyCode[t.toLowerCase()]=e}keyCodeToStr(e){return this._keyCodeToStr[e]}strToKeyCode(e){return this._strToKeyCode[e.toLowerCase()]||0}}let nk=new nM,nP=new nM,nF=new nM,nB=Array(230),nU={},nH=[],nV=Object.create(null),nW=Object.create(null),nG=[],nj=[];for(let e=0;e<=193;e++)nG[e]=-1;for(let e=0;e<=132;e++)nj[e]=-1;!function(){let e=[],t=[];for(let i of[[1,0,"None",0,"unknown",0,"VK_UNKNOWN","",""],[1,1,"Hyper",0,"",0,"","",""],[1,2,"Super",0,"",0,"","",""],[1,3,"Fn",0,"",0,"","",""],[1,4,"FnLock",0,"",0,"","",""],[1,5,"Suspend",0,"",0,"","",""],[1,6,"Resume",0,"",0,"","",""],[1,7,"Turbo",0,"",0,"","",""],[1,8,"Sleep",0,"",0,"VK_SLEEP","",""],[1,9,"WakeUp",0,"",0,"","",""],[0,10,"KeyA",31,"A",65,"VK_A","",""],[0,11,"KeyB",32,"B",66,"VK_B","",""],[0,12,"KeyC",33,"C",67,"VK_C","",""],[0,13,"KeyD",34,"D",68,"VK_D","",""],[0,14,"KeyE",35,"E",69,"VK_E","",""],[0,15,"KeyF",36,"F",70,"VK_F","",""],[0,16,"KeyG",37,"G",71,"VK_G","",""],[0,17,"KeyH",38,"H",72,"VK_H","",""],[0,18,"KeyI",39,"I",73,"VK_I","",""],[0,19,"KeyJ",40,"J",74,"VK_J","",""],[0,20,"KeyK",41,"K",75,"VK_K","",""],[0,21,"KeyL",42,"L",76,"VK_L","",""],[0,22,"KeyM",43,"M",77,"VK_M","",""],[0,23,"KeyN",44,"N",78,"VK_N","",""],[0,24,"KeyO",45,"O",79,"VK_O","",""],[0,25,"KeyP",46,"P",80,"VK_P","",""],[0,26,"KeyQ",47,"Q",81,"VK_Q","",""],[0,27,"KeyR",48,"R",82,"VK_R","",""],[0,28,"KeyS",49,"S",83,"VK_S","",""],[0,29,"KeyT",50,"T",84,"VK_T","",""],[0,30,"KeyU",51,"U",85,"VK_U","",""],[0,31,"KeyV",52,"V",86,"VK_V","",""],[0,32,"KeyW",53,"W",87,"VK_W","",""],[0,33,"KeyX",54,"X",88,"VK_X","",""],[0,34,"KeyY",55,"Y",89,"VK_Y","",""],[0,35,"KeyZ",56,"Z",90,"VK_Z","",""],[0,36,"Digit1",22,"1",49,"VK_1","",""],[0,37,"Digit2",23,"2",50,"VK_2","",""],[0,38,"Digit3",24,"3",51,"VK_3","",""],[0,39,"Digit4",25,"4",52,"VK_4","",""],[0,40,"Digit5",26,"5",53,"VK_5","",""],[0,41,"Digit6",27,"6",54,"VK_6","",""],[0,42,"Digit7",28,"7",55,"VK_7","",""],[0,43,"Digit8",29,"8",56,"VK_8","",""],[0,44,"Digit9",30,"9",57,"VK_9","",""],[0,45,"Digit0",21,"0",48,"VK_0","",""],[1,46,"Enter",3,"Enter",13,"VK_RETURN","",""],[1,47,"Escape",9,"Escape",27,"VK_ESCAPE","",""],[1,48,"Backspace",1,"Backspace",8,"VK_BACK","",""],[1,49,"Tab",2,"Tab",9,"VK_TAB","",""],[1,50,"Space",10,"Space",32,"VK_SPACE","",""],[0,51,"Minus",88,"-",189,"VK_OEM_MINUS","-","OEM_MINUS"],[0,52,"Equal",86,"=",187,"VK_OEM_PLUS","=","OEM_PLUS"],[0,53,"BracketLeft",92,"[",219,"VK_OEM_4","[","OEM_4"],[0,54,"BracketRight",94,"]",221,"VK_OEM_6","]","OEM_6"],[0,55,"Backslash",93,"\\",220,"VK_OEM_5","\\","OEM_5"],[0,56,"IntlHash",0,"",0,"","",""],[0,57,"Semicolon",85,";",186,"VK_OEM_1",";","OEM_1"],[0,58,"Quote",95,"'",222,"VK_OEM_7","'","OEM_7"],[0,59,"Backquote",91,"`",192,"VK_OEM_3","`","OEM_3"],[0,60,"Comma",87,",",188,"VK_OEM_COMMA",",","OEM_COMMA"],[0,61,"Period",89,".",190,"VK_OEM_PERIOD",".","OEM_PERIOD"],[0,62,"Slash",90,"/",191,"VK_OEM_2","/","OEM_2"],[1,63,"CapsLock",8,"CapsLock",20,"VK_CAPITAL","",""],[1,64,"F1",59,"F1",112,"VK_F1","",""],[1,65,"F2",60,"F2",113,"VK_F2","",""],[1,66,"F3",61,"F3",114,"VK_F3","",""],[1,67,"F4",62,"F4",115,"VK_F4","",""],[1,68,"F5",63,"F5",116,"VK_F5","",""],[1,69,"F6",64,"F6",117,"VK_F6","",""],[1,70,"F7",65,"F7",118,"VK_F7","",""],[1,71,"F8",66,"F8",119,"VK_F8","",""],[1,72,"F9",67,"F9",120,"VK_F9","",""],[1,73,"F10",68,"F10",121,"VK_F10","",""],[1,74,"F11",69,"F11",122,"VK_F11","",""],[1,75,"F12",70,"F12",123,"VK_F12","",""],[1,76,"PrintScreen",0,"",0,"","",""],[1,77,"ScrollLock",84,"ScrollLock",145,"VK_SCROLL","",""],[1,78,"Pause",7,"PauseBreak",19,"VK_PAUSE","",""],[1,79,"Insert",19,"Insert",45,"VK_INSERT","",""],[1,80,"Home",14,"Home",36,"VK_HOME","",""],[1,81,"PageUp",11,"PageUp",33,"VK_PRIOR","",""],[1,82,"Delete",20,"Delete",46,"VK_DELETE","",""],[1,83,"End",13,"End",35,"VK_END","",""],[1,84,"PageDown",12,"PageDown",34,"VK_NEXT","",""],[1,85,"ArrowRight",17,"RightArrow",39,"VK_RIGHT","Right",""],[1,86,"ArrowLeft",15,"LeftArrow",37,"VK_LEFT","Left",""],[1,87,"ArrowDown",18,"DownArrow",40,"VK_DOWN","Down",""],[1,88,"ArrowUp",16,"UpArrow",38,"VK_UP","Up",""],[1,89,"NumLock",83,"NumLock",144,"VK_NUMLOCK","",""],[1,90,"NumpadDivide",113,"NumPad_Divide",111,"VK_DIVIDE","",""],[1,91,"NumpadMultiply",108,"NumPad_Multiply",106,"VK_MULTIPLY","",""],[1,92,"NumpadSubtract",111,"NumPad_Subtract",109,"VK_SUBTRACT","",""],[1,93,"NumpadAdd",109,"NumPad_Add",107,"VK_ADD","",""],[1,94,"NumpadEnter",3,"",0,"","",""],[1,95,"Numpad1",99,"NumPad1",97,"VK_NUMPAD1","",""],[1,96,"Numpad2",100,"NumPad2",98,"VK_NUMPAD2","",""],[1,97,"Numpad3",101,"NumPad3",99,"VK_NUMPAD3","",""],[1,98,"Numpad4",102,"NumPad4",100,"VK_NUMPAD4","",""],[1,99,"Numpad5",103,"NumPad5",101,"VK_NUMPAD5","",""],[1,100,"Numpad6",104,"NumPad6",102,"VK_NUMPAD6","",""],[1,101,"Numpad7",105,"NumPad7",103,"VK_NUMPAD7","",""],[1,102,"Numpad8",106,"NumPad8",104,"VK_NUMPAD8","",""],[1,103,"Numpad9",107,"NumPad9",105,"VK_NUMPAD9","",""],[1,104,"Numpad0",98,"NumPad0",96,"VK_NUMPAD0","",""],[1,105,"NumpadDecimal",112,"NumPad_Decimal",110,"VK_DECIMAL","",""],[0,106,"IntlBackslash",97,"OEM_102",226,"VK_OEM_102","",""],[1,107,"ContextMenu",58,"ContextMenu",93,"","",""],[1,108,"Power",0,"",0,"","",""],[1,109,"NumpadEqual",0,"",0,"","",""],[1,110,"F13",71,"F13",124,"VK_F13","",""],[1,111,"F14",72,"F14",125,"VK_F14","",""],[1,112,"F15",73,"F15",126,"VK_F15","",""],[1,113,"F16",74,"F16",127,"VK_F16","",""],[1,114,"F17",75,"F17",128,"VK_F17","",""],[1,115,"F18",76,"F18",129,"VK_F18","",""],[1,116,"F19",77,"F19",130,"VK_F19","",""],[1,117,"F20",78,"F20",131,"VK_F20","",""],[1,118,"F21",79,"F21",132,"VK_F21","",""],[1,119,"F22",80,"F22",133,"VK_F22","",""],[1,120,"F23",81,"F23",134,"VK_F23","",""],[1,121,"F24",82,"F24",135,"VK_F24","",""],[1,122,"Open",0,"",0,"","",""],[1,123,"Help",0,"",0,"","",""],[1,124,"Select",0,"",0,"","",""],[1,125,"Again",0,"",0,"","",""],[1,126,"Undo",0,"",0,"","",""],[1,127,"Cut",0,"",0,"","",""],[1,128,"Copy",0,"",0,"","",""],[1,129,"Paste",0,"",0,"","",""],[1,130,"Find",0,"",0,"","",""],[1,131,"AudioVolumeMute",117,"AudioVolumeMute",173,"VK_VOLUME_MUTE","",""],[1,132,"AudioVolumeUp",118,"AudioVolumeUp",175,"VK_VOLUME_UP","",""],[1,133,"AudioVolumeDown",119,"AudioVolumeDown",174,"VK_VOLUME_DOWN","",""],[1,134,"NumpadComma",110,"NumPad_Separator",108,"VK_SEPARATOR","",""],[0,135,"IntlRo",115,"ABNT_C1",193,"VK_ABNT_C1","",""],[1,136,"KanaMode",0,"",0,"","",""],[0,137,"IntlYen",0,"",0,"","",""],[1,138,"Convert",0,"",0,"","",""],[1,139,"NonConvert",0,"",0,"","",""],[1,140,"Lang1",0,"",0,"","",""],[1,141,"Lang2",0,"",0,"","",""],[1,142,"Lang3",0,"",0,"","",""],[1,143,"Lang4",0,"",0,"","",""],[1,144,"Lang5",0,"",0,"","",""],[1,145,"Abort",0,"",0,"","",""],[1,146,"Props",0,"",0,"","",""],[1,147,"NumpadParenLeft",0,"",0,"","",""],[1,148,"NumpadParenRight",0,"",0,"","",""],[1,149,"NumpadBackspace",0,"",0,"","",""],[1,150,"NumpadMemoryStore",0,"",0,"","",""],[1,151,"NumpadMemoryRecall",0,"",0,"","",""],[1,152,"NumpadMemoryClear",0,"",0,"","",""],[1,153,"NumpadMemoryAdd",0,"",0,"","",""],[1,154,"NumpadMemorySubtract",0,"",0,"","",""],[1,155,"NumpadClear",131,"Clear",12,"VK_CLEAR","",""],[1,156,"NumpadClearEntry",0,"",0,"","",""],[1,0,"",5,"Ctrl",17,"VK_CONTROL","",""],[1,0,"",4,"Shift",16,"VK_SHIFT","",""],[1,0,"",6,"Alt",18,"VK_MENU","",""],[1,0,"",57,"Meta",91,"VK_COMMAND","",""],[1,157,"ControlLeft",5,"",0,"VK_LCONTROL","",""],[1,158,"ShiftLeft",4,"",0,"VK_LSHIFT","",""],[1,159,"AltLeft",6,"",0,"VK_LMENU","",""],[1,160,"MetaLeft",57,"",0,"VK_LWIN","",""],[1,161,"ControlRight",5,"",0,"VK_RCONTROL","",""],[1,162,"ShiftRight",4,"",0,"VK_RSHIFT","",""],[1,163,"AltRight",6,"",0,"VK_RMENU","",""],[1,164,"MetaRight",57,"",0,"VK_RWIN","",""],[1,165,"BrightnessUp",0,"",0,"","",""],[1,166,"BrightnessDown",0,"",0,"","",""],[1,167,"MediaPlay",0,"",0,"","",""],[1,168,"MediaRecord",0,"",0,"","",""],[1,169,"MediaFastForward",0,"",0,"","",""],[1,170,"MediaRewind",0,"",0,"","",""],[1,171,"MediaTrackNext",124,"MediaTrackNext",176,"VK_MEDIA_NEXT_TRACK","",""],[1,172,"MediaTrackPrevious",125,"MediaTrackPrevious",177,"VK_MEDIA_PREV_TRACK","",""],[1,173,"MediaStop",126,"MediaStop",178,"VK_MEDIA_STOP","",""],[1,174,"Eject",0,"",0,"","",""],[1,175,"MediaPlayPause",127,"MediaPlayPause",179,"VK_MEDIA_PLAY_PAUSE","",""],[1,176,"MediaSelect",128,"LaunchMediaPlayer",181,"VK_MEDIA_LAUNCH_MEDIA_SELECT","",""],[1,177,"LaunchMail",129,"LaunchMail",180,"VK_MEDIA_LAUNCH_MAIL","",""],[1,178,"LaunchApp2",130,"LaunchApp2",183,"VK_MEDIA_LAUNCH_APP2","",""],[1,179,"LaunchApp1",0,"",0,"VK_MEDIA_LAUNCH_APP1","",""],[1,180,"SelectTask",0,"",0,"","",""],[1,181,"LaunchScreenSaver",0,"",0,"","",""],[1,182,"BrowserSearch",120,"BrowserSearch",170,"VK_BROWSER_SEARCH","",""],[1,183,"BrowserHome",121,"BrowserHome",172,"VK_BROWSER_HOME","",""],[1,184,"BrowserBack",122,"BrowserBack",166,"VK_BROWSER_BACK","",""],[1,185,"BrowserForward",123,"BrowserForward",167,"VK_BROWSER_FORWARD","",""],[1,186,"BrowserStop",0,"",0,"VK_BROWSER_STOP","",""],[1,187,"BrowserRefresh",0,"",0,"VK_BROWSER_REFRESH","",""],[1,188,"BrowserFavorites",0,"",0,"VK_BROWSER_FAVORITES","",""],[1,189,"ZoomToggle",0,"",0,"","",""],[1,190,"MailReply",0,"",0,"","",""],[1,191,"MailForward",0,"",0,"","",""],[1,192,"MailSend",0,"",0,"","",""],[1,0,"",114,"KeyInComposition",229,"","",""],[1,0,"",116,"ABNT_C2",194,"VK_ABNT_C2","",""],[1,0,"",96,"OEM_8",223,"VK_OEM_8","",""],[1,0,"",0,"",0,"VK_KANA","",""],[1,0,"",0,"",0,"VK_HANGUL","",""],[1,0,"",0,"",0,"VK_JUNJA","",""],[1,0,"",0,"",0,"VK_FINAL","",""],[1,0,"",0,"",0,"VK_HANJA","",""],[1,0,"",0,"",0,"VK_KANJI","",""],[1,0,"",0,"",0,"VK_CONVERT","",""],[1,0,"",0,"",0,"VK_NONCONVERT","",""],[1,0,"",0,"",0,"VK_ACCEPT","",""],[1,0,"",0,"",0,"VK_MODECHANGE","",""],[1,0,"",0,"",0,"VK_SELECT","",""],[1,0,"",0,"",0,"VK_PRINT","",""],[1,0,"",0,"",0,"VK_EXECUTE","",""],[1,0,"",0,"",0,"VK_SNAPSHOT","",""],[1,0,"",0,"",0,"VK_HELP","",""],[1,0,"",0,"",0,"VK_APPS","",""],[1,0,"",0,"",0,"VK_PROCESSKEY","",""],[1,0,"",0,"",0,"VK_PACKET","",""],[1,0,"",0,"",0,"VK_DBE_SBCSCHAR","",""],[1,0,"",0,"",0,"VK_DBE_DBCSCHAR","",""],[1,0,"",0,"",0,"VK_ATTN","",""],[1,0,"",0,"",0,"VK_CRSEL","",""],[1,0,"",0,"",0,"VK_EXSEL","",""],[1,0,"",0,"",0,"VK_EREOF","",""],[1,0,"",0,"",0,"VK_PLAY","",""],[1,0,"",0,"",0,"VK_ZOOM","",""],[1,0,"",0,"",0,"VK_NONAME","",""],[1,0,"",0,"",0,"VK_PA1","",""],[1,0,"",0,"",0,"VK_OEM_CLEAR","",""]]){let[n,r,o,s,a,l,h,u,d]=i;if(!t[r]&&(t[r]=!0,nH[r]=o,nV[o]=r,nW[o.toLowerCase()]=r,n&&(nG[r]=s,0!==s&&3!==s&&5!==s&&4!==s&&6!==s&&57!==s&&(nj[s]=r))),!e[s]){if(e[s]=!0,!a)throw Error(`String representation missing for key code ${s} around scan code ${o}`);nk.define(s,a),nP.define(s,u||a),nF.define(s,d||u||a)}l&&(nB[l]=s),h&&(nU[h]=s)}nj[3]=46}(),(y=te||(te={})).toString=function(e){return nk.keyCodeToStr(e)},y.fromString=function(e){return nk.strToKeyCode(e)},y.toUserSettingsUS=function(e){return nP.keyCodeToStr(e)},y.toUserSettingsGeneral=function(e){return nF.keyCodeToStr(e)},y.fromUserSettings=function(e){return nP.strToKeyCode(e)||nF.strToKeyCode(e)},y.toElectronAccelerator=function(e){if(e>=98&&e<=113)return null;switch(e){case 16:return"Up";case 18:return"Down";case 15:return"Left";case 17:return"Right"}return nk.keyCodeToStr(e)};var nz=i(1432),nK=i(83454);if(void 0!==nz.li.vscode&&void 0!==nz.li.vscode.process){let e=nz.li.vscode.process;n={get platform(){return e.platform},get arch(){return e.arch},get env(){return e.env},cwd:()=>e.cwd()}}else n=void 0!==nK?{get platform(){return nK.platform},get arch(){return nK.arch},get env(){return nK.env},cwd:()=>nK.env.VSCODE_CWD||nK.cwd()}:{get platform(){return nz.ED?"win32":nz.dz?"darwin":"linux"},get arch(){return},get env(){return{}},cwd:()=>"/"};let nY=n.cwd,n$=n.env,nq=n.platform;class nX extends Error{constructor(e,t,i){let n;"string"==typeof t&&0===t.indexOf("not ")?(n="must not be",t=t.replace(/^not /,"")):n="must be";let r=-1!==e.indexOf(".")?"property":"argument",o=`The "${e}" ${r} ${n} of type ${t}`;super(o+=`. Received type ${typeof i}`),this.code="ERR_INVALID_ARG_TYPE"}}function nZ(e,t){if("string"!=typeof e)throw new nX(t,"string",e)}let nQ="win32"===nq;function nJ(e){return 47===e||92===e}function n0(e){return 47===e}function n1(e){return e>=65&&e<=90||e>=97&&e<=122}function n2(e,t,i,n){let r="",o=0,s=-1,a=0,l=0;for(let h=0;h<=e.length;++h){if(h2){let e=r.lastIndexOf(i);-1===e?(r="",o=0):o=(r=r.slice(0,e)).length-1-r.lastIndexOf(i),s=h,a=0;continue}if(0!==r.length){r="",o=0,s=h,a=0;continue}}t&&(r+=r.length>0?`${i}..`:"..",o=2)}else r.length>0?r+=`${i}${e.slice(s+1,h)}`:r=e.slice(s+1,h),o=h-s-1;s=h,a=0}else 46===l&&-1!==a?++a:a=-1}return r}function n5(e,t){!function(e,t){if(null===e||"object"!=typeof e)throw new nX(t,"Object",e)}(t,"pathObject");let i=t.dir||t.root,n=t.base||`${t.name||""}${t.ext||""}`;return i?i===t.root?`${i}${n}`:`${i}${e}${n}`:n}let n4={resolve(...e){let t="",i="",n=!1;for(let r=e.length-1;r>=-1;r--){let o;if(r>=0){if(nZ(o=e[r],"path"),0===o.length)continue}else 0===t.length?o=nY():(void 0===(o=n$[`=${t}`]||nY())||o.slice(0,2).toLowerCase()!==t.toLowerCase()&&92===o.charCodeAt(2))&&(o=`${t}\\`);let s=o.length,a=0,l="",h=!1,u=o.charCodeAt(0);if(1===s)nJ(u)&&(a=1,h=!0);else if(nJ(u)){if(h=!0,nJ(o.charCodeAt(1))){let e=2,t=2;for(;e2&&nJ(o.charCodeAt(2))&&(h=!0,a=3));if(l.length>0){if(t.length>0){if(l.toLowerCase()!==t.toLowerCase())continue}else t=l}if(n){if(t.length>0)break}else if(i=`${o.slice(a)}\\${i}`,n=h,h&&t.length>0)break}return i=n2(i,!n,"\\",nJ),n?`${t}\\${i}`:`${t}${i}`||"."},normalize(e){let t;nZ(e,"path");let i=e.length;if(0===i)return".";let n=0,r=!1,o=e.charCodeAt(0);if(1===i)return n0(o)?"\\":e;if(nJ(o)){if(r=!0,nJ(e.charCodeAt(1))){let r=2,o=2;for(;r2&&nJ(e.charCodeAt(2))&&(r=!0,n=3));let s=n0&&nJ(e.charCodeAt(i-1))&&(s+="\\"),void 0===t)?r?`\\${s}`:s:r?`${t}\\${s}`:`${t}${s}`},isAbsolute(e){nZ(e,"path");let t=e.length;if(0===t)return!1;let i=e.charCodeAt(0);return nJ(i)||t>2&&n1(i)&&58===e.charCodeAt(1)&&nJ(e.charCodeAt(2))},join(...e){let t,i;if(0===e.length)return".";for(let n=0;n0&&(void 0===t?t=i=r:t+=`\\${r}`)}if(void 0===t)return".";let n=!0,r=0;if("string"==typeof i&&nJ(i.charCodeAt(0))){++r;let e=i.length;e>1&&nJ(i.charCodeAt(1))&&(++r,e>2&&(nJ(i.charCodeAt(2))?++r:n=!1))}if(n){for(;r=2&&(t=`\\${t.slice(r)}`)}return n4.normalize(t)},relative(e,t){if(nZ(e,"from"),nZ(t,"to"),e===t)return"";let i=n4.resolve(e),n=n4.resolve(t);if(i===n||(e=i.toLowerCase())===(t=n.toLowerCase()))return"";let r=0;for(;rr&&92===e.charCodeAt(o-1);)o--;let s=o-r,a=0;for(;aa&&92===t.charCodeAt(l-1);)l--;let h=l-a,u=su){if(92===t.charCodeAt(a+c))return n.slice(a+c+1);if(2===c)return n.slice(a+c)}s>u&&(92===e.charCodeAt(r+c)?d=c:2===c&&(d=3)),-1===d&&(d=0)}let f="";for(c=r+d+1;c<=o;++c)(c===o||92===e.charCodeAt(c))&&(f+=0===f.length?"..":"\\..");return(a+=d,f.length>0)?`${f}${n.slice(a,l)}`:(92===n.charCodeAt(a)&&++a,n.slice(a,l))},toNamespacedPath(e){if("string"!=typeof e||0===e.length)return e;let t=n4.resolve(e);if(t.length<=2)return e;if(92===t.charCodeAt(0)){if(92===t.charCodeAt(1)){let e=t.charCodeAt(2);if(63!==e&&46!==e)return`\\\\?\\UNC\\${t.slice(2)}`}}else if(n1(t.charCodeAt(0))&&58===t.charCodeAt(1)&&92===t.charCodeAt(2))return`\\\\?\\${t}`;return e},dirname(e){nZ(e,"path");let t=e.length;if(0===t)return".";let i=-1,n=0,r=e.charCodeAt(0);if(1===t)return nJ(r)?e:".";if(nJ(r)){if(i=n=1,nJ(e.charCodeAt(1))){let r=2,o=2;for(;r2&&nJ(e.charCodeAt(2))?3:2);let o=-1,s=!0;for(let i=t-1;i>=n;--i)if(nJ(e.charCodeAt(i))){if(!s){o=i;break}}else s=!1;if(-1===o){if(-1===i)return".";o=i}return e.slice(0,o)},basename(e,t){let i;void 0!==t&&nZ(t,"ext"),nZ(e,"path");let n=0,r=-1,o=!0;if(e.length>=2&&n1(e.charCodeAt(0))&&58===e.charCodeAt(1)&&(n=2),void 0!==t&&t.length>0&&t.length<=e.length){if(t===e)return"";let s=t.length-1,a=-1;for(i=e.length-1;i>=n;--i){let l=e.charCodeAt(i);if(nJ(l)){if(!o){n=i+1;break}}else -1===a&&(o=!1,a=i+1),s>=0&&(l===t.charCodeAt(s)?-1==--s&&(r=i):(s=-1,r=a))}return n===r?r=a:-1===r&&(r=e.length),e.slice(n,r)}for(i=e.length-1;i>=n;--i)if(nJ(e.charCodeAt(i))){if(!o){n=i+1;break}}else -1===r&&(o=!1,r=i+1);return -1===r?"":e.slice(n,r)},extname(e){nZ(e,"path");let t=0,i=-1,n=0,r=-1,o=!0,s=0;e.length>=2&&58===e.charCodeAt(1)&&n1(e.charCodeAt(0))&&(t=n=2);for(let a=e.length-1;a>=t;--a){let t=e.charCodeAt(a);if(nJ(t)){if(!o){n=a+1;break}continue}-1===r&&(o=!1,r=a+1),46===t?-1===i?i=a:1!==s&&(s=1):-1!==i&&(s=-1)}return -1===i||-1===r||0===s||1===s&&i===r-1&&i===n+1?"":e.slice(i,r)},format:n5.bind(null,"\\"),parse(e){nZ(e,"path");let t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;let i=e.length,n=0,r=e.charCodeAt(0);if(1===i)return nJ(r)?(t.root=t.dir=e,t):(t.base=t.name=e,t);if(nJ(r)){if(n=1,nJ(e.charCodeAt(1))){let t=2,r=2;for(;t0&&(t.root=e.slice(0,n));let o=-1,s=n,a=-1,l=!0,h=e.length-1,u=0;for(;h>=n;--h){if(nJ(r=e.charCodeAt(h))){if(!l){s=h+1;break}continue}-1===a&&(l=!1,a=h+1),46===r?-1===o?o=h:1!==u&&(u=1):-1!==o&&(u=-1)}return -1!==a&&(-1===o||0===u||1===u&&o===a-1&&o===s+1?t.base=t.name=e.slice(s,a):(t.name=e.slice(s,o),t.base=e.slice(s,a),t.ext=e.slice(o,a))),s>0&&s!==n?t.dir=e.slice(0,s-1):t.dir=t.root,t},sep:"\\",delimiter:";",win32:null,posix:null},n3=(()=>{if(nQ){let e=/\\/g;return()=>{let t=nY().replace(e,"/");return t.slice(t.indexOf("/"))}}return()=>nY()})(),n6={resolve(...e){let t="",i=!1;for(let n=e.length-1;n>=-1&&!i;n--){let r=n>=0?e[n]:n3();nZ(r,"path"),0!==r.length&&(t=`${r}/${t}`,i=47===r.charCodeAt(0))}return(t=n2(t,!i,"/",n0),i)?`/${t}`:t.length>0?t:"."},normalize(e){if(nZ(e,"path"),0===e.length)return".";let t=47===e.charCodeAt(0),i=47===e.charCodeAt(e.length-1);return 0===(e=n2(e,!t,"/",n0)).length?t?"/":i?"./":".":(i&&(e+="/"),t?`/${e}`:e)},isAbsolute:e=>(nZ(e,"path"),e.length>0&&47===e.charCodeAt(0)),join(...e){let t;if(0===e.length)return".";for(let i=0;i0&&(void 0===t?t=n:t+=`/${n}`)}return void 0===t?".":n6.normalize(t)},relative(e,t){if(nZ(e,"from"),nZ(t,"to"),e===t||(e=n6.resolve(e))===(t=n6.resolve(t)))return"";let i=e.length,n=i-1,r=t.length-1,o=no){if(47===t.charCodeAt(1+a))return t.slice(1+a+1);if(0===a)return t.slice(1+a)}else n>o&&(47===e.charCodeAt(1+a)?s=a:0===a&&(s=0))}let l="";for(a=1+s+1;a<=i;++a)(a===i||47===e.charCodeAt(a))&&(l+=0===l.length?"..":"/..");return`${l}${t.slice(1+s)}`},toNamespacedPath:e=>e,dirname(e){if(nZ(e,"path"),0===e.length)return".";let t=47===e.charCodeAt(0),i=-1,n=!0;for(let t=e.length-1;t>=1;--t)if(47===e.charCodeAt(t)){if(!n){i=t;break}}else n=!1;return -1===i?t?"/":".":t&&1===i?"//":e.slice(0,i)},basename(e,t){let i;void 0!==t&&nZ(t,"ext"),nZ(e,"path");let n=0,r=-1,o=!0;if(void 0!==t&&t.length>0&&t.length<=e.length){if(t===e)return"";let s=t.length-1,a=-1;for(i=e.length-1;i>=0;--i){let l=e.charCodeAt(i);if(47===l){if(!o){n=i+1;break}}else -1===a&&(o=!1,a=i+1),s>=0&&(l===t.charCodeAt(s)?-1==--s&&(r=i):(s=-1,r=a))}return n===r?r=a:-1===r&&(r=e.length),e.slice(n,r)}for(i=e.length-1;i>=0;--i)if(47===e.charCodeAt(i)){if(!o){n=i+1;break}}else -1===r&&(o=!1,r=i+1);return -1===r?"":e.slice(n,r)},extname(e){nZ(e,"path");let t=-1,i=0,n=-1,r=!0,o=0;for(let s=e.length-1;s>=0;--s){let a=e.charCodeAt(s);if(47===a){if(!r){i=s+1;break}continue}-1===n&&(r=!1,n=s+1),46===a?-1===t?t=s:1!==o&&(o=1):-1!==t&&(o=-1)}return -1===t||-1===n||0===o||1===o&&t===n-1&&t===i+1?"":e.slice(t,n)},format:n5.bind(null,"/"),parse(e){let t;nZ(e,"path");let i={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return i;let n=47===e.charCodeAt(0);n?(i.root="/",t=1):t=0;let r=-1,o=0,s=-1,a=!0,l=e.length-1,h=0;for(;l>=t;--l){let t=e.charCodeAt(l);if(47===t){if(!a){o=l+1;break}continue}-1===s&&(a=!1,s=l+1),46===t?-1===r?r=l:1!==h&&(h=1):-1!==r&&(h=-1)}if(-1!==s){let t=0===o&&n?1:o;-1===r||0===h||1===h&&r===s-1&&r===o+1?i.base=i.name=e.slice(t,s):(i.name=e.slice(t,r),i.base=e.slice(t,s),i.ext=e.slice(r,s))}return o>0?i.dir=e.slice(0,o-1):n&&(i.dir="/"),i},sep:"/",delimiter:":",win32:null,posix:null};n6.win32=n4.win32=n4,n6.posix=n4.posix=n6;let n9=nQ?n4.normalize:n6.normalize,n8=nQ?n4.resolve:n6.resolve,n7=nQ?n4.relative:n6.relative,re=nQ?n4.dirname:n6.dirname,rt=nQ?n4.basename:n6.basename,ri=nQ?n4.extname:n6.extname,rn=nQ?n4.sep:n6.sep,rr=/^\w[\w\d+.-]*$/,ro=/^\//,rs=/^\/\//,ra=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class rl{static isUri(e){return e instanceof rl||!!e&&"string"==typeof e.authority&&"string"==typeof e.fragment&&"string"==typeof e.path&&"string"==typeof e.query&&"string"==typeof e.scheme&&"string"==typeof e.fsPath&&"function"==typeof e.with&&"function"==typeof e.toString}constructor(e,t,i,n,r,o=!1){"object"==typeof e?(this.scheme=e.scheme||"",this.authority=e.authority||"",this.path=e.path||"",this.query=e.query||"",this.fragment=e.fragment||""):(this.scheme=e||o?e:"file",this.authority=t||"",this.path=function(e,t){switch(e){case"https":case"http":case"file":t?"/"!==t[0]&&(t="/"+t):t="/"}return t}(this.scheme,i||""),this.query=n||"",this.fragment=r||"",function(e,t){if(!e.scheme&&t)throw Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${e.authority}", path: "${e.path}", query: "${e.query}", fragment: "${e.fragment}"}`);if(e.scheme&&!rr.test(e.scheme))throw Error("[UriError]: Scheme contains illegal characters.");if(e.path){if(e.authority){if(!ro.test(e.path))throw Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(rs.test(e.path))throw Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}(this,o))}get fsPath(){return rg(this,!1)}with(e){if(!e)return this;let{scheme:t,authority:i,path:n,query:r,fragment:o}=e;return(void 0===t?t=this.scheme:null===t&&(t=""),void 0===i?i=this.authority:null===i&&(i=""),void 0===n?n=this.path:null===n&&(n=""),void 0===r?r=this.query:null===r&&(r=""),void 0===o?o=this.fragment:null===o&&(o=""),t===this.scheme&&i===this.authority&&n===this.path&&r===this.query&&o===this.fragment)?this:new ru(t,i,n,r,o)}static parse(e,t=!1){let i=ra.exec(e);return i?new ru(i[2]||"",r_(i[4]||""),r_(i[5]||""),r_(i[7]||""),r_(i[9]||""),t):new ru("","","","","")}static file(e){let t="";if(nz.ED&&(e=e.replace(/\\/g,"/")),"/"===e[0]&&"/"===e[1]){let i=e.indexOf("/",2);-1===i?(t=e.substring(2),e="/"):(t=e.substring(2,i),e=e.substring(i)||"/")}return new ru("file",t,e,"","")}static from(e,t){let i=new ru(e.scheme,e.authority,e.path,e.query,e.fragment,t);return i}static joinPath(e,...t){let i;if(!e.path)throw Error("[UriError]: cannot call joinPath on URI without path");return i=nz.ED&&"file"===e.scheme?rl.file(n4.join(rg(e,!0),...t)).path:n6.join(e.path,...t),e.with({path:i})}toString(e=!1){return rp(this,e)}toJSON(){return this}static revive(e){var t,i;if(!e||e instanceof rl)return e;{let n=new ru(e);return n._formatted=null!==(t=e.external)&&void 0!==t?t:null,n._fsPath=e._sep===rh&&null!==(i=e.fsPath)&&void 0!==i?i:null,n}}}let rh=nz.ED?1:void 0;class ru extends rl{constructor(){super(...arguments),this._formatted=null,this._fsPath=null}get fsPath(){return this._fsPath||(this._fsPath=rg(this,!1)),this._fsPath}toString(e=!1){return e?rp(this,!0):(this._formatted||(this._formatted=rp(this,!1)),this._formatted)}toJSON(){let e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=rh),this._formatted&&(e.external=this._formatted),this.path&&(e.path=this.path),this.scheme&&(e.scheme=this.scheme),this.authority&&(e.authority=this.authority),this.query&&(e.query=this.query),this.fragment&&(e.fragment=this.fragment),e}}let rd={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function rc(e,t,i){let n;let r=-1;for(let o=0;o=97&&s<=122||s>=65&&s<=90||s>=48&&s<=57||45===s||46===s||95===s||126===s||t&&47===s||i&&91===s||i&&93===s||i&&58===s)-1!==r&&(n+=encodeURIComponent(e.substring(r,o)),r=-1),void 0!==n&&(n+=e.charAt(o));else{void 0===n&&(n=e.substr(0,o));let t=rd[s];void 0!==t?(-1!==r&&(n+=encodeURIComponent(e.substring(r,o)),r=-1),n+=t):-1===r&&(r=o)}}return -1!==r&&(n+=encodeURIComponent(e.substring(r))),void 0!==n?n:e}function rf(e){let t;for(let i=0;i1&&"file"===e.scheme?`//${e.authority}${e.path}`:47===e.path.charCodeAt(0)&&(e.path.charCodeAt(1)>=65&&90>=e.path.charCodeAt(1)||e.path.charCodeAt(1)>=97&&122>=e.path.charCodeAt(1))&&58===e.path.charCodeAt(2)?t?e.path.substr(1):e.path[1].toLowerCase()+e.path.substr(2):e.path,nz.ED&&(i=i.replace(/\//g,"\\")),i}function rp(e,t){let i=t?rf:rc,n="",{scheme:r,authority:o,path:s,query:a,fragment:l}=e;if(r&&(n+=r+":"),(o||"file"===r)&&(n+="//"),o){let e=o.indexOf("@");if(-1!==e){let t=o.substr(0,e);o=o.substr(e+1),-1===(e=t.lastIndexOf(":"))?n+=i(t,!1,!1):n+=i(t.substr(0,e),!1,!1)+":"+i(t.substr(e+1),!1,!0),n+="@"}-1===(e=(o=o.toLowerCase()).lastIndexOf(":"))?n+=i(o,!1,!0):n+=i(o.substr(0,e),!1,!0)+o.substr(e)}if(s){if(s.length>=3&&47===s.charCodeAt(0)&&58===s.charCodeAt(2)){let e=s.charCodeAt(1);e>=65&&e<=90&&(s=`/${String.fromCharCode(e+32)}:${s.substr(3)}`)}else if(s.length>=2&&58===s.charCodeAt(1)){let e=s.charCodeAt(0);e>=65&&e<=90&&(s=`${String.fromCharCode(e+32)}:${s.substr(2)}`)}n+=i(s,!0,!1)}return a&&(n+="?"+i(a,!1,!1)),l&&(n+="#"+(t?l:rc(l,!1,!1))),n}let rm=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function r_(e){return e.match(rm)?e.replace(rm,e=>(function e(t){try{return decodeURIComponent(t)}catch(i){if(t.length>3)return t.substr(0,3)+e(t.substr(3));return t}})(e)):e}class rE{constructor(e,t){this.lineNumber=e,this.column=t}with(e=this.lineNumber,t=this.column){return e===this.lineNumber&&t===this.column?this:new rE(e,t)}delta(e=0,t=0){return this.with(this.lineNumber+e,this.column+t)}equals(e){return rE.equals(this,e)}static equals(e,t){return!e&&!t||!!e&&!!t&&e.lineNumber===t.lineNumber&&e.column===t.column}isBefore(e){return rE.isBefore(this,e)}static isBefore(e,t){return e.lineNumberi||e===i&&t>n?(this.startLineNumber=i,this.startColumn=n,this.endLineNumber=e,this.endColumn=t):(this.startLineNumber=e,this.startColumn=t,this.endLineNumber=i,this.endColumn=n)}isEmpty(){return rv.isEmpty(this)}static isEmpty(e){return e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn}containsPosition(e){return rv.containsPosition(this,e)}static containsPosition(e,t){return!(t.lineNumbere.endLineNumber)&&(t.lineNumber!==e.startLineNumber||!(t.columne.endColumn))}static strictContainsPosition(e,t){return!(t.lineNumbere.endLineNumber)&&(t.lineNumber!==e.startLineNumber||!(t.column<=e.startColumn))&&(t.lineNumber!==e.endLineNumber||!(t.column>=e.endColumn))}containsRange(e){return rv.containsRange(this,e)}static containsRange(e,t){return!(t.startLineNumbere.endLineNumber)&&!(t.endLineNumber>e.endLineNumber)&&(t.startLineNumber!==e.startLineNumber||!(t.startColumne.endColumn))}strictContainsRange(e){return rv.strictContainsRange(this,e)}static strictContainsRange(e,t){return!(t.startLineNumbere.endLineNumber)&&!(t.endLineNumber>e.endLineNumber)&&(t.startLineNumber!==e.startLineNumber||!(t.startColumn<=e.startColumn))&&(t.endLineNumber!==e.endLineNumber||!(t.endColumn>=e.endColumn))}plusRange(e){return rv.plusRange(this,e)}static plusRange(e,t){let i,n,r,o;return t.startLineNumbere.endLineNumber?(r=t.endLineNumber,o=t.endColumn):t.endLineNumber===e.endLineNumber?(r=t.endLineNumber,o=Math.max(t.endColumn,e.endColumn)):(r=e.endLineNumber,o=e.endColumn),new rv(i,n,r,o)}intersectRanges(e){return rv.intersectRanges(this,e)}static intersectRanges(e,t){let i=e.startLineNumber,n=e.startColumn,r=e.endLineNumber,o=e.endColumn,s=t.startLineNumber,a=t.startColumn,l=t.endLineNumber,h=t.endColumn;return(il?(r=l,o=h):r===l&&(o=Math.min(o,h)),i>r||i===r&&n>o)?null:new rv(i,n,r,o)}equalsRange(e){return rv.equalsRange(this,e)}static equalsRange(e,t){return!e&&!t||!!e&&!!t&&e.startLineNumber===t.startLineNumber&&e.startColumn===t.startColumn&&e.endLineNumber===t.endLineNumber&&e.endColumn===t.endColumn}getEndPosition(){return rv.getEndPosition(this)}static getEndPosition(e){return new rE(e.endLineNumber,e.endColumn)}getStartPosition(){return rv.getStartPosition(this)}static getStartPosition(e){return new rE(e.startLineNumber,e.startColumn)}toString(){return"["+this.startLineNumber+","+this.startColumn+" -> "+this.endLineNumber+","+this.endColumn+"]"}setEndPosition(e,t){return new rv(this.startLineNumber,this.startColumn,e,t)}setStartPosition(e,t){return new rv(e,t,this.endLineNumber,this.endColumn)}collapseToStart(){return rv.collapseToStart(this)}static collapseToStart(e){return new rv(e.startLineNumber,e.startColumn,e.startLineNumber,e.startColumn)}collapseToEnd(){return rv.collapseToEnd(this)}static collapseToEnd(e){return new rv(e.endLineNumber,e.endColumn,e.endLineNumber,e.endColumn)}delta(e){return new rv(this.startLineNumber+e,this.startColumn,this.endLineNumber+e,this.endColumn)}static fromPositions(e,t=e){return new rv(e.lineNumber,e.column,t.lineNumber,t.column)}static lift(e){return e?new rv(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn):null}static isIRange(e){return e&&"number"==typeof e.startLineNumber&&"number"==typeof e.startColumn&&"number"==typeof e.endLineNumber&&"number"==typeof e.endColumn}static areIntersectingOrTouching(e,t){return!(e.endLineNumbere.startLineNumber}toJSON(){return this}}class rb extends rv{constructor(e,t,i,n){super(e,t,i,n),this.selectionStartLineNumber=e,this.selectionStartColumn=t,this.positionLineNumber=i,this.positionColumn=n}toString(){return"["+this.selectionStartLineNumber+","+this.selectionStartColumn+" -> "+this.positionLineNumber+","+this.positionColumn+"]"}equalsSelection(e){return rb.selectionsEqual(this,e)}static selectionsEqual(e,t){return e.selectionStartLineNumber===t.selectionStartLineNumber&&e.selectionStartColumn===t.selectionStartColumn&&e.positionLineNumber===t.positionLineNumber&&e.positionColumn===t.positionColumn}getDirection(){return this.selectionStartLineNumber===this.startLineNumber&&this.selectionStartColumn===this.startColumn?0:1}setEndPosition(e,t){return 0===this.getDirection()?new rb(this.startLineNumber,this.startColumn,e,t):new rb(e,t,this.startLineNumber,this.startColumn)}getPosition(){return new rE(this.positionLineNumber,this.positionColumn)}getSelectionStart(){return new rE(this.selectionStartLineNumber,this.selectionStartColumn)}setStartPosition(e,t){return 0===this.getDirection()?new rb(e,t,this.endLineNumber,this.endColumn):new rb(this.endLineNumber,this.endColumn,e,t)}static fromPositions(e,t=e){return new rb(e.lineNumber,e.column,t.lineNumber,t.column)}static fromRange(e,t){return 0===t?new rb(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn):new rb(e.endLineNumber,e.endColumn,e.startLineNumber,e.startColumn)}static liftSelection(e){return new rb(e.selectionStartLineNumber,e.selectionStartColumn,e.positionLineNumber,e.positionColumn)}static selectionsArrEqual(e,t){if(e&&!t||!e&&t)return!1;if(!e&&!t)return!0;if(e.length!==t.length)return!1;for(let i=0,n=e.length;i{e&&e.dispose()})}get tokenizationSupport(){return this._tokenizationSupport||(this._tokenizationSupport=this.createSupport()),this._tokenizationSupport}}let rx=new class{constructor(){this._tokenizationSupports=new Map,this._factories=new Map,this._onDidChange=new ny,this.onDidChange=this._onDidChange.event,this._colorMap=null}handleChange(e){this._onDidChange.fire({changedLanguages:e,changedColorMap:!1})}register(e,t){return this._tokenizationSupports.set(e,t),this.handleChange([e]),nu(()=>{this._tokenizationSupports.get(e)===t&&(this._tokenizationSupports.delete(e),this.handleChange([e]))})}get(e){return this._tokenizationSupports.get(e)||null}registerFactory(e,t){var i;null===(i=this._factories.get(e))||void 0===i||i.dispose();let n=new rA(this,e,t);return this._factories.set(e,n),nu(()=>{let t=this._factories.get(e);t&&t===n&&(this._factories.delete(e),t.dispose())})}getOrCreate(e){return rR(this,void 0,void 0,function*(){let t=this.get(e);if(t)return t;let i=this._factories.get(e);return!i||i.isResolved?null:(yield i.resolve(),this.get(e))})}isResolved(e){let t=this.get(e);if(t)return!0;let i=this._factories.get(e);return!i||!!i.isResolved}setColorMap(e){this._colorMap=e,this._onDidChange.fire({changedLanguages:Array.from(this._tokenizationSupports.keys()),changedColorMap:!0})}getColorMap(){return this._colorMap}getDefaultBackground(){return this._colorMap&&this._colorMap.length>2?this._colorMap[2]:null}};(O=tl||(tl={}))[O.Unknown=0]="Unknown",O[O.Disabled=1]="Disabled",O[O.Enabled=2]="Enabled",(L=th||(th={}))[L.Invoke=1]="Invoke",L[L.Auto=2]="Auto",(I=tu||(tu={}))[I.None=0]="None",I[I.KeepWhitespace=1]="KeepWhitespace",I[I.InsertAsSnippet=4]="InsertAsSnippet",(w=td||(td={}))[w.Method=0]="Method",w[w.Function=1]="Function",w[w.Constructor=2]="Constructor",w[w.Field=3]="Field",w[w.Variable=4]="Variable",w[w.Class=5]="Class",w[w.Struct=6]="Struct",w[w.Interface=7]="Interface",w[w.Module=8]="Module",w[w.Property=9]="Property",w[w.Event=10]="Event",w[w.Operator=11]="Operator",w[w.Unit=12]="Unit",w[w.Value=13]="Value",w[w.Constant=14]="Constant",w[w.Enum=15]="Enum",w[w.EnumMember=16]="EnumMember",w[w.Keyword=17]="Keyword",w[w.Text=18]="Text",w[w.Color=19]="Color",w[w.File=20]="File",w[w.Reference=21]="Reference",w[w.Customcolor=22]="Customcolor",w[w.Folder=23]="Folder",w[w.TypeParameter=24]="TypeParameter",w[w.User=25]="User",w[w.Issue=26]="Issue",w[w.Snippet=27]="Snippet",(D=tc||(tc={}))[D.Deprecated=1]="Deprecated",(x=tf||(tf={}))[x.Invoke=0]="Invoke",x[x.TriggerCharacter=1]="TriggerCharacter",x[x.TriggerForIncompleteCompletions=2]="TriggerForIncompleteCompletions",(M=tg||(tg={}))[M.EXACT=0]="EXACT",M[M.ABOVE=1]="ABOVE",M[M.BELOW=2]="BELOW",(k=tp||(tp={}))[k.NotSet=0]="NotSet",k[k.ContentFlush=1]="ContentFlush",k[k.RecoverFromMarkers=2]="RecoverFromMarkers",k[k.Explicit=3]="Explicit",k[k.Paste=4]="Paste",k[k.Undo=5]="Undo",k[k.Redo=6]="Redo",(P=tm||(tm={}))[P.LF=1]="LF",P[P.CRLF=2]="CRLF",(F=t_||(t_={}))[F.Text=0]="Text",F[F.Read=1]="Read",F[F.Write=2]="Write",(B=tE||(tE={}))[B.None=0]="None",B[B.Keep=1]="Keep",B[B.Brackets=2]="Brackets",B[B.Advanced=3]="Advanced",B[B.Full=4]="Full",(U=tv||(tv={}))[U.acceptSuggestionOnCommitCharacter=0]="acceptSuggestionOnCommitCharacter",U[U.acceptSuggestionOnEnter=1]="acceptSuggestionOnEnter",U[U.accessibilitySupport=2]="accessibilitySupport",U[U.accessibilityPageSize=3]="accessibilityPageSize",U[U.ariaLabel=4]="ariaLabel",U[U.ariaRequired=5]="ariaRequired",U[U.autoClosingBrackets=6]="autoClosingBrackets",U[U.screenReaderAnnounceInlineSuggestion=7]="screenReaderAnnounceInlineSuggestion",U[U.autoClosingDelete=8]="autoClosingDelete",U[U.autoClosingOvertype=9]="autoClosingOvertype",U[U.autoClosingQuotes=10]="autoClosingQuotes",U[U.autoIndent=11]="autoIndent",U[U.automaticLayout=12]="automaticLayout",U[U.autoSurround=13]="autoSurround",U[U.bracketPairColorization=14]="bracketPairColorization",U[U.guides=15]="guides",U[U.codeLens=16]="codeLens",U[U.codeLensFontFamily=17]="codeLensFontFamily",U[U.codeLensFontSize=18]="codeLensFontSize",U[U.colorDecorators=19]="colorDecorators",U[U.colorDecoratorsLimit=20]="colorDecoratorsLimit",U[U.columnSelection=21]="columnSelection",U[U.comments=22]="comments",U[U.contextmenu=23]="contextmenu",U[U.copyWithSyntaxHighlighting=24]="copyWithSyntaxHighlighting",U[U.cursorBlinking=25]="cursorBlinking",U[U.cursorSmoothCaretAnimation=26]="cursorSmoothCaretAnimation",U[U.cursorStyle=27]="cursorStyle",U[U.cursorSurroundingLines=28]="cursorSurroundingLines",U[U.cursorSurroundingLinesStyle=29]="cursorSurroundingLinesStyle",U[U.cursorWidth=30]="cursorWidth",U[U.disableLayerHinting=31]="disableLayerHinting",U[U.disableMonospaceOptimizations=32]="disableMonospaceOptimizations",U[U.domReadOnly=33]="domReadOnly",U[U.dragAndDrop=34]="dragAndDrop",U[U.dropIntoEditor=35]="dropIntoEditor",U[U.emptySelectionClipboard=36]="emptySelectionClipboard",U[U.experimentalWhitespaceRendering=37]="experimentalWhitespaceRendering",U[U.extraEditorClassName=38]="extraEditorClassName",U[U.fastScrollSensitivity=39]="fastScrollSensitivity",U[U.find=40]="find",U[U.fixedOverflowWidgets=41]="fixedOverflowWidgets",U[U.folding=42]="folding",U[U.foldingStrategy=43]="foldingStrategy",U[U.foldingHighlight=44]="foldingHighlight",U[U.foldingImportsByDefault=45]="foldingImportsByDefault",U[U.foldingMaximumRegions=46]="foldingMaximumRegions",U[U.unfoldOnClickAfterEndOfLine=47]="unfoldOnClickAfterEndOfLine",U[U.fontFamily=48]="fontFamily",U[U.fontInfo=49]="fontInfo",U[U.fontLigatures=50]="fontLigatures",U[U.fontSize=51]="fontSize",U[U.fontWeight=52]="fontWeight",U[U.fontVariations=53]="fontVariations",U[U.formatOnPaste=54]="formatOnPaste",U[U.formatOnType=55]="formatOnType",U[U.glyphMargin=56]="glyphMargin",U[U.gotoLocation=57]="gotoLocation",U[U.hideCursorInOverviewRuler=58]="hideCursorInOverviewRuler",U[U.hover=59]="hover",U[U.inDiffEditor=60]="inDiffEditor",U[U.inlineSuggest=61]="inlineSuggest",U[U.letterSpacing=62]="letterSpacing",U[U.lightbulb=63]="lightbulb",U[U.lineDecorationsWidth=64]="lineDecorationsWidth",U[U.lineHeight=65]="lineHeight",U[U.lineNumbers=66]="lineNumbers",U[U.lineNumbersMinChars=67]="lineNumbersMinChars",U[U.linkedEditing=68]="linkedEditing",U[U.links=69]="links",U[U.matchBrackets=70]="matchBrackets",U[U.minimap=71]="minimap",U[U.mouseStyle=72]="mouseStyle",U[U.mouseWheelScrollSensitivity=73]="mouseWheelScrollSensitivity",U[U.mouseWheelZoom=74]="mouseWheelZoom",U[U.multiCursorMergeOverlapping=75]="multiCursorMergeOverlapping",U[U.multiCursorModifier=76]="multiCursorModifier",U[U.multiCursorPaste=77]="multiCursorPaste",U[U.multiCursorLimit=78]="multiCursorLimit",U[U.occurrencesHighlight=79]="occurrencesHighlight",U[U.overviewRulerBorder=80]="overviewRulerBorder",U[U.overviewRulerLanes=81]="overviewRulerLanes",U[U.padding=82]="padding",U[U.pasteAs=83]="pasteAs",U[U.parameterHints=84]="parameterHints",U[U.peekWidgetDefaultFocus=85]="peekWidgetDefaultFocus",U[U.definitionLinkOpensInPeek=86]="definitionLinkOpensInPeek",U[U.quickSuggestions=87]="quickSuggestions",U[U.quickSuggestionsDelay=88]="quickSuggestionsDelay",U[U.readOnly=89]="readOnly",U[U.readOnlyMessage=90]="readOnlyMessage",U[U.renameOnType=91]="renameOnType",U[U.renderControlCharacters=92]="renderControlCharacters",U[U.renderFinalNewline=93]="renderFinalNewline",U[U.renderLineHighlight=94]="renderLineHighlight",U[U.renderLineHighlightOnlyWhenFocus=95]="renderLineHighlightOnlyWhenFocus",U[U.renderValidationDecorations=96]="renderValidationDecorations",U[U.renderWhitespace=97]="renderWhitespace",U[U.revealHorizontalRightPadding=98]="revealHorizontalRightPadding",U[U.roundedSelection=99]="roundedSelection",U[U.rulers=100]="rulers",U[U.scrollbar=101]="scrollbar",U[U.scrollBeyondLastColumn=102]="scrollBeyondLastColumn",U[U.scrollBeyondLastLine=103]="scrollBeyondLastLine",U[U.scrollPredominantAxis=104]="scrollPredominantAxis",U[U.selectionClipboard=105]="selectionClipboard",U[U.selectionHighlight=106]="selectionHighlight",U[U.selectOnLineNumbers=107]="selectOnLineNumbers",U[U.showFoldingControls=108]="showFoldingControls",U[U.showUnused=109]="showUnused",U[U.snippetSuggestions=110]="snippetSuggestions",U[U.smartSelect=111]="smartSelect",U[U.smoothScrolling=112]="smoothScrolling",U[U.stickyScroll=113]="stickyScroll",U[U.stickyTabStops=114]="stickyTabStops",U[U.stopRenderingLineAfter=115]="stopRenderingLineAfter",U[U.suggest=116]="suggest",U[U.suggestFontSize=117]="suggestFontSize",U[U.suggestLineHeight=118]="suggestLineHeight",U[U.suggestOnTriggerCharacters=119]="suggestOnTriggerCharacters",U[U.suggestSelection=120]="suggestSelection",U[U.tabCompletion=121]="tabCompletion",U[U.tabIndex=122]="tabIndex",U[U.unicodeHighlighting=123]="unicodeHighlighting",U[U.unusualLineTerminators=124]="unusualLineTerminators",U[U.useShadowDOM=125]="useShadowDOM",U[U.useTabStops=126]="useTabStops",U[U.wordBreak=127]="wordBreak",U[U.wordSeparators=128]="wordSeparators",U[U.wordWrap=129]="wordWrap",U[U.wordWrapBreakAfterCharacters=130]="wordWrapBreakAfterCharacters",U[U.wordWrapBreakBeforeCharacters=131]="wordWrapBreakBeforeCharacters",U[U.wordWrapColumn=132]="wordWrapColumn",U[U.wordWrapOverride1=133]="wordWrapOverride1",U[U.wordWrapOverride2=134]="wordWrapOverride2",U[U.wrappingIndent=135]="wrappingIndent",U[U.wrappingStrategy=136]="wrappingStrategy",U[U.showDeprecated=137]="showDeprecated",U[U.inlayHints=138]="inlayHints",U[U.editorClassName=139]="editorClassName",U[U.pixelRatio=140]="pixelRatio",U[U.tabFocusMode=141]="tabFocusMode",U[U.layoutInfo=142]="layoutInfo",U[U.wrappingInfo=143]="wrappingInfo",U[U.defaultColorDecorators=144]="defaultColorDecorators",U[U.colorDecoratorsActivatedOn=145]="colorDecoratorsActivatedOn",(H=tb||(tb={}))[H.TextDefined=0]="TextDefined",H[H.LF=1]="LF",H[H.CRLF=2]="CRLF",(V=tC||(tC={}))[V.LF=0]="LF",V[V.CRLF=1]="CRLF",(W=tS||(tS={}))[W.Left=1]="Left",W[W.Right=2]="Right",(G=ty||(ty={}))[G.None=0]="None",G[G.Indent=1]="Indent",G[G.IndentOutdent=2]="IndentOutdent",G[G.Outdent=3]="Outdent",(j=tT||(tT={}))[j.Both=0]="Both",j[j.Right=1]="Right",j[j.Left=2]="Left",j[j.None=3]="None",(z=tR||(tR={}))[z.Type=1]="Type",z[z.Parameter=2]="Parameter",(K=tA||(tA={}))[K.Automatic=0]="Automatic",K[K.Explicit=1]="Explicit",(Y=tN||(tN={}))[Y.DependsOnKbLayout=-1]="DependsOnKbLayout",Y[Y.Unknown=0]="Unknown",Y[Y.Backspace=1]="Backspace",Y[Y.Tab=2]="Tab",Y[Y.Enter=3]="Enter",Y[Y.Shift=4]="Shift",Y[Y.Ctrl=5]="Ctrl",Y[Y.Alt=6]="Alt",Y[Y.PauseBreak=7]="PauseBreak",Y[Y.CapsLock=8]="CapsLock",Y[Y.Escape=9]="Escape",Y[Y.Space=10]="Space",Y[Y.PageUp=11]="PageUp",Y[Y.PageDown=12]="PageDown",Y[Y.End=13]="End",Y[Y.Home=14]="Home",Y[Y.LeftArrow=15]="LeftArrow",Y[Y.UpArrow=16]="UpArrow",Y[Y.RightArrow=17]="RightArrow",Y[Y.DownArrow=18]="DownArrow",Y[Y.Insert=19]="Insert",Y[Y.Delete=20]="Delete",Y[Y.Digit0=21]="Digit0",Y[Y.Digit1=22]="Digit1",Y[Y.Digit2=23]="Digit2",Y[Y.Digit3=24]="Digit3",Y[Y.Digit4=25]="Digit4",Y[Y.Digit5=26]="Digit5",Y[Y.Digit6=27]="Digit6",Y[Y.Digit7=28]="Digit7",Y[Y.Digit8=29]="Digit8",Y[Y.Digit9=30]="Digit9",Y[Y.KeyA=31]="KeyA",Y[Y.KeyB=32]="KeyB",Y[Y.KeyC=33]="KeyC",Y[Y.KeyD=34]="KeyD",Y[Y.KeyE=35]="KeyE",Y[Y.KeyF=36]="KeyF",Y[Y.KeyG=37]="KeyG",Y[Y.KeyH=38]="KeyH",Y[Y.KeyI=39]="KeyI",Y[Y.KeyJ=40]="KeyJ",Y[Y.KeyK=41]="KeyK",Y[Y.KeyL=42]="KeyL",Y[Y.KeyM=43]="KeyM",Y[Y.KeyN=44]="KeyN",Y[Y.KeyO=45]="KeyO",Y[Y.KeyP=46]="KeyP",Y[Y.KeyQ=47]="KeyQ",Y[Y.KeyR=48]="KeyR",Y[Y.KeyS=49]="KeyS",Y[Y.KeyT=50]="KeyT",Y[Y.KeyU=51]="KeyU",Y[Y.KeyV=52]="KeyV",Y[Y.KeyW=53]="KeyW",Y[Y.KeyX=54]="KeyX",Y[Y.KeyY=55]="KeyY",Y[Y.KeyZ=56]="KeyZ",Y[Y.Meta=57]="Meta",Y[Y.ContextMenu=58]="ContextMenu",Y[Y.F1=59]="F1",Y[Y.F2=60]="F2",Y[Y.F3=61]="F3",Y[Y.F4=62]="F4",Y[Y.F5=63]="F5",Y[Y.F6=64]="F6",Y[Y.F7=65]="F7",Y[Y.F8=66]="F8",Y[Y.F9=67]="F9",Y[Y.F10=68]="F10",Y[Y.F11=69]="F11",Y[Y.F12=70]="F12",Y[Y.F13=71]="F13",Y[Y.F14=72]="F14",Y[Y.F15=73]="F15",Y[Y.F16=74]="F16",Y[Y.F17=75]="F17",Y[Y.F18=76]="F18",Y[Y.F19=77]="F19",Y[Y.F20=78]="F20",Y[Y.F21=79]="F21",Y[Y.F22=80]="F22",Y[Y.F23=81]="F23",Y[Y.F24=82]="F24",Y[Y.NumLock=83]="NumLock",Y[Y.ScrollLock=84]="ScrollLock",Y[Y.Semicolon=85]="Semicolon",Y[Y.Equal=86]="Equal",Y[Y.Comma=87]="Comma",Y[Y.Minus=88]="Minus",Y[Y.Period=89]="Period",Y[Y.Slash=90]="Slash",Y[Y.Backquote=91]="Backquote",Y[Y.BracketLeft=92]="BracketLeft",Y[Y.Backslash=93]="Backslash",Y[Y.BracketRight=94]="BracketRight",Y[Y.Quote=95]="Quote",Y[Y.OEM_8=96]="OEM_8",Y[Y.IntlBackslash=97]="IntlBackslash",Y[Y.Numpad0=98]="Numpad0",Y[Y.Numpad1=99]="Numpad1",Y[Y.Numpad2=100]="Numpad2",Y[Y.Numpad3=101]="Numpad3",Y[Y.Numpad4=102]="Numpad4",Y[Y.Numpad5=103]="Numpad5",Y[Y.Numpad6=104]="Numpad6",Y[Y.Numpad7=105]="Numpad7",Y[Y.Numpad8=106]="Numpad8",Y[Y.Numpad9=107]="Numpad9",Y[Y.NumpadMultiply=108]="NumpadMultiply",Y[Y.NumpadAdd=109]="NumpadAdd",Y[Y.NUMPAD_SEPARATOR=110]="NUMPAD_SEPARATOR",Y[Y.NumpadSubtract=111]="NumpadSubtract",Y[Y.NumpadDecimal=112]="NumpadDecimal",Y[Y.NumpadDivide=113]="NumpadDivide",Y[Y.KEY_IN_COMPOSITION=114]="KEY_IN_COMPOSITION",Y[Y.ABNT_C1=115]="ABNT_C1",Y[Y.ABNT_C2=116]="ABNT_C2",Y[Y.AudioVolumeMute=117]="AudioVolumeMute",Y[Y.AudioVolumeUp=118]="AudioVolumeUp",Y[Y.AudioVolumeDown=119]="AudioVolumeDown",Y[Y.BrowserSearch=120]="BrowserSearch",Y[Y.BrowserHome=121]="BrowserHome",Y[Y.BrowserBack=122]="BrowserBack",Y[Y.BrowserForward=123]="BrowserForward",Y[Y.MediaTrackNext=124]="MediaTrackNext",Y[Y.MediaTrackPrevious=125]="MediaTrackPrevious",Y[Y.MediaStop=126]="MediaStop",Y[Y.MediaPlayPause=127]="MediaPlayPause",Y[Y.LaunchMediaPlayer=128]="LaunchMediaPlayer",Y[Y.LaunchMail=129]="LaunchMail",Y[Y.LaunchApp2=130]="LaunchApp2",Y[Y.Clear=131]="Clear",Y[Y.MAX_VALUE=132]="MAX_VALUE",($=tO||(tO={}))[$.Hint=1]="Hint",$[$.Info=2]="Info",$[$.Warning=4]="Warning",$[$.Error=8]="Error",(q=tL||(tL={}))[q.Unnecessary=1]="Unnecessary",q[q.Deprecated=2]="Deprecated",(X=tI||(tI={}))[X.Inline=1]="Inline",X[X.Gutter=2]="Gutter",(Z=tw||(tw={}))[Z.UNKNOWN=0]="UNKNOWN",Z[Z.TEXTAREA=1]="TEXTAREA",Z[Z.GUTTER_GLYPH_MARGIN=2]="GUTTER_GLYPH_MARGIN",Z[Z.GUTTER_LINE_NUMBERS=3]="GUTTER_LINE_NUMBERS",Z[Z.GUTTER_LINE_DECORATIONS=4]="GUTTER_LINE_DECORATIONS",Z[Z.GUTTER_VIEW_ZONE=5]="GUTTER_VIEW_ZONE",Z[Z.CONTENT_TEXT=6]="CONTENT_TEXT",Z[Z.CONTENT_EMPTY=7]="CONTENT_EMPTY",Z[Z.CONTENT_VIEW_ZONE=8]="CONTENT_VIEW_ZONE",Z[Z.CONTENT_WIDGET=9]="CONTENT_WIDGET",Z[Z.OVERVIEW_RULER=10]="OVERVIEW_RULER",Z[Z.SCROLLBAR=11]="SCROLLBAR",Z[Z.OVERLAY_WIDGET=12]="OVERLAY_WIDGET",Z[Z.OUTSIDE_EDITOR=13]="OUTSIDE_EDITOR",(Q=tD||(tD={}))[Q.TOP_RIGHT_CORNER=0]="TOP_RIGHT_CORNER",Q[Q.BOTTOM_RIGHT_CORNER=1]="BOTTOM_RIGHT_CORNER",Q[Q.TOP_CENTER=2]="TOP_CENTER",(J=tx||(tx={}))[J.Left=1]="Left",J[J.Center=2]="Center",J[J.Right=4]="Right",J[J.Full=7]="Full",(ee=tM||(tM={}))[ee.Left=0]="Left",ee[ee.Right=1]="Right",ee[ee.None=2]="None",ee[ee.LeftOfInjectedText=3]="LeftOfInjectedText",ee[ee.RightOfInjectedText=4]="RightOfInjectedText",(et=tk||(tk={}))[et.Off=0]="Off",et[et.On=1]="On",et[et.Relative=2]="Relative",et[et.Interval=3]="Interval",et[et.Custom=4]="Custom",(ei=tP||(tP={}))[ei.None=0]="None",ei[ei.Text=1]="Text",ei[ei.Blocks=2]="Blocks",(en=tF||(tF={}))[en.Smooth=0]="Smooth",en[en.Immediate=1]="Immediate",(er=tB||(tB={}))[er.Auto=1]="Auto",er[er.Hidden=2]="Hidden",er[er.Visible=3]="Visible",(eo=tU||(tU={}))[eo.LTR=0]="LTR",eo[eo.RTL=1]="RTL",(es=tH||(tH={}))[es.Invoke=1]="Invoke",es[es.TriggerCharacter=2]="TriggerCharacter",es[es.ContentChange=3]="ContentChange",(ea=tV||(tV={}))[ea.File=0]="File",ea[ea.Module=1]="Module",ea[ea.Namespace=2]="Namespace",ea[ea.Package=3]="Package",ea[ea.Class=4]="Class",ea[ea.Method=5]="Method",ea[ea.Property=6]="Property",ea[ea.Field=7]="Field",ea[ea.Constructor=8]="Constructor",ea[ea.Enum=9]="Enum",ea[ea.Interface=10]="Interface",ea[ea.Function=11]="Function",ea[ea.Variable=12]="Variable",ea[ea.Constant=13]="Constant",ea[ea.String=14]="String",ea[ea.Number=15]="Number",ea[ea.Boolean=16]="Boolean",ea[ea.Array=17]="Array",ea[ea.Object=18]="Object",ea[ea.Key=19]="Key",ea[ea.Null=20]="Null",ea[ea.EnumMember=21]="EnumMember",ea[ea.Struct=22]="Struct",ea[ea.Event=23]="Event",ea[ea.Operator=24]="Operator",ea[ea.TypeParameter=25]="TypeParameter",(el=tW||(tW={}))[el.Deprecated=1]="Deprecated",(eh=tG||(tG={}))[eh.Hidden=0]="Hidden",eh[eh.Blink=1]="Blink",eh[eh.Smooth=2]="Smooth",eh[eh.Phase=3]="Phase",eh[eh.Expand=4]="Expand",eh[eh.Solid=5]="Solid",(eu=tj||(tj={}))[eu.Line=1]="Line",eu[eu.Block=2]="Block",eu[eu.Underline=3]="Underline",eu[eu.LineThin=4]="LineThin",eu[eu.BlockOutline=5]="BlockOutline",eu[eu.UnderlineThin=6]="UnderlineThin",(ed=tz||(tz={}))[ed.AlwaysGrowsWhenTypingAtEdges=0]="AlwaysGrowsWhenTypingAtEdges",ed[ed.NeverGrowsWhenTypingAtEdges=1]="NeverGrowsWhenTypingAtEdges",ed[ed.GrowsOnlyWhenTypingBefore=2]="GrowsOnlyWhenTypingBefore",ed[ed.GrowsOnlyWhenTypingAfter=3]="GrowsOnlyWhenTypingAfter",(ec=tK||(tK={}))[ec.None=0]="None",ec[ec.Same=1]="Same",ec[ec.Indent=2]="Indent",ec[ec.DeepIndent=3]="DeepIndent";class rM{static chord(e,t){return(e|(65535&t)<<16>>>0)>>>0}}function rk(){return{editor:void 0,languages:void 0,CancellationTokenSource:nx,Emitter:ny,KeyCode:tN,KeyMod:rM,Position:rE,Range:rv,Selection:rb,SelectionDirection:tU,MarkerSeverity:tO,MarkerTag:tL,Uri:rl,Token:rO}}rM.CtrlCmd=2048,rM.Shift=1024,rM.Alt=512,rM.WinCtrl=256,i(95656);class rP{get cachedValues(){return this._map}constructor(e){this.fn=e,this._map=new Map}get(e){if(this._map.has(e))return this._map.get(e);let t=this.fn(e);return this._map.set(e,t),t}}class rF{constructor(e){this.executor=e,this._didRun=!1}get value(){if(!this._didRun)try{this._value=this.executor()}catch(e){this._error=e}finally{this._didRun=!0}if(this._error)throw this._error;return this._value}get rawValue(){return this._value}}let rB=/{(\d+)}/g;function rU(e,...t){return 0===t.length?e:e.replace(rB,function(e,i){let n=parseInt(i,10);return isNaN(n)||n<0||n>=t.length?e:t[n]})}function rH(e){return e.replace(/[<>&]/g,function(e){switch(e){case"<":return"<";case">":return">";case"&":return"&";default:return e}})}function rV(e){return e.replace(/[\\\{\}\*\+\?\|\^\$\.\[\]\(\)]/g,"\\$&")}function rW(e,t){if(!e||!t)return e;let i=t.length;if(0===i||0===e.length)return e;let n=0;for(;e.indexOf(t,n)===n;)n+=i;return e.substring(n)}function rG(e,t,i={}){if(!e)throw Error("Cannot create regex from empty string");t||(e=rV(e)),i.wholeWord&&(/\B/.test(e.charAt(0))||(e="\\b"+e),/\B/.test(e.charAt(e.length-1))||(e+="\\b"));let n="";return i.global&&(n+="g"),i.matchCase||(n+="i"),i.multiline&&(n+="m"),i.unicode&&(n+="u"),new RegExp(e,n)}function rj(e){return(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")}function rz(e){return e.split(/\r\n|\r|\n/)}function rK(e){for(let t=0,i=e.length;t=0;i--){let t=e.charCodeAt(i);if(32!==t&&9!==t)return i}return -1}function rq(e,t){return et?1:0}function rX(e,t,i=0,n=e.length,r=0,o=t.length){for(;io)return 1}let s=n-i,a=o-r;return sa?1:0}function rZ(e,t){return rQ(e,t,0,e.length,0,t.length)}function rQ(e,t,i=0,n=e.length,r=0,o=t.length){for(;i=128||a>=128)return rX(e.toLowerCase(),t.toLowerCase(),i,n,r,o);r0(s)&&(s-=32),r0(a)&&(a-=32);let l=s-a;if(0!==l)return l}let s=n-i,a=o-r;return sa?1:0}function rJ(e){return e>=48&&e<=57}function r0(e){return e>=97&&e<=122}function r1(e){return e>=65&&e<=90}function r2(e,t){return e.length===t.length&&0===rQ(e,t)}function r5(e,t){let i=t.length;return!(t.length>e.length)&&0===rQ(e,t,0,i)}function r4(e,t){let i;let n=Math.min(e.length,t.length);for(i=0;i1){let n=e.charCodeAt(t-2);if(r6(n))return r8(n,i)}return i}(this._str,this._offset);return this._offset-=e>=65536?2:1,e}nextCodePoint(){let e=r7(this._str,this._len,this._offset);return this._offset+=e>=65536?2:1,e}eol(){return this._offset>=this._len}}class ot{get offset(){return this._iterator.offset}constructor(e,t=0){this._iterator=new oe(e,t)}nextGraphemeLength(){let e=og.getInstance(),t=this._iterator,i=t.offset,n=e.getGraphemeBreakType(t.nextCodePoint());for(;!t.eol();){let i=t.offset,r=e.getGraphemeBreakType(t.nextCodePoint());if(of(n,r)){t.setOffset(i);break}n=r}return t.offset-i}prevGraphemeLength(){let e=og.getInstance(),t=this._iterator,i=t.offset,n=e.getGraphemeBreakType(t.prevCodePoint());for(;t.offset>0;){let i=t.offset,r=e.getGraphemeBreakType(t.prevCodePoint());if(of(r,n)){t.setOffset(i);break}n=r}return i-t.offset}eol(){return this._iterator.eol()}}function oi(e,t){let i=new ot(e,t);return i.nextGraphemeLength()}function on(e,t){let i=new ot(e,t);return i.prevGraphemeLength()}function or(e){return E||(E=/(?:[\u05BE\u05C0\u05C3\u05C6\u05D0-\u05F4\u0608\u060B\u060D\u061B-\u064A\u066D-\u066F\u0671-\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u0710\u0712-\u072F\u074D-\u07A5\u07B1-\u07EA\u07F4\u07F5\u07FA\u07FE-\u0815\u081A\u0824\u0828\u0830-\u0858\u085E-\u088E\u08A0-\u08C9\u200F\uFB1D\uFB1F-\uFB28\uFB2A-\uFD3D\uFD50-\uFDC7\uFDF0-\uFDFC\uFE70-\uFEFC]|\uD802[\uDC00-\uDD1B\uDD20-\uDE00\uDE10-\uDE35\uDE40-\uDEE4\uDEEB-\uDF35\uDF40-\uDFFF]|\uD803[\uDC00-\uDD23\uDE80-\uDEA9\uDEAD-\uDF45\uDF51-\uDF81\uDF86-\uDFF6]|\uD83A[\uDC00-\uDCCF\uDD00-\uDD43\uDD4B-\uDFFF]|\uD83B[\uDC00-\uDEBB])/),E.test(e)}let oo=/^[\t\n\r\x20-\x7E]*$/;function os(e){return oo.test(e)}let oa=/[\u2028\u2029]/;function ol(e){return e>=11904&&e<=55215||e>=63744&&e<=64255||e>=65281&&e<=65374}function oh(e){return e>=127462&&e<=127487||8986===e||8987===e||9200===e||9203===e||e>=9728&&e<=10175||11088===e||11093===e||e>=127744&&e<=128591||e>=128640&&e<=128764||e>=128992&&e<=129008||e>=129280&&e<=129535||e>=129648&&e<=129782}let ou=String.fromCharCode(65279);function od(e){return!!(e&&e.length>0&&65279===e.charCodeAt(0))}function oc(e){return(e%=52)<26?String.fromCharCode(97+e):String.fromCharCode(65+e-26)}function of(e,t){return 0===e?5!==t&&7!==t:(2!==e||3!==t)&&(4===e||2===e||3===e||4===t||2===t||3===t||(8!==e||8!==t&&9!==t&&11!==t&&12!==t)&&(11!==e&&9!==e||9!==t&&10!==t)&&(12!==e&&10!==e||10!==t)&&5!==t&&13!==t&&7!==t&&1!==e&&(13!==e||14!==t)&&(6!==e||6!==t))}class og{static getInstance(){return og._INSTANCE||(og._INSTANCE=new og),og._INSTANCE}constructor(){this._data=JSON.parse("[0,0,0,51229,51255,12,44061,44087,12,127462,127487,6,7083,7085,5,47645,47671,12,54813,54839,12,128678,128678,14,3270,3270,5,9919,9923,14,45853,45879,12,49437,49463,12,53021,53047,12,71216,71218,7,128398,128399,14,129360,129374,14,2519,2519,5,4448,4519,9,9742,9742,14,12336,12336,14,44957,44983,12,46749,46775,12,48541,48567,12,50333,50359,12,52125,52151,12,53917,53943,12,69888,69890,5,73018,73018,5,127990,127990,14,128558,128559,14,128759,128760,14,129653,129655,14,2027,2035,5,2891,2892,7,3761,3761,5,6683,6683,5,8293,8293,4,9825,9826,14,9999,9999,14,43452,43453,5,44509,44535,12,45405,45431,12,46301,46327,12,47197,47223,12,48093,48119,12,48989,49015,12,49885,49911,12,50781,50807,12,51677,51703,12,52573,52599,12,53469,53495,12,54365,54391,12,65279,65279,4,70471,70472,7,72145,72147,7,119173,119179,5,127799,127818,14,128240,128244,14,128512,128512,14,128652,128652,14,128721,128722,14,129292,129292,14,129445,129450,14,129734,129743,14,1476,1477,5,2366,2368,7,2750,2752,7,3076,3076,5,3415,3415,5,4141,4144,5,6109,6109,5,6964,6964,5,7394,7400,5,9197,9198,14,9770,9770,14,9877,9877,14,9968,9969,14,10084,10084,14,43052,43052,5,43713,43713,5,44285,44311,12,44733,44759,12,45181,45207,12,45629,45655,12,46077,46103,12,46525,46551,12,46973,46999,12,47421,47447,12,47869,47895,12,48317,48343,12,48765,48791,12,49213,49239,12,49661,49687,12,50109,50135,12,50557,50583,12,51005,51031,12,51453,51479,12,51901,51927,12,52349,52375,12,52797,52823,12,53245,53271,12,53693,53719,12,54141,54167,12,54589,54615,12,55037,55063,12,69506,69509,5,70191,70193,5,70841,70841,7,71463,71467,5,72330,72342,5,94031,94031,5,123628,123631,5,127763,127765,14,127941,127941,14,128043,128062,14,128302,128317,14,128465,128467,14,128539,128539,14,128640,128640,14,128662,128662,14,128703,128703,14,128745,128745,14,129004,129007,14,129329,129330,14,129402,129402,14,129483,129483,14,129686,129704,14,130048,131069,14,173,173,4,1757,1757,1,2200,2207,5,2434,2435,7,2631,2632,5,2817,2817,5,3008,3008,5,3201,3201,5,3387,3388,5,3542,3542,5,3902,3903,7,4190,4192,5,6002,6003,5,6439,6440,5,6765,6770,7,7019,7027,5,7154,7155,7,8205,8205,13,8505,8505,14,9654,9654,14,9757,9757,14,9792,9792,14,9852,9853,14,9890,9894,14,9937,9937,14,9981,9981,14,10035,10036,14,11035,11036,14,42654,42655,5,43346,43347,7,43587,43587,5,44006,44007,7,44173,44199,12,44397,44423,12,44621,44647,12,44845,44871,12,45069,45095,12,45293,45319,12,45517,45543,12,45741,45767,12,45965,45991,12,46189,46215,12,46413,46439,12,46637,46663,12,46861,46887,12,47085,47111,12,47309,47335,12,47533,47559,12,47757,47783,12,47981,48007,12,48205,48231,12,48429,48455,12,48653,48679,12,48877,48903,12,49101,49127,12,49325,49351,12,49549,49575,12,49773,49799,12,49997,50023,12,50221,50247,12,50445,50471,12,50669,50695,12,50893,50919,12,51117,51143,12,51341,51367,12,51565,51591,12,51789,51815,12,52013,52039,12,52237,52263,12,52461,52487,12,52685,52711,12,52909,52935,12,53133,53159,12,53357,53383,12,53581,53607,12,53805,53831,12,54029,54055,12,54253,54279,12,54477,54503,12,54701,54727,12,54925,54951,12,55149,55175,12,68101,68102,5,69762,69762,7,70067,70069,7,70371,70378,5,70720,70721,7,71087,71087,5,71341,71341,5,71995,71996,5,72249,72249,7,72850,72871,5,73109,73109,5,118576,118598,5,121505,121519,5,127245,127247,14,127568,127569,14,127777,127777,14,127872,127891,14,127956,127967,14,128015,128016,14,128110,128172,14,128259,128259,14,128367,128368,14,128424,128424,14,128488,128488,14,128530,128532,14,128550,128551,14,128566,128566,14,128647,128647,14,128656,128656,14,128667,128673,14,128691,128693,14,128715,128715,14,128728,128732,14,128752,128752,14,128765,128767,14,129096,129103,14,129311,129311,14,129344,129349,14,129394,129394,14,129413,129425,14,129466,129471,14,129511,129535,14,129664,129666,14,129719,129722,14,129760,129767,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2307,2307,7,2382,2383,7,2497,2500,5,2563,2563,7,2677,2677,5,2763,2764,7,2879,2879,5,2914,2915,5,3021,3021,5,3142,3144,5,3263,3263,5,3285,3286,5,3398,3400,7,3530,3530,5,3633,3633,5,3864,3865,5,3974,3975,5,4155,4156,7,4229,4230,5,5909,5909,7,6078,6085,7,6277,6278,5,6451,6456,7,6744,6750,5,6846,6846,5,6972,6972,5,7074,7077,5,7146,7148,7,7222,7223,5,7416,7417,5,8234,8238,4,8417,8417,5,9000,9000,14,9203,9203,14,9730,9731,14,9748,9749,14,9762,9763,14,9776,9783,14,9800,9811,14,9831,9831,14,9872,9873,14,9882,9882,14,9900,9903,14,9929,9933,14,9941,9960,14,9974,9974,14,9989,9989,14,10006,10006,14,10062,10062,14,10160,10160,14,11647,11647,5,12953,12953,14,43019,43019,5,43232,43249,5,43443,43443,5,43567,43568,7,43696,43696,5,43765,43765,7,44013,44013,5,44117,44143,12,44229,44255,12,44341,44367,12,44453,44479,12,44565,44591,12,44677,44703,12,44789,44815,12,44901,44927,12,45013,45039,12,45125,45151,12,45237,45263,12,45349,45375,12,45461,45487,12,45573,45599,12,45685,45711,12,45797,45823,12,45909,45935,12,46021,46047,12,46133,46159,12,46245,46271,12,46357,46383,12,46469,46495,12,46581,46607,12,46693,46719,12,46805,46831,12,46917,46943,12,47029,47055,12,47141,47167,12,47253,47279,12,47365,47391,12,47477,47503,12,47589,47615,12,47701,47727,12,47813,47839,12,47925,47951,12,48037,48063,12,48149,48175,12,48261,48287,12,48373,48399,12,48485,48511,12,48597,48623,12,48709,48735,12,48821,48847,12,48933,48959,12,49045,49071,12,49157,49183,12,49269,49295,12,49381,49407,12,49493,49519,12,49605,49631,12,49717,49743,12,49829,49855,12,49941,49967,12,50053,50079,12,50165,50191,12,50277,50303,12,50389,50415,12,50501,50527,12,50613,50639,12,50725,50751,12,50837,50863,12,50949,50975,12,51061,51087,12,51173,51199,12,51285,51311,12,51397,51423,12,51509,51535,12,51621,51647,12,51733,51759,12,51845,51871,12,51957,51983,12,52069,52095,12,52181,52207,12,52293,52319,12,52405,52431,12,52517,52543,12,52629,52655,12,52741,52767,12,52853,52879,12,52965,52991,12,53077,53103,12,53189,53215,12,53301,53327,12,53413,53439,12,53525,53551,12,53637,53663,12,53749,53775,12,53861,53887,12,53973,53999,12,54085,54111,12,54197,54223,12,54309,54335,12,54421,54447,12,54533,54559,12,54645,54671,12,54757,54783,12,54869,54895,12,54981,55007,12,55093,55119,12,55243,55291,10,66045,66045,5,68325,68326,5,69688,69702,5,69817,69818,5,69957,69958,7,70089,70092,5,70198,70199,5,70462,70462,5,70502,70508,5,70750,70750,5,70846,70846,7,71100,71101,5,71230,71230,7,71351,71351,5,71737,71738,5,72000,72000,7,72160,72160,5,72273,72278,5,72752,72758,5,72882,72883,5,73031,73031,5,73461,73462,7,94192,94193,7,119149,119149,7,121403,121452,5,122915,122916,5,126980,126980,14,127358,127359,14,127535,127535,14,127759,127759,14,127771,127771,14,127792,127793,14,127825,127867,14,127897,127899,14,127945,127945,14,127985,127986,14,128000,128007,14,128021,128021,14,128066,128100,14,128184,128235,14,128249,128252,14,128266,128276,14,128335,128335,14,128379,128390,14,128407,128419,14,128444,128444,14,128481,128481,14,128499,128499,14,128526,128526,14,128536,128536,14,128543,128543,14,128556,128556,14,128564,128564,14,128577,128580,14,128643,128645,14,128649,128649,14,128654,128654,14,128660,128660,14,128664,128664,14,128675,128675,14,128686,128689,14,128695,128696,14,128705,128709,14,128717,128719,14,128725,128725,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129009,129023,14,129160,129167,14,129296,129304,14,129320,129327,14,129340,129342,14,129356,129356,14,129388,129392,14,129399,129400,14,129404,129407,14,129432,129442,14,129454,129455,14,129473,129474,14,129485,129487,14,129648,129651,14,129659,129660,14,129671,129679,14,129709,129711,14,129728,129730,14,129751,129753,14,129776,129782,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2274,2274,1,2363,2363,7,2377,2380,7,2402,2403,5,2494,2494,5,2507,2508,7,2558,2558,5,2622,2624,7,2641,2641,5,2691,2691,7,2759,2760,5,2786,2787,5,2876,2876,5,2881,2884,5,2901,2902,5,3006,3006,5,3014,3016,7,3072,3072,5,3134,3136,5,3157,3158,5,3260,3260,5,3266,3266,5,3274,3275,7,3328,3329,5,3391,3392,7,3405,3405,5,3457,3457,5,3536,3537,7,3551,3551,5,3636,3642,5,3764,3772,5,3895,3895,5,3967,3967,7,3993,4028,5,4146,4151,5,4182,4183,7,4226,4226,5,4253,4253,5,4957,4959,5,5940,5940,7,6070,6070,7,6087,6088,7,6158,6158,4,6432,6434,5,6448,6449,7,6679,6680,5,6742,6742,5,6754,6754,5,6783,6783,5,6912,6915,5,6966,6970,5,6978,6978,5,7042,7042,7,7080,7081,5,7143,7143,7,7150,7150,7,7212,7219,5,7380,7392,5,7412,7412,5,8203,8203,4,8232,8232,4,8265,8265,14,8400,8412,5,8421,8432,5,8617,8618,14,9167,9167,14,9200,9200,14,9410,9410,14,9723,9726,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9774,14,9786,9786,14,9794,9794,14,9823,9823,14,9828,9828,14,9833,9850,14,9855,9855,14,9875,9875,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9935,9935,14,9939,9939,14,9962,9962,14,9972,9972,14,9978,9978,14,9986,9986,14,9997,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10133,10135,14,10548,10549,14,11093,11093,14,12330,12333,5,12441,12442,5,42608,42610,5,43010,43010,5,43045,43046,5,43188,43203,7,43302,43309,5,43392,43394,5,43446,43449,5,43493,43493,5,43571,43572,7,43597,43597,7,43703,43704,5,43756,43757,5,44003,44004,7,44009,44010,7,44033,44059,12,44089,44115,12,44145,44171,12,44201,44227,12,44257,44283,12,44313,44339,12,44369,44395,12,44425,44451,12,44481,44507,12,44537,44563,12,44593,44619,12,44649,44675,12,44705,44731,12,44761,44787,12,44817,44843,12,44873,44899,12,44929,44955,12,44985,45011,12,45041,45067,12,45097,45123,12,45153,45179,12,45209,45235,12,45265,45291,12,45321,45347,12,45377,45403,12,45433,45459,12,45489,45515,12,45545,45571,12,45601,45627,12,45657,45683,12,45713,45739,12,45769,45795,12,45825,45851,12,45881,45907,12,45937,45963,12,45993,46019,12,46049,46075,12,46105,46131,12,46161,46187,12,46217,46243,12,46273,46299,12,46329,46355,12,46385,46411,12,46441,46467,12,46497,46523,12,46553,46579,12,46609,46635,12,46665,46691,12,46721,46747,12,46777,46803,12,46833,46859,12,46889,46915,12,46945,46971,12,47001,47027,12,47057,47083,12,47113,47139,12,47169,47195,12,47225,47251,12,47281,47307,12,47337,47363,12,47393,47419,12,47449,47475,12,47505,47531,12,47561,47587,12,47617,47643,12,47673,47699,12,47729,47755,12,47785,47811,12,47841,47867,12,47897,47923,12,47953,47979,12,48009,48035,12,48065,48091,12,48121,48147,12,48177,48203,12,48233,48259,12,48289,48315,12,48345,48371,12,48401,48427,12,48457,48483,12,48513,48539,12,48569,48595,12,48625,48651,12,48681,48707,12,48737,48763,12,48793,48819,12,48849,48875,12,48905,48931,12,48961,48987,12,49017,49043,12,49073,49099,12,49129,49155,12,49185,49211,12,49241,49267,12,49297,49323,12,49353,49379,12,49409,49435,12,49465,49491,12,49521,49547,12,49577,49603,12,49633,49659,12,49689,49715,12,49745,49771,12,49801,49827,12,49857,49883,12,49913,49939,12,49969,49995,12,50025,50051,12,50081,50107,12,50137,50163,12,50193,50219,12,50249,50275,12,50305,50331,12,50361,50387,12,50417,50443,12,50473,50499,12,50529,50555,12,50585,50611,12,50641,50667,12,50697,50723,12,50753,50779,12,50809,50835,12,50865,50891,12,50921,50947,12,50977,51003,12,51033,51059,12,51089,51115,12,51145,51171,12,51201,51227,12,51257,51283,12,51313,51339,12,51369,51395,12,51425,51451,12,51481,51507,12,51537,51563,12,51593,51619,12,51649,51675,12,51705,51731,12,51761,51787,12,51817,51843,12,51873,51899,12,51929,51955,12,51985,52011,12,52041,52067,12,52097,52123,12,52153,52179,12,52209,52235,12,52265,52291,12,52321,52347,12,52377,52403,12,52433,52459,12,52489,52515,12,52545,52571,12,52601,52627,12,52657,52683,12,52713,52739,12,52769,52795,12,52825,52851,12,52881,52907,12,52937,52963,12,52993,53019,12,53049,53075,12,53105,53131,12,53161,53187,12,53217,53243,12,53273,53299,12,53329,53355,12,53385,53411,12,53441,53467,12,53497,53523,12,53553,53579,12,53609,53635,12,53665,53691,12,53721,53747,12,53777,53803,12,53833,53859,12,53889,53915,12,53945,53971,12,54001,54027,12,54057,54083,12,54113,54139,12,54169,54195,12,54225,54251,12,54281,54307,12,54337,54363,12,54393,54419,12,54449,54475,12,54505,54531,12,54561,54587,12,54617,54643,12,54673,54699,12,54729,54755,12,54785,54811,12,54841,54867,12,54897,54923,12,54953,54979,12,55009,55035,12,55065,55091,12,55121,55147,12,55177,55203,12,65024,65039,5,65520,65528,4,66422,66426,5,68152,68154,5,69291,69292,5,69633,69633,5,69747,69748,5,69811,69814,5,69826,69826,5,69932,69932,7,70016,70017,5,70079,70080,7,70095,70095,5,70196,70196,5,70367,70367,5,70402,70403,7,70464,70464,5,70487,70487,5,70709,70711,7,70725,70725,7,70833,70834,7,70843,70844,7,70849,70849,7,71090,71093,5,71103,71104,5,71227,71228,7,71339,71339,5,71344,71349,5,71458,71461,5,71727,71735,5,71985,71989,7,71998,71998,5,72002,72002,7,72154,72155,5,72193,72202,5,72251,72254,5,72281,72283,5,72344,72345,5,72766,72766,7,72874,72880,5,72885,72886,5,73023,73029,5,73104,73105,5,73111,73111,5,92912,92916,5,94095,94098,5,113824,113827,4,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,125252,125258,5,127183,127183,14,127340,127343,14,127377,127386,14,127491,127503,14,127548,127551,14,127744,127756,14,127761,127761,14,127769,127769,14,127773,127774,14,127780,127788,14,127796,127797,14,127820,127823,14,127869,127869,14,127894,127895,14,127902,127903,14,127943,127943,14,127947,127950,14,127972,127972,14,127988,127988,14,127992,127994,14,128009,128011,14,128019,128019,14,128023,128041,14,128064,128064,14,128102,128107,14,128174,128181,14,128238,128238,14,128246,128247,14,128254,128254,14,128264,128264,14,128278,128299,14,128329,128330,14,128348,128359,14,128371,128377,14,128392,128393,14,128401,128404,14,128421,128421,14,128433,128434,14,128450,128452,14,128476,128478,14,128483,128483,14,128495,128495,14,128506,128506,14,128519,128520,14,128528,128528,14,128534,128534,14,128538,128538,14,128540,128542,14,128544,128549,14,128552,128555,14,128557,128557,14,128560,128563,14,128565,128565,14,128567,128576,14,128581,128591,14,128641,128642,14,128646,128646,14,128648,128648,14,128650,128651,14,128653,128653,14,128655,128655,14,128657,128659,14,128661,128661,14,128663,128663,14,128665,128666,14,128674,128674,14,128676,128677,14,128679,128685,14,128690,128690,14,128694,128694,14,128697,128702,14,128704,128704,14,128710,128714,14,128716,128716,14,128720,128720,14,128723,128724,14,128726,128727,14,128733,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129008,129008,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129661,129663,14,129667,129670,14,129680,129685,14,129705,129708,14,129712,129718,14,129723,129727,14,129731,129733,14,129744,129750,14,129754,129759,14,129768,129775,14,129783,129791,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2192,2193,1,2250,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3132,3132,5,3137,3140,7,3146,3149,5,3170,3171,5,3202,3203,7,3262,3262,7,3264,3265,7,3267,3268,7,3271,3272,7,3276,3277,5,3298,3299,5,3330,3331,7,3390,3390,5,3393,3396,5,3402,3404,7,3406,3406,1,3426,3427,5,3458,3459,7,3535,3535,5,3538,3540,5,3544,3550,7,3570,3571,7,3635,3635,7,3655,3662,5,3763,3763,7,3784,3789,5,3893,3893,5,3897,3897,5,3953,3966,5,3968,3972,5,3981,3991,5,4038,4038,5,4145,4145,7,4153,4154,5,4157,4158,5,4184,4185,5,4209,4212,5,4228,4228,7,4237,4237,5,4352,4447,8,4520,4607,10,5906,5908,5,5938,5939,5,5970,5971,5,6068,6069,5,6071,6077,5,6086,6086,5,6089,6099,5,6155,6157,5,6159,6159,5,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6862,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7679,5,8204,8204,5,8206,8207,4,8233,8233,4,8252,8252,14,8288,8292,4,8294,8303,4,8413,8416,5,8418,8420,5,8482,8482,14,8596,8601,14,8986,8987,14,9096,9096,14,9193,9196,14,9199,9199,14,9201,9202,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9729,14,9732,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9775,9775,14,9784,9785,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9874,14,9876,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9934,14,9936,9936,14,9938,9938,14,9940,9940,14,9961,9961,14,9963,9967,14,9970,9971,14,9973,9973,14,9975,9977,14,9979,9980,14,9982,9985,14,9987,9988,14,9992,9996,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10083,14,10085,10087,14,10145,10145,14,10175,10175,14,11013,11015,14,11088,11088,14,11503,11505,5,11744,11775,5,12334,12335,5,12349,12349,14,12951,12951,14,42607,42607,5,42612,42621,5,42736,42737,5,43014,43014,5,43043,43044,7,43047,43047,7,43136,43137,7,43204,43205,5,43263,43263,5,43335,43345,5,43360,43388,8,43395,43395,7,43444,43445,7,43450,43451,7,43454,43456,7,43561,43566,5,43569,43570,5,43573,43574,5,43596,43596,5,43644,43644,5,43698,43700,5,43710,43711,5,43755,43755,7,43758,43759,7,43766,43766,5,44005,44005,5,44008,44008,5,44012,44012,7,44032,44032,11,44060,44060,11,44088,44088,11,44116,44116,11,44144,44144,11,44172,44172,11,44200,44200,11,44228,44228,11,44256,44256,11,44284,44284,11,44312,44312,11,44340,44340,11,44368,44368,11,44396,44396,11,44424,44424,11,44452,44452,11,44480,44480,11,44508,44508,11,44536,44536,11,44564,44564,11,44592,44592,11,44620,44620,11,44648,44648,11,44676,44676,11,44704,44704,11,44732,44732,11,44760,44760,11,44788,44788,11,44816,44816,11,44844,44844,11,44872,44872,11,44900,44900,11,44928,44928,11,44956,44956,11,44984,44984,11,45012,45012,11,45040,45040,11,45068,45068,11,45096,45096,11,45124,45124,11,45152,45152,11,45180,45180,11,45208,45208,11,45236,45236,11,45264,45264,11,45292,45292,11,45320,45320,11,45348,45348,11,45376,45376,11,45404,45404,11,45432,45432,11,45460,45460,11,45488,45488,11,45516,45516,11,45544,45544,11,45572,45572,11,45600,45600,11,45628,45628,11,45656,45656,11,45684,45684,11,45712,45712,11,45740,45740,11,45768,45768,11,45796,45796,11,45824,45824,11,45852,45852,11,45880,45880,11,45908,45908,11,45936,45936,11,45964,45964,11,45992,45992,11,46020,46020,11,46048,46048,11,46076,46076,11,46104,46104,11,46132,46132,11,46160,46160,11,46188,46188,11,46216,46216,11,46244,46244,11,46272,46272,11,46300,46300,11,46328,46328,11,46356,46356,11,46384,46384,11,46412,46412,11,46440,46440,11,46468,46468,11,46496,46496,11,46524,46524,11,46552,46552,11,46580,46580,11,46608,46608,11,46636,46636,11,46664,46664,11,46692,46692,11,46720,46720,11,46748,46748,11,46776,46776,11,46804,46804,11,46832,46832,11,46860,46860,11,46888,46888,11,46916,46916,11,46944,46944,11,46972,46972,11,47000,47000,11,47028,47028,11,47056,47056,11,47084,47084,11,47112,47112,11,47140,47140,11,47168,47168,11,47196,47196,11,47224,47224,11,47252,47252,11,47280,47280,11,47308,47308,11,47336,47336,11,47364,47364,11,47392,47392,11,47420,47420,11,47448,47448,11,47476,47476,11,47504,47504,11,47532,47532,11,47560,47560,11,47588,47588,11,47616,47616,11,47644,47644,11,47672,47672,11,47700,47700,11,47728,47728,11,47756,47756,11,47784,47784,11,47812,47812,11,47840,47840,11,47868,47868,11,47896,47896,11,47924,47924,11,47952,47952,11,47980,47980,11,48008,48008,11,48036,48036,11,48064,48064,11,48092,48092,11,48120,48120,11,48148,48148,11,48176,48176,11,48204,48204,11,48232,48232,11,48260,48260,11,48288,48288,11,48316,48316,11,48344,48344,11,48372,48372,11,48400,48400,11,48428,48428,11,48456,48456,11,48484,48484,11,48512,48512,11,48540,48540,11,48568,48568,11,48596,48596,11,48624,48624,11,48652,48652,11,48680,48680,11,48708,48708,11,48736,48736,11,48764,48764,11,48792,48792,11,48820,48820,11,48848,48848,11,48876,48876,11,48904,48904,11,48932,48932,11,48960,48960,11,48988,48988,11,49016,49016,11,49044,49044,11,49072,49072,11,49100,49100,11,49128,49128,11,49156,49156,11,49184,49184,11,49212,49212,11,49240,49240,11,49268,49268,11,49296,49296,11,49324,49324,11,49352,49352,11,49380,49380,11,49408,49408,11,49436,49436,11,49464,49464,11,49492,49492,11,49520,49520,11,49548,49548,11,49576,49576,11,49604,49604,11,49632,49632,11,49660,49660,11,49688,49688,11,49716,49716,11,49744,49744,11,49772,49772,11,49800,49800,11,49828,49828,11,49856,49856,11,49884,49884,11,49912,49912,11,49940,49940,11,49968,49968,11,49996,49996,11,50024,50024,11,50052,50052,11,50080,50080,11,50108,50108,11,50136,50136,11,50164,50164,11,50192,50192,11,50220,50220,11,50248,50248,11,50276,50276,11,50304,50304,11,50332,50332,11,50360,50360,11,50388,50388,11,50416,50416,11,50444,50444,11,50472,50472,11,50500,50500,11,50528,50528,11,50556,50556,11,50584,50584,11,50612,50612,11,50640,50640,11,50668,50668,11,50696,50696,11,50724,50724,11,50752,50752,11,50780,50780,11,50808,50808,11,50836,50836,11,50864,50864,11,50892,50892,11,50920,50920,11,50948,50948,11,50976,50976,11,51004,51004,11,51032,51032,11,51060,51060,11,51088,51088,11,51116,51116,11,51144,51144,11,51172,51172,11,51200,51200,11,51228,51228,11,51256,51256,11,51284,51284,11,51312,51312,11,51340,51340,11,51368,51368,11,51396,51396,11,51424,51424,11,51452,51452,11,51480,51480,11,51508,51508,11,51536,51536,11,51564,51564,11,51592,51592,11,51620,51620,11,51648,51648,11,51676,51676,11,51704,51704,11,51732,51732,11,51760,51760,11,51788,51788,11,51816,51816,11,51844,51844,11,51872,51872,11,51900,51900,11,51928,51928,11,51956,51956,11,51984,51984,11,52012,52012,11,52040,52040,11,52068,52068,11,52096,52096,11,52124,52124,11,52152,52152,11,52180,52180,11,52208,52208,11,52236,52236,11,52264,52264,11,52292,52292,11,52320,52320,11,52348,52348,11,52376,52376,11,52404,52404,11,52432,52432,11,52460,52460,11,52488,52488,11,52516,52516,11,52544,52544,11,52572,52572,11,52600,52600,11,52628,52628,11,52656,52656,11,52684,52684,11,52712,52712,11,52740,52740,11,52768,52768,11,52796,52796,11,52824,52824,11,52852,52852,11,52880,52880,11,52908,52908,11,52936,52936,11,52964,52964,11,52992,52992,11,53020,53020,11,53048,53048,11,53076,53076,11,53104,53104,11,53132,53132,11,53160,53160,11,53188,53188,11,53216,53216,11,53244,53244,11,53272,53272,11,53300,53300,11,53328,53328,11,53356,53356,11,53384,53384,11,53412,53412,11,53440,53440,11,53468,53468,11,53496,53496,11,53524,53524,11,53552,53552,11,53580,53580,11,53608,53608,11,53636,53636,11,53664,53664,11,53692,53692,11,53720,53720,11,53748,53748,11,53776,53776,11,53804,53804,11,53832,53832,11,53860,53860,11,53888,53888,11,53916,53916,11,53944,53944,11,53972,53972,11,54000,54000,11,54028,54028,11,54056,54056,11,54084,54084,11,54112,54112,11,54140,54140,11,54168,54168,11,54196,54196,11,54224,54224,11,54252,54252,11,54280,54280,11,54308,54308,11,54336,54336,11,54364,54364,11,54392,54392,11,54420,54420,11,54448,54448,11,54476,54476,11,54504,54504,11,54532,54532,11,54560,54560,11,54588,54588,11,54616,54616,11,54644,54644,11,54672,54672,11,54700,54700,11,54728,54728,11,54756,54756,11,54784,54784,11,54812,54812,11,54840,54840,11,54868,54868,11,54896,54896,11,54924,54924,11,54952,54952,11,54980,54980,11,55008,55008,11,55036,55036,11,55064,55064,11,55092,55092,11,55120,55120,11,55148,55148,11,55176,55176,11,55216,55238,9,64286,64286,5,65056,65071,5,65438,65439,5,65529,65531,4,66272,66272,5,68097,68099,5,68108,68111,5,68159,68159,5,68900,68903,5,69446,69456,5,69632,69632,7,69634,69634,7,69744,69744,5,69759,69761,5,69808,69810,7,69815,69816,7,69821,69821,1,69837,69837,1,69927,69931,5,69933,69940,5,70003,70003,5,70018,70018,7,70070,70078,5,70082,70083,1,70094,70094,7,70188,70190,7,70194,70195,7,70197,70197,7,70206,70206,5,70368,70370,7,70400,70401,5,70459,70460,5,70463,70463,7,70465,70468,7,70475,70477,7,70498,70499,7,70512,70516,5,70712,70719,5,70722,70724,5,70726,70726,5,70832,70832,5,70835,70840,5,70842,70842,5,70845,70845,5,70847,70848,5,70850,70851,5,71088,71089,7,71096,71099,7,71102,71102,7,71132,71133,5,71219,71226,5,71229,71229,5,71231,71232,5,71340,71340,7,71342,71343,7,71350,71350,7,71453,71455,5,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,118528,118573,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123566,123566,5,125136,125142,5,126976,126979,14,126981,127182,14,127184,127231,14,127279,127279,14,127344,127345,14,127374,127374,14,127405,127461,14,127489,127490,14,127514,127514,14,127538,127546,14,127561,127567,14,127570,127743,14,127757,127758,14,127760,127760,14,127762,127762,14,127766,127768,14,127770,127770,14,127772,127772,14,127775,127776,14,127778,127779,14,127789,127791,14,127794,127795,14,127798,127798,14,127819,127819,14,127824,127824,14,127868,127868,14,127870,127871,14,127892,127893,14,127896,127896,14,127900,127901,14,127904,127940,14,127942,127942,14,127944,127944,14,127946,127946,14,127951,127955,14,127968,127971,14,127973,127984,14,127987,127987,14,127989,127989,14,127991,127991,14,127995,127999,5,128008,128008,14,128012,128014,14,128017,128018,14,128020,128020,14,128022,128022,14,128042,128042,14,128063,128063,14,128065,128065,14,128101,128101,14,128108,128109,14,128173,128173,14,128182,128183,14,128236,128237,14,128239,128239,14,128245,128245,14,128248,128248,14,128253,128253,14,128255,128258,14,128260,128263,14,128265,128265,14,128277,128277,14,128300,128301,14,128326,128328,14,128331,128334,14,128336,128347,14,128360,128366,14,128369,128370,14,128378,128378,14,128391,128391,14,128394,128397,14,128400,128400,14,128405,128406,14,128420,128420,14,128422,128423,14,128425,128432,14,128435,128443,14,128445,128449,14,128453,128464,14,128468,128475,14,128479,128480,14,128482,128482,14,128484,128487,14,128489,128494,14,128496,128498,14,128500,128505,14,128507,128511,14,128513,128518,14,128521,128525,14,128527,128527,14,128529,128529,14,128533,128533,14,128535,128535,14,128537,128537,14]")}getGraphemeBreakType(e){if(e<32)return 10===e?3:13===e?2:4;if(e<127)return 0;let t=this._data,i=t.length/3,n=1;for(;n<=i;)if(et[3*n+1]))return t[3*n+2];n=2*n+1}return 0}}og._INSTANCE=null;class op{static getInstance(e){return op.cache.get(Array.from(e))}static getLocales(){return op._locales.value}constructor(e){this.confusableDictionary=e}isAmbiguous(e){return this.confusableDictionary.has(e)}getPrimaryConfusable(e){return this.confusableDictionary.get(e)}getConfusableCodePoints(){return new Set(this.confusableDictionary.keys())}}op.ambiguousCharacterData=new rF(()=>JSON.parse('{"_common":[8232,32,8233,32,5760,32,8192,32,8193,32,8194,32,8195,32,8196,32,8197,32,8198,32,8200,32,8201,32,8202,32,8287,32,8199,32,8239,32,2042,95,65101,95,65102,95,65103,95,8208,45,8209,45,8210,45,65112,45,1748,45,8259,45,727,45,8722,45,10134,45,11450,45,1549,44,1643,44,8218,44,184,44,42233,44,894,59,2307,58,2691,58,1417,58,1795,58,1796,58,5868,58,65072,58,6147,58,6153,58,8282,58,1475,58,760,58,42889,58,8758,58,720,58,42237,58,451,33,11601,33,660,63,577,63,2429,63,5038,63,42731,63,119149,46,8228,46,1793,46,1794,46,42510,46,68176,46,1632,46,1776,46,42232,46,1373,96,65287,96,8219,96,8242,96,1370,96,1523,96,8175,96,65344,96,900,96,8189,96,8125,96,8127,96,8190,96,697,96,884,96,712,96,714,96,715,96,756,96,699,96,701,96,700,96,702,96,42892,96,1497,96,2036,96,2037,96,5194,96,5836,96,94033,96,94034,96,65339,91,10088,40,10098,40,12308,40,64830,40,65341,93,10089,41,10099,41,12309,41,64831,41,10100,123,119060,123,10101,125,65342,94,8270,42,1645,42,8727,42,66335,42,5941,47,8257,47,8725,47,8260,47,9585,47,10187,47,10744,47,119354,47,12755,47,12339,47,11462,47,20031,47,12035,47,65340,92,65128,92,8726,92,10189,92,10741,92,10745,92,119311,92,119355,92,12756,92,20022,92,12034,92,42872,38,708,94,710,94,5869,43,10133,43,66203,43,8249,60,10094,60,706,60,119350,60,5176,60,5810,60,5120,61,11840,61,12448,61,42239,61,8250,62,10095,62,707,62,119351,62,5171,62,94015,62,8275,126,732,126,8128,126,8764,126,65372,124,65293,45,120784,50,120794,50,120804,50,120814,50,120824,50,130034,50,42842,50,423,50,1000,50,42564,50,5311,50,42735,50,119302,51,120785,51,120795,51,120805,51,120815,51,120825,51,130035,51,42923,51,540,51,439,51,42858,51,11468,51,1248,51,94011,51,71882,51,120786,52,120796,52,120806,52,120816,52,120826,52,130036,52,5070,52,71855,52,120787,53,120797,53,120807,53,120817,53,120827,53,130037,53,444,53,71867,53,120788,54,120798,54,120808,54,120818,54,120828,54,130038,54,11474,54,5102,54,71893,54,119314,55,120789,55,120799,55,120809,55,120819,55,120829,55,130039,55,66770,55,71878,55,2819,56,2538,56,2666,56,125131,56,120790,56,120800,56,120810,56,120820,56,120830,56,130040,56,547,56,546,56,66330,56,2663,57,2920,57,2541,57,3437,57,120791,57,120801,57,120811,57,120821,57,120831,57,130041,57,42862,57,11466,57,71884,57,71852,57,71894,57,9082,97,65345,97,119834,97,119886,97,119938,97,119990,97,120042,97,120094,97,120146,97,120198,97,120250,97,120302,97,120354,97,120406,97,120458,97,593,97,945,97,120514,97,120572,97,120630,97,120688,97,120746,97,65313,65,119808,65,119860,65,119912,65,119964,65,120016,65,120068,65,120120,65,120172,65,120224,65,120276,65,120328,65,120380,65,120432,65,913,65,120488,65,120546,65,120604,65,120662,65,120720,65,5034,65,5573,65,42222,65,94016,65,66208,65,119835,98,119887,98,119939,98,119991,98,120043,98,120095,98,120147,98,120199,98,120251,98,120303,98,120355,98,120407,98,120459,98,388,98,5071,98,5234,98,5551,98,65314,66,8492,66,119809,66,119861,66,119913,66,120017,66,120069,66,120121,66,120173,66,120225,66,120277,66,120329,66,120381,66,120433,66,42932,66,914,66,120489,66,120547,66,120605,66,120663,66,120721,66,5108,66,5623,66,42192,66,66178,66,66209,66,66305,66,65347,99,8573,99,119836,99,119888,99,119940,99,119992,99,120044,99,120096,99,120148,99,120200,99,120252,99,120304,99,120356,99,120408,99,120460,99,7428,99,1010,99,11429,99,43951,99,66621,99,128844,67,71922,67,71913,67,65315,67,8557,67,8450,67,8493,67,119810,67,119862,67,119914,67,119966,67,120018,67,120174,67,120226,67,120278,67,120330,67,120382,67,120434,67,1017,67,11428,67,5087,67,42202,67,66210,67,66306,67,66581,67,66844,67,8574,100,8518,100,119837,100,119889,100,119941,100,119993,100,120045,100,120097,100,120149,100,120201,100,120253,100,120305,100,120357,100,120409,100,120461,100,1281,100,5095,100,5231,100,42194,100,8558,68,8517,68,119811,68,119863,68,119915,68,119967,68,120019,68,120071,68,120123,68,120175,68,120227,68,120279,68,120331,68,120383,68,120435,68,5024,68,5598,68,5610,68,42195,68,8494,101,65349,101,8495,101,8519,101,119838,101,119890,101,119942,101,120046,101,120098,101,120150,101,120202,101,120254,101,120306,101,120358,101,120410,101,120462,101,43826,101,1213,101,8959,69,65317,69,8496,69,119812,69,119864,69,119916,69,120020,69,120072,69,120124,69,120176,69,120228,69,120280,69,120332,69,120384,69,120436,69,917,69,120492,69,120550,69,120608,69,120666,69,120724,69,11577,69,5036,69,42224,69,71846,69,71854,69,66182,69,119839,102,119891,102,119943,102,119995,102,120047,102,120099,102,120151,102,120203,102,120255,102,120307,102,120359,102,120411,102,120463,102,43829,102,42905,102,383,102,7837,102,1412,102,119315,70,8497,70,119813,70,119865,70,119917,70,120021,70,120073,70,120125,70,120177,70,120229,70,120281,70,120333,70,120385,70,120437,70,42904,70,988,70,120778,70,5556,70,42205,70,71874,70,71842,70,66183,70,66213,70,66853,70,65351,103,8458,103,119840,103,119892,103,119944,103,120048,103,120100,103,120152,103,120204,103,120256,103,120308,103,120360,103,120412,103,120464,103,609,103,7555,103,397,103,1409,103,119814,71,119866,71,119918,71,119970,71,120022,71,120074,71,120126,71,120178,71,120230,71,120282,71,120334,71,120386,71,120438,71,1292,71,5056,71,5107,71,42198,71,65352,104,8462,104,119841,104,119945,104,119997,104,120049,104,120101,104,120153,104,120205,104,120257,104,120309,104,120361,104,120413,104,120465,104,1211,104,1392,104,5058,104,65320,72,8459,72,8460,72,8461,72,119815,72,119867,72,119919,72,120023,72,120179,72,120231,72,120283,72,120335,72,120387,72,120439,72,919,72,120494,72,120552,72,120610,72,120668,72,120726,72,11406,72,5051,72,5500,72,42215,72,66255,72,731,105,9075,105,65353,105,8560,105,8505,105,8520,105,119842,105,119894,105,119946,105,119998,105,120050,105,120102,105,120154,105,120206,105,120258,105,120310,105,120362,105,120414,105,120466,105,120484,105,618,105,617,105,953,105,8126,105,890,105,120522,105,120580,105,120638,105,120696,105,120754,105,1110,105,42567,105,1231,105,43893,105,5029,105,71875,105,65354,106,8521,106,119843,106,119895,106,119947,106,119999,106,120051,106,120103,106,120155,106,120207,106,120259,106,120311,106,120363,106,120415,106,120467,106,1011,106,1112,106,65322,74,119817,74,119869,74,119921,74,119973,74,120025,74,120077,74,120129,74,120181,74,120233,74,120285,74,120337,74,120389,74,120441,74,42930,74,895,74,1032,74,5035,74,5261,74,42201,74,119844,107,119896,107,119948,107,120000,107,120052,107,120104,107,120156,107,120208,107,120260,107,120312,107,120364,107,120416,107,120468,107,8490,75,65323,75,119818,75,119870,75,119922,75,119974,75,120026,75,120078,75,120130,75,120182,75,120234,75,120286,75,120338,75,120390,75,120442,75,922,75,120497,75,120555,75,120613,75,120671,75,120729,75,11412,75,5094,75,5845,75,42199,75,66840,75,1472,108,8739,73,9213,73,65512,73,1633,108,1777,73,66336,108,125127,108,120783,73,120793,73,120803,73,120813,73,120823,73,130033,73,65321,73,8544,73,8464,73,8465,73,119816,73,119868,73,119920,73,120024,73,120128,73,120180,73,120232,73,120284,73,120336,73,120388,73,120440,73,65356,108,8572,73,8467,108,119845,108,119897,108,119949,108,120001,108,120053,108,120105,73,120157,73,120209,73,120261,73,120313,73,120365,73,120417,73,120469,73,448,73,120496,73,120554,73,120612,73,120670,73,120728,73,11410,73,1030,73,1216,73,1493,108,1503,108,1575,108,126464,108,126592,108,65166,108,65165,108,1994,108,11599,73,5825,73,42226,73,93992,73,66186,124,66313,124,119338,76,8556,76,8466,76,119819,76,119871,76,119923,76,120027,76,120079,76,120131,76,120183,76,120235,76,120287,76,120339,76,120391,76,120443,76,11472,76,5086,76,5290,76,42209,76,93974,76,71843,76,71858,76,66587,76,66854,76,65325,77,8559,77,8499,77,119820,77,119872,77,119924,77,120028,77,120080,77,120132,77,120184,77,120236,77,120288,77,120340,77,120392,77,120444,77,924,77,120499,77,120557,77,120615,77,120673,77,120731,77,1018,77,11416,77,5047,77,5616,77,5846,77,42207,77,66224,77,66321,77,119847,110,119899,110,119951,110,120003,110,120055,110,120107,110,120159,110,120211,110,120263,110,120315,110,120367,110,120419,110,120471,110,1400,110,1404,110,65326,78,8469,78,119821,78,119873,78,119925,78,119977,78,120029,78,120081,78,120185,78,120237,78,120289,78,120341,78,120393,78,120445,78,925,78,120500,78,120558,78,120616,78,120674,78,120732,78,11418,78,42208,78,66835,78,3074,111,3202,111,3330,111,3458,111,2406,111,2662,111,2790,111,3046,111,3174,111,3302,111,3430,111,3664,111,3792,111,4160,111,1637,111,1781,111,65359,111,8500,111,119848,111,119900,111,119952,111,120056,111,120108,111,120160,111,120212,111,120264,111,120316,111,120368,111,120420,111,120472,111,7439,111,7441,111,43837,111,959,111,120528,111,120586,111,120644,111,120702,111,120760,111,963,111,120532,111,120590,111,120648,111,120706,111,120764,111,11423,111,4351,111,1413,111,1505,111,1607,111,126500,111,126564,111,126596,111,65259,111,65260,111,65258,111,65257,111,1726,111,64428,111,64429,111,64427,111,64426,111,1729,111,64424,111,64425,111,64423,111,64422,111,1749,111,3360,111,4125,111,66794,111,71880,111,71895,111,66604,111,1984,79,2534,79,2918,79,12295,79,70864,79,71904,79,120782,79,120792,79,120802,79,120812,79,120822,79,130032,79,65327,79,119822,79,119874,79,119926,79,119978,79,120030,79,120082,79,120134,79,120186,79,120238,79,120290,79,120342,79,120394,79,120446,79,927,79,120502,79,120560,79,120618,79,120676,79,120734,79,11422,79,1365,79,11604,79,4816,79,2848,79,66754,79,42227,79,71861,79,66194,79,66219,79,66564,79,66838,79,9076,112,65360,112,119849,112,119901,112,119953,112,120005,112,120057,112,120109,112,120161,112,120213,112,120265,112,120317,112,120369,112,120421,112,120473,112,961,112,120530,112,120544,112,120588,112,120602,112,120646,112,120660,112,120704,112,120718,112,120762,112,120776,112,11427,112,65328,80,8473,80,119823,80,119875,80,119927,80,119979,80,120031,80,120083,80,120187,80,120239,80,120291,80,120343,80,120395,80,120447,80,929,80,120504,80,120562,80,120620,80,120678,80,120736,80,11426,80,5090,80,5229,80,42193,80,66197,80,119850,113,119902,113,119954,113,120006,113,120058,113,120110,113,120162,113,120214,113,120266,113,120318,113,120370,113,120422,113,120474,113,1307,113,1379,113,1382,113,8474,81,119824,81,119876,81,119928,81,119980,81,120032,81,120084,81,120188,81,120240,81,120292,81,120344,81,120396,81,120448,81,11605,81,119851,114,119903,114,119955,114,120007,114,120059,114,120111,114,120163,114,120215,114,120267,114,120319,114,120371,114,120423,114,120475,114,43847,114,43848,114,7462,114,11397,114,43905,114,119318,82,8475,82,8476,82,8477,82,119825,82,119877,82,119929,82,120033,82,120189,82,120241,82,120293,82,120345,82,120397,82,120449,82,422,82,5025,82,5074,82,66740,82,5511,82,42211,82,94005,82,65363,115,119852,115,119904,115,119956,115,120008,115,120060,115,120112,115,120164,115,120216,115,120268,115,120320,115,120372,115,120424,115,120476,115,42801,115,445,115,1109,115,43946,115,71873,115,66632,115,65331,83,119826,83,119878,83,119930,83,119982,83,120034,83,120086,83,120138,83,120190,83,120242,83,120294,83,120346,83,120398,83,120450,83,1029,83,1359,83,5077,83,5082,83,42210,83,94010,83,66198,83,66592,83,119853,116,119905,116,119957,116,120009,116,120061,116,120113,116,120165,116,120217,116,120269,116,120321,116,120373,116,120425,116,120477,116,8868,84,10201,84,128872,84,65332,84,119827,84,119879,84,119931,84,119983,84,120035,84,120087,84,120139,84,120191,84,120243,84,120295,84,120347,84,120399,84,120451,84,932,84,120507,84,120565,84,120623,84,120681,84,120739,84,11430,84,5026,84,42196,84,93962,84,71868,84,66199,84,66225,84,66325,84,119854,117,119906,117,119958,117,120010,117,120062,117,120114,117,120166,117,120218,117,120270,117,120322,117,120374,117,120426,117,120478,117,42911,117,7452,117,43854,117,43858,117,651,117,965,117,120534,117,120592,117,120650,117,120708,117,120766,117,1405,117,66806,117,71896,117,8746,85,8899,85,119828,85,119880,85,119932,85,119984,85,120036,85,120088,85,120140,85,120192,85,120244,85,120296,85,120348,85,120400,85,120452,85,1357,85,4608,85,66766,85,5196,85,42228,85,94018,85,71864,85,8744,118,8897,118,65366,118,8564,118,119855,118,119907,118,119959,118,120011,118,120063,118,120115,118,120167,118,120219,118,120271,118,120323,118,120375,118,120427,118,120479,118,7456,118,957,118,120526,118,120584,118,120642,118,120700,118,120758,118,1141,118,1496,118,71430,118,43945,118,71872,118,119309,86,1639,86,1783,86,8548,86,119829,86,119881,86,119933,86,119985,86,120037,86,120089,86,120141,86,120193,86,120245,86,120297,86,120349,86,120401,86,120453,86,1140,86,11576,86,5081,86,5167,86,42719,86,42214,86,93960,86,71840,86,66845,86,623,119,119856,119,119908,119,119960,119,120012,119,120064,119,120116,119,120168,119,120220,119,120272,119,120324,119,120376,119,120428,119,120480,119,7457,119,1121,119,1309,119,1377,119,71434,119,71438,119,71439,119,43907,119,71919,87,71910,87,119830,87,119882,87,119934,87,119986,87,120038,87,120090,87,120142,87,120194,87,120246,87,120298,87,120350,87,120402,87,120454,87,1308,87,5043,87,5076,87,42218,87,5742,120,10539,120,10540,120,10799,120,65368,120,8569,120,119857,120,119909,120,119961,120,120013,120,120065,120,120117,120,120169,120,120221,120,120273,120,120325,120,120377,120,120429,120,120481,120,5441,120,5501,120,5741,88,9587,88,66338,88,71916,88,65336,88,8553,88,119831,88,119883,88,119935,88,119987,88,120039,88,120091,88,120143,88,120195,88,120247,88,120299,88,120351,88,120403,88,120455,88,42931,88,935,88,120510,88,120568,88,120626,88,120684,88,120742,88,11436,88,11613,88,5815,88,42219,88,66192,88,66228,88,66327,88,66855,88,611,121,7564,121,65369,121,119858,121,119910,121,119962,121,120014,121,120066,121,120118,121,120170,121,120222,121,120274,121,120326,121,120378,121,120430,121,120482,121,655,121,7935,121,43866,121,947,121,8509,121,120516,121,120574,121,120632,121,120690,121,120748,121,1199,121,4327,121,71900,121,65337,89,119832,89,119884,89,119936,89,119988,89,120040,89,120092,89,120144,89,120196,89,120248,89,120300,89,120352,89,120404,89,120456,89,933,89,978,89,120508,89,120566,89,120624,89,120682,89,120740,89,11432,89,1198,89,5033,89,5053,89,42220,89,94019,89,71844,89,66226,89,119859,122,119911,122,119963,122,120015,122,120067,122,120119,122,120171,122,120223,122,120275,122,120327,122,120379,122,120431,122,120483,122,7458,122,43923,122,71876,122,66293,90,71909,90,65338,90,8484,90,8488,90,119833,90,119885,90,119937,90,119989,90,120041,90,120197,90,120249,90,120301,90,120353,90,120405,90,120457,90,918,90,120493,90,120551,90,120609,90,120667,90,120725,90,5059,90,42204,90,71849,90,65282,34,65284,36,65285,37,65286,38,65290,42,65291,43,65294,46,65295,47,65296,48,65297,49,65298,50,65299,51,65300,52,65301,53,65302,54,65303,55,65304,56,65305,57,65308,60,65309,61,65310,62,65312,64,65316,68,65318,70,65319,71,65324,76,65329,81,65330,82,65333,85,65334,86,65335,87,65343,95,65346,98,65348,100,65350,102,65355,107,65357,109,65358,110,65361,113,65362,114,65364,116,65365,117,65367,119,65370,122,65371,123,65373,125,119846,109],"_default":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"cs":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"de":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"es":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"fr":[65374,126,65306,58,65281,33,8216,96,8245,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"it":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"ja":[8211,45,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65292,44,65307,59],"ko":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"pl":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"pt-BR":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"qps-ploc":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"ru":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,305,105,921,73,1009,112,215,120,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"tr":[160,32,8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"zh-hans":[65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41],"zh-hant":[8211,45,65374,126,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65307,59]}')),op.cache=new class{constructor(e){this.fn=e,this.lastCache=void 0,this.lastArgKey=void 0}get(e){let t=JSON.stringify(e);return this.lastArgKey!==t&&(this.lastArgKey=t,this.lastCache=this.fn(e)),this.lastCache}}(e=>{let t;function i(e){let t=new Map;for(let i=0;i!e.startsWith("_")&&e in n);for(let e of(0===r.length&&(r=["_default"]),r)){let r=i(n[e]);t=function(e,t){if(!e)return t;let i=new Map;for(let[n,r]of e)t.has(n)&&i.set(n,r);return i}(t,r)}let o=i(n._common),s=function(e,t){let i=new Map(e);for(let[e,n]of t)i.set(e,n);return i}(o,t);return new op(s)}),op._locales=new rF(()=>Object.keys(op.ambiguousCharacterData.value).filter(e=>!e.startsWith("_")));class om{static getRawData(){return JSON.parse("[9,10,11,12,13,32,127,160,173,847,1564,4447,4448,6068,6069,6155,6156,6157,6158,7355,7356,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8234,8235,8236,8237,8238,8239,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,10240,12288,12644,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65279,65440,65520,65521,65522,65523,65524,65525,65526,65527,65528,65532,78844,119155,119156,119157,119158,119159,119160,119161,119162,917504,917505,917506,917507,917508,917509,917510,917511,917512,917513,917514,917515,917516,917517,917518,917519,917520,917521,917522,917523,917524,917525,917526,917527,917528,917529,917530,917531,917532,917533,917534,917535,917536,917537,917538,917539,917540,917541,917542,917543,917544,917545,917546,917547,917548,917549,917550,917551,917552,917553,917554,917555,917556,917557,917558,917559,917560,917561,917562,917563,917564,917565,917566,917567,917568,917569,917570,917571,917572,917573,917574,917575,917576,917577,917578,917579,917580,917581,917582,917583,917584,917585,917586,917587,917588,917589,917590,917591,917592,917593,917594,917595,917596,917597,917598,917599,917600,917601,917602,917603,917604,917605,917606,917607,917608,917609,917610,917611,917612,917613,917614,917615,917616,917617,917618,917619,917620,917621,917622,917623,917624,917625,917626,917627,917628,917629,917630,917631,917760,917761,917762,917763,917764,917765,917766,917767,917768,917769,917770,917771,917772,917773,917774,917775,917776,917777,917778,917779,917780,917781,917782,917783,917784,917785,917786,917787,917788,917789,917790,917791,917792,917793,917794,917795,917796,917797,917798,917799,917800,917801,917802,917803,917804,917805,917806,917807,917808,917809,917810,917811,917812,917813,917814,917815,917816,917817,917818,917819,917820,917821,917822,917823,917824,917825,917826,917827,917828,917829,917830,917831,917832,917833,917834,917835,917836,917837,917838,917839,917840,917841,917842,917843,917844,917845,917846,917847,917848,917849,917850,917851,917852,917853,917854,917855,917856,917857,917858,917859,917860,917861,917862,917863,917864,917865,917866,917867,917868,917869,917870,917871,917872,917873,917874,917875,917876,917877,917878,917879,917880,917881,917882,917883,917884,917885,917886,917887,917888,917889,917890,917891,917892,917893,917894,917895,917896,917897,917898,917899,917900,917901,917902,917903,917904,917905,917906,917907,917908,917909,917910,917911,917912,917913,917914,917915,917916,917917,917918,917919,917920,917921,917922,917923,917924,917925,917926,917927,917928,917929,917930,917931,917932,917933,917934,917935,917936,917937,917938,917939,917940,917941,917942,917943,917944,917945,917946,917947,917948,917949,917950,917951,917952,917953,917954,917955,917956,917957,917958,917959,917960,917961,917962,917963,917964,917965,917966,917967,917968,917969,917970,917971,917972,917973,917974,917975,917976,917977,917978,917979,917980,917981,917982,917983,917984,917985,917986,917987,917988,917989,917990,917991,917992,917993,917994,917995,917996,917997,917998,917999]")}static getData(){return this._data||(this._data=new Set(om.getRawData())),this._data}static isInvisibleCharacter(e){return om.getData().has(e)}static get codePoints(){return om.getData()}}om._data=void 0;class o_{constructor(){this._zoomFactor=1}getZoomFactor(){return this._zoomFactor}}o_.INSTANCE=new o_;class oE extends nc{constructor(){super(),this._onDidChange=this._register(new ny),this.onDidChange=this._onDidChange.event,this._listener=()=>this._handleChange(!0),this._mediaQueryList=null,this._handleChange(!1)}_handleChange(e){var t;null===(t=this._mediaQueryList)||void 0===t||t.removeEventListener("change",this._listener),this._mediaQueryList=window.matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`),this._mediaQueryList.addEventListener("change",this._listener),e&&this._onDidChange.fire()}}class ov extends nc{get value(){return this._value}constructor(){super(),this._onDidChange=this._register(new ny),this.onDidChange=this._onDidChange.event,this._value=this._getPixelRatio();let e=this._register(new oE);this._register(e.onDidChange(()=>{this._value=this._getPixelRatio(),this._onDidChange.fire(this._value)}))}_getPixelRatio(){let e=document.createElement("canvas").getContext("2d"),t=window.devicePixelRatio||1,i=e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1;return t/i}}function ob(e,t){"string"==typeof e&&(e=window.matchMedia(e)),e.addEventListener("change",t)}let oC=new class{constructor(){this._pixelRatioMonitor=null}_getOrCreatePixelRatioMonitor(){return this._pixelRatioMonitor||(this._pixelRatioMonitor=new ov),this._pixelRatioMonitor}get value(){return this._getOrCreatePixelRatioMonitor().value}get onDidChange(){return this._getOrCreatePixelRatioMonitor().onDidChange}},oS=navigator.userAgent,oy=oS.indexOf("Firefox")>=0,oT=oS.indexOf("AppleWebKit")>=0,oR=oS.indexOf("Chrome")>=0,oA=!oR&&oS.indexOf("Safari")>=0,oN=!oR&&!oA&&oT;oS.indexOf("Electron/");let oO=oS.indexOf("Android")>=0,oL=!1;if(window.matchMedia){let e=window.matchMedia("(display-mode: standalone) or (display-mode: window-controls-overlay)"),t=window.matchMedia("(display-mode: fullscreen)");oL=e.matches,ob(e,({matches:e})=>{oL&&t.matches||(oL=e)})}class oI{constructor(e){this.domNode=e,this._maxWidth="",this._width="",this._height="",this._top="",this._left="",this._bottom="",this._right="",this._paddingLeft="",this._fontFamily="",this._fontWeight="",this._fontSize="",this._fontStyle="",this._fontFeatureSettings="",this._fontVariationSettings="",this._textDecoration="",this._lineHeight="",this._letterSpacing="",this._className="",this._display="",this._position="",this._visibility="",this._color="",this._backgroundColor="",this._layerHint=!1,this._contain="none",this._boxShadow=""}setMaxWidth(e){let t=ow(e);this._maxWidth!==t&&(this._maxWidth=t,this.domNode.style.maxWidth=this._maxWidth)}setWidth(e){let t=ow(e);this._width!==t&&(this._width=t,this.domNode.style.width=this._width)}setHeight(e){let t=ow(e);this._height!==t&&(this._height=t,this.domNode.style.height=this._height)}setTop(e){let t=ow(e);this._top!==t&&(this._top=t,this.domNode.style.top=this._top)}setLeft(e){let t=ow(e);this._left!==t&&(this._left=t,this.domNode.style.left=this._left)}setBottom(e){let t=ow(e);this._bottom!==t&&(this._bottom=t,this.domNode.style.bottom=this._bottom)}setRight(e){let t=ow(e);this._right!==t&&(this._right=t,this.domNode.style.right=this._right)}setPaddingLeft(e){let t=ow(e);this._paddingLeft!==t&&(this._paddingLeft=t,this.domNode.style.paddingLeft=this._paddingLeft)}setFontFamily(e){this._fontFamily!==e&&(this._fontFamily=e,this.domNode.style.fontFamily=this._fontFamily)}setFontWeight(e){this._fontWeight!==e&&(this._fontWeight=e,this.domNode.style.fontWeight=this._fontWeight)}setFontSize(e){let t=ow(e);this._fontSize!==t&&(this._fontSize=t,this.domNode.style.fontSize=this._fontSize)}setFontStyle(e){this._fontStyle!==e&&(this._fontStyle=e,this.domNode.style.fontStyle=this._fontStyle)}setFontFeatureSettings(e){this._fontFeatureSettings!==e&&(this._fontFeatureSettings=e,this.domNode.style.fontFeatureSettings=this._fontFeatureSettings)}setFontVariationSettings(e){this._fontVariationSettings!==e&&(this._fontVariationSettings=e,this.domNode.style.fontVariationSettings=this._fontVariationSettings)}setTextDecoration(e){this._textDecoration!==e&&(this._textDecoration=e,this.domNode.style.textDecoration=this._textDecoration)}setLineHeight(e){let t=ow(e);this._lineHeight!==t&&(this._lineHeight=t,this.domNode.style.lineHeight=this._lineHeight)}setLetterSpacing(e){let t=ow(e);this._letterSpacing!==t&&(this._letterSpacing=t,this.domNode.style.letterSpacing=this._letterSpacing)}setClassName(e){this._className!==e&&(this._className=e,this.domNode.className=this._className)}toggleClassName(e,t){this.domNode.classList.toggle(e,t),this._className=this.domNode.className}setDisplay(e){this._display!==e&&(this._display=e,this.domNode.style.display=this._display)}setPosition(e){this._position!==e&&(this._position=e,this.domNode.style.position=this._position)}setVisibility(e){this._visibility!==e&&(this._visibility=e,this.domNode.style.visibility=this._visibility)}setColor(e){this._color!==e&&(this._color=e,this.domNode.style.color=this._color)}setBackgroundColor(e){this._backgroundColor!==e&&(this._backgroundColor=e,this.domNode.style.backgroundColor=this._backgroundColor)}setLayerHinting(e){this._layerHint!==e&&(this._layerHint=e,this.domNode.style.transform=this._layerHint?"translate3d(0px, 0px, 0px)":"")}setBoxShadow(e){this._boxShadow!==e&&(this._boxShadow=e,this.domNode.style.boxShadow=e)}setContain(e){this._contain!==e&&(this._contain=e,this.domNode.style.contain=this._contain)}setAttribute(e,t){this.domNode.setAttribute(e,t)}removeAttribute(e){this.domNode.removeAttribute(e)}appendChild(e){this.domNode.appendChild(e.domNode)}removeChild(e){this.domNode.removeChild(e.domNode)}}function ow(e){return"number"==typeof e?`${e}px`:e}function oD(e){return new oI(e)}function ox(e,t){e instanceof oI?(e.setFontFamily(t.getMassagedFontFamily()),e.setFontWeight(t.fontWeight),e.setFontSize(t.fontSize),e.setFontFeatureSettings(t.fontFeatureSettings),e.setFontVariationSettings(t.fontVariationSettings),e.setLineHeight(t.lineHeight),e.setLetterSpacing(t.letterSpacing)):(e.style.fontFamily=t.getMassagedFontFamily(),e.style.fontWeight=t.fontWeight,e.style.fontSize=t.fontSize+"px",e.style.fontFeatureSettings=t.fontFeatureSettings,e.style.fontVariationSettings=t.fontVariationSettings,e.style.lineHeight=t.lineHeight+"px",e.style.letterSpacing=t.letterSpacing+"px")}class oM{constructor(e,t){this.chr=e,this.type=t,this.width=0}fulfill(e){this.width=e}}class ok{constructor(e,t){this._bareFontInfo=e,this._requests=t,this._container=null,this._testElements=null}read(){this._createDomElements(),document.body.appendChild(this._container),this._readFromDomElements(),document.body.removeChild(this._container),this._container=null,this._testElements=null}_createDomElements(){let e=document.createElement("div");e.style.position="absolute",e.style.top="-50000px",e.style.width="50000px";let t=document.createElement("div");ox(t,this._bareFontInfo),e.appendChild(t);let i=document.createElement("div");ox(i,this._bareFontInfo),i.style.fontWeight="bold",e.appendChild(i);let n=document.createElement("div");ox(n,this._bareFontInfo),n.style.fontStyle="italic",e.appendChild(n);let r=[];for(let e of this._requests){let o;0===e.type&&(o=t),2===e.type&&(o=i),1===e.type&&(o=n),o.appendChild(document.createElement("br"));let s=document.createElement("span");ok._render(s,e),o.appendChild(s),r.push(s)}this._container=e,this._testElements=r}static _render(e,t){if(" "===t.chr){let t="\xa0";for(let e=0;e<8;e++)t+=t;e.innerText=t}else{let i=t.chr;for(let e=0;e<8;e++)i+=i;e.textContent=i}}_readFromDomElements(){for(let e=0,t=this._requests.length;ethis._values[e])}}let oV=new class extends nc{constructor(){super(),this._onDidChange=this._register(new ny),this.onDidChange=this._onDidChange.event,this._cache=new oH,this._evictUntrustedReadingsTimeout=-1}dispose(){-1!==this._evictUntrustedReadingsTimeout&&(window.clearTimeout(this._evictUntrustedReadingsTimeout),this._evictUntrustedReadingsTimeout=-1),super.dispose()}clearAllFontInfos(){this._cache=new oH,this._onDidChange.fire()}_writeToCache(e,t){this._cache.put(e,t),t.isTrusted||-1!==this._evictUntrustedReadingsTimeout||(this._evictUntrustedReadingsTimeout=window.setTimeout(()=>{this._evictUntrustedReadingsTimeout=-1,this._evictUntrustedReadings()},5e3))}_evictUntrustedReadings(){let e=this._cache.getValues(),t=!1;for(let i of e)i.isTrusted||(t=!0,this._cache.remove(i));t&&this._onDidChange.fire()}readFontInfo(e){if(!this._cache.has(e)){let t=this._actualReadFontInfo(e);(t.typicalHalfwidthCharacterWidth<=2||t.typicalFullwidthCharacterWidth<=2||t.spaceWidth<=2||t.maxDigitWidth<=2)&&(t=new oU({pixelRatio:oC.value,fontFamily:t.fontFamily,fontWeight:t.fontWeight,fontSize:t.fontSize,fontFeatureSettings:t.fontFeatureSettings,fontVariationSettings:t.fontVariationSettings,lineHeight:t.lineHeight,letterSpacing:t.letterSpacing,isMonospace:t.isMonospace,typicalHalfwidthCharacterWidth:Math.max(t.typicalHalfwidthCharacterWidth,5),typicalFullwidthCharacterWidth:Math.max(t.typicalFullwidthCharacterWidth,5),canUseHalfwidthRightwardsArrow:t.canUseHalfwidthRightwardsArrow,spaceWidth:Math.max(t.spaceWidth,5),middotWidth:Math.max(t.middotWidth,5),wsmiddotWidth:Math.max(t.wsmiddotWidth,5),maxDigitWidth:Math.max(t.maxDigitWidth,5)},!1)),this._writeToCache(e,t)}return this._cache.get(e)}_createRequest(e,t,i,n){let r=new oM(e,t);return i.push(r),null==n||n.push(r),r}_actualReadFontInfo(e){let t=[],i=[],n=this._createRequest("n",0,t,i),r=this._createRequest("m",0,t,null),o=this._createRequest(" ",0,t,i),s=this._createRequest("0",0,t,i),a=this._createRequest("1",0,t,i),l=this._createRequest("2",0,t,i),h=this._createRequest("3",0,t,i),u=this._createRequest("4",0,t,i),d=this._createRequest("5",0,t,i),c=this._createRequest("6",0,t,i),f=this._createRequest("7",0,t,i),g=this._createRequest("8",0,t,i),p=this._createRequest("9",0,t,i),m=this._createRequest("→",0,t,i),_=this._createRequest("→",0,t,null),E=this._createRequest("\xb7",0,t,i),v=this._createRequest(String.fromCharCode(11825),0,t,null),b="|/-_ilm%";for(let e=0,n=b.length;e.001){S=!1;break}}let T=!0;return S&&_.width!==y&&(T=!1),_.width>m.width&&(T=!1),new oU({pixelRatio:oC.value,fontFamily:e.fontFamily,fontWeight:e.fontWeight,fontSize:e.fontSize,fontFeatureSettings:e.fontFeatureSettings,fontVariationSettings:e.fontVariationSettings,lineHeight:e.lineHeight,letterSpacing:e.letterSpacing,isMonospace:S,typicalHalfwidthCharacterWidth:n.width,typicalFullwidthCharacterWidth:r.width,canUseHalfwidthRightwardsArrow:T,spaceWidth:o.width,middotWidth:E.width,wsmiddotWidth:v.width,maxDigitWidth:C},!0)}};(ef=tY||(tY={})).serviceIds=new Map,ef.DI_TARGET="$di$target",ef.DI_DEPENDENCIES="$di$dependencies",ef.getServiceDependencies=function(e){return e[ef.DI_DEPENDENCIES]||[]};let oW=oG("instantiationService");function oG(e){if(tY.serviceIds.has(e))return tY.serviceIds.get(e);let t=function(e,i,n){if(3!=arguments.length)throw Error("@IServiceName-decorator can only be used to decorate a parameter");e[tY.DI_TARGET]===e?e[tY.DI_DEPENDENCIES].push({id:t,index:n}):(e[tY.DI_DEPENDENCIES]=[{id:t,index:n}],e[tY.DI_TARGET]=e)};return t.toString=()=>e,tY.serviceIds.set(e,t),t}let oj=oG("codeEditorService");function oz(e,t){if(!e)throw Error(t?`Assertion failed (${t})`:"Assertion Failed")}function oK(e,t="Unreachable"){throw Error(t)}function oY(e){e()||(e(),i1(new nt("Assertion Failed")))}function o$(e,t){let i=0;for(;i\-\./\\:\*\?\+\[\]\^,#@;"%\$\p{L}-]+/uy}static getLexeme(e){switch(e.type){case 0:return"(";case 1:return")";case 2:return"!";case 3:return e.isTripleEq?"===":"==";case 4:return e.isTripleEq?"!==":"!=";case 5:return"<";case 6:return"<=";case 7:case 8:return">=";case 9:return"=~";case 10:case 17:case 18:case 19:return e.lexeme;case 11:return"true";case 12:return"false";case 13:return"in";case 14:return"not";case 15:return"&&";case 16:return"||";case 20:return"EOF";default:throw i8(`unhandled token type: ${JSON.stringify(e)}; have you forgotten to add a case?`)}}reset(e){return this._input=e,this._start=0,this._current=0,this._tokens=[],this._errors=[],this}scan(){for(;!this._isAtEnd();){this._start=this._current;let e=this._advance();switch(e){case 40:this._addToken(0);break;case 41:this._addToken(1);break;case 33:if(this._match(61)){let e=this._match(61);this._tokens.push({type:4,offset:this._start,isTripleEq:e})}else this._addToken(2);break;case 39:this._quotedString();break;case 47:this._regex();break;case 61:if(this._match(61)){let e=this._match(61);this._tokens.push({type:3,offset:this._start,isTripleEq:e})}else this._match(126)?this._addToken(9):this._error(o0("==","=~"));break;case 60:this._addToken(this._match(61)?6:5);break;case 62:this._addToken(this._match(61)?8:7);break;case 38:this._match(38)?this._addToken(15):this._error(o0("&&"));break;case 124:this._match(124)?this._addToken(16):this._error(o0("||"));break;case 32:case 13:case 9:case 10:case 160:break;default:this._string()}}return this._start=this._current,this._addToken(20),Array.from(this._tokens)}_match(e){return!this._isAtEnd()&&this._input.charCodeAt(this._current)===e&&(this._current++,!0)}_advance(){return this._input.charCodeAt(this._current++)}_peek(){return this._isAtEnd()?0:this._input.charCodeAt(this._current)}_addToken(e){this._tokens.push({type:e,offset:this._start})}_error(e){let t=this._start,i=this._input.substring(this._start,this._current),n={type:19,offset:this._start,lexeme:i};this._errors.push({offset:t,lexeme:i,additionalInfo:e}),this._tokens.push(n)}_string(){this.stringRe.lastIndex=this._start;let e=this.stringRe.exec(this._input);if(e){this._current=this._start+e[0].length;let t=this._input.substring(this._start,this._current),i=o5._keywords.get(t);i?this._addToken(i):this._tokens.push({type:17,lexeme:t,offset:this._start})}}_quotedString(){for(;39!==this._peek()&&!this._isAtEnd();)this._advance();if(this._isAtEnd()){this._error(o1);return}this._advance(),this._tokens.push({type:18,lexeme:this._input.substring(this._start+1,this._current-1),offset:this._start+1})}_regex(){let e=this._current,t=!1,i=!1;for(;;){if(e>=this._input.length){this._current=e,this._error(o2);return}let n=this._input.charCodeAt(e);if(t)t=!1;else if(47!==n||i)91===n?i=!0:92===n?t=!0:93===n&&(i=!1);else{e++;break}e++}for(;e=this._input.length}}o5._regexFlags=new Set(["i","g","s","m","y","u"].map(e=>e.charCodeAt(0))),o5._keywords=new Map([["not",14],["in",13],["false",12],["true",11]]);let o4=new Map;o4.set("false",!1),o4.set("true",!0),o4.set("isMac",nz.dz),o4.set("isLinux",nz.IJ),o4.set("isWindows",nz.ED),o4.set("isWeb",nz.$L),o4.set("isMacNative",nz.dz&&!nz.$L),o4.set("isEdge",nz.un),o4.set("isFirefox",nz.vU),o4.set("isChrome",nz.i7),o4.set("isSafari",nz.G6);let o3=Object.prototype.hasOwnProperty,o6={regexParsingWithErrorRecovery:!0},o9=(0,rN.NC)("contextkey.parser.error.emptyString","Empty context key expression"),o8=(0,rN.NC)("contextkey.parser.error.emptyString.hint","Did you forget to write an expression? You can also put 'false' or 'true' to always evaluate to false or true, respectively."),o7=(0,rN.NC)("contextkey.parser.error.noInAfterNot","'in' after 'not'."),se=(0,rN.NC)("contextkey.parser.error.closingParenthesis","closing parenthesis ')'"),st=(0,rN.NC)("contextkey.parser.error.unexpectedToken","Unexpected token"),si=(0,rN.NC)("contextkey.parser.error.unexpectedToken.hint","Did you forget to put && or || before the token?"),sn=(0,rN.NC)("contextkey.parser.error.unexpectedEOF","Unexpected end of expression"),sr=(0,rN.NC)("contextkey.parser.error.unexpectedEOF.hint","Did you forget to put a context key?");class so{constructor(e=o6){this._config=e,this._scanner=new o5,this._tokens=[],this._current=0,this._parsingErrors=[],this._flagsGYRe=/g|y/g}parse(e){if(""===e){this._parsingErrors.push({message:o9,offset:0,lexeme:"",additionalInfo:o8});return}this._tokens=this._scanner.reset(e).scan(),this._current=0,this._parsingErrors=[];try{let e=this._expr();if(!this._isAtEnd()){let e=this._peek(),t=17===e.type?si:void 0;throw this._parsingErrors.push({message:st,offset:e.offset,lexeme:o5.getLexeme(e),additionalInfo:t}),so._parseError}return e}catch(e){if(e!==so._parseError)throw e;return}}_expr(){return this._or()}_or(){let e=[this._and()];for(;this._matchOne(16);){let t=this._and();e.push(t)}return 1===e.length?e[0]:ss.or(...e)}_and(){let e=[this._term()];for(;this._matchOne(15);){let t=this._term();e.push(t)}return 1===e.length?e[0]:ss.and(...e)}_term(){if(this._matchOne(2)){let e=this._peek();switch(e.type){case 11:return this._advance(),sl.INSTANCE;case 12:return this._advance(),sh.INSTANCE;case 0:{this._advance();let e=this._expr();return this._consume(1,se),null==e?void 0:e.negate()}case 17:return this._advance(),sp.create(e.lexeme);default:throw this._errExpectedButGot("KEY | true | false | '(' expression ')'",e)}}return this._primary()}_primary(){let e=this._peek();switch(e.type){case 11:return this._advance(),ss.true();case 12:return this._advance(),ss.false();case 0:{this._advance();let e=this._expr();return this._consume(1,se),e}case 17:{let t=e.lexeme;if(this._advance(),this._matchOne(9)){let e=this._peek();if(!this._config.regexParsingWithErrorRecovery){let i;if(this._advance(),10!==e.type)throw this._errExpectedButGot("REGEX",e);let n=e.lexeme,r=n.lastIndexOf("/"),o=r===n.length-1?void 0:this._removeFlagsGY(n.substring(r+1));try{i=new RegExp(n.substring(1,r),o)}catch(t){throw this._errExpectedButGot("REGEX",e)}return sC.create(t,i)}switch(e.type){case 10:case 19:{let i;let n=[e.lexeme];this._advance();let r=this._peek(),o=0;for(let t=0;t=0){let o=i.slice(t+1,r),s="i"===i[r+1]?"i":"";try{n=new RegExp(o,s)}catch(t){throw this._errExpectedButGot("REGEX",e)}}}if(null===n)throw this._errExpectedButGot("REGEX",e);return sC.create(t,n)}default:throw this._errExpectedButGot("REGEX",this._peek())}}if(this._matchOne(14)){this._consume(13,o7);let e=this._value();return ss.notIn(t,e)}let i=this._peek().type;switch(i){case 3:{this._advance();let e=this._value();if(18===this._previous().type)return ss.equals(t,e);switch(e){case"true":return ss.has(t);case"false":return ss.not(t);default:return ss.equals(t,e)}}case 4:{this._advance();let e=this._value();if(18===this._previous().type)return ss.notEquals(t,e);switch(e){case"true":return ss.not(t);case"false":return ss.has(t);default:return ss.notEquals(t,e)}}case 5:return this._advance(),sv.create(t,this._value());case 6:return this._advance(),sb.create(t,this._value());case 7:return this._advance(),s_.create(t,this._value());case 8:return this._advance(),sE.create(t,this._value());case 13:return this._advance(),ss.in(t,this._value());default:return ss.has(t)}}case 20:throw this._parsingErrors.push({message:sn,offset:e.offset,lexeme:"",additionalInfo:sr}),so._parseError;default:throw this._errExpectedButGot(`true | false | KEY | KEY '=~' REGEX - | KEY ('==' | '!=' | '<' | '<=' | '>' | '>=' | 'in' | 'not' 'in') value`,this._peek())}}_value(){let e=this._peek();switch(e.type){case 17:case 18:return this._advance(),e.lexeme;case 11:return this._advance(),"true";case 12:return this._advance(),"false";case 13:return this._advance(),"in";default:return""}}_removeFlagsGY(e){return e.replaceAll(this._flagsGYRe,"")}_previous(){return this._tokens[this._current-1]}_matchOne(e){return!!this._check(e)&&(this._advance(),!0)}_advance(){return!this._isAtEnd()&&this._current++,this._previous()}_consume(e,t){if(this._check(e))return this._advance();throw this._errExpectedButGot(t,this._peek())}_errExpectedButGot(e,t,i){let n=(0,rL.NC)("contextkey.parser.error.expectedButGot","Expected: {0}\nReceived: '{1}'.",e,o4.getLexeme(t)),r=t.offset,o=o4.getLexeme(t);return this._parsingErrors.push({message:n,offset:r,lexeme:o,additionalInfo:i}),so._parseError}_check(e){return this._peek().type===e}_peek(){return this._tokens[this._current]}_isAtEnd(){return 20===this._peek().type}}so._parseError=Error();class ss{static false(){return sl.INSTANCE}static true(){return sh.INSTANCE}static has(e){return su.create(e)}static equals(e,t){return sd.create(e,t)}static notEquals(e,t){return sp.create(e,t)}static regex(e,t){return sS.create(e,t)}static in(e,t){return sc.create(e,t)}static notIn(e,t){return sg.create(e,t)}static not(e){return sf.create(e)}static and(...e){return sb.create(e,null,!0)}static or(...e){return sA.create(e,null,!0)}static deserialize(e){if(null==e)return;let t=this._parser.parse(e);return t}}function sa(e,t){return e.cmp(t)}ss._parser=new so({regexParsingWithErrorRecovery:!1});class sl{constructor(){this.type=0}cmp(e){return this.type-e.type}equals(e){return e.type===this.type}substituteConstants(){return this}evaluate(e){return!1}serialize(){return"false"}keys(){return[]}negate(){return sh.INSTANCE}}sl.INSTANCE=new sl;class sh{constructor(){this.type=1}cmp(e){return this.type-e.type}equals(e){return e.type===this.type}substituteConstants(){return this}evaluate(e){return!0}serialize(){return"true"}keys(){return[]}negate(){return sl.INSTANCE}}sh.INSTANCE=new sh;class su{static create(e,t=null){let i=o5.get(e);return"boolean"==typeof i?i?sh.INSTANCE:sl.INSTANCE:new su(e,t)}constructor(e,t){this.key=e,this.negated=t,this.type=2}cmp(e){var t,i;return e.type!==this.type?this.type-e.type:(t=this.key,t<(i=e.key)?-1:t>i?1:0)}equals(e){return e.type===this.type&&this.key===e.key}substituteConstants(){let e=o5.get(this.key);return"boolean"==typeof e?e?sh.INSTANCE:sl.INSTANCE:this}evaluate(e){return!!e.getValue(this.key)}serialize(){return this.key}keys(){return[this.key]}negate(){return this.negated||(this.negated=sf.create(this.key,this)),this.negated}}class sd{static create(e,t,i=null){if("boolean"==typeof t)return t?su.create(e,i):sf.create(e,i);let n=o5.get(e);return"boolean"==typeof n?t===(n?"true":"false")?sh.INSTANCE:sl.INSTANCE:new sd(e,t,i)}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=4}cmp(e){return e.type!==this.type?this.type-e.type:sN(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type&&this.key===e.key&&this.value===e.value}substituteConstants(){let e=o5.get(this.key);return"boolean"==typeof e?this.value===(e?"true":"false")?sh.INSTANCE:sl.INSTANCE:this}evaluate(e){return e.getValue(this.key)==this.value}serialize(){return`${this.key} == '${this.value}'`}keys(){return[this.key]}negate(){return this.negated||(this.negated=sp.create(this.key,this.value,this)),this.negated}}class sc{static create(e,t){return new sc(e,t)}constructor(e,t){this.key=e,this.valueKey=t,this.type=10,this.negated=null}cmp(e){return e.type!==this.type?this.type-e.type:sN(this.key,this.valueKey,e.key,e.valueKey)}equals(e){return e.type===this.type&&this.key===e.key&&this.valueKey===e.valueKey}substituteConstants(){return this}evaluate(e){let t=e.getValue(this.valueKey),i=e.getValue(this.key);return Array.isArray(t)?t.includes(i):"string"==typeof i&&"object"==typeof t&&null!==t&&o6.call(t,i)}serialize(){return`${this.key} in '${this.valueKey}'`}keys(){return[this.key,this.valueKey]}negate(){return this.negated||(this.negated=sg.create(this.key,this.valueKey)),this.negated}}class sg{static create(e,t){return new sg(e,t)}constructor(e,t){this.key=e,this.valueKey=t,this.type=11,this._negated=sc.create(e,t)}cmp(e){return e.type!==this.type?this.type-e.type:this._negated.cmp(e._negated)}equals(e){return e.type===this.type&&this._negated.equals(e._negated)}substituteConstants(){return this}evaluate(e){return!this._negated.evaluate(e)}serialize(){return`${this.key} not in '${this.valueKey}'`}keys(){return this._negated.keys()}negate(){return this._negated}}class sp{static create(e,t,i=null){if("boolean"==typeof t)return t?sf.create(e,i):su.create(e,i);let n=o5.get(e);return"boolean"==typeof n?t===(n?"true":"false")?sl.INSTANCE:sh.INSTANCE:new sp(e,t,i)}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=5}cmp(e){return e.type!==this.type?this.type-e.type:sN(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type&&this.key===e.key&&this.value===e.value}substituteConstants(){let e=o5.get(this.key);return"boolean"==typeof e?this.value===(e?"true":"false")?sl.INSTANCE:sh.INSTANCE:this}evaluate(e){return e.getValue(this.key)!=this.value}serialize(){return`${this.key} != '${this.value}'`}keys(){return[this.key]}negate(){return this.negated||(this.negated=sd.create(this.key,this.value,this)),this.negated}}class sf{static create(e,t=null){let i=o5.get(e);return"boolean"==typeof i?i?sl.INSTANCE:sh.INSTANCE:new sf(e,t)}constructor(e,t){this.key=e,this.negated=t,this.type=3}cmp(e){var t,i;return e.type!==this.type?this.type-e.type:(t=this.key,t<(i=e.key)?-1:t>i?1:0)}equals(e){return e.type===this.type&&this.key===e.key}substituteConstants(){let e=o5.get(this.key);return"boolean"==typeof e?e?sl.INSTANCE:sh.INSTANCE:this}evaluate(e){return!e.getValue(this.key)}serialize(){return`!${this.key}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=su.create(this.key,this)),this.negated}}function sm(e,t){if("string"==typeof e){let t=parseFloat(e);isNaN(t)||(e=t)}return"string"==typeof e||"number"==typeof e?t(e):sl.INSTANCE}class sv{static create(e,t,i=null){return sm(t,t=>new sv(e,t,i))}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=12}cmp(e){return e.type!==this.type?this.type-e.type:sN(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type&&this.key===e.key&&this.value===e.value}substituteConstants(){return this}evaluate(e){return"string"!=typeof this.value&&parseFloat(e.getValue(this.key))>this.value}serialize(){return`${this.key} > ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=sC.create(this.key,this.value,this)),this.negated}}class sE{static create(e,t,i=null){return sm(t,t=>new sE(e,t,i))}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=13}cmp(e){return e.type!==this.type?this.type-e.type:sN(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type&&this.key===e.key&&this.value===e.value}substituteConstants(){return this}evaluate(e){return"string"!=typeof this.value&&parseFloat(e.getValue(this.key))>=this.value}serialize(){return`${this.key} >= ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=s_.create(this.key,this.value,this)),this.negated}}class s_{static create(e,t,i=null){return sm(t,t=>new s_(e,t,i))}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=14}cmp(e){return e.type!==this.type?this.type-e.type:sN(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type&&this.key===e.key&&this.value===e.value}substituteConstants(){return this}evaluate(e){return"string"!=typeof this.value&&parseFloat(e.getValue(this.key))new sC(e,t,i))}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=15}cmp(e){return e.type!==this.type?this.type-e.type:sN(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type&&this.key===e.key&&this.value===e.value}substituteConstants(){return this}evaluate(e){return"string"!=typeof this.value&&parseFloat(e.getValue(this.key))<=this.value}serialize(){return`${this.key} <= ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=sv.create(this.key,this.value,this)),this.negated}}class sS{static create(e,t){return new sS(e,t)}constructor(e,t){this.key=e,this.regexp=t,this.type=7,this.negated=null}cmp(e){if(e.type!==this.type)return this.type-e.type;if(this.keye.key)return 1;let t=this.regexp?this.regexp.source:"",i=e.regexp?e.regexp.source:"";return ti?1:0}equals(e){if(e.type===this.type){let t=this.regexp?this.regexp.source:"",i=e.regexp?e.regexp.source:"";return this.key===e.key&&t===i}return!1}substituteConstants(){return this}evaluate(e){let t=e.getValue(this.key);return!!this.regexp&&this.regexp.test(t)}serialize(){let e=this.regexp?`/${this.regexp.source}/${this.regexp.flags}`:"/invalid/";return`${this.key} =~ ${e}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=sy.create(this)),this.negated}}class sy{static create(e){return new sy(e)}constructor(e){this._actual=e,this.type=8}cmp(e){return e.type!==this.type?this.type-e.type:this._actual.cmp(e._actual)}equals(e){return e.type===this.type&&this._actual.equals(e._actual)}substituteConstants(){return this}evaluate(e){return!this._actual.evaluate(e)}serialize(){return`!(${this._actual.serialize()})`}keys(){return this._actual.keys()}negate(){return this._actual}}function sT(e){let t=null;for(let i=0,n=e.length;ie.expr.length)return 1;for(let t=0,i=this.expr.length;t1;){let e=n[n.length-1];if(9!==e.type)break;n.pop();let t=n.pop(),r=0===n.length,o=sA.create(e.expr.map(e=>sb.create([e,t],null,i)),null,r);o&&(n.push(o),n.sort(sa))}if(1===n.length)return n[0];if(i){for(let e=0;ee.serialize()).join(" && ")}keys(){let e=[];for(let t of this.expr)e.push(...t.keys());return e}negate(){if(!this.negated){let e=[];for(let t of this.expr)e.push(t.negate());this.negated=sA.create(e,this,!0)}return this.negated}}class sA{static create(e,t,i){return sA._normalizeArr(e,t,i)}constructor(e,t){this.expr=e,this.negated=t,this.type=9}cmp(e){if(e.type!==this.type)return this.type-e.type;if(this.expr.lengthe.expr.length)return 1;for(let t=0,i=this.expr.length;te.serialize()).join(" || ")}keys(){let e=[];for(let t of this.expr)e.push(...t.keys());return e}negate(){if(!this.negated){let e=[];for(let t of this.expr)e.push(t.negate());for(;e.length>1;){let t=e.shift(),i=e.shift(),n=[];for(let e of sw(t))for(let t of sw(i))n.push(sb.create([e,t],null,!1));e.unshift(sA.create(n,null,!1))}this.negated=sA.create(e,this,!0)}return this.negated}}class sR extends su{static all(){return sR._info.values()}constructor(e,t,i){super(e,null),this._defaultValue=t,"object"==typeof i?sR._info.push(Object.assign(Object.assign({},i),{key:e})):!0!==i&&sR._info.push({key:e,description:i,type:null!=t?typeof t:void 0})}bindTo(e){return e.createKey(this.key,this._defaultValue)}getValue(e){return e.getContextKeyValue(this.key)}toNegated(){return this.negate()}isEqualTo(e){return sd.create(this.key,e)}}sR._info=[];let sL=oG("contextKeyService");function sN(e,t,i,n){return ei?1:tn?1:0}function sI(e,t){let i=0,n=0;for(;ithis._onDiffUpdated())),this._options.followsCaret&&this._register(this._editor.getModifiedEditor().onDidChangeCursorPosition(e=>{this.ignoreSelectionChange||(this._updateAccessibilityState(e.position.lineNumber),this.nextIdx=-1)})),this._init()}_init(){let e=this._editor.getLineChanges();if(!e)return}_onDiffUpdated(){this._init(),this._compute(this._editor.getLineChanges()),this.revealFirst&&null!==this._editor.getLineChanges()&&(this.revealFirst=!1,this.nextIdx=-1,this.next(1))}_compute(e){this.ranges=[],e&&e.forEach(e=>{!this._options.ignoreCharChanges&&e.charChanges?e.charChanges.forEach(e=>{this.ranges.push({rhs:!0,range:new r_(e.modifiedStartLineNumber,e.modifiedStartColumn,e.modifiedEndLineNumber,e.modifiedEndColumn)})}):0===e.modifiedEndLineNumber?this.ranges.push({rhs:!0,range:new r_(e.modifiedStartLineNumber,1,e.modifiedStartLineNumber+1,1)}):this.ranges.push({rhs:!0,range:new r_(e.modifiedStartLineNumber,1,e.modifiedEndLineNumber+1,1)})}),this.ranges.sort((e,t)=>r_.compareRangesUsingStarts(e.range,t.range)),this._onDidUpdate.fire(this)}_initIdx(e){let t=!1,i=this._editor.getPosition();if(!i){this.nextIdx=0;return}for(let n=0,r=this.ranges.length;n=this.ranges.length&&(this.nextIdx=0)):(this.nextIdx-=1,this.nextIdx<0&&(this.nextIdx=this.ranges.length-1));let i=this.ranges[this.nextIdx];this.ignoreSelectionChange=!0;try{let e=i.range.getStartPosition();this._editor.setPosition(e),this._editor.revealRangeInCenter(i.range,t),this._updateAccessibilityState(e.lineNumber,!0)}finally{this.ignoreSelectionChange=!1}}_updateAccessibilityState(e,t){var i;let n=null===(i=this._editor.getModel())||void 0===i?void 0:i.modified;if(!n)return;let r=n.getLineDecorations(e).find(e=>"line-insert"===e.options.className);if(r)this._audioCueService.playAudioCue(oQ.diffLineModified,!0);else{if(!t)return;this._audioCueService.playAudioCue(oQ.diffLineDeleted,!0)}let o=this._codeEditorService.getActiveCodeEditor();t&&o&&r&&this._accessibilityService.isScreenReaderOptimized()&&(o.setSelection({startLineNumber:e,startColumn:0,endLineNumber:e,endColumn:Number.MAX_VALUE}),o.writeScreenReaderContent("diff-navigation"))}canNavigate(){return this.ranges&&this.ranges.length>0}next(e=0){this.canNavigateNext()&&this._move(!0,e)}previous(e=0){this.canNavigatePrevious()&&this._move(!1,e)}canNavigateNext(){return this.canNavigateLoop()||this.nextIdx=0;a--)(r=e[a])&&(s=(o<3?r(s):o>3?r(t,i,s):r(t,i))||s);return o>3&&s&&Object.defineProperty(t,i,s),s}([sD(2,oq),sD(3,oz),sD(4,sO)],sk);let sP={ICodeEditor:"vs.editor.ICodeEditor",IDiffEditor:"vs.editor.IDiffEditor"};(ep=tX||(tX={}))[ep.Left=1]="Left",ep[ep.Center=2]="Center",ep[ep.Right=4]="Right",ep[ep.Full=7]="Full",(ef=tj||(tj={}))[ef.Left=1]="Left",ef[ef.Right=2]="Right",(em=tq||(tq={}))[em.Inline=1]="Inline",em[em.Gutter=2]="Gutter",(ev=tZ||(tZ={}))[ev.Both=0]="Both",ev[ev.Right=1]="Right",ev[ev.Left=2]="Left",ev[ev.None=3]="None";class sF{get originalIndentSize(){return this._indentSizeIsTabSize?"tabSize":this.indentSize}constructor(e){this._textModelResolvedOptionsBrand=void 0,this.tabSize=Math.max(1,0|e.tabSize),"tabSize"===e.indentSize?(this.indentSize=this.tabSize,this._indentSizeIsTabSize=!0):(this.indentSize=Math.max(1,0|e.indentSize),this._indentSizeIsTabSize=!1),this.insertSpaces=!!e.insertSpaces,this.defaultEOL=0|e.defaultEOL,this.trimAutoWhitespace=!!e.trimAutoWhitespace,this.bracketPairColorizationOptions=e.bracketPairColorizationOptions}equals(e){return this.tabSize===e.tabSize&&this._indentSizeIsTabSize===e._indentSizeIsTabSize&&this.indentSize===e.indentSize&&this.insertSpaces===e.insertSpaces&&this.defaultEOL===e.defaultEOL&&this.trimAutoWhitespace===e.trimAutoWhitespace&&(0,oj.fS)(this.bracketPairColorizationOptions,e.bracketPairColorizationOptions)}createChangeEvent(e){return{tabSize:this.tabSize!==e.tabSize,indentSize:this.indentSize!==e.indentSize,insertSpaces:this.insertSpaces!==e.insertSpaces,trimAutoWhitespace:this.trimAutoWhitespace!==e.trimAutoWhitespace}}}class sB{constructor(e,t){this._findMatchBrand=void 0,this.range=e,this.matches=t}}class sU{constructor(e,t,i,n,r,o){this.identifier=e,this.range=t,this.text=i,this.forceMoveMarkers=n,this.isAutoWhitespaceEdit=r,this._isTracked=o}}class sH{constructor(e,t,i){this.regex=e,this.wordSeparators=t,this.simpleSearch=i}}class sV{constructor(e,t,i){this.reverseEdits=e,this.changes=t,this.trimAutoWhitespaceLineNumbers=i}}var sW=i(270);(eE=tJ||(tJ={}))[eE.None=0]="None",eE[eE.Indent=1]="Indent",eE[eE.IndentOutdent=2]="IndentOutdent",eE[eE.Outdent=3]="Outdent";class sG{constructor(e){if(this._neutralCharacter=null,this._neutralCharacterSearched=!1,this.open=e.open,this.close=e.close,this._inString=!0,this._inComment=!0,this._inRegEx=!0,Array.isArray(e.notIn))for(let t=0,i=e.notIn.length;t0&&e.getLanguageId(s-1)===r;)s--;return new s$(e,r,s,o+1,e.getStartOffset(s),e.getEndOffset(o))}class s${constructor(e,t,i,n,r,o){this._scopedLineTokensBrand=void 0,this._actual=e,this.languageId=t,this._firstTokenIndex=i,this._lastTokenIndex=n,this.firstCharOffset=r,this._lastCharOffset=o}getLineContent(){let e=this._actual.getLineContent();return e.substring(this.firstCharOffset,this._lastCharOffset)}getActualLineContentBefore(e){let t=this._actual.getLineContent();return t.substring(0,this.firstCharOffset+e)}getTokenCount(){return this._lastTokenIndex-this._firstTokenIndex}findTokenIndexAtOffset(e){return this._actual.findTokenIndexAtOffset(e+this.firstCharOffset)-this._firstTokenIndex}getStandardTokenType(e){return this._actual.getStandardTokenType(e+this._firstTokenIndex)}}function sX(e){return(3&e)!=0}class sj{constructor(e){if(e.autoClosingPairs?this._autoClosingPairs=e.autoClosingPairs.map(e=>new sG(e)):e.brackets?this._autoClosingPairs=e.brackets.map(e=>new sG({open:e[0],close:e[1]})):this._autoClosingPairs=[],e.__electricCharacterSupport&&e.__electricCharacterSupport.docComment){let t=e.__electricCharacterSupport.docComment;this._autoClosingPairs.push(new sG({open:t.open,close:t.close||""}))}this._autoCloseBeforeForQuotes="string"==typeof e.autoCloseBefore?e.autoCloseBefore:sj.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_QUOTES,this._autoCloseBeforeForBrackets="string"==typeof e.autoCloseBefore?e.autoCloseBefore:sj.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_BRACKETS,this._surroundingPairs=e.surroundingPairs||this._autoClosingPairs}getAutoClosingPairs(){return this._autoClosingPairs}getAutoCloseBeforeSet(e){return e?this._autoCloseBeforeForQuotes:this._autoCloseBeforeForBrackets}getSurroundingPairs(){return this._surroundingPairs}}sj.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_QUOTES=";:.,=}])> \n ",sj.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_BRACKETS="'\"`;:.,=}])> \n ";var sq=i(9488),sZ=i(21876).Buffer;let sJ=void 0!==sZ;new rF(()=>new Uint8Array(256));class sQ{static wrap(e){return sJ&&!sZ.isBuffer(e)&&(e=sZ.from(e.buffer,e.byteOffset,e.byteLength)),new sQ(e)}constructor(e){this.buffer=e,this.byteLength=this.buffer.byteLength}toString(){return sJ?this.buffer.toString():(r||(r=new TextDecoder),r.decode(this.buffer))}}function s0(e,t){return 16777216*e[t]+65536*e[t+1]+256*e[t+2]+e[t+3]}function s1(e,t,i){e[i+3]=t,t>>>=8,e[i+2]=t,t>>>=8,e[i+1]=t,t>>>=8,e[i]=t}function s2(){return o||(o=new TextDecoder("UTF-16LE")),o}function s4(){return a||(a=nY.r()?s2():(s||(s=new TextDecoder("UTF-16BE")),s)),a}class s5{constructor(e){this._capacity=0|e,this._buffer=new Uint16Array(this._capacity),this._completedStrings=null,this._bufferLength=0}reset(){this._completedStrings=null,this._bufferLength=0}build(){return null!==this._completedStrings?(this._flushBuffer(),this._completedStrings.join("")):this._buildBuffer()}_buildBuffer(){if(0===this._bufferLength)return"";let e=new Uint16Array(this._buffer.buffer,0,this._bufferLength);return s4().decode(e)}_flushBuffer(){let e=this._buildBuffer();this._bufferLength=0,null===this._completedStrings?this._completedStrings=[e]:this._completedStrings[this._completedStrings.length]=e}appendCharCode(e){let t=this._capacity-this._bufferLength;t<=1&&(0===t||r3(e))&&this._flushBuffer(),this._buffer[this._bufferLength++]=e}appendASCIICharCode(e){this._bufferLength===this._capacity&&this._flushBuffer(),this._buffer[this._bufferLength++]=e}appendString(e){let t=e.length;if(this._bufferLength+t>=this._capacity){this._flushBuffer(),this._completedStrings[this._completedStrings.length]=e;return}for(let i=0;i[e[0].toLowerCase(),e[1].toLowerCase()]);let i=[];for(let e=0;e{let[i,n]=e,[r,o]=t;return i===r||i===o||n===r||n===o},r=(e,n)=>{let r=Math.min(e,n),o=Math.max(e,n);for(let e=0;e0&&o.push({open:r,close:s})}return o}(t);for(let t of(this.brackets=i.map((t,n)=>new s6(e,n,t.open,t.close,function(e,t,i,n){let r=[];r=(r=r.concat(e)).concat(t);for(let e=0,t=r.length;e=0&&n.push(t);for(let t of o.close)t.indexOf(e)>=0&&n.push(t)}}function s7(e,t){return e.length-t.length}function s8(e){if(e.length<=1)return e;let t=[],i=new Set;for(let n of e)i.has(n)||(t.push(n),i.add(n));return t}function ae(e){let t=/^[\w ]+$/.test(e);return e=rV(e),t?`\\b${e}\\b`:e}function at(e){let t=`(${e.map(ae).join(")|(")})`;return rG(t,!0)}let ai=(_=null,C=null,function(e){return _!==e&&(C=function(e){let t=new Uint16Array(e.length),i=0;for(let n=e.length-1;n>=0;n--)t[i++]=e.charCodeAt(n);return s4().decode(t)}(_=e)),C});class an{static _findPrevBracketInText(e,t,i,n){let r=i.match(e);if(!r)return null;let o=i.length-(r.index||0),s=r[0].length,a=n+o;return new r_(t,a-s+1,t,a+1)}static findPrevBracketInRange(e,t,i,n,r){let o=ai(i),s=o.substring(i.length-r,i.length-n);return this._findPrevBracketInText(e,t,s,n)}static findNextBracketInText(e,t,i,n){let r=i.match(e);if(!r)return null;let o=r.index||0,s=r[0].length;if(0===s)return null;let a=n+o;return new r_(t,a+1,t,a+1+s)}static findNextBracketInRange(e,t,i,n,r){let o=i.substring(n,r);return this.findNextBracketInText(e,t,o,n)}}class ar{constructor(e){this._richEditBrackets=e}getElectricCharacters(){let e=[];if(this._richEditBrackets)for(let t of this._richEditBrackets.brackets)for(let i of t.close){let t=i.charAt(i.length-1);e.push(t)}return(0,sq.EB)(e)}onElectricCharacter(e,t,i){if(!this._richEditBrackets||0===this._richEditBrackets.brackets.length)return null;let n=t.findTokenIndexAtOffset(i-1);if(sX(t.getStandardTokenType(n)))return null;let r=this._richEditBrackets.reversedRegex,o=t.getLineContent().substring(0,i-1)+e,s=an.findPrevBracketInRange(r,1,o,0,o.length);if(!s)return null;let a=o.substring(s.startColumn-1,s.endColumn-1).toLowerCase(),l=this._richEditBrackets.textIsOpenBracket[a];if(l)return null;let h=t.getActualLineContentBefore(s.startColumn-1);return/^\s*$/.test(h)?{matchOpenBracket:a}:null}}function ao(e){return e.global&&(e.lastIndex=0),!0}class as{constructor(e){this._indentationRules=e}shouldIncrease(e){return!!(this._indentationRules&&this._indentationRules.increaseIndentPattern&&ao(this._indentationRules.increaseIndentPattern)&&this._indentationRules.increaseIndentPattern.test(e))}shouldDecrease(e){return!!(this._indentationRules&&this._indentationRules.decreaseIndentPattern&&ao(this._indentationRules.decreaseIndentPattern)&&this._indentationRules.decreaseIndentPattern.test(e))}shouldIndentNextLine(e){return!!(this._indentationRules&&this._indentationRules.indentNextLinePattern&&ao(this._indentationRules.indentNextLinePattern)&&this._indentationRules.indentNextLinePattern.test(e))}shouldIgnore(e){return!!(this._indentationRules&&this._indentationRules.unIndentedLinePattern&&ao(this._indentationRules.unIndentedLinePattern)&&this._indentationRules.unIndentedLinePattern.test(e))}getIndentMetadata(e){let t=0;return this.shouldIncrease(e)&&(t+=1),this.shouldDecrease(e)&&(t+=2),this.shouldIndentNextLine(e)&&(t+=4),this.shouldIgnore(e)&&(t+=8),t}}class aa{constructor(e){(e=e||{}).brackets=e.brackets||[["(",")"],["{","}"],["[","]"]],this._brackets=[],e.brackets.forEach(e=>{let t=aa._createOpenBracketRegExp(e[0]),i=aa._createCloseBracketRegExp(e[1]);t&&i&&this._brackets.push({open:e[0],openRegExp:t,close:e[1],closeRegExp:i})}),this._regExpRules=e.onEnterRules||[]}onEnter(e,t,i,n){if(e>=3)for(let e=0,r=this._regExpRules.length;e!e.reg||(e.reg.lastIndex=0,e.reg.test(e.text)));if(o)return r.action}if(e>=2&&i.length>0&&n.length>0)for(let e=0,t=this._brackets.length;e=2&&i.length>0)for(let e=0,t=this._brackets.length;e0&&"#"===e.charAt(e.length-1)?e.substring(0,e.length-1):e]=t,this._onDidChangeSchema.fire(e)}notifySchemaChanged(e){this._onDidChangeSchema.fire(e)}};am.add(aE.JSONContribution,a_);let aC={Configuration:"base.contributions.configuration"},aS={properties:{},patternProperties:{}},ay={properties:{},patternProperties:{}},aT={properties:{},patternProperties:{}},ab={properties:{},patternProperties:{}},aA={properties:{},patternProperties:{}},aR={properties:{},patternProperties:{}},aL="vscode://schemas/settings/resourceLanguage",aN=am.as(aE.JSONContribution),aI="\\[([^\\]]+)\\]",aw=RegExp(aI,"g"),aO=`^(${aI})+$`,ax=new RegExp(aO);function aD(e){let t=[];if(ax.test(e)){let i=aw.exec(e);for(;null==i?void 0:i.length;){let n=i[1].trim();n&&t.push(n),i=aw.exec(e)}}return(0,sq.EB)(t)}let aM=new class{constructor(){this.overrideIdentifiers=new Set,this._onDidSchemaChange=new nT,this._onDidUpdateConfiguration=new nT,this.configurationDefaultsOverrides=new Map,this.defaultLanguageConfigurationOverridesNode={id:"defaultOverrides",title:rL.NC("defaultLanguageConfigurationOverrides.title","Default Language Configuration Overrides"),properties:{}},this.configurationContributors=[this.defaultLanguageConfigurationOverridesNode],this.resourceLanguageSettingsSchema={properties:{},patternProperties:{},additionalProperties:!0,allowTrailingCommas:!0,allowComments:!0},this.configurationProperties={},this.policyConfigurations=new Map,this.excludedConfigurationProperties={},aN.registerSchema(aL,this.resourceLanguageSettingsSchema),this.registerOverridePropertyPatternKey()}registerConfiguration(e,t=!0){this.registerConfigurations([e],t)}registerConfigurations(e,t=!0){let i=new Set;this.doRegisterConfigurations(e,t,i),aN.registerSchema(aL,this.resourceLanguageSettingsSchema),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:i})}registerDefaultConfigurations(e){let t=new Set;this.doRegisterDefaultConfigurations(e,t),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:t,defaultsOverrides:!0})}doRegisterDefaultConfigurations(e,t){var i;let n=[];for(let{overrides:r,source:o}of e)for(let e in r)if(t.add(e),ax.test(e)){let t=this.configurationDefaultsOverrides.get(e),s=null!==(i=null==t?void 0:t.valuesSources)&&void 0!==i?i:new Map;if(o)for(let t of Object.keys(r[e]))s.set(t,o);let a=Object.assign(Object.assign({},(null==t?void 0:t.value)||{}),r[e]);this.configurationDefaultsOverrides.set(e,{source:o,value:a,valuesSources:s});let l=e.replace(/[\[\]]/g,""),h={type:"object",default:a,description:rL.NC("defaultLanguageConfiguration.description","Configure settings to be overridden for the {0} language.",l),$ref:aL,defaultDefaultValue:a,source:rS.HD(o)?void 0:o,defaultValueSource:o};n.push(...aD(e)),this.configurationProperties[e]=h,this.defaultLanguageConfigurationOverridesNode.properties[e]=h}else{this.configurationDefaultsOverrides.set(e,{value:r[e],source:o});let t=this.configurationProperties[e];t&&(this.updatePropertyDefaultValue(e,t),this.updateSchema(e,t))}this.doRegisterOverrideIdentifiers(n)}registerOverrideIdentifiers(e){this.doRegisterOverrideIdentifiers(e),this._onDidSchemaChange.fire()}doRegisterOverrideIdentifiers(e){for(let t of e)this.overrideIdentifiers.add(t);this.updateOverridePropertyPatternKey()}doRegisterConfigurations(e,t,i){e.forEach(e=>{this.validateAndRegisterProperties(e,t,e.extensionInfo,e.restrictedProperties,void 0,i),this.configurationContributors.push(e),this.registerJSONConfiguration(e)})}validateAndRegisterProperties(e,t=!0,i,n,r=3,o){var s;r=rS.Jp(e.scope)?r:e.scope;let a=e.properties;if(a)for(let e in a){let l=a[e];if(t&&function(e,t){var i,n,r,o;return e.trim()?ax.test(e)?rL.NC("config.property.languageDefault","Cannot register '{0}'. This matches property pattern '\\\\[.*\\\\]$' for describing language specific editor settings. Use 'configurationDefaults' contribution.",e):void 0!==aM.getConfigurationProperties()[e]?rL.NC("config.property.duplicate","Cannot register '{0}'. This property is already registered.",e):(null===(i=t.policy)||void 0===i?void 0:i.name)&&void 0!==aM.getPolicyConfigurations().get(null===(n=t.policy)||void 0===n?void 0:n.name)?rL.NC("config.policy.duplicate","Cannot register '{0}'. The associated policy {1} is already registered with {2}.",e,null===(r=t.policy)||void 0===r?void 0:r.name,aM.getPolicyConfigurations().get(null===(o=t.policy)||void 0===o?void 0:o.name)):null:rL.NC("config.property.empty","Cannot register an empty property")}(e,l)){delete a[e];continue}if(l.source=i,l.defaultDefaultValue=a[e].default,this.updatePropertyDefaultValue(e,l),ax.test(e)?l.scope=void 0:(l.scope=rS.Jp(l.scope)?r:l.scope,l.restricted=rS.Jp(l.restricted)?!!(null==n?void 0:n.includes(e)):l.restricted),a[e].hasOwnProperty("included")&&!a[e].included){this.excludedConfigurationProperties[e]=a[e],delete a[e];continue}this.configurationProperties[e]=a[e],(null===(s=a[e].policy)||void 0===s?void 0:s.name)&&this.policyConfigurations.set(a[e].policy.name,e),!a[e].deprecationMessage&&a[e].markdownDeprecationMessage&&(a[e].deprecationMessage=a[e].markdownDeprecationMessage),o.add(e)}let l=e.allOf;if(l)for(let e of l)this.validateAndRegisterProperties(e,t,i,n,r,o)}getConfigurationProperties(){return this.configurationProperties}getPolicyConfigurations(){return this.policyConfigurations}registerJSONConfiguration(e){let t=e=>{let i=e.properties;if(i)for(let e in i)this.updateSchema(e,i[e]);let n=e.allOf;null==n||n.forEach(t)};t(e)}updateSchema(e,t){switch(aS.properties[e]=t,t.scope){case 1:ay.properties[e]=t;break;case 2:aT.properties[e]=t;break;case 6:ab.properties[e]=t;break;case 3:aA.properties[e]=t;break;case 4:aR.properties[e]=t;break;case 5:aR.properties[e]=t,this.resourceLanguageSettingsSchema.properties[e]=t}}updateOverridePropertyPatternKey(){for(let e of this.overrideIdentifiers.values()){let t=`[${e}]`,i={type:"object",description:rL.NC("overrideSettings.defaultDescription","Configure editor settings to be overridden for a language."),errorMessage:rL.NC("overrideSettings.errorMessage","This setting does not support per-language configuration."),$ref:aL};this.updatePropertyDefaultValue(t,i),aS.properties[t]=i,ay.properties[t]=i,aT.properties[t]=i,ab.properties[t]=i,aA.properties[t]=i,aR.properties[t]=i}}registerOverridePropertyPatternKey(){let e={type:"object",description:rL.NC("overrideSettings.defaultDescription","Configure editor settings to be overridden for a language."),errorMessage:rL.NC("overrideSettings.errorMessage","This setting does not support per-language configuration."),$ref:aL};aS.patternProperties[aO]=e,ay.patternProperties[aO]=e,aT.patternProperties[aO]=e,ab.patternProperties[aO]=e,aA.patternProperties[aO]=e,aR.patternProperties[aO]=e,this._onDidSchemaChange.fire()}updatePropertyDefaultValue(e,t){let i=this.configurationDefaultsOverrides.get(e),n=null==i?void 0:i.value,r=null==i?void 0:i.source;rS.o8(n)&&(n=t.defaultDefaultValue,r=void 0),rS.o8(n)&&(n=function(e){let t=Array.isArray(e)?e[0]:e;switch(t){case"boolean":return!1;case"integer":case"number":return 0;case"string":return"";case"array":return[];case"object":return{};default:return null}}(t.type)),t.default=n,t.defaultValueSource=r}};am.add(aC.Configuration,aM);let ak=new class{constructor(){this._onDidChangeLanguages=new nT,this.onDidChangeLanguages=this._onDidChangeLanguages.event,this._languages=[]}registerLanguage(e){return this._languages.push(e),this._onDidChangeLanguages.fire(void 0),{dispose:()=>{for(let t=0,i=this._languages.length;t{let t=new Set;return{info:new aH(this,e,t),closing:t}}),r=new rP(e=>{let t=new Set,i=new Set;return{info:new aV(this,e,t,i),opening:t,openingColorized:i}});for(let[e,t]of i){let i=n.get(e),o=r.get(t);i.closing.add(o.info),o.opening.add(i.info)}let o=t.colorizedBracketPairs?aB(t.colorizedBracketPairs):i.filter(e=>!("<"===e[0]&&">"===e[1]));for(let[e,t]of o){let i=n.get(e),o=r.get(t);i.closing.add(o.info),o.openingColorized.add(i.info),o.opening.add(i.info)}this._openingBrackets=new Map([...n.cachedValues].map(([e,t])=>[e,t.info])),this._closingBrackets=new Map([...r.cachedValues].map(([e,t])=>[e,t.info]))}get openingBrackets(){return[...this._openingBrackets.values()]}get closingBrackets(){return[...this._closingBrackets.values()]}getOpeningBracketInfo(e){return this._openingBrackets.get(e)}getClosingBracketInfo(e){return this._closingBrackets.get(e)}getBracketInfo(e){return this.getOpeningBracketInfo(e)||this.getClosingBracketInfo(e)}}function aB(e){return e.filter(([e,t])=>""!==e&&""!==t)}class aU{constructor(e,t){this.config=e,this.bracketText=t}get languageId(){return this.config.languageId}}class aH extends aU{constructor(e,t,i){super(e,t),this.openedBrackets=i,this.isOpeningBracket=!0}}class aV extends aU{constructor(e,t,i,n){super(e,t),this.openingBrackets=i,this.openingColorizedBrackets=n,this.isOpeningBracket=!1}closes(e){return e.config===this.config&&this.openingBrackets.has(e)}closesColorized(e){return e.config===this.config&&this.openingColorizedBrackets.has(e)}getOpeningBrackets(){return[...this.openingBrackets]}}var aW=function(e,t){return function(i,n){t(i,n,e)}};class aG{constructor(e){this.languageId=e}affects(e){return!this.languageId||this.languageId===e}}let az=oG("languageConfigurationService"),aY=class extends nc{constructor(e,t){super(),this.configurationService=e,this.languageService=t,this._registry=this._register(new a0),this.onDidChangeEmitter=this._register(new nT),this.onDidChange=this.onDidChangeEmitter.event,this.configurations=new Map;let i=new Set(Object.values(aK));this._register(this.configurationService.onDidChangeConfiguration(e=>{let t=e.change.keys.some(e=>i.has(e)),n=e.change.overrides.filter(([e,t])=>t.some(e=>i.has(e))).map(([e])=>e);if(t)this.configurations.clear(),this.onDidChangeEmitter.fire(new aG(void 0));else for(let e of n)this.languageService.isRegisteredLanguageId(e)&&(this.configurations.delete(e),this.onDidChangeEmitter.fire(new aG(e)))})),this._register(this._registry.onDidChange(e=>{this.configurations.delete(e.languageId),this.onDidChangeEmitter.fire(new aG(e.languageId))}))}register(e,t,i){return this._registry.register(e,t,i)}getLanguageConfiguration(e){let t=this.configurations.get(e);return t||(t=function(e,t,i,n){let r=t.getLanguageConfiguration(e);if(!r){if(!n.isRegisteredLanguageId(e))return new a1(e,{});r=new a1(e,{})}let o=function(e,t){let i=t.getValue(aK.brackets,{overrideIdentifier:e}),n=t.getValue(aK.colorizedBracketPairs,{overrideIdentifier:e});return{brackets:a$(i),colorizedBracketPairs:a$(n)}}(r.languageId,i),s=aZ([r.underlyingConfig,o]),a=new a1(r.languageId,s);return a}(e,this._registry,this.configurationService,this.languageService),this.configurations.set(e,t)),t}};aY=function(e,t,i,n){var r,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(s=(o<3?r(s):o>3?r(t,i,s):r(t,i))||s);return o>3&&s&&Object.defineProperty(t,i,s),s}([aW(0,al),aW(1,ac)],aY);let aK={brackets:"editor.language.brackets",colorizedBracketPairs:"editor.language.colorizedBracketPairs"};function a$(e){if(Array.isArray(e))return e.map(e=>{if(Array.isArray(e)&&2===e.length)return[e[0],e[1]]}).filter(e=>!!e)}function aX(e,t,i){let n=e.getLineContent(t),r=r$(n);return r.length>i-1&&(r=r.substring(0,i-1)),r}function aj(e,t,i){e.tokenization.forceTokenization(t);let n=e.tokenization.getLineTokens(t),r=void 0===i?e.getLineMaxColumn(t)-1:i-1;return sK(n,r)}class aq{constructor(e){this.languageId=e,this._resolved=null,this._entries=[],this._order=0,this._resolved=null}register(e,t){let i=new aJ(e,t,++this._order);return this._entries.push(i),this._resolved=null,nu(()=>{for(let e=0;ee.configuration)))}}function aZ(e){let t={comments:void 0,brackets:void 0,wordPattern:void 0,indentationRules:void 0,onEnterRules:void 0,autoClosingPairs:void 0,surroundingPairs:void 0,autoCloseBefore:void 0,folding:void 0,colorizedBracketPairs:void 0,__electricCharacterSupport:void 0};for(let i of e)t={comments:i.comments||t.comments,brackets:i.brackets||t.brackets,wordPattern:i.wordPattern||t.wordPattern,indentationRules:i.indentationRules||t.indentationRules,onEnterRules:i.onEnterRules||t.onEnterRules,autoClosingPairs:i.autoClosingPairs||t.autoClosingPairs,surroundingPairs:i.surroundingPairs||t.surroundingPairs,autoCloseBefore:i.autoCloseBefore||t.autoCloseBefore,folding:i.folding||t.folding,colorizedBracketPairs:i.colorizedBracketPairs||t.colorizedBracketPairs,__electricCharacterSupport:i.__electricCharacterSupport||t.__electricCharacterSupport};return t}class aJ{constructor(e,t,i){this.configuration=e,this.priority=t,this.order=i}static cmp(e,t){return e.priority===t.priority?e.order-t.order:e.priority-t.priority}}class aQ{constructor(e){this.languageId=e}}class a0 extends nc{constructor(){super(),this._entries=new Map,this._onDidChange=this._register(new nT),this.onDidChange=this._onDidChange.event,this._register(this.register(aP,{brackets:[["(",")"],["[","]"],["{","}"]],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}],colorizedBracketPairs:[],folding:{offSide:!0}},0))}register(e,t,i=0){let n=this._entries.get(e);n||(n=new aq(e),this._entries.set(e,n));let r=n.register(t,i);return this._onDidChange.fire(new aQ(e)),nu(()=>{r.dispose(),this._onDidChange.fire(new aQ(e))})}getLanguageConfiguration(e){let t=this._entries.get(e);return(null==t?void 0:t.getResolvedConfiguration())||null}}class a1{constructor(e,t){this.languageId=e,this.underlyingConfig=t,this._brackets=null,this._electricCharacter=null,this._onEnterSupport=this.underlyingConfig.brackets||this.underlyingConfig.indentationRules||this.underlyingConfig.onEnterRules?new aa(this.underlyingConfig):null,this.comments=a1._handleComments(this.underlyingConfig),this.characterPair=new sj(this.underlyingConfig),this.wordDefinition=this.underlyingConfig.wordPattern||sW.Af,this.indentationRules=this.underlyingConfig.indentationRules,this.underlyingConfig.indentationRules?this.indentRulesSupport=new as(this.underlyingConfig.indentationRules):this.indentRulesSupport=null,this.foldingRules=this.underlyingConfig.folding||{},this.bracketsNew=new aF(e,this.underlyingConfig)}getWordDefinition(){return(0,sW.eq)(this.wordDefinition)}get brackets(){return!this._brackets&&this.underlyingConfig.brackets&&(this._brackets=new s3(this.languageId,this.underlyingConfig.brackets)),this._brackets}get electricCharacter(){return this._electricCharacter||(this._electricCharacter=new ar(this.brackets)),this._electricCharacter}onEnter(e,t,i,n){return this._onEnterSupport?this._onEnterSupport.onEnter(e,t,i,n):null}getAutoClosingPairs(){return new sz(this.characterPair.getAutoClosingPairs())}getAutoCloseBeforeSet(e){return this.characterPair.getAutoCloseBeforeSet(e)}getSurroundingPairs(){return this.characterPair.getSurroundingPairs()}static _handleComments(e){let t=e.comments;if(!t)return null;let i={};if(t.lineComment&&(i.lineCommentToken=t.lineComment),t.blockComment){let[e,n]=t.blockComment;i.blockCommentStartToken=e,i.blockCommentEndToken=n}return i}}af(az,aY,1);let a2=new class{clone(){return this}equals(e){return this===e}};function a4(e,t){return new rI([new rN(0,"",e)],t)}function a5(e,t){let i=new Uint32Array(2);return i[0]=0,i[1]=(e<<0|33587200)>>>0,new rw(i,null===t?a2:t)}let a6=oG("modelService"),a3=Symbol("MicrotaskDelay");var a9=function(e,t,i,n){return new(i||(i=Promise))(function(r,o){function s(e){try{l(n.next(e))}catch(e){o(e)}}function a(e){try{l(n.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?r(e.value):((t=e.value)instanceof i?t:new i(function(e){e(t)})).then(s,a)}l((n=n.apply(e,t||[])).next())})},a7=function(e){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var t,i=e[Symbol.asyncIterator];return i?i.call(e):(e="function"==typeof __values?__values(e):e[Symbol.iterator](),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(i){t[i]=e[i]&&function(t){return new Promise(function(n,r){!function(e,t,i,n){Promise.resolve(n).then(function(t){e({value:t,done:i})},t)}(n,r,(t=e[i](t)).done,t.value)})}}};function a8(e){return!!e&&"function"==typeof e.then}function le(e){let t=new nD,i=e(t.token),n=new Promise((e,n)=>{let r=t.token.onCancellationRequested(()=>{r.dispose(),t.dispose(),n(new i3)});Promise.resolve(i).then(i=>{r.dispose(),t.dispose(),e(i)},e=>{r.dispose(),t.dispose(),n(e)})});return new class{cancel(){t.cancel()}then(e,t){return n.then(e,t)}catch(e){return this.then(void 0,e)}finally(e){return n.finally(e)}}}class lt{constructor(){this.isDisposed=!1,this.activePromise=null,this.queuedPromise=null,this.queuedPromiseFactory=null}queue(e){if(this.isDisposed)throw Error("Throttler is disposed");if(this.activePromise){if(this.queuedPromiseFactory=e,!this.queuedPromise){let e=()=>{if(this.queuedPromise=null,this.isDisposed)return;let e=this.queue(this.queuedPromiseFactory);return this.queuedPromiseFactory=null,e};this.queuedPromise=new Promise(t=>{this.activePromise.then(e,e).then(t)})}return new Promise((e,t)=>{this.queuedPromise.then(e,t)})}return this.activePromise=e(),new Promise((e,t)=>{this.activePromise.then(t=>{this.activePromise=null,e(t)},e=>{this.activePromise=null,t(e)})})}dispose(){this.isDisposed=!0}}let li=(e,t)=>{let i=!0,n=setTimeout(()=>{i=!1,t()},e);return{isTriggered:()=>i,dispose:()=>{clearTimeout(n),i=!1}}},ln=e=>{let t=!0;return queueMicrotask(()=>{t&&(t=!1,e())}),{isTriggered:()=>t,dispose:()=>{t=!1}}};class lr{constructor(e){this.defaultDelay=e,this.deferred=null,this.completionPromise=null,this.doResolve=null,this.doReject=null,this.task=null}trigger(e,t=this.defaultDelay){this.task=e,this.cancelTimeout(),this.completionPromise||(this.completionPromise=new Promise((e,t)=>{this.doResolve=e,this.doReject=t}).then(()=>{if(this.completionPromise=null,this.doResolve=null,this.task){let e=this.task;return this.task=null,e()}}));let i=()=>{var e;this.deferred=null,null===(e=this.doResolve)||void 0===e||e.call(this,null)};return this.deferred=t===a3?ln(i):li(t,i),this.completionPromise}isTriggered(){var e;return!!(null===(e=this.deferred)||void 0===e?void 0:e.isTriggered())}cancel(){var e;this.cancelTimeout(),this.completionPromise&&(null===(e=this.doReject)||void 0===e||e.call(this,new i3),this.completionPromise=null)}cancelTimeout(){var e;null===(e=this.deferred)||void 0===e||e.dispose(),this.deferred=null}dispose(){this.cancel()}}class lo{constructor(e){this.delayer=new lr(e),this.throttler=new lt}trigger(e,t){return this.delayer.trigger(()=>this.throttler.queue(e),t)}cancel(){this.delayer.cancel()}dispose(){this.delayer.dispose(),this.throttler.dispose()}}function ls(e,t){return t?new Promise((i,n)=>{let r=setTimeout(()=>{o.dispose(),i()},e),o=t.onCancellationRequested(()=>{clearTimeout(r),o.dispose(),n(new i3)})}):le(t=>ls(e,t))}function la(e,t=0){let i=setTimeout(e,t);return nu(()=>clearTimeout(i))}class ll{constructor(e,t){this._token=-1,"function"==typeof e&&"number"==typeof t&&this.setIfNotSet(e,t)}dispose(){this.cancel()}cancel(){-1!==this._token&&(clearTimeout(this._token),this._token=-1)}cancelAndSet(e,t){this.cancel(),this._token=setTimeout(()=>{this._token=-1,e()},t)}setIfNotSet(e,t){-1===this._token&&(this._token=setTimeout(()=>{this._token=-1,e()},t))}}class lh{constructor(){this._token=-1}dispose(){this.cancel()}cancel(){-1!==this._token&&(clearInterval(this._token),this._token=-1)}cancelAndSet(e,t){this.cancel(),this._token=setInterval(()=>{e()},t)}}class lu{constructor(e,t){this.timeoutToken=-1,this.runner=e,this.timeout=t,this.timeoutHandler=this.onTimeout.bind(this)}dispose(){this.cancel(),this.runner=null}cancel(){this.isScheduled()&&(clearTimeout(this.timeoutToken),this.timeoutToken=-1)}schedule(e=this.timeout){this.cancel(),this.timeoutToken=setTimeout(this.timeoutHandler,e)}get delay(){return this.timeout}set delay(e){this.timeout=e}isScheduled(){return -1!==this.timeoutToken}onTimeout(){this.timeoutToken=-1,this.runner&&this.doRun()}doRun(){var e;null===(e=this.runner)||void 0===e||e.call(this)}}l="function"!=typeof requestIdleCallback||"function"!=typeof cancelIdleCallback?e=>{(0,nY.fn)(()=>{if(t)return;let i=Date.now()+15;e(Object.freeze({didTimeout:!0,timeRemaining:()=>Math.max(0,i-Date.now())}))});let t=!1;return{dispose(){t||(t=!0)}}}:(e,t)=>{let i=requestIdleCallback(e,"number"==typeof t?{timeout:t}:void 0),n=!1;return{dispose(){n||(n=!0,cancelIdleCallback(i))}}};class ld{constructor(e){this._didRun=!1,this._executor=()=>{try{this._value=e()}catch(e){this._error=e}finally{this._didRun=!0}},this._handle=l(()=>this._executor())}dispose(){this._handle.dispose()}get value(){if(this._didRun||(this._handle.dispose(),this._executor()),this._error)throw this._error;return this._value}get isInitialized(){return this._didRun}}class lc{get isRejected(){var e;return(null===(e=this.outcome)||void 0===e?void 0:e.outcome)===1}get isSettled(){return!!this.outcome}constructor(){this.p=new Promise((e,t)=>{this.completeCallback=e,this.errorCallback=t})}complete(e){return new Promise(t=>{this.completeCallback(e),this.outcome={outcome:0,value:e},t()})}error(e){return new Promise(t=>{this.errorCallback(e),this.outcome={outcome:1,value:e},t()})}cancel(){return this.error(new i3)}}(e_=tQ||(tQ={})).settled=function(e){return a9(this,void 0,void 0,function*(){let t;let i=yield Promise.all(e.map(e=>e.then(e=>e,e=>{t||(t=e)})));if(void 0!==t)throw t;return i})},e_.withAsyncBody=function(e){return new Promise((t,i)=>a9(this,void 0,void 0,function*(){try{yield e(t,i)}catch(e){i(e)}}))};class lg{static fromArray(e){return new lg(t=>{t.emitMany(e)})}static fromPromise(e){return new lg(t=>a9(this,void 0,void 0,function*(){t.emitMany((yield e))}))}static fromPromises(e){return new lg(t=>a9(this,void 0,void 0,function*(){yield Promise.all(e.map(e=>a9(this,void 0,void 0,function*(){return t.emitOne((yield e))})))}))}static merge(e){return new lg(t=>a9(this,void 0,void 0,function*(){yield Promise.all(e.map(e=>{var i,n,r;return a9(this,void 0,void 0,function*(){var o,s,a,l;try{for(i=!0,n=a7(e);!(o=(r=yield n.next()).done);i=!0)l=r.value,i=!1,t.emitOne(l)}catch(e){s={error:e}}finally{try{!i&&!o&&(a=n.return)&&(yield a.call(n))}finally{if(s)throw s.error}}})}))}))}constructor(e){this._state=0,this._results=[],this._error=null,this._onStateChanged=new nT,queueMicrotask(()=>a9(this,void 0,void 0,function*(){let t={emitOne:e=>this.emitOne(e),emitMany:e=>this.emitMany(e),reject:e=>this.reject(e)};try{yield Promise.resolve(e(t)),this.resolve()}catch(e){this.reject(e)}finally{t.emitOne=void 0,t.emitMany=void 0,t.reject=void 0}}))}[Symbol.asyncIterator](){let e=0;return{next:()=>a9(this,void 0,void 0,function*(){for(;;){if(2===this._state)throw this._error;if(ea9(this,void 0,void 0,function*(){var n,r,o,s;try{for(var a,l=!0,h=a7(e);!(n=(a=yield h.next()).done);l=!0)s=a.value,l=!1,i.emitOne(t(s))}catch(e){r={error:e}}finally{try{!l&&!n&&(o=h.return)&&(yield o.call(h))}finally{if(r)throw r.error}}}))}map(e){return lg.map(this,e)}static filter(e,t){return new lg(i=>a9(this,void 0,void 0,function*(){var n,r,o,s;try{for(var a,l=!0,h=a7(e);!(n=(a=yield h.next()).done);l=!0)s=a.value,l=!1,t(s)&&i.emitOne(s)}catch(e){r={error:e}}finally{try{!l&&!n&&(o=h.return)&&(yield o.call(h))}finally{if(r)throw r.error}}}))}filter(e){return lg.filter(this,e)}static coalesce(e){return lg.filter(e,e=>!!e)}coalesce(){return lg.coalesce(this)}static toPromise(e){var t,i,n,r,o,s,a;return a9(this,void 0,void 0,function*(){let l=[];try{for(t=!0,i=a7(e);!(r=(n=yield i.next()).done);t=!0)a=n.value,t=!1,l.push(a)}catch(e){o={error:e}}finally{try{!t&&!r&&(s=i.return)&&(yield s.call(i))}finally{if(o)throw o.error}}return l})}toPromise(){return lg.toPromise(this)}emitOne(e){0===this._state&&(this._results.push(e),this._onStateChanged.fire())}emitMany(e){0===this._state&&(this._results=this._results.concat(e),this._onStateChanged.fire())}resolve(){0===this._state&&(this._state=1,this._onStateChanged.fire())}reject(e){0===this._state&&(this._state=2,this._error=e,this._onStateChanged.fire())}}lg.EMPTY=lg.fromArray([]);let lp=!1;function lf(e){nY.$L&&(lp||(lp=!0,console.warn("Could not create web worker(s). Falling back to loading web worker code in main thread, which might cause UI freezes. Please see https://github.com/microsoft/monaco-editor#faq")),console.warn(e.message))}class lm{constructor(e,t,i,n){this.vsWorker=e,this.req=t,this.method=i,this.args=n,this.type=0}}class lv{constructor(e,t,i,n){this.vsWorker=e,this.seq=t,this.res=i,this.err=n,this.type=1}}class lE{constructor(e,t,i,n){this.vsWorker=e,this.req=t,this.eventName=i,this.arg=n,this.type=2}}class l_{constructor(e,t,i){this.vsWorker=e,this.req=t,this.event=i,this.type=3}}class lC{constructor(e,t){this.vsWorker=e,this.req=t,this.type=4}}class lS{constructor(e){this._workerId=-1,this._handler=e,this._lastSentReq=0,this._pendingReplies=Object.create(null),this._pendingEmitters=new Map,this._pendingEvents=new Map}setWorkerId(e){this._workerId=e}sendMessage(e,t){let i=String(++this._lastSentReq);return new Promise((n,r)=>{this._pendingReplies[i]={resolve:n,reject:r},this._send(new lm(this._workerId,i,e,t))})}listen(e,t){let i=null,n=new nT({onWillAddFirstListener:()=>{i=String(++this._lastSentReq),this._pendingEmitters.set(i,n),this._send(new lE(this._workerId,i,e,t))},onDidRemoveLastListener:()=>{this._pendingEmitters.delete(i),this._send(new lC(this._workerId,i)),i=null}});return n.event}handleMessage(e){e&&e.vsWorker&&(-1===this._workerId||e.vsWorker===this._workerId)&&this._handleMessage(e)}_handleMessage(e){switch(e.type){case 1:return this._handleReplyMessage(e);case 0:return this._handleRequestMessage(e);case 2:return this._handleSubscribeEventMessage(e);case 3:return this._handleEventMessage(e);case 4:return this._handleUnsubscribeEventMessage(e)}}_handleReplyMessage(e){if(!this._pendingReplies[e.seq]){console.warn("Got reply to unknown seq");return}let t=this._pendingReplies[e.seq];if(delete this._pendingReplies[e.seq],e.err){let i=e.err;e.err.$isError&&((i=Error()).name=e.err.name,i.message=e.err.message,i.stack=e.err.stack),t.reject(i);return}t.resolve(e.res)}_handleRequestMessage(e){let t=e.req,i=this._handler.handleMessage(e.method,e.args);i.then(e=>{this._send(new lv(this._workerId,t,e,void 0))},e=>{e.detail instanceof Error&&(e.detail=i4(e.detail)),this._send(new lv(this._workerId,t,void 0,i4(e)))})}_handleSubscribeEventMessage(e){let t=e.req,i=this._handler.handleEvent(e.eventName,e.arg)(e=>{this._send(new l_(this._workerId,t,e))});this._pendingEvents.set(t,i)}_handleEventMessage(e){if(!this._pendingEmitters.has(e.req)){console.warn("Got event for unknown req");return}this._pendingEmitters.get(e.req).fire(e.event)}_handleUnsubscribeEventMessage(e){if(!this._pendingEvents.has(e.req)){console.warn("Got unsubscribe for unknown req");return}this._pendingEvents.get(e.req).dispose(),this._pendingEvents.delete(e.req)}_send(e){let t=[];if(0===e.type)for(let i=0;i{this._protocol.handleMessage(e)},e=>{null==n||n(e)})),this._protocol=new lS({sendMessage:(e,t)=>{this._worker.postMessage(e,t)},handleMessage:(e,t)=>{if("function"!=typeof i[e])return Promise.reject(Error("Missing method "+e+" on main thread host."));try{return Promise.resolve(i[e].apply(i,t))}catch(e){return Promise.reject(e)}},handleEvent:(e,t)=>{if(lb(e)){let n=i[e].call(i,t);if("function"!=typeof n)throw Error(`Missing dynamic event ${e} on main thread host.`);return n}if(lT(e)){let t=i[e];if("function"!=typeof t)throw Error(`Missing event ${e} on main thread host.`);return t}throw Error(`Malformed event name ${e}`)}}),this._protocol.setWorkerId(this._worker.getId());let r=null,o=globalThis.require;void 0!==o&&"function"==typeof o.getConfig?r=o.getConfig():void 0!==globalThis.requirejs&&(r=globalThis.requirejs.s.contexts._.config);let s=(0,oj.$E)(i);this._onModuleLoaded=this._protocol.sendMessage("$initialize",[this._worker.getId(),JSON.parse(JSON.stringify(r)),t,s]);let a=(e,t)=>this._request(e,t),l=(e,t)=>this._protocol.listen(e,t);this._lazyProxy=new Promise((e,i)=>{n=i,this._onModuleLoaded.then(t=>{e(function(e,t,i){let n=e=>function(){let i=Array.prototype.slice.call(arguments,0);return t(e,i)},r=e=>function(t){return i(e,t)},o={};for(let t of e){if(lb(t)){o[t]=r(t);continue}if(lT(t)){o[t]=i(t,void 0);continue}o[t]=n(t)}return o}(t,a,l))},e=>{i(e),this._onError("Worker failed to load "+t,e)})})}getProxyObject(){return this._lazyProxy}_request(e,t){return new Promise((i,n)=>{this._onModuleLoaded.then(()=>{this._protocol.sendMessage(e,t).then(i,n)},n)})}_onError(e,t){console.error(e),console.info(t)}}function lT(e){return"o"===e[0]&&"n"===e[1]&&r1(e.charCodeAt(2))}function lb(e){return/^onDynamic/.test(e)&&r1(e.charCodeAt(9))}function lA(e,t){var i;let n=globalThis.MonacoEnvironment;if(null==n?void 0:n.createTrustedTypesPolicy)try{return n.createTrustedTypesPolicy(e,t)}catch(e){i1(e);return}try{return null===(i=window.trustedTypes)||void 0===i?void 0:i.createPolicy(e,t)}catch(e){i1(e);return}}let lR=lA("defaultWorkerFactory",{createScriptURL:e=>e});class lL{constructor(e,t,i,n,r){this.id=t;let o=function(e){let t=globalThis.MonacoEnvironment;if(t){if("function"==typeof t.getWorker)return t.getWorker("workerMain.js",e);if("function"==typeof t.getWorkerUrl){let i=t.getWorkerUrl("workerMain.js",e);return new Worker(lR?lR.createScriptURL(i):i,{name:e})}}throw Error("You must define a function MonacoEnvironment.getWorkerUrl or MonacoEnvironment.getWorker")}(i);("function"==typeof o.then?0:1)?this.worker=Promise.resolve(o):this.worker=o,this.postMessage(e,[]),this.worker.then(e=>{e.onmessage=function(e){n(e.data)},e.onmessageerror=r,"function"==typeof e.addEventListener&&e.addEventListener("error",r)})}getId(){return this.id}postMessage(e,t){var i;null===(i=this.worker)||void 0===i||i.then(i=>i.postMessage(e,t))}dispose(){var e;null===(e=this.worker)||void 0===e||e.then(e=>e.terminate()),this.worker=null}}class lN{constructor(e){this._label=e,this._webWorkerFailedBeforeError=!1}create(e,t,i){let n=++lN.LAST_WORKER_ID;if(this._webWorkerFailedBeforeError)throw this._webWorkerFailedBeforeError;return new lL(e,n,this._label||"anonymous"+n,t,e=>{lf(e),this._webWorkerFailedBeforeError=e,i(e)})}}lN.LAST_WORKER_ID=0;class lI{constructor(e,t,i,n){this.originalStart=e,this.originalLength=t,this.modifiedStart=i,this.modifiedLength=n}getOriginalEnd(){return this.originalStart+this.originalLength}getModifiedEnd(){return this.modifiedStart+this.modifiedLength}}function lw(e,t){return(t<<5)-t+e|0}function lO(e,t){t=lw(149417,t);for(let i=0,n=e.length;i>>n)>>>0}function lD(e,t=0,i=e.byteLength,n=0){for(let r=0;re.toString(16).padStart(2,"0")).join(""):function(e,t,i="0"){for(;e.length>>0).toString(16),t/4)}class lk{constructor(){this._h0=1732584193,this._h1=4023233417,this._h2=2562383102,this._h3=271733878,this._h4=3285377520,this._buff=new Uint8Array(67),this._buffDV=new DataView(this._buff.buffer),this._buffLen=0,this._totalLen=0,this._leftoverHighSurrogate=0,this._finished=!1}update(e){let t,i;let n=e.length;if(0===n)return;let r=this._buff,o=this._buffLen,s=this._leftoverHighSurrogate;for(0!==s?(t=s,i=-1,s=0):(t=e.charCodeAt(0),i=0);;){let a=t;if(r3(t)){if(i+1>>6,e[t++]=128|(63&i)>>>0):i<65536?(e[t++]=224|(61440&i)>>>12,e[t++]=128|(4032&i)>>>6,e[t++]=128|(63&i)>>>0):(e[t++]=240|(1835008&i)>>>18,e[t++]=128|(258048&i)>>>12,e[t++]=128|(4032&i)>>>6,e[t++]=128|(63&i)>>>0),t>=64&&(this._step(),t-=64,this._totalLen+=64,e[0]=e[64],e[1]=e[65],e[2]=e[66]),t}digest(){return this._finished||(this._finished=!0,this._leftoverHighSurrogate&&(this._leftoverHighSurrogate=0,this._buffLen=this._push(this._buff,this._buffLen,65533)),this._totalLen+=this._buffLen,this._wrapUp()),lM(this._h0)+lM(this._h1)+lM(this._h2)+lM(this._h3)+lM(this._h4)}_wrapUp(){this._buff[this._buffLen++]=128,lD(this._buff,this._buffLen),this._buffLen>56&&(this._step(),lD(this._buff));let e=8*this._totalLen;this._buffDV.setUint32(56,Math.floor(e/4294967296),!1),this._buffDV.setUint32(60,e%4294967296,!1),this._step()}_step(){let e,t,i;let n=lk._bigBlock32,r=this._buffDV;for(let e=0;e<64;e+=4)n.setUint32(e,r.getUint32(e,!1),!1);for(let e=64;e<320;e+=4)n.setUint32(e,lx(n.getUint32(e-12,!1)^n.getUint32(e-32,!1)^n.getUint32(e-56,!1)^n.getUint32(e-64,!1),1),!1);let o=this._h0,s=this._h1,a=this._h2,l=this._h3,h=this._h4;for(let r=0;r<80;r++)r<20?(e=s&a|~s&l,t=1518500249):r<40?(e=s^a^l,t=1859775393):r<60?(e=s&a|s&l|a&l,t=2400959708):(e=s^a^l,t=3395469782),i=lx(o,5)+e+h+t+n.getUint32(4*r,!1)&4294967295,h=l,l=a,a=lx(s,30),s=o,o=i;this._h0=this._h0+o&4294967295,this._h1=this._h1+s&4294967295,this._h2=this._h2+a&4294967295,this._h3=this._h3+l&4294967295,this._h4=this._h4+h&4294967295}}lk._bigBlock32=new DataView(new ArrayBuffer(320));class lP{constructor(e){this.source=e}getElements(){let e=this.source,t=new Int32Array(e.length);for(let i=0,n=e.length;i0||this.m_modifiedCount>0)&&this.m_changes.push(new lI(this.m_originalStart,this.m_originalCount,this.m_modifiedStart,this.m_modifiedCount)),this.m_originalCount=0,this.m_modifiedCount=0,this.m_originalStart=1073741824,this.m_modifiedStart=1073741824}AddOriginalElement(e,t){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,t),this.m_originalCount++}AddModifiedElement(e,t){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,t),this.m_modifiedCount++}getChanges(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes}getReverseChanges(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes.reverse(),this.m_changes}}class lH{constructor(e,t,i=null){this.ContinueProcessingPredicate=i,this._originalSequence=e,this._modifiedSequence=t;let[n,r,o]=lH._getElements(e),[s,a,l]=lH._getElements(t);this._hasStrings=o&&l,this._originalStringElements=n,this._originalElementsOrHash=r,this._modifiedStringElements=s,this._modifiedElementsOrHash=a,this.m_forwardHistory=[],this.m_reverseHistory=[]}static _isStringArray(e){return e.length>0&&"string"==typeof e[0]}static _getElements(e){let t=e.getElements();if(lH._isStringArray(t)){let e=new Int32Array(t.length);for(let i=0,n=t.length;i=e&&n>=i&&this.ElementsAreEqual(t,n);)t--,n--;if(e>t||i>n){let r;return i<=n?(lF.Assert(e===t+1,"originalStart should only be one more than originalEnd"),r=[new lI(e,0,i,n-i+1)]):e<=t?(lF.Assert(i===n+1,"modifiedStart should only be one more than modifiedEnd"),r=[new lI(e,t-e+1,i,0)]):(lF.Assert(e===t+1,"originalStart should only be one more than originalEnd"),lF.Assert(i===n+1,"modifiedStart should only be one more than modifiedEnd"),r=[]),r}let o=[0],s=[0],a=this.ComputeRecursionPoint(e,t,i,n,o,s,r),l=o[0],h=s[0];if(null!==a)return a;if(!r[0]){let o=this.ComputeDiffRecursive(e,l,i,h,r),s=[];return s=r[0]?[new lI(l+1,t-(l+1)+1,h+1,n-(h+1)+1)]:this.ComputeDiffRecursive(l+1,t,h+1,n,r),this.ConcatenateChanges(o,s)}return[new lI(e,t-e+1,i,n-i+1)]}WALKTRACE(e,t,i,n,r,o,s,a,l,h,u,d,c,g,p,f,m,v){let E=null,_=null,C=new lU,S=t,y=i,T=c[0]-f[0]-n,b=-1073741824,A=this.m_forwardHistory.length-1;do{let t=T+e;t===S||t=0&&(e=(l=this.m_forwardHistory[A])[0],S=1,y=l.length-1)}while(--A>=-1);if(E=C.getReverseChanges(),v[0]){let e=c[0]+1,t=f[0]+1;if(null!==E&&E.length>0){let i=E[E.length-1];e=Math.max(e,i.getOriginalEnd()),t=Math.max(t,i.getModifiedEnd())}_=[new lI(e,d-e+1,t,p-t+1)]}else{C=new lU,S=o,y=s,T=c[0]-f[0]-a,b=1073741824,A=m?this.m_reverseHistory.length-1:this.m_reverseHistory.length-2;do{let e=T+r;e===S||e=h[e+1]?(g=(u=h[e+1]-1)-T-a,u>b&&C.MarkNextChange(),b=u+1,C.AddOriginalElement(u+1,g+1),T=e+1-r):(g=(u=h[e-1])-T-a,u>b&&C.MarkNextChange(),b=u,C.AddModifiedElement(u+1,g+1),T=e-1-r),A>=0&&(r=(h=this.m_reverseHistory[A])[0],S=1,y=h.length-1)}while(--A>=-1);_=C.getChanges()}return this.ConcatenateChanges(E,_)}ComputeRecursionPoint(e,t,i,n,r,o,s){let a=0,l=0,h=0,u=0,d=0,c=0;e--,i--,r[0]=0,o[0]=0,this.m_forwardHistory=[],this.m_reverseHistory=[];let g=t-e+(n-i),p=g+1,f=new Int32Array(p),m=new Int32Array(p),v=n-i,E=t-e,_=e-i,C=t-n,S=E-v,y=S%2==0;f[v]=e,m[E]=t,s[0]=!1;for(let S=1;S<=g/2+1;S++){let g=0,T=0;h=this.ClipDiagonalBound(v-S,S,v,p),u=this.ClipDiagonalBound(v+S,S,v,p);for(let e=h;e<=u;e+=2){l=(a=e===h||eg+T&&(g=a,T=l),!y&&Math.abs(e-E)<=S-1&&a>=m[e]){if(r[0]=a,o[0]=l,i<=m[e]&&S<=1448)return this.WALKTRACE(v,h,u,_,E,d,c,C,f,m,a,t,r,l,n,o,y,s);return null}}let b=(g-e+(T-i)-S)/2;if(null!==this.ContinueProcessingPredicate&&!this.ContinueProcessingPredicate(g,b)){if(s[0]=!0,r[0]=g,o[0]=T,!(b>0)||!(S<=1448))return e++,i++,[new lI(e,t-e+1,i,n-i+1)];break}d=this.ClipDiagonalBound(E-S,S,E,p),c=this.ClipDiagonalBound(E+S,S,E,p);for(let g=d;g<=c;g+=2){l=(a=g===d||g=m[g+1]?m[g+1]-1:m[g-1])-(g-E)-C;let p=a;for(;a>e&&l>i&&this.ElementsAreEqual(a,l);)a--,l--;if(m[g]=a,y&&Math.abs(g-v)<=S&&a<=f[g]){if(r[0]=a,o[0]=l,p>=f[g]&&S<=1448)return this.WALKTRACE(v,h,u,_,E,d,c,C,f,m,a,t,r,l,n,o,y,s);return null}}if(S<=1447){let e=new Int32Array(u-h+2);e[0]=v-h+1,lB.Copy2(f,h,e,1,u-h+1),this.m_forwardHistory.push(e),(e=new Int32Array(c-d+2))[0]=E-d+1,lB.Copy2(m,d,e,1,c-d+1),this.m_reverseHistory.push(e)}}return this.WALKTRACE(v,h,u,_,E,d,c,C,f,m,a,t,r,l,n,o,y,s)}PrettifyChanges(e){for(let t=0;t0,s=i.modifiedLength>0;for(;i.originalStart+i.originalLength=0;t--){let i=e[t],n=0,r=0;if(t>0){let i=e[t-1];n=i.originalStart+i.originalLength,r=i.modifiedStart+i.modifiedLength}let o=i.originalLength>0,s=i.modifiedLength>0,a=0,l=this._boundaryScore(i.originalStart,i.originalLength,i.modifiedStart,i.modifiedLength);for(let e=1;;e++){let t=i.originalStart-e,h=i.modifiedStart-e;if(tl&&(l=d,a=e)}i.originalStart-=a,i.modifiedStart-=a;let h=[null];if(t>0&&this.ChangesOverlap(e[t-1],e[t],h)){e[t-1]=h[0],e.splice(t,1),t++;continue}}if(this._hasStrings)for(let t=1,i=e.length;t0&&i>a&&(a=i,l=t,h=e)}return a>0?[l,h]:null}_contiguousSequenceScore(e,t,i){let n=0;for(let r=0;r=this._originalElementsOrHash.length-1||this._hasStrings&&/^\s*$/.test(this._originalStringElements[e])}_OriginalRegionIsBoundary(e,t){if(this._OriginalIsBoundary(e)||this._OriginalIsBoundary(e-1))return!0;if(t>0){let i=e+t;if(this._OriginalIsBoundary(i-1)||this._OriginalIsBoundary(i))return!0}return!1}_ModifiedIsBoundary(e){return e<=0||e>=this._modifiedElementsOrHash.length-1||this._hasStrings&&/^\s*$/.test(this._modifiedStringElements[e])}_ModifiedRegionIsBoundary(e,t){if(this._ModifiedIsBoundary(e)||this._ModifiedIsBoundary(e-1))return!0;if(t>0){let i=e+t;if(this._ModifiedIsBoundary(i-1)||this._ModifiedIsBoundary(i))return!0}return!1}_boundaryScore(e,t,i,n){let r=this._OriginalRegionIsBoundary(e,t)?1:0,o=this._ModifiedRegionIsBoundary(i,n)?1:0;return r+o}ConcatenateChanges(e,t){let i=[];if(0===e.length||0===t.length)return t.length>0?t:e;if(this.ChangesOverlap(e[e.length-1],t[0],i)){let n=Array(e.length+t.length-1);return lB.Copy(e,0,n,0,e.length-1),n[e.length-1]=i[0],lB.Copy(t,1,n,e.length,t.length-1),n}{let i=Array(e.length+t.length);return lB.Copy(e,0,i,0,e.length),lB.Copy(t,0,i,e.length,t.length),i}}ChangesOverlap(e,t,i){if(lF.Assert(e.originalStart<=t.originalStart,"Left change is not less than or equal to right change"),lF.Assert(e.modifiedStart<=t.modifiedStart,"Left change is not less than or equal to right change"),!(e.originalStart+e.originalLength>=t.originalStart)&&!(e.modifiedStart+e.modifiedLength>=t.modifiedStart))return i[0]=null,!1;{let n=e.originalStart,r=e.originalLength,o=e.modifiedStart,s=e.modifiedLength;return e.originalStart+e.originalLength>=t.originalStart&&(r=t.originalStart+t.originalLength-e.originalStart),e.modifiedStart+e.modifiedLength>=t.modifiedStart&&(s=t.modifiedStart+t.modifiedLength-e.modifiedStart),i[0]=new lI(n,r,o,s),!0}}ClipDiagonalBound(e,t,i,n){if(e>=0&&e255?255:0|e}function lW(e){return e<0?0:e>4294967295?4294967295:0|e}class lG{constructor(e){this.values=e,this.prefixSum=new Uint32Array(e.length),this.prefixSumValidIndex=new Int32Array(1),this.prefixSumValidIndex[0]=-1}insertValues(e,t){e=lW(e);let i=this.values,n=this.prefixSum,r=t.length;return 0!==r&&(this.values=new Uint32Array(i.length+r),this.values.set(i.subarray(0,e),0),this.values.set(i.subarray(e),e+r),this.values.set(t,e),e-1=0&&this.prefixSum.set(n.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}setValue(e,t){return e=lW(e),t=lW(t),this.values[e]!==t&&(this.values[e]=t,e-1=i.length)return!1;let r=i.length-e;return t>=r&&(t=r),0!==t&&(this.values=new Uint32Array(i.length-t),this.values.set(i.subarray(0,e),0),this.values.set(i.subarray(e+t),e),this.prefixSum=new Uint32Array(this.values.length),e-1=0&&this.prefixSum.set(n.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}getTotalSum(){return 0===this.values.length?0:this._getPrefixSum(this.values.length-1)}getPrefixSum(e){return e<0?0:(e=lW(e),this._getPrefixSum(e))}_getPrefixSum(e){if(e<=this.prefixSumValidIndex[0])return this.prefixSum[e];let t=this.prefixSumValidIndex[0]+1;0===t&&(this.prefixSum[0]=this.values[0],t++),e>=this.values.length&&(e=this.values.length-1);for(let i=t;i<=e;i++)this.prefixSum[i]=this.prefixSum[i-1]+this.values[i];return this.prefixSumValidIndex[0]=Math.max(this.prefixSumValidIndex[0],e),this.prefixSum[e]}getIndexOf(e){e=Math.floor(e),this.getTotalSum();let t=0,i=this.values.length-1,n=0,r=0,o=0;for(;t<=i;)if(n=t+(i-t)/2|0,e<(o=(r=this.prefixSum[n])-this.values[n]))i=n-1;else if(e>=r)t=n+1;else break;return new lY(n,e-o)}}class lz{constructor(e){this._values=e,this._isValid=!1,this._validEndIndex=-1,this._prefixSum=[],this._indexBySum=[]}getTotalSum(){return this._ensureValid(),this._indexBySum.length}getPrefixSum(e){return(this._ensureValid(),0===e)?0:this._prefixSum[e-1]}getIndexOf(e){this._ensureValid();let t=this._indexBySum[e],i=t>0?this._prefixSum[t-1]:0;return new lY(t,e-i)}removeValues(e,t){this._values.splice(e,t),this._invalidate(e)}insertValues(e,t){this._values=(0,sq.Zv)(this._values,e,t),this._invalidate(e)}_invalidate(e){this._isValid=!1,this._validEndIndex=Math.min(this._validEndIndex,e-1)}_ensureValid(){if(!this._isValid){for(let e=this._validEndIndex+1,t=this._values.length;e0?this._prefixSum[e-1]:0;this._prefixSum[e]=i+t;for(let n=0;n=0&&e<256?this._asciiMap[e]=i:this._map.set(e,i)}get(e){return e>=0&&e<256?this._asciiMap[e]:this._map.get(e)||this._defaultValue}clear(){this._asciiMap.fill(this._defaultValue),this._map.clear()}}class lX{constructor(e,t,i){let n=new Uint8Array(e*t);for(let r=0,o=e*t;rt&&(t=o),r>i&&(i=r),s>i&&(i=s)}t++,i++;let n=new lX(i,t,0);for(let t=0,i=e.length;t=this._maxCharCode?0:this._states.get(e,t)}}let lq=null;function lZ(){return null===lq&&(lq=new lj([[1,104,2],[1,72,2],[1,102,6],[1,70,6],[2,116,3],[2,84,3],[3,116,4],[3,84,4],[4,112,5],[4,80,5],[5,115,9],[5,83,9],[5,58,10],[6,105,7],[6,73,7],[7,108,8],[7,76,8],[8,101,9],[8,69,9],[9,58,10],[10,47,11],[11,47,12]])),lq}let lJ=null;class lQ{static _createLink(e,t,i,n,r){let o=r-1;do{let i=t.charCodeAt(o),n=e.get(i);if(2!==n)break;o--}while(o>n);if(n>0){let e=t.charCodeAt(n-1),i=t.charCodeAt(o);(40===e&&41===i||91===e&&93===i||123===e&&125===i)&&o--}return{range:{startLineNumber:i,startColumn:n+1,endLineNumber:i,endColumn:o+2},url:t.substring(n,o+1)}}static computeLinks(e,t=lZ()){let i=function(){if(null===lJ){lJ=new l$(0);let e=" <>'\"、。。、,.:;‘〈「『〔([{「」}])〕』」〉’`~…";for(let t=0;t=0?((n+=i?1:-1)<0?n=e.length-1:n%=e.length,e[n]):null}}l0.INSTANCE=new l0;class l1 extends l${constructor(e){super(0);for(let t=0,i=e.length;t(t.hasOwnProperty(i)||(t[i]=e(i)),t[i])}(e=>new l1(e));class l4{constructor(e,t,i,n){this.searchString=e,this.isRegex=t,this.matchCase=i,this.wordSeparators=n}parseSearchRequest(){let e;if(""===this.searchString)return null;e=this.isRegex?function(e){if(!e||0===e.length)return!1;for(let t=0,i=e.length;t=i)break;let n=e.charCodeAt(t);if(110===n||114===n||87===n)return!0}}return!1}(this.searchString):this.searchString.indexOf("\n")>=0;let t=null;try{t=rG(this.searchString,this.isRegex,{matchCase:this.matchCase,wholeWord:!1,multiline:e,global:!0,unicode:!0})}catch(e){return null}if(!t)return null;let i=!this.isRegex&&!e;return i&&this.searchString.toLowerCase()!==this.searchString.toUpperCase()&&(i=this.matchCase),new sH(t,this.wordSeparators?l2(this.wordSeparators):null,i?this.searchString:null)}}function l5(e,t,i){if(!i)return new sB(e,null);let n=[];for(let e=0,i=t.length;e>0);t[r]>=e?n=r-1:t[r+1]>=e?(i=r,n=r):i=r+1}return i+1}}class l3{static findMatches(e,t,i,n,r){let o=t.parseSearchRequest();return o?o.regex.multiline?this._doFindMatchesMultiline(e,i,new l7(o.wordSeparators,o.regex),n,r):this._doFindMatchesLineByLine(e,i,o,n,r):[]}static _getMultilineMatchRange(e,t,i,n,r,o){let s,a;let l=0;if(n?(l=n.findLineFeedCountBeforeOffset(r),s=t+r+l):s=t+r,n){let e=n.findLineFeedCountBeforeOffset(r+o.length),t=e-l;a=s+o.length+t}else a=s+o.length;let h=e.getPositionAt(s),u=e.getPositionAt(a);return new r_(h.lineNumber,h.column,u.lineNumber,u.column)}static _doFindMatchesMultiline(e,t,i,n,r){let o;let s=e.getOffsetAt(t.getStartPosition()),a=e.getValueInRange(t,1),l="\r\n"===e.getEOL()?new l6(a):null,h=[],u=0;for(i.reset(0);(o=i.next(a))&&(h[u++]=l5(this._getMultilineMatchRange(e,s,a,l,o.index,o[0]),o,n),!(u>=r)););return h}static _doFindMatchesLineByLine(e,t,i,n,r){let o=[],s=0;if(t.startLineNumber===t.endLineNumber){let a=e.getLineContent(t.startLineNumber).substring(t.startColumn-1,t.endColumn-1);return s=this._findMatchesInLine(i,a,t.startLineNumber,t.startColumn-1,s,o,n,r),o}let a=e.getLineContent(t.startLineNumber).substring(t.startColumn-1);s=this._findMatchesInLine(i,a,t.startLineNumber,t.startColumn-1,s,o,n,r);for(let a=t.startLineNumber+1;a=a))););return r}let u=new l7(e.wordSeparators,e.regex);u.reset(0);do if((l=u.next(t))&&(o[r++]=l5(new r_(i,l.index+1+n,i,l.index+1+l[0].length+n),l,s),r>=a))break;while(l);return r}static findNextMatch(e,t,i,n){let r=t.parseSearchRequest();if(!r)return null;let o=new l7(r.wordSeparators,r.regex);return r.regex.multiline?this._doFindNextMatchMultiline(e,i,o,n):this._doFindNextMatchLineByLine(e,i,o,n)}static _doFindNextMatchMultiline(e,t,i,n){let r=new rE(t.lineNumber,1),o=e.getOffsetAt(r),s=e.getLineCount(),a=e.getValueInRange(new r_(r.lineNumber,r.column,s,e.getLineMaxColumn(s)),1),l="\r\n"===e.getEOL()?new l6(a):null;i.reset(t.column-1);let h=i.next(a);return h?l5(this._getMultilineMatchRange(e,o,a,l,h.index,h[0]),h,n):1!==t.lineNumber||1!==t.column?this._doFindNextMatchMultiline(e,new rE(1,1),i,n):null}static _doFindNextMatchLineByLine(e,t,i,n){let r=e.getLineCount(),o=t.lineNumber,s=e.getLineContent(o),a=this._findFirstMatchInLine(i,s,o,t.column,n);if(a)return a;for(let t=1;t<=r;t++){let s=(o+t-1)%r,a=e.getLineContent(s+1),l=this._findFirstMatchInLine(i,a,s+1,1,n);if(l)return l}return null}static _findFirstMatchInLine(e,t,i,n,r){e.reset(n-1);let o=e.next(t);return o?l5(new r_(i,o.index+1,i,o.index+1+o[0].length),o,r):null}static findPreviousMatch(e,t,i,n){let r=t.parseSearchRequest();if(!r)return null;let o=new l7(r.wordSeparators,r.regex);return r.regex.multiline?this._doFindPreviousMatchMultiline(e,i,o,n):this._doFindPreviousMatchLineByLine(e,i,o,n)}static _doFindPreviousMatchMultiline(e,t,i,n){let r=this._doFindMatchesMultiline(e,new r_(1,1,t.lineNumber,t.column),i,n,9990);if(r.length>0)return r[r.length-1];let o=e.getLineCount();return t.lineNumber!==o||t.column!==e.getLineMaxColumn(o)?this._doFindPreviousMatchMultiline(e,new rE(o,e.getLineMaxColumn(o)),i,n):null}static _doFindPreviousMatchLineByLine(e,t,i,n){let r=e.getLineCount(),o=t.lineNumber,s=e.getLineContent(o).substring(0,t.column-1),a=this._findLastMatchInLine(i,s,o,n);if(a)return a;for(let t=1;t<=r;t++){let s=(r+o-t-1)%r,a=e.getLineContent(s+1),l=this._findLastMatchInLine(i,a,s+1,n);if(l)return l}return null}static _findLastMatchInLine(e,t,i,n){let r,o=null;for(e.reset(0);r=e.next(t);)o=l5(new r_(i,r.index+1,i,r.index+1+r[0].length),r,n);return o}}function l9(e,t,i,n,r){return function(e,t,i,n,r){if(0===n)return!0;let o=t.charCodeAt(n-1);if(0!==e.get(o)||13===o||10===o)return!0;if(r>0){let i=t.charCodeAt(n);if(0!==e.get(i))return!0}return!1}(e,t,0,n,r)&&function(e,t,i,n,r){if(n+r===i)return!0;let o=t.charCodeAt(n+r);if(0!==e.get(o)||13===o||10===o)return!0;if(r>0){let i=t.charCodeAt(n+r-1);if(0!==e.get(i))return!0}return!1}(e,t,i,n,r)}class l7{constructor(e,t){this._wordSeparators=e,this._searchRegex=t,this._prevMatchStartIndex=-1,this._prevMatchLength=0}reset(e){this._searchRegex.lastIndex=e,this._prevMatchStartIndex=-1,this._prevMatchLength=0}next(e){let t;let i=e.length;do{if(this._prevMatchStartIndex+this._prevMatchLength===i||!(t=this._searchRegex.exec(e)))break;let n=t.index,r=t[0].length;if(n===this._prevMatchStartIndex&&r===this._prevMatchLength){if(0===r){r8(e,i,this._searchRegex.lastIndex)>65535?this._searchRegex.lastIndex+=2:this._searchRegex.lastIndex+=1;continue}break}if(this._prevMatchStartIndex=n,this._prevMatchLength=r,!this._wordSeparators||l9(this._wordSeparators,e,i,n,r))return t}while(t);return null}}class l8{static computeUnicodeHighlights(e,t,i){let n,r;let o=i?i.startLineNumber:1,s=i?i.endLineNumber:e.getLineCount(),a=new he(t),l=a.getCandidateCodePoints();n="allNonBasicAscii"===l?RegExp("[^\\t\\n\\r\\x20-\\x7E]","g"):RegExp(`${function(e,t){let i=`[${rV(e.map(e=>String.fromCodePoint(e)).join(""))}]`;return i}(Array.from(l))}`,"g");let h=new l7(null,n),u=[],d=!1,c=0,g=0,p=0;t:for(let t=o;t<=s;t++){let i=e.getLineContent(t),n=i.length;h.reset(0);do if(r=h.next(i)){let e=r.index,o=r.index+r[0].length;if(e>0){let t=i.charCodeAt(e-1);r3(t)&&e--}if(o+1=1e3){d=!0;break t}u.push(new r_(t,e+1,t,o+1))}}while(r)}return{ranges:u,hasMore:d,ambiguousCharacterCount:c,invisibleCharacterCount:g,nonBasicAsciiCharacterCount:p}}static computeUnicodeHighlightReason(e,t){let i=new he(t),n=i.shouldHighlightNonBasicASCII(e,null);switch(n){case 0:return null;case 2:return{kind:1};case 3:{let n=e.codePointAt(0),r=i.ambiguousCharacters.getPrimaryConfusable(n),o=of.getLocales().filter(e=>!of.getInstance(new Set([...t.allowedLocales,e])).isAmbiguous(n));return{kind:0,confusableWith:String.fromCodePoint(r),notAmbiguousInLocales:o}}case 1:return{kind:2}}}}class he{constructor(e){this.options=e,this.allowedCodePoints=new Set(e.allowedCodePoints),this.ambiguousCharacters=of.getInstance(new Set(e.allowedLocales))}getCandidateCodePoints(){if(this.options.nonBasicASCII)return"allNonBasicAscii";let e=new Set;if(this.options.invisibleCharacters)for(let t of om.codePoints)ht(String.fromCodePoint(t))||e.add(t);if(this.options.ambiguousCharacters)for(let t of this.ambiguousCharacters.getConfusableCodePoints())e.add(t);for(let t of this.allowedCodePoints)e.delete(t);return e}shouldHighlightNonBasicASCII(e,t){let i=e.codePointAt(0);if(this.allowedCodePoints.has(i))return 0;if(this.options.nonBasicASCII)return 1;let n=!1,r=!1;if(t)for(let e of t){let t=e.codePointAt(0),i=os(e);n=n||i,i||this.ambiguousCharacters.isAmbiguous(t)||om.isInvisibleCharacter(t)||(r=!0)}return!n&&r?0:this.options.invisibleCharacters&&!ht(e)&&om.isInvisibleCharacter(i)?2:this.options.ambiguousCharacters&&this.ambiguousCharacters.isAmbiguous(i)?3:0}}function ht(e){return" "===e||"\n"===e||" "===e}class hi{static fromRange(e){return new hi(e.startLineNumber,e.endLineNumber)}static subtract(e,t){return t?e.startLineNumber=s.startLineNumber?o=new hi(o.startLineNumber,Math.max(o.endLineNumberExclusive,s.endLineNumberExclusive)):(i.push(o),o=s)}return null!==o&&i.push(o),i}static ofLength(e,t){return new hi(e,e+t)}static deserialize(e){return new hi(e[0],e[1])}constructor(e,t){if(e>t)throw new nt(`startLineNumber ${e} cannot be after endLineNumberExclusive ${t}`);this.startLineNumber=e,this.endLineNumberExclusive=t}contains(e){return this.startLineNumber<=e&&e${this.modifiedRange.toString()}}`}get changedLineCount(){return Math.max(this.originalRange.length,this.modifiedRange.length)}flip(){var e;return new hr(this.modifiedRange,this.originalRange,null===(e=this.innerChanges)||void 0===e?void 0:e.map(e=>e.flip()))}}class ho{constructor(e,t){this.originalRange=e,this.modifiedRange=t}toString(){return`{${this.originalRange.toString()}->${this.modifiedRange.toString()}}`}flip(){return new ho(this.modifiedRange,this.originalRange)}}class hs{constructor(e,t){this.original=e,this.modified=t}toString(){return`{${this.original.toString()}->${this.modified.toString()}}`}flip(){return new hs(this.modified,this.original)}}class ha{constructor(e,t){this.lineRangeMapping=e,this.changes=t}flip(){return new ha(this.lineRangeMapping.flip(),this.changes.map(e=>e.flip()))}}class hl{computeDiff(e,t,i){var n;let r=new hp(e,t,{maxComputationTime:i.maxComputationTimeMs,shouldIgnoreTrimWhitespace:i.ignoreTrimWhitespace,shouldComputeCharChanges:!0,shouldMakePrettyDiff:!0,shouldPostProcessCharChanges:!0}),o=r.computeDiff(),s=[],a=null;for(let e of o.changes){let t,i;t=0===e.originalEndLineNumber?new hi(e.originalStartLineNumber+1,e.originalStartLineNumber+1):new hi(e.originalStartLineNumber,e.originalEndLineNumber+1),i=0===e.modifiedEndLineNumber?new hi(e.modifiedStartLineNumber+1,e.modifiedStartLineNumber+1):new hi(e.modifiedStartLineNumber,e.modifiedEndLineNumber+1);let r=new hr(t,i,null===(n=e.charChanges)||void 0===n?void 0:n.map(e=>new ho(new r_(e.originalStartLineNumber,e.originalStartColumn,e.originalEndLineNumber,e.originalEndColumn),new r_(e.modifiedStartLineNumber,e.modifiedStartColumn,e.modifiedEndLineNumber,e.modifiedEndColumn))));a&&(a.modifiedRange.endLineNumberExclusive===r.modifiedRange.startLineNumber||a.originalRange.endLineNumberExclusive===r.originalRange.startLineNumber)&&(r=new hr(a.originalRange.join(r.originalRange),a.modifiedRange.join(r.modifiedRange),a.innerChanges&&r.innerChanges?a.innerChanges.concat(r.innerChanges):void 0),s.pop()),s.push(r),a=r}return o$(()=>oX(s,(e,t)=>t.originalRange.startLineNumber-e.originalRange.endLineNumberExclusive==t.modifiedRange.startLineNumber-e.modifiedRange.endLineNumberExclusive&&e.originalRange.endLineNumberExclusive(10===e?"\\n":String.fromCharCode(e))+`-(${this._lineNumbers[t]},${this._columns[t]})`).join(", ")+"]"}_assertIndex(e,t){if(e<0||e>=t.length)throw Error("Illegal index")}getElements(){return this._charCodes}getStartLineNumber(e){return e>0&&e===this._lineNumbers.length?this.getEndLineNumber(e-1):(this._assertIndex(e,this._lineNumbers),this._lineNumbers[e])}getEndLineNumber(e){return -1===e?this.getStartLineNumber(e+1):(this._assertIndex(e,this._lineNumbers),10===this._charCodes[e])?this._lineNumbers[e]+1:this._lineNumbers[e]}getStartColumn(e){return e>0&&e===this._columns.length?this.getEndColumn(e-1):(this._assertIndex(e,this._columns),this._columns[e])}getEndColumn(e){return -1===e?this.getStartColumn(e+1):(this._assertIndex(e,this._columns),10===this._charCodes[e])?1:this._columns[e]+1}}class hc{constructor(e,t,i,n,r,o,s,a){this.originalStartLineNumber=e,this.originalStartColumn=t,this.originalEndLineNumber=i,this.originalEndColumn=n,this.modifiedStartLineNumber=r,this.modifiedStartColumn=o,this.modifiedEndLineNumber=s,this.modifiedEndColumn=a}static createFromDiffChange(e,t,i){let n=t.getStartLineNumber(e.originalStart),r=t.getStartColumn(e.originalStart),o=t.getEndLineNumber(e.originalStart+e.originalLength-1),s=t.getEndColumn(e.originalStart+e.originalLength-1),a=i.getStartLineNumber(e.modifiedStart),l=i.getStartColumn(e.modifiedStart),h=i.getEndLineNumber(e.modifiedStart+e.modifiedLength-1),u=i.getEndColumn(e.modifiedStart+e.modifiedLength-1);return new hc(n,r,o,s,a,l,h,u)}}class hg{constructor(e,t,i,n,r){this.originalStartLineNumber=e,this.originalEndLineNumber=t,this.modifiedStartLineNumber=i,this.modifiedEndLineNumber=n,this.charChanges=r}static createFromDiffResult(e,t,i,n,r,o,s){let a,l,h,u,d;if(0===t.originalLength?(a=i.getStartLineNumber(t.originalStart)-1,l=0):(a=i.getStartLineNumber(t.originalStart),l=i.getEndLineNumber(t.originalStart+t.originalLength-1)),0===t.modifiedLength?(h=n.getStartLineNumber(t.modifiedStart)-1,u=0):(h=n.getStartLineNumber(t.modifiedStart),u=n.getEndLineNumber(t.modifiedStart+t.modifiedLength-1)),o&&t.originalLength>0&&t.originalLength<20&&t.modifiedLength>0&&t.modifiedLength<20&&r()){let o=i.createCharSequence(e,t.originalStart,t.originalStart+t.originalLength-1),a=n.createCharSequence(e,t.modifiedStart,t.modifiedStart+t.modifiedLength-1);if(o.getElements().length>0&&a.getElements().length>0){let e=hh(o,a,r,!0).changes;s&&(e=function(e){if(e.length<=1)return e;let t=[e[0]],i=t[0];for(let n=1,r=e.length;n1&&s>1;){let n=e.charCodeAt(i-2),r=t.charCodeAt(s-2);if(n!==r)break;i--,s--}(i>1||s>1)&&this._pushTrimWhitespaceCharChange(n,r+1,1,i,o+1,1,s)}{let i=hm(e,1),s=hm(t,1),a=e.length+1,l=t.length+1;for(;i!0;let t=Date.now();return()=>Date.now()-tt))return new hE(e,t)}constructor(e,t){if(this.start=e,this.endExclusive=t,e>t)throw new nt(`Invalid range: ${this.toString()}`)}get isEmpty(){return this.start===this.endExclusive}delta(e){return new hE(this.start+e,this.endExclusive+e)}get length(){return this.endExclusive-this.start}toString(){return`[${this.start}, ${this.endExclusive})`}equals(e){return this.start===e.start&&this.endExclusive===e.endExclusive}containsRange(e){return this.start<=e.start&&e.endExclusive<=this.endExclusive}contains(e){return this.start<=e&&e ${this.seq2Range}`}join(e){return new hC(this.seq1Range.join(e.seq1Range),this.seq2Range.join(e.seq2Range))}delta(e){return 0===e?this:new hC(this.seq1Range.delta(e),this.seq2Range.delta(e))}}class hS{isValid(){return!0}}hS.instance=new hS;class hy{constructor(e){if(this.timeout=e,this.startTime=Date.now(),this.valid=!0,e<=0)throw new nt("timeout must be positive")}isValid(){let e=Date.now()-this.startTime0&&l>0&&3===o.get(a-1,l-1)&&(h+=s.get(a-1,l-1)),h+=n?n(a,l):1):h=-1;let c=Math.max(u,d,h);if(c===h){let e=a>0&&l>0?s.get(a-1,l-1):0;s.set(a,l,e+1),o.set(a,l,3)}else c===u?(s.set(a,l,0),o.set(a,l,1)):c===d&&(s.set(a,l,0),o.set(a,l,2));r.set(a,l,c)}let a=[],l=e.length,h=t.length;function u(e,t){(e+1!==l||t+1!==h)&&a.push(new hC(new hE(e+1,l),new hE(t+1,h))),l=e,h=t}let d=e.length-1,c=t.length-1;for(;d>=0&&c>=0;)3===o.get(d,c)?(u(d,c),d--,c--):1===o.get(d,c)?d--:c--;return u(-1,-1),a.reverse(),new h_(a,!1)}}function hA(e,t,i){let n=i;return n=function(e,t,i){if(0===i.length)return i;let n=[];n.push(i[0]);for(let r=1;r0&&(s=s.delta(r))}r.push(s)}return n.length>0&&r.push(n[n.length-1]),r}(e,t,n),n=function(e,t,i){if(!e.getBoundaryScore||!t.getBoundaryScore)return i;for(let n=0;n0?i[n-1]:void 0,o=i[n],s=n+1=n.start&&e.seq2Range.start-o>=r.start&&i.getElement(e.seq2Range.start-o)===i.getElement(e.seq2Range.endExclusive-o)&&o<100;)o++;o--;let s=0;for(;e.seq1Range.start+sl&&(l=h,a=n)}return e.delta(a)}class hL{compute(e,t,i=hS.instance){if(0===e.length||0===t.length)return h_.trivial(e,t);function n(i,n){for(;ie.length||d>t.length)continue;let c=n(u,d);o.set(a,c);let g=u===i?s.get(a+1):s.get(a-1);if(s.set(a,c!==u?new hN(g,u,d,c-u):g),o.get(a)===e.length&&o.get(a)-a===t.length)break i}}let l=s.get(a),h=[],u=e.length,d=t.length;for(;;){let e=l?l.x+l.length:0,t=l?l.y+l.length:0;if((e!==u||t!==d)&&h.push(new hC(new hE(e,u),new hE(t,d))),!l)break;u=l.x,d=l.y,l=l.prev}return h.reverse(),new h_(h,!1)}}class hN{constructor(e,t,i,n){this.prev=e,this.x=t,this.y=i,this.length=n}}class hI{constructor(){this.positiveArr=new Int32Array(10),this.negativeArr=new Int32Array(10)}get(e){return e<0?(e=-e-1,this.negativeArr[e]):this.positiveArr[e]}set(e,t){if(e<0){if((e=-e-1)>=this.negativeArr.length){let e=this.negativeArr;this.negativeArr=new Int32Array(2*e.length),this.negativeArr.set(e)}this.negativeArr[e]=t}else{if(e>=this.positiveArr.length){let e=this.positiveArr;this.positiveArr=new Int32Array(2*e.length),this.positiveArr.set(e)}this.positiveArr[e]=t}}}class hw{constructor(){this.positiveArr=[],this.negativeArr=[]}get(e){return e<0?(e=-e-1,this.negativeArr[e]):this.positiveArr[e]}set(e,t){e<0?(e=-e-1,this.negativeArr[e]=t):this.positiveArr[e]=t}}class hO{constructor(){this.dynamicProgrammingDiffing=new hb,this.myersDiffingAlgorithm=new hL}computeDiff(e,t,i){if(1===e.length&&0===e[0].length||1===t.length&&0===t[0].length)return{changes:[new hr(new hi(1,e.length+1),new hi(1,t.length+1),[new ho(new r_(1,1,e.length,e[0].length+1),new r_(1,1,t.length,t[0].length+1))])],hitTimeout:!1,moves:[]};let n=0===i.maxComputationTimeMs?hS.instance:new hy(i.maxComputationTimeMs),r=!i.ignoreTrimWhitespace,o=new Map;function s(e){let t=o.get(e);return void 0===t&&(t=o.size,o.set(e,t)),t}let a=e.map(e=>s(e.trim())),l=t.map(e=>s(e.trim())),h=new hD(a,e),u=new hD(l,t),d=h.length+u.length<1500?this.dynamicProgrammingDiffing.compute(h,u,n,(i,n)=>e[i]===t[n]?0===t[n].length?.1:1+Math.log(1+t[n].length):.99):this.myersDiffingAlgorithm.compute(h,u),c=d.diffs,g=d.hitTimeout;c=hA(h,u,c);let p=[],f=i=>{if(r)for(let o=0;oi.seq1Range.start-m==i.seq2Range.start-v);let o=i.seq1Range.start-m;f(o),m=i.seq1Range.endExclusive,v=i.seq2Range.endExclusive;let s=this.refineDiff(e,t,i,n,r);for(let e of(s.hitTimeout&&(g=!0),s.mappings))p.push(e)}f(e.length-m);let E=hx(p,e,t),_=[];if(i.computeMoves){let i=E.filter(e=>e.modifiedRange.isEmpty&&e.originalRange.length>=3).map(t=>new hV(t.originalRange,e)),o=new Set(E.filter(e=>e.originalRange.isEmpty&&e.modifiedRange.length>=3).map(e=>new hV(e.modifiedRange,t)));for(let s of i){let i,a=-1;for(let e of o){let t=s.computeSimilarity(e);t>a&&(a=t,i=e)}if(a>.9&&i){let a=this.refineDiff(e,t,new hC(new hE(s.range.startLineNumber-1,s.range.endLineNumberExclusive-1),new hE(i.range.startLineNumber-1,i.range.endLineNumberExclusive-1)),n,r),l=hx(a.mappings,e,t,!0);o.delete(i),_.push(new ha(new hs(s.range,i.range),l))}}}return o$(()=>{function i(e,t){if(e.lineNumber<1||e.lineNumber>t.length)return!1;let i=t[e.lineNumber-1];return!(e.column<1)&&!(e.column>i.length+1)}function n(e,t){return!(e.startLineNumber<1)&&!(e.startLineNumber>t.length+1)&&!(e.endLineNumberExclusive<1)&&!(e.endLineNumberExclusive>t.length+1)}for(let r of E){if(!r.innerChanges)return!1;for(let n of r.innerChanges){let r=i(n.modifiedRange.getStartPosition(),t)&&i(n.modifiedRange.getEndPosition(),t)&&i(n.originalRange.getStartPosition(),e)&&i(n.originalRange.getEndPosition(),e);if(!r)return!1}if(!n(r.modifiedRange,t)||!n(r.originalRange,e))return!1}return!0}),new hn(E,_,g)}refineDiff(e,t,i,n,r){let o=new hk(e,i.seq1Range,r),s=new hk(t,i.seq2Range,r),a=o.length+s.length<500?this.dynamicProgrammingDiffing.compute(o,s,n):this.myersDiffingAlgorithm.compute(o,s,n),l=a.diffs;l=hA(o,s,l),l=function(e,t,i){let n=[];for(let e of i){let t=n[n.length-1];if(!t){n.push(e);continue}e.seq1Range.start-t.seq1Range.endExclusive<=2||e.seq2Range.start-t.seq2Range.endExclusive<=2?n[n.length-1]=new hC(t.seq1Range.join(e.seq1Range),t.seq2Range.join(e.seq2Range)):n.push(e)}return n}(0,0,l=function(e,t,i){let n;let r=[];function o(){if(!n)return;let e=n.s1Range.length-n.deleted;n.s2Range.length,n.added,Math.max(n.deleted,n.added)+(n.count-1)>e&&r.push(new hC(n.s1Range,n.s2Range)),n=void 0}for(let r of i){function s(e,t){var i,s,a,l;if(!n||!n.s1Range.containsRange(e)||!n.s2Range.containsRange(t)){if(n&&!(n.s1Range.endExclusive0||t.length>0;){let n;let r=e[0],o=t[0];n=r&&(!o||r.seq1Range.start0&&i[i.length-1].seq1Range.endExclusive>=n.seq1Range.start?i[i.length-1]=i[i.length-1].join(n):i.push(n)}return i}(i,r);return a}(o,s,l)),l=function(e,t,i){let n,r=i;if(0===r.length)return r;let o=0;do{n=!1;let i=[r[0]];for(let o=1;o5||r.length>500)return!1;let l=e.getText(r).trim();if(l.length>20||l.split(/\r\n|\r|\n/).length>1)return!1;let h=e.countLinesIn(i.seq1Range),u=i.seq1Range.length,d=t.countLinesIn(i.seq2Range),c=i.seq2Range.length,g=e.countLinesIn(n.seq1Range),p=n.seq1Range.length,f=t.countLinesIn(n.seq2Range),m=n.seq2Range.length;function v(e){return Math.min(e,130)}return Math.pow(Math.pow(v(40*h+u),1.5)+Math.pow(v(40*d+c),1.5),1.5)+Math.pow(Math.pow(v(40*g+p),1.5)+Math.pow(v(40*f+m),1.5),1.5)>74184.96480721243}(a,s);l?(n=!0,i[i.length-1]=i[i.length-1].join(s)):i.push(s)}r=i}while(o++<10&&n);return r}(o,s,l);let h=l.map(e=>new ho(o.translateRange(e.seq1Range),s.translateRange(e.seq2Range)));return{mappings:h,hitTimeout:a.hitTimeout}}}function hx(e,t,i,n=!1){let r=[];for(let n of function*(e,t){let i,n;for(let r of e)void 0!==n&&t(n,r)?i.push(r):(i&&(yield i),i=[r]),n=r;i&&(yield i)}(e.map(e=>(function(e,t,i){let n=0,r=0;1===e.modifiedRange.endColumn&&1===e.originalRange.endColumn&&e.originalRange.startLineNumber+n<=e.originalRange.endLineNumber&&e.modifiedRange.startLineNumber+n<=e.modifiedRange.endLineNumber&&(r=-1),e.modifiedRange.startColumn-1>=i[e.modifiedRange.startLineNumber-1].length&&e.originalRange.startColumn-1>=t[e.originalRange.startLineNumber-1].length&&e.originalRange.startLineNumber<=e.originalRange.endLineNumber+r&&e.modifiedRange.startLineNumber<=e.modifiedRange.endLineNumber+r&&(n=1);let o=new hi(e.originalRange.startLineNumber+n,e.originalRange.endLineNumber+1+r),s=new hi(e.modifiedRange.startLineNumber+n,e.modifiedRange.endLineNumber+1+r);return new hr(o,s,[e])})(e,t,i)),(e,t)=>e.originalRange.overlapOrTouch(t.originalRange)||e.modifiedRange.overlapOrTouch(t.modifiedRange))){let e=n[0],t=n[n.length-1];r.push(new hr(e.originalRange.join(t.originalRange),e.modifiedRange.join(t.modifiedRange),n.map(e=>e.innerChanges[0])))}return o$(()=>(!!n||!(r.length>0)||r[0].originalRange.startLineNumber===r[0].modifiedRange.startLineNumber)&&oX(r,(e,t)=>t.originalRange.startLineNumber-e.originalRange.endLineNumberExclusive==t.modifiedRange.startLineNumber-e.modifiedRange.endLineNumberExclusive&&e.originalRange.endLineNumberExclusive0&&t.endExclusive>=e.length&&(t=new hE(t.start-1,t.endExclusive),n=!0),this.lineRange=t;for(let t=this.lineRange.start;tString.fromCharCode(e)).join("")}getElement(e){return this.elements[e]}get length(){return this.elements.length}getBoundaryScore(e){let t=hB(e>0?this.elements[e-1]:-1),i=hB(ee?i=n:t=n+1}let n=0===t?0:this.firstCharOffsetByLineMinusOne[t-1];return new rE(this.lineRange.start+t+1,e-n+1+this.offsetByLine[t])}translateRange(e){return r_.fromPositions(this.translateOffset(e.start),this.translateOffset(e.endExclusive))}findWordContaining(e){if(e<0||e>=this.elements.length||!hP(this.elements[e]))return;let t=e;for(;t>0&&hP(this.elements[t-1]);)t--;let i=e;for(;i=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57}let hF={0:0,1:0,2:0,3:10,4:2,5:3,6:10,7:10};function hB(e){if(10===e)return 7;if(13===e)return 6;if(32===e||9===e)return 5;if(e>=97&&e<=122)return 0;if(e>=65&&e<=90)return 1;if(e>=48&&e<=57)return 2;if(-1===e)return 3;else return 4}let hU=new Map;function hH(e){let t=hU.get(e);return void 0===t&&(t=hU.size,hU.set(e,t)),t}class hV{constructor(e,t){this.range=e,this.lines=t,this.histogram=[];let i=0;for(let n=e.startLineNumber-1;nnew hl,getAdvanced:()=>new hO};function hG(e,t){let i=Math.pow(10,t);return Math.round(e*i)/i}class hz{constructor(e,t,i,n=1){this._rgbaBrand=void 0,this.r=0|Math.min(255,Math.max(0,e)),this.g=0|Math.min(255,Math.max(0,t)),this.b=0|Math.min(255,Math.max(0,i)),this.a=hG(Math.max(Math.min(1,n),0),3)}static equals(e,t){return e.r===t.r&&e.g===t.g&&e.b===t.b&&e.a===t.a}}class hY{constructor(e,t,i,n){this._hslaBrand=void 0,this.h=0|Math.max(Math.min(360,e),0),this.s=hG(Math.max(Math.min(1,t),0),3),this.l=hG(Math.max(Math.min(1,i),0),3),this.a=hG(Math.max(Math.min(1,n),0),3)}static equals(e,t){return e.h===t.h&&e.s===t.s&&e.l===t.l&&e.a===t.a}static fromRGBA(e){let t=e.r/255,i=e.g/255,n=e.b/255,r=e.a,o=Math.max(t,i,n),s=Math.min(t,i,n),a=0,l=0,h=(s+o)/2,u=o-s;if(u>0){switch(l=Math.min(h<=.5?u/(2*h):u/(2-2*h),1),o){case t:a=(i-n)/u+(i1&&(i-=1),i<1/6)?e+(t-e)*6*i:i<.5?t:i<2/3?e+(t-e)*(2/3-i)*6:e}static toRGBA(e){let t,i,n;let r=e.h/360,{s:o,l:s,a}=e;if(0===o)t=i=n=s;else{let e=s<.5?s*(1+o):s+o-s*o,a=2*s-e;t=hY._hue2rgb(a,e,r+1/3),i=hY._hue2rgb(a,e,r),n=hY._hue2rgb(a,e,r-1/3)}return new hz(Math.round(255*t),Math.round(255*i),Math.round(255*n),a)}}class hK{constructor(e,t,i,n){this._hsvaBrand=void 0,this.h=0|Math.max(Math.min(360,e),0),this.s=hG(Math.max(Math.min(1,t),0),3),this.v=hG(Math.max(Math.min(1,i),0),3),this.a=hG(Math.max(Math.min(1,n),0),3)}static equals(e,t){return e.h===t.h&&e.s===t.s&&e.v===t.v&&e.a===t.a}static fromRGBA(e){let t;let i=e.r/255,n=e.g/255,r=e.b/255,o=Math.max(i,n,r),s=Math.min(i,n,r),a=o-s,l=0===o?0:a/o;return t=0===a?0:o===i?((n-r)/a%6+6)%6:o===n?(r-i)/a+2:(i-n)/a+4,new hK(Math.round(60*t),l,o,e.a)}static toRGBA(e){let{h:t,s:i,v:n,a:r}=e,o=n*i,s=o*(1-Math.abs(t/60%2-1)),a=n-o,[l,h,u]=[0,0,0];return t<60?(l=o,h=s):t<120?(l=s,h=o):t<180?(h=o,u=s):t<240?(h=s,u=o):t<300?(l=s,u=o):t<=360&&(l=o,u=s),l=Math.round((l+a)*255),h=Math.round((h+a)*255),u=Math.round((u+a)*255),new hz(l,h,u,r)}}class h${static fromHex(e){return h$.Format.CSS.parseHex(e)||h$.red}static equals(e,t){return!e&&!t||!!e&&!!t&&e.equals(t)}get hsla(){return this._hsla?this._hsla:hY.fromRGBA(this.rgba)}get hsva(){return this._hsva?this._hsva:hK.fromRGBA(this.rgba)}constructor(e){if(e){if(e instanceof hz)this.rgba=e;else if(e instanceof hY)this._hsla=e,this.rgba=hY.toRGBA(e);else if(e instanceof hK)this._hsva=e,this.rgba=hK.toRGBA(e);else throw Error("Invalid color ctor argument")}else throw Error("Color needs a value")}equals(e){return!!e&&hz.equals(this.rgba,e.rgba)&&hY.equals(this.hsla,e.hsla)&&hK.equals(this.hsva,e.hsva)}getRelativeLuminance(){let e=h$._relativeLuminanceForComponent(this.rgba.r),t=h$._relativeLuminanceForComponent(this.rgba.g),i=h$._relativeLuminanceForComponent(this.rgba.b);return hG(.2126*e+.7152*t+.0722*i,4)}static _relativeLuminanceForComponent(e){let t=e/255;return t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4)}isLighter(){let e=(299*this.rgba.r+587*this.rgba.g+114*this.rgba.b)/1e3;return e>=128}isLighterThan(e){let t=this.getRelativeLuminance(),i=e.getRelativeLuminance();return t>i}isDarkerThan(e){let t=this.getRelativeLuminance(),i=e.getRelativeLuminance();return tthis._lines.length)t=this._lines.length,i=this._lines[t-1].length+1,n=!0;else{let e=this._lines[t-1].length+1;i<1?(i=1,n=!0):i>e&&(i=e,n=!0)}return n?{lineNumber:t,column:i}:e}}class h2{constructor(e,t){this._host=e,this._models=Object.create(null),this._foreignModuleFactory=t,this._foreignModule=null}dispose(){this._models=Object.create(null)}_getModel(e){return this._models[e]}_getModels(){let e=[];return Object.keys(this._models).forEach(t=>e.push(this._models[t])),e}acceptNewModel(e){this._models[e.url]=new h1(rl.parse(e.url),e.lines,e.EOL,e.versionId)}acceptModelChanged(e,t){if(!this._models[e])return;let i=this._models[e];i.onEvents(t)}acceptRemovedModel(e){this._models[e]&&delete this._models[e]}computeUnicodeHighlights(e,t,i){return h0(this,void 0,void 0,function*(){let n=this._getModel(e);return n?l8.computeUnicodeHighlights(n,t,i):{ranges:[],hasMore:!1,ambiguousCharacterCount:0,invisibleCharacterCount:0,nonBasicAsciiCharacterCount:0}})}computeDiff(e,t,i,n){return h0(this,void 0,void 0,function*(){let r=this._getModel(e),o=this._getModel(t);return r&&o?h2.computeDiff(r,o,i,n):null})}static computeDiff(e,t,i,n){let r="advanced"===n?hW.getAdvanced():hW.getLegacy(),o=e.getLinesContent(),s=t.getLinesContent(),a=r.computeDiff(o,s,i),l=!(a.changes.length>0)&&this._modelsAreIdentical(e,t);function h(e){return e.map(e=>{var t;return[e.originalRange.startLineNumber,e.originalRange.endLineNumberExclusive,e.modifiedRange.startLineNumber,e.modifiedRange.endLineNumberExclusive,null===(t=e.innerChanges)||void 0===t?void 0:t.map(e=>[e.originalRange.startLineNumber,e.originalRange.startColumn,e.originalRange.endLineNumber,e.originalRange.endColumn,e.modifiedRange.startLineNumber,e.modifiedRange.startColumn,e.modifiedRange.endLineNumber,e.modifiedRange.endColumn])]})}return{identical:l,quitEarly:a.hitTimeout,changes:h(a.changes),moves:a.moves.map(e=>[e.lineRangeMapping.original.startLineNumber,e.lineRangeMapping.original.endLineNumberExclusive,e.lineRangeMapping.modified.startLineNumber,e.lineRangeMapping.modified.endLineNumberExclusive,h(e.changes)])}}static _modelsAreIdentical(e,t){let i=e.getLineCount(),n=t.getLineCount();if(i!==n)return!1;for(let n=1;n<=i;n++){let i=e.getLineContent(n),r=t.getLineContent(n);if(i!==r)return!1}return!0}computeMoreMinimalEdits(e,t,i){return h0(this,void 0,void 0,function*(){let n;let r=this._getModel(e);if(!r)return t;let o=[];for(let{range:e,text:a,eol:l}of t=t.slice(0).sort((e,t)=>{if(e.range&&t.range)return r_.compareRangesUsingStarts(e.range,t.range);let i=e.range?0:1,n=t.range?0:1;return i-n})){var s;if("number"==typeof l&&(n=l),r_.isEmpty(e)&&!a)continue;let t=r.getValueInRange(e);if(t===(a=a.replace(/\r\n|\n|\r/g,r.eol)))continue;if(Math.max(a.length,t.length)>h2._diffLimit){o.push({range:e,text:a});continue}let h=(s=a,new lH(new lP(t),new lP(s)).ComputeDiff(i).changes),u=r.offsetAt(r_.lift(e).getStartPosition());for(let e of h){let t=r.positionAt(u+e.originalStart),i=r.positionAt(u+e.originalStart+e.originalLength),n={text:a.substr(e.modifiedStart,e.modifiedLength),range:{startLineNumber:t.lineNumber,startColumn:t.column,endLineNumber:i.lineNumber,endColumn:i.column}};r.getValueInRange(n.range)!==n.text&&o.push(n)}}return"number"==typeof n&&o.push({eol:n,text:"",range:{startLineNumber:0,startColumn:0,endLineNumber:0,endColumn:0}}),o})}computeLinks(e){return h0(this,void 0,void 0,function*(){let t=this._getModel(e);return t?t&&"function"==typeof t.getLineCount&&"function"==typeof t.getLineContent?lQ.computeLinks(t):[]:null})}computeDefaultDocumentColors(e){return h0(this,void 0,void 0,function*(){let t=this._getModel(e);return t?t&&"function"==typeof t.getValue&&"function"==typeof t.positionAt?function(e){let t=[],i=hQ(e,/\b(rgb|rgba|hsl|hsla)(\([0-9\s,.\%]*\))|(#)([A-Fa-f0-9]{3})\b|(#)([A-Fa-f0-9]{4})\b|(#)([A-Fa-f0-9]{6})\b|(#)([A-Fa-f0-9]{8})\b/gm);if(i.length>0)for(let n of i){let i;let r=n.filter(e=>void 0!==e),o=r[1],s=r[2];if(s){if("rgb"===o){let t=/^\(\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*\)$/gm;i=hZ(hq(e,n),hQ(s,t),!1)}else if("rgba"===o){let t=/^\(\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\s*\)$/gm;i=hZ(hq(e,n),hQ(s,t),!0)}else if("hsl"===o){let t=/^\(\s*(36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*\)$/gm;i=hJ(hq(e,n),hQ(s,t),!1)}else if("hsla"===o){let t=/^\(\s*(36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\s*\)$/gm;i=hJ(hq(e,n),hQ(s,t),!0)}else"#"===o&&(i=function(e,t){if(!e)return;let i=h$.Format.CSS.parseHex(t);if(i)return{range:e,color:hj(i.rgba.r,i.rgba.g,i.rgba.b,i.rgba.a)}}(hq(e,n),o+s));i&&t.push(i)}}return t}(t):[]:null})}textualSuggest(e,t,i,n){return h0(this,void 0,void 0,function*(){let r=new nE,o=new RegExp(i,n),s=new Set;n:for(let i of e){let e=this._getModel(i);if(e){for(let i of e.words(o))if(i!==t&&isNaN(Number(i))&&(s.add(i),s.size>h2._suggestionsLimit))break n}}return{words:Array.from(s),duration:r.elapsed()}})}computeWordRanges(e,t,i,n){return h0(this,void 0,void 0,function*(){let r=this._getModel(e);if(!r)return Object.create(null);let o=new RegExp(i,n),s=Object.create(null);for(let e=t.startLineNumber;ethis._host.fhr(e,t));return this._foreignModuleFactory?(this._foreignModule=this._foreignModuleFactory({host:n,getMirrorModels:()=>this._getModels()},t),Promise.resolve((0,oj.$E)(this._foreignModule))):Promise.reject(Error("Unexpected usage"))}fmr(e,t){if(!this._foreignModule||"function"!=typeof this._foreignModule[e])return Promise.reject(Error("Missing requestHandler or method: "+e));try{return Promise.resolve(this._foreignModule[e].apply(this._foreignModule,t))}catch(e){return Promise.reject(e)}}}h2._diffLimit=1e5,h2._suggestionsLimit=1e4,"function"==typeof importScripts&&(globalThis.monaco=rk());let h4=oG("textResourceConfigurationService"),h5=oG("textResourcePropertiesService"),h6=oG("logService");(ey=t0||(t0={}))[ey.Off=0]="Off",ey[ey.Trace=1]="Trace",ey[ey.Debug=2]="Debug",ey[ey.Info=3]="Info",ey[ey.Warning=4]="Warning",ey[ey.Error=5]="Error";let h3=t0.Info;class h9 extends nc{constructor(){super(...arguments),this.level=h3,this._onDidChangeLogLevel=this._register(new nT),this.onDidChangeLogLevel=this._onDidChangeLogLevel.event}setLevel(e){this.level!==e&&(this.level=e,this._onDidChangeLogLevel.fire(this.level))}getLevel(){return this.level}checkLogLevel(e){return this.level!==t0.Off&&this.level<=e}}class h7 extends h9{constructor(e=h3,t=!0){super(),this.useColors=t,this.setLevel(e)}trace(e,...t){this.checkLogLevel(t0.Trace)&&(this.useColors?console.log("%cTRACE","color: #888",e,...t):console.log(e,...t))}debug(e,...t){this.checkLogLevel(t0.Debug)&&(this.useColors?console.log("%cDEBUG","background: #eee; color: #888",e,...t):console.log(e,...t))}info(e,...t){this.checkLogLevel(t0.Info)&&(this.useColors?console.log("%c INFO","color: #33f",e,...t):console.log(e,...t))}warn(e,...t){this.checkLogLevel(t0.Warning)&&(this.useColors?console.log("%c WARN","color: #993",e,...t):console.log(e,...t))}error(e,...t){this.checkLogLevel(t0.Error)&&(this.useColors?console.log("%c ERR","color: #f33",e,...t):console.error(e,...t))}dispose(){}}class h8 extends h9{constructor(e){super(),this.loggers=e,e.length&&this.setLevel(e[0].getLevel())}setLevel(e){for(let t of this.loggers)t.setLevel(e);super.setLevel(e)}trace(e,...t){for(let i of this.loggers)i.trace(e,...t)}debug(e,...t){for(let i of this.loggers)i.debug(e,...t)}info(e,...t){for(let i of this.loggers)i.info(e,...t)}warn(e,...t){for(let i of this.loggers)i.warn(e,...t)}error(e,...t){for(let i of this.loggers)i.error(e,...t)}dispose(){for(let e of this.loggers)e.dispose()}}new sR("logLevel",function(e){switch(e){case t0.Trace:return"trace";case t0.Debug:return"debug";case t0.Info:return"info";case t0.Warning:return"warn";case t0.Error:return"error";case t0.Off:return"off"}}(t0.Info));let ue=oG("ILanguageFeaturesService");var ut=function(e,t){return function(i,n){t(i,n,e)}},ui=function(e,t,i,n){return new(i||(i=Promise))(function(r,o){function s(e){try{l(n.next(e))}catch(e){o(e)}}function a(e){try{l(n.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?r(e.value):((t=e.value)instanceof i?t:new i(function(e){e(t)})).then(s,a)}l((n=n.apply(e,t||[])).next())})};function un(e,t){let i=e.getModel(t);return!(!i||i.isTooLargeForSyncing())}let ur=class extends nc{constructor(e,t,i,n,r){super(),this._modelService=e,this._workerManager=this._register(new us(this._modelService,n)),this._logService=i,this._register(r.linkProvider.register({language:"*",hasAccessToAllModels:!0},{provideLinks:(e,t)=>un(this._modelService,e.uri)?this._workerManager.withWorker().then(t=>t.computeLinks(e.uri)).then(e=>e&&{links:e}):Promise.resolve({links:[]})})),this._register(r.completionProvider.register("*",new uo(this._workerManager,t,this._modelService,n)))}dispose(){super.dispose()}canComputeUnicodeHighlights(e){return un(this._modelService,e)}computedUnicodeHighlights(e,t,i){return this._workerManager.withWorker().then(n=>n.computedUnicodeHighlights(e,t,i))}computeDiff(e,t,i,n){return ui(this,void 0,void 0,function*(){let r=yield this._workerManager.withWorker().then(r=>r.computeDiff(e,t,i,n));if(!r)return null;let o={identical:r.identical,quitEarly:r.quitEarly,changes:s(r.changes),moves:r.moves.map(e=>new ha(new hs(new hi(e[0],e[1]),new hi(e[2],e[3])),s(e[4])))};return o;function s(e){return e.map(e=>{var t;return new hr(new hi(e[0],e[1]),new hi(e[2],e[3]),null===(t=e[4])||void 0===t?void 0:t.map(e=>new ho(new r_(e[0],e[1],e[2],e[3]),new r_(e[4],e[5],e[6],e[7]))))})}})}computeMoreMinimalEdits(e,t,i=!1){if(!(0,sq.Of)(t))return Promise.resolve(void 0);{if(!un(this._modelService,e))return Promise.resolve(t);let n=nE.create(),r=this._workerManager.withWorker().then(n=>n.computeMoreMinimalEdits(e,t,i));return r.finally(()=>this._logService.trace("FORMAT#computeMoreMinimalEdits",e.toString(!0),n.elapsed())),Promise.race([r,ls(1e3).then(()=>t)])}}canNavigateValueSet(e){return un(this._modelService,e)}navigateValueSet(e,t,i){return this._workerManager.withWorker().then(n=>n.navigateValueSet(e,t,i))}canComputeWordRanges(e){return un(this._modelService,e)}computeWordRanges(e,t){return this._workerManager.withWorker().then(i=>i.computeWordRanges(e,t))}};ur=function(e,t,i,n){var r,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(s=(o<3?r(s):o>3?r(t,i,s):r(t,i))||s);return o>3&&s&&Object.defineProperty(t,i,s),s}([ut(0,a6),ut(1,h4),ut(2,h6),ut(3,az),ut(4,ue)],ur);class uo{constructor(e,t,i,n){this.languageConfigurationService=n,this._debugDisplayName="wordbasedCompletions",this._workerManager=e,this._configurationService=t,this._modelService=i}provideCompletionItems(e,t){return ui(this,void 0,void 0,function*(){let i=this._configurationService.getValue(e.uri,t,"editor");if(!i.wordBasedSuggestions)return;let n=[];if("currentDocument"===i.wordBasedSuggestionsMode)un(this._modelService,e.uri)&&n.push(e.uri);else for(let t of this._modelService.getModels())un(this._modelService,t.uri)&&(t===e?n.unshift(t.uri):("allDocuments"===i.wordBasedSuggestionsMode||t.getLanguageId()===e.getLanguageId())&&n.push(t.uri));if(0===n.length)return;let r=this.languageConfigurationService.getLanguageConfiguration(e.getLanguageId()).getWordDefinition(),o=e.getWordAtPosition(t),s=o?new r_(t.lineNumber,o.startColumn,t.lineNumber,o.endColumn):r_.fromPositions(t),a=s.setEndPosition(t.lineNumber,t.column),l=yield this._workerManager.withWorker(),h=yield l.textualSuggest(n,null==o?void 0:o.word,r);if(h)return{duration:h.duration,suggestions:h.words.map(e=>({kind:18,label:e,insertText:e,range:{insert:a,replace:s}}))}})}}class us extends nc{constructor(e,t){super(),this.languageConfigurationService=t,this._modelService=e,this._editorWorkerClient=null,this._lastWorkerUsedTime=new Date().getTime();let i=this._register(new lh);i.cancelAndSet(()=>this._checkStopIdleWorker(),Math.round(15e4)),this._register(this._modelService.onModelRemoved(e=>this._checkStopEmptyWorker()))}dispose(){this._editorWorkerClient&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null),super.dispose()}_checkStopEmptyWorker(){if(!this._editorWorkerClient)return;let e=this._modelService.getModels();0===e.length&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null)}_checkStopIdleWorker(){if(!this._editorWorkerClient)return;let e=new Date().getTime()-this._lastWorkerUsedTime;e>3e5&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null)}withWorker(){return this._lastWorkerUsedTime=new Date().getTime(),this._editorWorkerClient||(this._editorWorkerClient=new uu(this._modelService,!1,"editorWorkerService",this.languageConfigurationService)),Promise.resolve(this._editorWorkerClient)}}class ua extends nc{constructor(e,t,i){if(super(),this._syncedModels=Object.create(null),this._syncedModelsLastUsedTime=Object.create(null),this._proxy=e,this._modelService=t,!i){let e=new lh;e.cancelAndSet(()=>this._checkStopModelSync(),Math.round(3e4)),this._register(e)}}dispose(){for(let e in this._syncedModels)nl(this._syncedModels[e]);this._syncedModels=Object.create(null),this._syncedModelsLastUsedTime=Object.create(null),super.dispose()}ensureSyncedResources(e,t){for(let i of e){let e=i.toString();this._syncedModels[e]||this._beginModelSync(i,t),this._syncedModels[e]&&(this._syncedModelsLastUsedTime[e]=new Date().getTime())}}_checkStopModelSync(){let e=new Date().getTime(),t=[];for(let i in this._syncedModelsLastUsedTime){let n=e-this._syncedModelsLastUsedTime[i];n>6e4&&t.push(i)}for(let e of t)this._stopModelSync(e)}_beginModelSync(e,t){let i=this._modelService.getModel(e);if(!i||!t&&i.isTooLargeForSyncing())return;let n=e.toString();this._proxy.acceptNewModel({url:i.uri.toString(),lines:i.getLinesContent(),EOL:i.getEOL(),versionId:i.getVersionId()});let r=new nd;r.add(i.onDidChangeContent(e=>{this._proxy.acceptModelChanged(n.toString(),e)})),r.add(i.onWillDispose(()=>{this._stopModelSync(n)})),r.add(nu(()=>{this._proxy.acceptRemovedModel(n)})),this._syncedModels[n]=r}_stopModelSync(e){let t=this._syncedModels[e];delete this._syncedModels[e],delete this._syncedModelsLastUsedTime[e],nl(t)}}class ul{constructor(e){this._instance=e,this._proxyObj=Promise.resolve(this._instance)}dispose(){this._instance.dispose()}getProxyObject(){return this._proxyObj}}class uh{constructor(e){this._workerClient=e}fhr(e,t){return this._workerClient.fhr(e,t)}}class uu extends nc{constructor(e,t,i,n){super(),this.languageConfigurationService=n,this._disposed=!1,this._modelService=e,this._keepIdleModels=t,this._workerFactory=new lN(i),this._worker=null,this._modelManager=null}fhr(e,t){throw Error("Not implemented!")}_getOrCreateWorker(){if(!this._worker)try{this._worker=this._register(new ly(this._workerFactory,"vs/editor/common/services/editorSimpleWorker",new uh(this)))}catch(e){lf(e),this._worker=new ul(new h2(new uh(this),null))}return this._worker}_getProxy(){return this._getOrCreateWorker().getProxyObject().then(void 0,e=>(lf(e),this._worker=new ul(new h2(new uh(this),null)),this._getOrCreateWorker().getProxyObject()))}_getOrCreateModelManager(e){return this._modelManager||(this._modelManager=this._register(new ua(e,this._modelService,this._keepIdleModels))),this._modelManager}_withSyncedResources(e,t=!1){return ui(this,void 0,void 0,function*(){return this._disposed?Promise.reject(function(){let e=Error(i5);return e.name=e.message,e}()):this._getProxy().then(i=>(this._getOrCreateModelManager(i).ensureSyncedResources(e,t),i))})}computedUnicodeHighlights(e,t,i){return this._withSyncedResources([e]).then(n=>n.computeUnicodeHighlights(e.toString(),t,i))}computeDiff(e,t,i,n){return this._withSyncedResources([e,t],!0).then(r=>r.computeDiff(e.toString(),t.toString(),i,n))}computeMoreMinimalEdits(e,t,i){return this._withSyncedResources([e]).then(n=>n.computeMoreMinimalEdits(e.toString(),t,i))}computeLinks(e){return this._withSyncedResources([e]).then(t=>t.computeLinks(e.toString()))}computeDefaultDocumentColors(e){return this._withSyncedResources([e]).then(t=>t.computeDefaultDocumentColors(e.toString()))}textualSuggest(e,t,i){return ui(this,void 0,void 0,function*(){let n=yield this._withSyncedResources(e),r=i.source,o=rz(i);return n.textualSuggest(e.map(e=>e.toString()),t,r,o)})}computeWordRanges(e,t){return this._withSyncedResources([e]).then(i=>{let n=this._modelService.getModel(e);if(!n)return Promise.resolve(null);let r=this.languageConfigurationService.getLanguageConfiguration(n.getLanguageId()).getWordDefinition(),o=r.source,s=rz(r);return i.computeWordRanges(e.toString(),t,o,s)})}navigateValueSet(e,t,i){return this._withSyncedResources([e]).then(n=>{let r=this._modelService.getModel(e);if(!r)return null;let o=this.languageConfigurationService.getLanguageConfiguration(r.getLanguageId()).getWordDefinition(),s=o.source,a=rz(o);return n.navigateValueSet(e.toString(),t,i,s,a)})}dispose(){super.dispose(),this._disposed=!0}}class ud extends uu{constructor(e,t,i){super(e,i.keepIdleModels||!1,i.label,t),this._foreignModuleId=i.moduleId,this._foreignModuleCreateData=i.createData||null,this._foreignModuleHost=i.host||null,this._foreignProxy=null}fhr(e,t){if(!this._foreignModuleHost||"function"!=typeof this._foreignModuleHost[e])return Promise.reject(Error("Missing method "+e+" or missing main thread foreign host."));try{return Promise.resolve(this._foreignModuleHost[e].apply(this._foreignModuleHost,t))}catch(e){return Promise.reject(e)}}_getForeignProxy(){return this._foreignProxy||(this._foreignProxy=this._getProxy().then(e=>{let t=this._foreignModuleHost?(0,oj.$E)(this._foreignModuleHost):[];return e.loadForeignModule(this._foreignModuleId,this._foreignModuleCreateData,t).then(t=>{this._foreignModuleCreateData=null;let i=(t,i)=>e.fmr(t,i),n=(e,t)=>function(){let i=Array.prototype.slice.call(arguments,0);return t(e,i)},r={};for(let e of t)r[e]=n(e,i);return r})})),this._foreignProxy}getProxy(){return this._getForeignProxy()}withSyncedResources(e){return this._withSyncedResources(e).then(e=>this.getProxy())}}class uc{static getLanguageId(e){return(255&e)>>>0}static getTokenType(e){return(768&e)>>>8}static containsBalancedBrackets(e){return(1024&e)!=0}static getFontStyle(e){return(30720&e)>>>11}static getForeground(e){return(16744448&e)>>>15}static getBackground(e){return(4278190080&e)>>>24}static getClassNameFromMetadata(e){let t=this.getForeground(e),i="mtk"+t,n=this.getFontStyle(e);return 1&n&&(i+=" mtki"),2&n&&(i+=" mtkb"),4&n&&(i+=" mtku"),8&n&&(i+=" mtks"),i}static getInlineStyleFromMetadata(e,t){let i=this.getForeground(e),n=this.getFontStyle(e),r=`color: ${t[i]};`;1&n&&(r+="font-style: italic;"),2&n&&(r+="font-weight: bold;");let o="";return 4&n&&(o+=" underline"),8&n&&(o+=" line-through"),o&&(r+=`text-decoration:${o};`),r}static getPresentationFromMetadata(e){let t=this.getForeground(e),i=this.getFontStyle(e);return{foreground:t,italic:!!(1&i),bold:!!(2&i),underline:!!(4&i),strikethrough:!!(8&i)}}}class ug{static createEmpty(e,t){let i=ug.defaultTokenMetadata,n=new Uint32Array(2);return n[0]=e.length,n[1]=i,new ug(n,e,t)}constructor(e,t,i){this._lineTokensBrand=void 0,this._tokens=e,this._tokensCount=this._tokens.length>>>1,this._text=t,this._languageIdCodec=i}equals(e){return e instanceof ug&&this.slicedEquals(e,0,this._tokensCount)}slicedEquals(e,t,i){if(this._text!==e._text||this._tokensCount!==e._tokensCount)return!1;let n=t<<1,r=n+(i<<1);for(let t=n;t0?this._tokens[e-1<<1]:0}getMetadata(e){let t=this._tokens[(e<<1)+1];return t}getLanguageId(e){let t=this._tokens[(e<<1)+1],i=uc.getLanguageId(t);return this._languageIdCodec.decodeLanguageId(i)}getStandardTokenType(e){let t=this._tokens[(e<<1)+1];return uc.getTokenType(t)}getForeground(e){let t=this._tokens[(e<<1)+1];return uc.getForeground(t)}getClassName(e){let t=this._tokens[(e<<1)+1];return uc.getClassNameFromMetadata(t)}getInlineStyle(e,t){let i=this._tokens[(e<<1)+1];return uc.getInlineStyleFromMetadata(i,t)}getPresentation(e){let t=this._tokens[(e<<1)+1];return uc.getPresentationFromMetadata(t)}getEndOffset(e){return this._tokens[e<<1]}findTokenIndexAtOffset(e){return ug.findIndexInTokensArray(this._tokens,e)}inflate(){return this}sliceAndInflate(e,t,i){return new up(this,e,t,i)}static convertToEndOffset(e,t){let i=e.length>>>1,n=i-1;for(let t=0;t>>1)-1;for(;it&&(n=r)}return i}withInserted(e){if(0===e.length)return this;let t=0,i=0,n="",r=[],o=0;for(;;){let s=to){n+=this._text.substring(o,a.offset);let e=this._tokens[(t<<1)+1];r.push(n.length,e),o=a.offset}n+=a.text,r.push(n.length,a.tokenMetadata),i++}else break}return new ug(new Uint32Array(r),n,this._languageIdCodec)}}ug.defaultTokenMetadata=33587200;class up{constructor(e,t,i,n){this._source=e,this._startOffset=t,this._endOffset=i,this._deltaOffset=n,this._firstTokenIndex=e.findTokenIndexAtOffset(t),this._tokensCount=0;for(let t=this._firstTokenIndex,n=e.getCount();t=i)break;this._tokensCount++}}getMetadata(e){return this._source.getMetadata(this._firstTokenIndex+e)}getLanguageId(e){return this._source.getLanguageId(this._firstTokenIndex+e)}getLineContent(){return this._source.getLineContent().substring(this._startOffset,this._endOffset)}equals(e){return e instanceof up&&this._startOffset===e._startOffset&&this._endOffset===e._endOffset&&this._deltaOffset===e._deltaOffset&&this._source.slicedEquals(e._source,this._firstTokenIndex,this._tokensCount)}getCount(){return this._tokensCount}getForeground(e){return this._source.getForeground(this._firstTokenIndex+e)}getEndOffset(e){let t=this._source.getEndOffset(this._firstTokenIndex+e);return Math.min(this._endOffset,t)-this._startOffset+this._deltaOffset}getClassName(e){return this._source.getClassName(this._firstTokenIndex+e)}getInlineStyle(e,t){return this._source.getInlineStyle(this._firstTokenIndex+e,t)}getPresentation(e){return this._source.getPresentation(this._firstTokenIndex+e)}findTokenIndexAtOffset(e){return this._source.findTokenIndexAtOffset(e+this._startOffset-this._deltaOffset)-this._firstTokenIndex}}class uf{constructor(e,t,i,n){this.startColumn=e,this.endColumn=t,this.className=i,this.type=n,this._lineDecorationBrand=void 0}static _equals(e,t){return e.startColumn===t.startColumn&&e.endColumn===t.endColumn&&e.className===t.className&&e.type===t.type}static equalsArr(e,t){let i=e.length,n=t.length;if(i!==n)return!1;for(let n=0;n=r||(s[a++]=new uf(Math.max(1,t.startColumn-n+1),Math.min(o+1,t.endColumn-n+1),t.className,t.type));return s}static filter(e,t,i,n){if(0===e.length)return[];let r=[],o=0;for(let s=0,a=e.length;st||l.isEmpty()&&(0===a.type||3===a.type))continue;let h=l.startLineNumber===t?l.startColumn:i,u=l.endLineNumber===t?l.endColumn:n;r[o++]=new uf(h,u,a.inlineClassName,a.type)}return r}static _typeCompare(e,t){let i=[2,0,1,3];return i[e]-i[t]}static compare(e,t){if(e.startColumn!==t.startColumn)return e.startColumn-t.startColumn;if(e.endColumn!==t.endColumn)return e.endColumn-t.endColumn;let i=uf._typeCompare(e.type,t.type);return 0!==i?i:e.className!==t.className?e.className0&&this.stopOffsets[0]0&&t=e){this.stopOffsets.splice(n,0,e),this.classNames.splice(n,0,t),this.metadata.splice(n,0,i);break}this.count++}}class uE{static normalize(e,t){if(0===t.length)return[];let i=[],n=new uv,r=0;for(let o=0,s=t.length;o1){let t=e.charCodeAt(a-2);r3(t)&&a--}if(l>1){let t=e.charCodeAt(l-2);r3(t)&&l--}let d=a-1,c=l-2;r=n.consumeLowerThan(d,r,i),0===n.count&&(r=d),n.insert(c,h,u)}return n.consumeLowerThan(1073741824,r,i),i}}class u_{constructor(e,t,i,n){this.endIndex=e,this.type=t,this.metadata=i,this.containsRTL=n,this._linePartBrand=void 0}isWhitespace(){return!!(1&this.metadata)}isPseudoAfter(){return!!(4&this.metadata)}}class uC{constructor(e,t){this.startOffset=e,this.endOffset=t}equals(e){return this.startOffset===e.startOffset&&this.endOffset===e.endOffset}}class uS{constructor(e,t,i,n,r,o,s,a,l,h,u,d,c,g,p,f,m,v,E){this.useMonospaceOptimizations=e,this.canUseHalfwidthRightwardsArrow=t,this.lineContent=i,this.continuesWithWrappedLine=n,this.isBasicASCII=r,this.containsRTL=o,this.fauxIndentLength=s,this.lineTokens=a,this.lineDecorations=l.sort(uf.compare),this.tabSize=h,this.startVisibleColumn=u,this.spaceWidth=d,this.stopRenderingLineAfter=p,this.renderWhitespace="all"===f?4:"boundary"===f?1:"selection"===f?2:"trailing"===f?3:0,this.renderControlCharacters=m,this.fontLigatures=v,this.selectionsOnLine=E&&E.sort((e,t)=>e.startOffset>>16}static getCharIndex(e){return(65535&e)>>>0}constructor(e,t){this.length=e,this._data=new Uint32Array(this.length),this._horizontalOffset=new Uint32Array(this.length)}setColumnInfo(e,t,i,n){this._data[e-1]=(t<<16|i<<0)>>>0,this._horizontalOffset[e-1]=n}getHorizontalOffset(e){return 0===this._horizontalOffset.length?0:this._horizontalOffset[e-1]}charOffsetToPartData(e){return 0===this.length?0:e<0?this._data[0]:e>=this.length?this._data[this.length-1]:this._data[e]}getDomPosition(e){let t=this.charOffsetToPartData(e-1),i=uT.getPartIndex(t),n=uT.getCharIndex(t);return new uy(i,n)}getColumn(e,t){let i=this.partDataToCharOffset(e.partIndex,t,e.charIndex);return i+1}partDataToCharOffset(e,t,i){if(0===this.length)return 0;let n=(e<<16|i<<0)>>>0,r=0,o=this.length-1;for(;r+1>>1,t=this._data[e];if(t===n)return e;t>n?o=e:r=e}if(r===o)return r;let s=this._data[r],a=this._data[o];if(s===n)return r;if(a===n)return o;let l=uT.getPartIndex(s),h=uT.getCharIndex(s),u=uT.getPartIndex(a);return i-h<=(l!==u?t:uT.getCharIndex(a))-i?r:o}}class ub{constructor(e,t,i){this._renderLineOutputBrand=void 0,this.characterMapping=e,this.containsRTL=t,this.containsForeignElements=i}}function uA(e,t){if(0===e.lineContent.length){if(e.lineDecorations.length>0){t.appendString("");let i=0,n=0,r=0;for(let o of e.lineDecorations)(1===o.type||2===o.type)&&(t.appendString(''),1===o.type&&(r|=1,i++),2===o.type&&(r|=2,n++));t.appendString("");let o=new uT(1,i+n);return o.setColumnInfo(1,i,0,0),new ub(o,!1,r)}return t.appendString(""),new ub(new uT(0,0),!1,0)}return function(e,t){let i=e.fontIsMonospace,n=e.canUseHalfwidthRightwardsArrow,r=e.containsForeignElements,o=e.lineContent,s=e.len,a=e.isOverflowing,l=e.overflowingCharCount,h=e.parts,u=e.fauxIndentLength,d=e.tabSize,c=e.startVisibleColumn,g=e.containsRTL,p=e.spaceWidth,f=e.renderSpaceCharCode,m=e.renderWhitespace,v=e.renderControlCharacters,E=new uT(s+1,h.length),_=!1,C=0,S=c,y=0,T=0,b=0;g?t.appendString(''):t.appendString("");for(let e=0,a=h.length;e=u&&(t+=r)}}for(R&&(t.appendString(' style="width:'),t.appendString(String(p*i)),t.appendString('px"')),t.appendASCIICharCode(62);C1?t.appendCharCode(8594):t.appendCharCode(65515);for(let e=2;e<=r;e++)t.appendCharCode(160)}else i=2,r=1,t.appendCharCode(f),t.appendCharCode(8204);y+=i,T+=r,C>=u&&(S+=r)}}else for(t.appendASCIICharCode(62);C=u&&(S+=r)}L?b++:b=0,C>=s&&!_&&a.isPseudoAfter()&&(_=!0,E.setColumnInfo(C+1,e,y,T)),t.appendString("")}return _||E.setColumnInfo(s+1,h.length-1,y,T),a&&(t.appendString(''),t.appendString(rL.NC("showMore","Show more ({0})",l<1024?rL.NC("overflow.chars","{0} chars",l):l<1048576?`${(l/1024).toFixed(1)} KB`:`${(l/1024/1024).toFixed(1)} MB`)),t.appendString("")),t.appendString(""),new ub(E,g,r)}(function(e){let t,i,n;let r=e.lineContent;-1!==e.stopRenderingLineAfter&&e.stopRenderingLineAfter0&&(o[s++]=new u_(n,"",0,!1));let a=n;for(let l=0,h=i.getCount();l=r){let i=!!t&&or(e.substring(a,r));o[s++]=new u_(r,u,0,i);break}let d=!!t&&or(e.substring(a,h));o[s++]=new u_(h,u,0,d),a=h}return o}(r,e.containsRTL,e.lineTokens,e.fauxIndentLength,n);e.renderControlCharacters&&!e.isBasicASCII&&(o=function(e,t){let i=[],n=new u_(0,"",0,!1),r=0;for(let o of t){let t=o.endIndex;for(;rn.endIndex&&(n=new u_(r,o.type,o.metadata,o.containsRTL),i.push(n)),n=new u_(r+1,"mtkcontrol",o.metadata,!1),i.push(n))}r>n.endIndex&&(n=new u_(t,o.type,o.metadata,o.containsRTL),i.push(n))}return i}(r,o)),(4===e.renderWhitespace||1===e.renderWhitespace||2===e.renderWhitespace&&e.selectionsOnLine||3===e.renderWhitespace&&!e.continuesWithWrappedLine)&&(o=function(e,t,i,n){let r;let o=e.continuesWithWrappedLine,s=e.fauxIndentLength,a=e.tabSize,l=e.startVisibleColumn,h=e.useMonospaceOptimizations,u=e.selectionsOnLine,d=1===e.renderWhitespace,c=3===e.renderWhitespace,g=e.renderSpaceWidth!==e.spaceWidth,p=[],f=0,m=0,v=n[0].type,E=n[m].containsRTL,_=n[m].endIndex,C=n.length,S=!1,y=rK(t);-1===y?(S=!0,y=i,r=i):r=rX(t);let T=!1,b=0,A=u&&u[b],R=l%a;for(let e=s;e=A.endOffset&&(b++,A=u&&u[b]),er)o=!0;else if(9===l)o=!0;else if(32===l){if(d){if(T)o=!0;else{let n=e+1e),o&&c&&(o=S||e>r),o&&E&&e>=y&&e<=r&&(o=!1),T){if(!o||!h&&R>=a){if(g){let t=f>0?p[f-1].endIndex:s;for(let i=t+1;i<=e;i++)p[f++]=new u_(i,"mtkw",1,!1)}else p[f++]=new u_(e,"mtkw",1,!1);R%=a}}else(e===_||o&&e>s)&&(p[f++]=new u_(e,v,0,E),R%=a);for(9===l?R=a:ol(l)?R+=2:R++,T=o;e===_;)if(++m0?t.charCodeAt(i-1):0,n=i>1?t.charCodeAt(i-2):0;32===e&&32!==n&&9!==n||(L=!0)}else L=!0}if(L){if(g){let e=f>0?p[f-1].endIndex:s;for(let t=e+1;t<=i;t++)p[f++]=new u_(t,"mtkw",1,!1)}else p[f++]=new u_(i,"mtkw",1,!1)}else p[f++]=new u_(i,v,0,E);return p}(e,r,n,o));let s=0;if(e.lineDecorations.length>0){for(let t=0,i=e.lineDecorations.length;th&&(h=e.startOffset,a[l++]=new u_(h,u,d,c)),e.endOffset+1<=n)h=e.endOffset+1,a[l++]=new u_(h,u+" "+e.className,d|e.metadata,c),s++;else{h=n,a[l++]=new u_(h,u+" "+e.className,d|e.metadata,c);break}}n>h&&(h=n,a[l++]=new u_(h,u,d,c))}let u=i[i.length-1].endIndex;if(s=50&&(r[o++]=new u_(h+1,t,i,l),u=h+1,h=-1);u!==a&&(r[o++]=new u_(a,t,i,l))}else r[o++]=s;n=a}else for(let e=0,i=t.length;e50){let e=i.type,t=i.metadata,l=i.containsRTL,h=Math.ceil(a/50);for(let i=1;i=8234&&e<=8238||e>=8294&&e<=8297||e>=8206&&e<=8207||1564===e}class uw{constructor(e,t,i,n){this._viewportBrand=void 0,this.top=0|e,this.left=0|t,this.width=0|i,this.height=0|n}}class uO{constructor(e,t){this.tabSize=e,this.data=t}}class ux{constructor(e,t,i,n,r,o,s){this._viewLineDataBrand=void 0,this.content=e,this.continuesWithWrappedLine=t,this.minColumn=i,this.maxColumn=n,this.startVisibleColumn=r,this.tokens=o,this.inlineDecorations=s}}class uD{constructor(e,t,i,n,r,o,s,a,l,h){this.minColumn=e,this.maxColumn=t,this.content=i,this.continuesWithWrappedLine=n,this.isBasicASCII=uD.isBasicASCII(i,o),this.containsRTL=uD.containsRTL(i,this.isBasicASCII,r),this.tokens=s,this.inlineDecorations=a,this.tabSize=l,this.startVisibleColumn=h}static isBasicASCII(e,t){return!t||os(e)}static containsRTL(e,t,i){return!t&&!!i&&or(e)}}class uM{constructor(e,t,i){this.range=e,this.inlineClassName=t,this.type=i}}class uk{constructor(e,t,i,n){this.startOffset=e,this.endOffset=t,this.inlineClassName=i,this.inlineClassNameAffectsLetterSpacing=n}toInlineDecoration(e){return new uM(new r_(e,this.startOffset+1,e,this.endOffset+1),this.inlineClassName,this.inlineClassNameAffectsLetterSpacing?3:0)}}class uP{constructor(e,t){this._viewModelDecorationBrand=void 0,this.range=e,this.options=t}}class uF{constructor(e,t,i){this.color=e,this.zIndex=t,this.data=i}static cmp(e,t){return e.zIndex===t.zIndex?e.colort.color?1:0:e.zIndex-t.zIndex}}function uB(e){return"string"==typeof e}function uU(e,t){return e.ignoreCase&&t?t.toLowerCase():t}function uH(e){return e.replace(/[&<>'"_]/g,"-")}function uV(e,t){return Error(`${e.languageId}: ${t}`)}function uW(e,t,i,n,r){let o=null;return t.replace(/\$((\$)|(#)|(\d\d?)|[sS](\d\d?)|@(\w+))/g,function(t,s,a,l,h,u,d,c,g){return a?"$":l?uU(e,i):h&&h0;){let t=e.tokenizer[i];if(t)return t;let n=i.lastIndexOf(".");i=n<0?null:i.substr(0,n)}return null}class uz{static create(e,t){return this._INSTANCE.create(e,t)}constructor(e){this._maxCacheDepth=e,this._entries=Object.create(null)}create(e,t){if(null!==e&&e.depth>=this._maxCacheDepth)return new uY(e,t);let i=uY.getStackElementId(e);i.length>0&&(i+="|"),i+=t;let n=this._entries[i];return n||(n=new uY(e,t),this._entries[i]=n),n}}uz._INSTANCE=new uz(5);class uY{constructor(e,t){this.parent=e,this.state=t,this.depth=(this.parent?this.parent.depth:0)+1}static getStackElementId(e){let t="";for(;null!==e;)t.length>0&&(t+="|"),t+=e.state,e=e.parent;return t}static _equals(e,t){for(;null!==e&&null!==t;){if(e===t)return!0;if(e.state!==t.state)return!1;e=e.parent,t=t.parent}return null===e&&null===t}equals(e){return uY._equals(this,e)}push(e){return uz.create(this,e)}pop(){return this.parent}popall(){let e=this;for(;e.parent;)e=e.parent;return e}switchTo(e){return uz.create(this.parent,e)}}class uK{constructor(e,t){this.languageId=e,this.state=t}equals(e){return this.languageId===e.languageId&&this.state.equals(e.state)}clone(){let e=this.state.clone();return e===this.state?this:new uK(this.languageId,this.state)}}class u${static create(e,t){return this._INSTANCE.create(e,t)}constructor(e){this._maxCacheDepth=e,this._entries=Object.create(null)}create(e,t){if(null!==t||null!==e&&e.depth>=this._maxCacheDepth)return new uX(e,t);let i=uY.getStackElementId(e),n=this._entries[i];return n||(n=new uX(e,null),this._entries[i]=n),n}}u$._INSTANCE=new u$(5);class uX{constructor(e,t){this.stack=e,this.embeddedLanguageData=t}clone(){let e=this.embeddedLanguageData?this.embeddedLanguageData.clone():null;return e===this.embeddedLanguageData?this:u$.create(this.stack,this.embeddedLanguageData)}equals(e){return!!(e instanceof uX&&this.stack.equals(e.stack))&&(null===this.embeddedLanguageData&&null===e.embeddedLanguageData||null!==this.embeddedLanguageData&&null!==e.embeddedLanguageData&&this.embeddedLanguageData.equals(e.embeddedLanguageData))}}class uj{constructor(){this._tokens=[],this._languageId=null,this._lastTokenType=null,this._lastTokenLanguage=null}enterLanguage(e){this._languageId=e}emit(e,t){(this._lastTokenType!==t||this._lastTokenLanguage!==this._languageId)&&(this._lastTokenType=t,this._lastTokenLanguage=this._languageId,this._tokens.push(new rN(e,t,this._languageId)))}nestedLanguageTokenize(e,t,i,n){let r=i.languageId,o=i.state,s=rD.get(r);if(!s)return this.enterLanguage(r),this.emit(n,""),o;let a=s.tokenize(e,t,o);if(0!==n)for(let e of a.tokens)this._tokens.push(new rN(e.offset+n,e.type,e.language));else this._tokens=this._tokens.concat(a.tokens);return this._lastTokenType=null,this._lastTokenLanguage=null,this._languageId=null,a.endState}finalize(e){return new rI(this._tokens,e)}}class uq{constructor(e,t){this._languageService=e,this._theme=t,this._prependTokens=null,this._tokens=[],this._currentLanguageId=0,this._lastTokenMetadata=0}enterLanguage(e){this._currentLanguageId=this._languageService.languageIdCodec.encodeLanguageId(e)}emit(e,t){let i=1024|this._theme.match(this._currentLanguageId,t);this._lastTokenMetadata!==i&&(this._lastTokenMetadata=i,this._tokens.push(e),this._tokens.push(i))}static _merge(e,t,i){let n=null!==e?e.length:0,r=t.length,o=null!==i?i.length:0;if(0===n&&0===r&&0===o)return new Uint32Array(0);if(0===n&&0===r)return i;if(0===r&&0===o)return e;let s=new Uint32Array(n+r+o);null!==e&&s.set(e);for(let e=0;e{if(o)return;let t=!1;for(let i=0,n=e.changedLanguages.length;i{e.affectsConfiguration("editor.maxTokenizationLineLength")&&(this._maxTokenizationLineLength=this._configurationService.getValue("editor.maxTokenizationLineLength",{overrideIdentifier:this._languageId}))})}dispose(){this._tokenizationRegistryListener.dispose()}getLoadStatus(){let t=[];for(let i in this._embeddedLanguages){let n=rD.get(i);if(n){if(n instanceof e){let e=n.getLoadStatus();!1===e.loaded&&t.push(e.promise)}continue}rD.isResolved(i)||t.push(rD.getOrCreate(i))}return 0===t.length?{loaded:!0}:{loaded:!1,promise:Promise.all(t).then(e=>void 0)}}getInitialState(){let e=uz.create(null,this._lexer.start);return u$.create(e,null)}tokenize(e,t,i){if(e.length>=this._maxTokenizationLineLength)return a4(this._languageId,i);let n=new uj,r=this._tokenize(e,t,i,n);return n.finalize(r)}tokenizeEncoded(e,t,i){if(e.length>=this._maxTokenizationLineLength)return a5(this._languageService.languageIdCodec.encodeLanguageId(this._languageId),i);let n=new uq(this._languageService,this._standaloneThemeService.getColorTheme().tokenTheme),r=this._tokenize(e,t,i,n);return n.finalize(r)}_tokenize(e,t,i,n){return i.embeddedLanguageData?this._nestedTokenize(e,t,i,0,n):this._myTokenize(e,t,i,0,n)}_findLeavingNestedLanguageOffset(e,t){let i=this._lexer.tokenizer[t.stack.state];if(!i&&!(i=uG(this._lexer,t.stack.state)))throw uV(this._lexer,"tokenizer state is not defined: "+t.stack.state);let n=-1,r=!1;for(let t of i){if(uB(t.action)||"@pop"!==t.action.nextEmbedded)continue;r=!0;let i=t.regex,o=t.regex.source;if("^(?:"===o.substr(0,4)&&")"===o.substr(o.length-1,1)){let e=(i.ignoreCase?"i":"")+(i.unicode?"u":"");i=new RegExp(o.substr(4,o.length-5),e)}let s=e.search(i);-1!==s&&(0===s||!t.matchOnlyAtLineStart)&&(-1===n||s0&&r.nestedLanguageTokenize(s,!1,i.embeddedLanguageData,n);let a=e.substring(o);return this._myTokenize(a,t,i,n+o,r)}_safeRuleName(e){return e?e.name:"(unknown)"}_myTokenize(e,t,i,n,r){r.enterLanguage(this._languageId);let o=e.length,s=t&&this._lexer.includeLF?e+"\n":e,a=s.length,l=i.embeddedLanguageData,h=i.stack,u=0,d=null,c=!0;for(;c||u=a)break;c=!1;let e=this._lexer.tokenizer[f];if(!e&&!(e=uG(this._lexer,f)))throw uV(this._lexer,"tokenizer state is not defined: "+f);let t=s.substr(u);for(let i of e)if((0===u||!i.matchOnlyAtLineStart)&&(m=t.match(i.regex))){v=m[0],E=i.action;break}}if(m||(m=[""],v=""),E||(u=this._lexer.maxStack)throw uV(this._lexer,"maximum tokenizer stack size reached: ["+h.state+","+h.parent.state+",...]");h=h.push(f)}else if("@pop"===E.next){if(h.depth<=1)throw uV(this._lexer,"trying to pop an empty stack in rule: "+this._safeRuleName(_));h=h.pop()}else if("@popall"===E.next)h=h.popall();else{let e=uW(this._lexer,E.next,v,m,f);if("@"===e[0]&&(e=e.substr(1)),uG(this._lexer,e))h=h.push(e);else throw uV(this._lexer,"trying to set a next state '"+e+"' that is undefined in rule: "+this._safeRuleName(_))}}E.log&&"string"==typeof E.log&&console.log(`${this._lexer.languageId}: ${this._lexer.languageId+": "+uW(this._lexer,E.log,v,m,f)}`)}if(null===S)throw uV(this._lexer,"lexer rule has no well-defined action in rule: "+this._safeRuleName(_));let y=i=>{let o=this._languageService.getLanguageIdByLanguageName(i)||this._languageService.getLanguageIdByMimeType(i)||i,s=this._getNestedEmbeddedLanguageData(o);if(!(u0)throw uV(this._lexer,"groups cannot be nested: "+this._safeRuleName(_));if(m.length!==S.length+1)throw uV(this._lexer,"matched number of groups does not match the number of actions in rule: "+this._safeRuleName(_));let e=0;for(let t=1;t=0;a--)(r=e[a])&&(s=(o<3?r(s):o>3?r(t,i,s):r(t,i))||s);return o>3&&s&&Object.defineProperty(t,i,s),s}([function(e,t){al(e,t,4)}],uZ);let uJ=lA("standaloneColorizer",{createHTML:e=>e});class uQ{static colorizeElement(e,t,i,n){n=n||{};let r=n.theme||"vs",o=n.mimeType||i.getAttribute("lang")||i.getAttribute("data-lang");if(!o)return console.error("Mode not detected"),Promise.resolve();let s=t.getLanguageIdByMimeType(o)||o;e.setTheme(r);let a=i.firstChild?i.firstChild.nodeValue:"";return i.className+=" "+r,this.colorize(t,a||"",s,n).then(e=>{var t;let n=null!==(t=null==uJ?void 0:uJ.createHTML(e))&&void 0!==t?t:e;i.innerHTML=n},e=>console.error(e))}static colorize(e,t,i,n){var r,o,s,a;return r=this,o=void 0,s=void 0,a=function*(){var r;let o=e.languageIdCodec,s=4;n&&"number"==typeof n.tabSize&&(s=n.tabSize),od(t)&&(t=t.substr(1));let a=rY(t);if(!e.isRegisteredLanguageId(i))return u0(a,s,o);let l=yield rD.getOrCreate(i);return l?(r=s,new Promise((e,t)=>{let i=()=>{let n=function(e,t,i,n){let r=[],o=i.getInitialState();for(let s=0,a=e.length;s"),o=l.endState}return r.join("")}(a,r,l,o);if(l instanceof uZ){let e=l.getLoadStatus();if(!1===e.loaded){e.promise.then(i,t);return}}e(n)};i()})):u0(a,s,o)},new(s||(s=Promise))(function(e,t){function i(e){try{l(a.next(e))}catch(e){t(e)}}function n(e){try{l(a.throw(e))}catch(e){t(e)}}function l(t){var r;t.done?e(t.value):((r=t.value)instanceof s?r:new s(function(e){e(r)})).then(i,n)}l((a=a.apply(r,o||[])).next())})}static colorizeLine(e,t,i,n,r=4){let o=uD.isBasicASCII(e,t),s=uD.containsRTL(e,o,i),a=uL(new uS(!1,!0,e,!1,o,s,0,n,[],r,0,0,0,0,-1,"none",!1,!1,null));return a.html}static colorizeModelLine(e,t,i=4){let n=e.getLineContent(t);e.tokenization.forceTokenization(t);let r=e.tokenization.getLineTokens(t),o=r.inflate();return this.colorizeLine(n,e.mightContainNonBasicASCII(),e.mightContainRTL(),o,i)}}function u0(e,t,i){let n=[],r=new Uint32Array(2);r[0]=0,r[1]=33587200;for(let o=0,s=e.length;o")}return n.join("")}let u1={clipboard:{writeText:nY.tY||document.queryCommandSupported&&document.queryCommandSupported("copy")||!!(navigator&&navigator.clipboard&&navigator.clipboard.writeText),readText:nY.tY||!!(navigator&&navigator.clipboard&&navigator.clipboard.readText)},keyboard:nY.tY||oI?0:navigator.keyboard||oR?1:2,touch:"ontouchstart"in window||navigator.maxTouchPoints>0,pointerEvents:window.PointerEvent&&("ontouchstart"in window||window.navigator.maxTouchPoints>0||navigator.maxTouchPoints>0)};function u2(e,t){if("number"==typeof e){if(0===e)return null;let i=(65535&e)>>>0,n=(4294901760&e)>>>16;return new u6(0!==n?[u4(i,t),u4(n,t)]:[u4(i,t)])}{let i=[];for(let n=0;n1?i-1:0),r=1;r/gm),dz=dc(/^data-[\-\w.\u00B7-\uFFFF]/),dY=dc(/^aria-[\-\w]+$/),dK=dc(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),d$=dc(/^(?:\w+script|data):/i),dX=dc(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),dj="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function dq(e){if(!Array.isArray(e))return Array.from(e);for(var t=0,i=Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:"undefined"==typeof window?null:window,i=function(t){return e(t)};if(i.version="2.3.1",i.removed=[],!t||!t.document||9!==t.document.nodeType)return i.isSupported=!1,i;var n=t.document,r=t.document,o=t.DocumentFragment,s=t.HTMLTemplateElement,a=t.Node,l=t.Element,h=t.NodeFilter,u=t.NamedNodeMap,d=void 0===u?t.NamedNodeMap||t.MozNamedAttrMap:u,c=t.Text,g=t.Comment,p=t.DOMParser,f=t.trustedTypes,m=l.prototype,v=dw(m,"cloneNode"),E=dw(m,"nextSibling"),_=dw(m,"childNodes"),C=dw(m,"parentNode");if("function"==typeof s){var S=r.createElement("template");S.content&&S.content.ownerDocument&&(r=S.content.ownerDocument)}var y=dZ(f,n),T=y&&j?y.createHTML(""):"",b=r,A=b.implementation,R=b.createNodeIterator,L=b.createDocumentFragment,N=b.getElementsByTagName,I=n.importNode,w={};try{w=dI(r).documentMode?r.documentMode:{}}catch(e){}var O={};i.isSupported="function"==typeof C&&A&&void 0!==A.createHTMLDocument&&9!==w;var x=dK,D=null,M=dN({},[].concat(dq(dO),dq(dx),dq(dD),dq(dk),dq(dF))),k=null,P=dN({},[].concat(dq(dB),dq(dU),dq(dH),dq(dV))),F=null,B=null,U=!0,H=!0,V=!1,W=!1,G=!1,z=!1,Y=!1,K=!1,$=!1,X=!0,j=!1,q=!0,Z=!0,J=!1,Q={},ee=null,et=dN({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),ei=null,en=dN({},["audio","video","img","source","image","track"]),er=null,eo=dN({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),es="http://www.w3.org/1998/Math/MathML",ea="http://www.w3.org/2000/svg",el="http://www.w3.org/1999/xhtml",eh=el,eu=!1,ed=null,ec=r.createElement("form"),eg=function(e){ed&&ed===e||(e&&(void 0===e?"undefined":dj(e))==="object"||(e={}),D="ALLOWED_TAGS"in(e=dI(e))?dN({},e.ALLOWED_TAGS):M,k="ALLOWED_ATTR"in e?dN({},e.ALLOWED_ATTR):P,er="ADD_URI_SAFE_ATTR"in e?dN(dI(eo),e.ADD_URI_SAFE_ATTR):eo,ei="ADD_DATA_URI_TAGS"in e?dN(dI(en),e.ADD_DATA_URI_TAGS):en,ee="FORBID_CONTENTS"in e?dN({},e.FORBID_CONTENTS):et,F="FORBID_TAGS"in e?dN({},e.FORBID_TAGS):{},B="FORBID_ATTR"in e?dN({},e.FORBID_ATTR):{},Q="USE_PROFILES"in e&&e.USE_PROFILES,U=!1!==e.ALLOW_ARIA_ATTR,H=!1!==e.ALLOW_DATA_ATTR,V=e.ALLOW_UNKNOWN_PROTOCOLS||!1,W=e.SAFE_FOR_TEMPLATES||!1,G=e.WHOLE_DOCUMENT||!1,K=e.RETURN_DOM||!1,$=e.RETURN_DOM_FRAGMENT||!1,X=!1!==e.RETURN_DOM_IMPORT,j=e.RETURN_TRUSTED_TYPE||!1,Y=e.FORCE_BODY||!1,q=!1!==e.SANITIZE_DOM,Z=!1!==e.KEEP_CONTENT,J=e.IN_PLACE||!1,x=e.ALLOWED_URI_REGEXP||x,eh=e.NAMESPACE||el,W&&(H=!1),$&&(K=!0),Q&&(D=dN({},[].concat(dq(dF))),k=[],!0===Q.html&&(dN(D,dO),dN(k,dB)),!0===Q.svg&&(dN(D,dx),dN(k,dU),dN(k,dV)),!0===Q.svgFilters&&(dN(D,dD),dN(k,dU),dN(k,dV)),!0===Q.mathMl&&(dN(D,dk),dN(k,dH),dN(k,dV))),e.ADD_TAGS&&(D===M&&(D=dI(D)),dN(D,e.ADD_TAGS)),e.ADD_ATTR&&(k===P&&(k=dI(k)),dN(k,e.ADD_ATTR)),e.ADD_URI_SAFE_ATTR&&dN(er,e.ADD_URI_SAFE_ATTR),e.FORBID_CONTENTS&&(ee===et&&(ee=dI(ee)),dN(ee,e.FORBID_CONTENTS)),Z&&(D["#text"]=!0),G&&dN(D,["html","head","body"]),D.table&&(dN(D,["tbody"]),delete F.tbody),dd&&dd(e),ed=e)},ep=dN({},["mi","mo","mn","ms","mtext"]),ef=dN({},["foreignobject","desc","title","annotation-xml"]),em=dN({},dx);dN(em,dD),dN(em,dM);var ev=dN({},dk);dN(ev,dP);var eE=function(e){var t=C(e);t&&t.tagName||(t={namespaceURI:el,tagName:"template"});var i=dC(e.tagName),n=dC(t.tagName);if(e.namespaceURI===ea)return t.namespaceURI===el?"svg"===i:t.namespaceURI===es?"svg"===i&&("annotation-xml"===n||ep[n]):!!em[i];if(e.namespaceURI===es)return t.namespaceURI===el?"math"===i:t.namespaceURI===ea?"math"===i&&ef[n]:!!ev[i];if(e.namespaceURI===el){if(t.namespaceURI===ea&&!ef[n]||t.namespaceURI===es&&!ep[n])return!1;var r=dN({},["title","style","font","a","script"]);return!ev[i]&&(r[i]||!em[i])}return!1},e_=function(e){d_(i.removed,{element:e});try{e.parentNode.removeChild(e)}catch(t){try{e.outerHTML=T}catch(t){e.remove()}}},eC=function(e,t){try{d_(i.removed,{attribute:t.getAttributeNode(e),from:t})}catch(e){d_(i.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e&&!k[e]){if(K||$)try{e_(t)}catch(e){}else try{t.setAttribute(e,"")}catch(e){}}},eS=function(e){var t=void 0,i=void 0;if(Y)e=""+e;else{var n=dS(e,/^[\r\n\t ]+/);i=n&&n[0]}var o=y?y.createHTML(e):e;if(eh===el)try{t=new p().parseFromString(o,"text/html")}catch(e){}if(!t||!t.documentElement){t=A.createDocument(eh,"template",null);try{t.documentElement.innerHTML=eu?"":o}catch(e){}}var s=t.body||t.documentElement;return(e&&i&&s.insertBefore(r.createTextNode(i),s.childNodes[0]||null),eh===el)?N.call(t,G?"html":"body")[0]:G?t.documentElement:s},ey=function(e){return R.call(e.ownerDocument||e,e,h.SHOW_ELEMENT|h.SHOW_COMMENT|h.SHOW_TEXT,null,!1)},eT=function(e){return(void 0===a?"undefined":dj(a))==="object"?e instanceof a:e&&(void 0===e?"undefined":dj(e))==="object"&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName},eb=function(e,t,n){O[e]&&dv(O[e],function(e){e.call(i,t,n,ed)})},eA=function(e){var t=void 0;if(eb("beforeSanitizeElements",e,null),!(e instanceof c)&&!(e instanceof g)&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||!(e.attributes instanceof d)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore)||dS(e.nodeName,/[\u0080-\uFFFF]/))return e_(e),!0;var n=dC(e.nodeName);if(eb("uponSanitizeElement",e,{tagName:n,allowedTags:D}),!eT(e.firstElementChild)&&(!eT(e.content)||!eT(e.content.firstElementChild))&&dA(/<[/\w]/g,e.innerHTML)&&dA(/<[/\w]/g,e.textContent)||"select"===n&&dA(/

    404

    This page could not be found.